脆弱性検査 – OpenVAS(インストール編) –


これまで、ポートスキャンやオンラインパスワード推測について記載してきた。しかしながら、実際に攻撃される場合には、使っているサービスの脆弱性を悪用される、なんてこともよくある。

でも、脆弱性があるかどうか、なんていちいち手動では調べていられない。

そんな場合、ネットワーク脆弱性検査ツールを利用する。

代表的なネットワーク脆弱性検査ツールとしては、 Nessus や OpenVAS が存在する。

個人的には Nessus を入れたかったのだが、残念ながら ARM 版が存在しないため、導入できない。

そこで、今回はラズパイに OpenVAS を導入し、使える状態にしていこうと思う。

なお、インストール自体に結構手間と時間(数時間は必要)が掛かるため、まずはインストールから記載する。

  1. OpenVAS のインストール

なお、OpenVAS は脆弱性検査に使われるのであるが、当然使い方によっては攻撃にも利用されうる。

このため、自分の責任範囲外のサイトなどに適用した場合、ハッキング行為とみなされる恐れがある。

よって、利用する際には、これまで記載してきた環境のように、自分のネットワーク内にある、自分のサイトや機器の脆弱性検査に限って利用すべきであることにご注意頂きたい。

■OpenVAS のインストール

これまでと異なり、ラズパイに OpenVAS をインストールするのは結構厄介。以下のサイトを参考にインストールしたが、残念ながら記載通りにやると、私の環境ではいずれも error が出て失敗する。

Proturk Security Blog – Install OpenVAS 8 on Debian 8 Jessie –
https://proturk.com/blog/install-openvas-8-on-debian-8-jessie/

RaspberryPiをセキュリティスキャナにする(OpenVAS8 on raspbian-jessie)
http://qiita.com/moperon/items/0eb4ec87379f905208cf

そこで、これらのサイトを参考にしつつ、現時点(2017 年 08 月)で最新版である OpenVAS9 のインストール方法を記載しておく。

なお、結構失敗することもあるので、いつでもやり直せるよう、バックアップは必ず取って置いた方がよい。

  1. 必要なパッケージのインストール
  2. 最新版の取得と展開
  3. コンパイルとインストール
  4. 各種設定
  5. まとめ

必要なパッケージのインストール

OpenVAS のインストールには、数多くのパッケージが必要になる。よって、あらかじめこれらをインストールしておく。

いつも通り、まずはリポジトリをアップデートする。
*今回は特に必須。

root@raspi-03# apt-get update

続いて、以下の各パッケージをインストールする。

パッケージ数が多いこともあり、結構時間が掛かる(数十分レベル)。

root@raspi-03# apt-get install build-essential cmake bison flex \
libpcap-dev pkg-config libglib2.0-dev libgpgme11-dev uuid-dev \
sqlfairy xmltoman doxygen libssh-dev libksba-dev libldap2-dev \
libsqlite3-dev libmicrohttpd-dev libxml2-dev libxslt1-dev \
xsltproc clang rsync rpm nsis alien sqlite3 libhiredis-dev \
libgcrypt11-dev libgnutls28-dev redis-server texlive-latex-base -y

実際にやる場合には、おそらくそのままコピペしてもらうのがよいと思う。

最新版の取得と展開

上述の参考サイトでは、いずれも wget でアーカイブファイルを取得している。もちろんそれでよいのだが、インストール方法さえ分かれば、当然最新版の方がよい。

よって、最新版のアーカイブファイルを以下のサイトから取得する。

http://www.openvas.org/install-source.html

取得しておくべきファイルは、図の赤枠にある

・Libraries
・Scanner
・Manager
・Greenbone Security Assistant (GSA)
・Commandline Interface (CLI)

の五つ。

各ソフトウェア名をクリックすればダウンロードできる。

今回の場合は、ダウンロードディレクトリに

・openvas-libraries-9.0.1.tar.gz
・openvas-scanner-5.1.1.tar.gz
・openvas-manager-7.0.2.tar.gz
・greenbone-security-assistant-7.0.2.tar.gz
・openvas-cli-1.4.5.tar.gz

が生成されるはずである。

ダウンロードが終了すれば、これを展開し、コンパイルできるようにしておく。

まずはテンポラリとなるディレクトリを作成し、そこにダウンロードしたファイルを移動させる。
*これは作業上の都合であって、必須の作業ではない。

私の場合は root で作業しているので、まず /root/ 以下にテンポラリディレクトリとして openvas というディレクトリを作成する。

root@raspi-03# mkdir openvas

続いて、ダウンロードした各ファイル(私の環境では /root/download/ に存在)を /root/openvas/ 以下に移す。

root@raspi-03# mv ./download/openvas-libraries-9.0.1.tar.gz ./openvas/
root@raspi-03# mv ./download/openvas-scanner-5.1.1.tar.gz ./openvas/
root@raspi-03# mv ./download/openvas-manager-7.0.2.tar.gz ./openvas/
root@raspi-03# mv ./download/greenbone-security-assistant-7.0.2.tar.gz ./openvas/
root@raspi-03# mv ./download/openvas-cli-1.4.5.tar.gz ./openvas/

その後、/root/openvas/ に移動し、各圧縮ファイルを展開する。

root@raspi-03# cd /root/openvas/
root@raspi-03:~/openvas# tar zxvf openvas-libraries-9.0.1.tar.gz 
root@raspi-03:~/openvas# tar zxvf openvas-scanner-5.1.1.tar.gz 
root@raspi-03:~/openvas# tar zxvf openvas-manager-7.0.2.tar.gz 
root@raspi-03:~/openvas# tar zxvf greenbone-security-assistant-7.0.2.tar.gz 
root@raspi-03:~/openvas# tar zxvf openvas-cli-1.4.5.tar.gz 

これで展開までは完了。

コンパイルとインストール

続いては、展開後にできる各ディレクトリに移動し、コンパイルとインストールを行う。やることは全て同じで、cmake . -> make -> make doc -> make install である。

ただ、この作業、10 — 20 分程度で終わるものの、他の作業(テレビを見る、とか)をしながら、とかはやらない方がいい。

なぜか。単調な作業の繰り返しなので、どこまでやったか、が曖昧になりがちだからである。

すると、何かの作業をやらないままで次に進んでしまい、うまくいかなくなってハマる、ということが起こり得る。
*私は結構起こしてしまった・・・。

なので、単純作業だが注意して行っていただきたい。

まずは libraries をコンパイルし、インストールする。

root@raspi-03:~/openvas# cd ./openvas-libraries-9.0.1
root@raspi-03:~/openvas/openvas-libraries-9.0.1# cmake .
root@raspi-03:~/openvas/openvas-libraries-9.0.1# make
root@raspi-03:~/openvas/openvas-libraries-9.0.1# make doc
root@raspi-03:~/openvas/openvas-libraries-9.0.1# make install
root@raspi-03:~/openvas/openvas-libraries-9.0.1# cd ../

cmake の部分。 cmake . と、ピリオドで対象ディレクトリを指定している事に注意が必要。

次は manager。多分順番はそんなに問題ではないと思うが、一応順番通りにやる。

root@raspi-03:~/openvas# cd ./openvas-manager-7.0.2
root@raspi-03:~/openvas/openvas-manager-7.0.2# cmake .
root@raspi-03:~/openvas/openvas-manager-7.0.2# make
root@raspi-03:~/openvas/openvas-manager-7.0.2# make doc
root@raspi-03:~/openvas/openvas-manager-7.0.2# make install
root@raspi-03:~/openvas/openvas-manager-7.0.2# cd ../

scanner も同じ。

root@raspi-03:~/openvas# cd ./openvas-scanner-5.1.1
root@raspi-03:~/openvas/openvas-scanner-5.1.1# cmake .
root@raspi-03:~/openvas/openvas-scanner-5.1.1# make
root@raspi-03:~/openvas/openvas-scanner-5.1.1# make doc
root@raspi-03:~/openvas/openvas-scanner-5.1.1# make install
root@raspi-03:~/openvas/openvas-scanner-5.1.1# cd ../

cli も当然同じ。この辺でもうだいぶ飽きてくるが、とりあえずやる。

root@raspi-03:~/openvas# cd ./openvas-cli-1.4.5
root@raspi-03:~/openvas/openvas-cli-1.4.5# cmake .
root@raspi-03:~/openvas/openvas-cli-1.4.5# make
root@raspi-03:~/openvas/openvas-cli-1.4.5# make doc
root@raspi-03:~/openvas/openvas-cli-1.4.5# make install
root@raspi-03:~/openvas/openvas-cli-1.4.5# cd ../

やっと最後だ greenbone-security-assistant。

root@raspi-03:~/openvas# cd ./greenbone-security-assistant-7.0.2
root@raspi-03:~/openvas/greenbone-security-assistant-7.0.2# cmake .
root@raspi-03:~/openvas/greenbone-security-assistant-7.0.2# make
root@raspi-03:~/openvas/greenbone-security-assistant-7.0.2# make doc
root@raspi-03:~/openvas/greenbone-security-assistant-7.0.2# make install
root@raspi-03:~/openvas/greenbone-security-assistant-7.0.2# cd ../

これで、コンパイルとインストールは完了。まだまだ作業は続く。

各種設定

基本的な材料をインストールした後は、各種設定を行っていく。正直いるのかいらないのかよく分からないのだが、とりあえず参考サイト通り、共有ライブラリの依存関係情報を更新しておく。

root@raspi-03:~/openvas# ldconfg

続いて、OpenVAS のインストールチェックツールをインストールし、ひとまず実行する。

root@raspi-03:~/openvas# wget --no-check-certificate \
https://svn.wald.intevation.org/svn/openvas/trunk/tools/openvas-check-setup
root@raspi-03:~/openvas# chmod +x openvas-check-setup
root@raspi-03:~/openvas# ./openvas-check-setup --v9

この時点では当然エラーがでるのだが、とりあえず気にしない。

次にやるのは、証明書の生成と、各種データのアップデート。

root@raspi-03:~/openvas# openvas-mkcert
root@raspi-03:~/openvas# openvas-nvt-sync
root@raspi-03:~/openvas# openvas-scapdata-sync
root@raspi-03:~/openvas# openvas-certdata-sync
root@raspi-03:~/openvas# openvas-mkcert-client -n -i

一行目のコマンドで、https サーバー側の証明書を生成。

二行目で、NVT(Network Vulnerability Test)という、脆弱性のパターンとそのテストをするための情報を更新する。

これは場合によって数時間掛かるかもしれないので、覚悟を持ってやる必要がある。

三行目は、SCAP(Security Content Automation Protocol)という、こちらは仕様上の脆弱性に関する情報の更新。

こっちは数十分程度ですんだが、それでも結構掛かる。

四行目はそのままで、証明書データの更新。

最後五行目は、client 側の証明書生成を行っている。

ちなみに -n オプションは非対話型での証明書生成、-i オプションは生成したクライアント証明書のインストールを意味しているらしい。

これらが終わったら、今度は NVT データの署名検証が可能な状態を構築する。

まずは gnupg をインストールし、署名検証用の公開鍵を取得しておく。

root@raspi-03:~/openvas# apt-get install gnupg
root@raspi-03:~/openvas# wget http://www.openvas.org/OpenVAS_TI.asc

次に、自分の gpg 鍵ペアを生成する。

root@raspi-03:~/openvas# gpg --homedir=/usr/local/etc/openvas/gnupg --gen-key

この際、以下のようなメッセージが出てくるので、質問に対し、適宜選択していく。

   
gpg (GnuPG) 1.4.18; Copyright (C) 2014 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: 鍵輪「/usr/local/etc/openvas/gnupg/secring.gpg」ができました
gpg: 鍵輪「/usr/local/etc/openvas/gnupg/pubring.gpg」ができました
ご希望の鍵の種類を選択してください:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (署名のみ)
(4) RSA (署名のみ)
選択は? 2 # どの暗号アルゴリズムにおける鍵を生成するか、を聞いている。何でもよい。
DSA keys may be between 1024 and 3072 bits long.
What keysize do you want? (2048) 2048 # 1024 は短いので、2048 か 3072 を選択。
要求された鍵長は2048ビット
鍵の有効期限を指定してください。
0 = 鍵は無期限
n  = 鍵は n 日間で満了
nw = 鍵は n 週間で満了
nm = 鍵は n か月間で満了
ny = 鍵は n 年間で満了

鍵の有効期間は? (0)# ほんとはちゃんと有効期限設けるべきだが、面倒なので・・・
Key does not expire at all
これで正しいですか? (y/N) y # y を選択 

あなたの鍵を同定するためにユーザーIDが必要です。
このソフトは本名、コメント、電子メール・アドレスから
次の書式でユーザーIDを構成します:
"Heinrich Heine (Der Dichter) heinrichh@duesseldorf.de"

本名: # まぁ適当に
電子メール・アドレス: # まぁ適当に
コメント:
次のユーザーIDを選択しました:
“『本名』 『適当に入れた e-mail address』”

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? o  # o を選択 
秘密鍵を保護するためにパスフレーズがいります。
# 秘密鍵を保護するためのパスフレーズ入力。覚えておくこと!

今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
gpg: WARNING: some OpenPGP programs can't handle a DSA key with this digest size
++++++++++.++++++++++++++++++++....++++++++++.+++++.+++++....+++++++++
+++++++++++.+++++++++++++++..++++++++++......+++++.+++++++++++++++++++
+..++++++++++..+++++.+++++............+++++..+++++....................
....................................................+++++.............
..............+++++
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
+++++++++++++++++++++++++++++++++++..+++++++++++++++...+++++.+++++.+++
++++++++++++++++++++++.++++++++++...++++++++++..+++++++++++++++.+++++.
++++++++++.++++++++++++++++++++++++++++++....+++++....+++++....+++++++
+++............+++++.+++++.......+++++^^^
gpg: /usr/local/etc/openvas/gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵77A13AF8を絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。

gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048D/77A13AF8 2017-07-30
指紋 = E34E B961 0109 7080 0205  70F0 B778 32E6 77A1 3AF8
uid   xxxxxxxx xxxxxxxx@xxxxxxxx
sub   2048g/A862ABC4 2017-07-30

続いて、NVT の署名検証用公開鍵を import する。

root@raspi-03:~/openvas# gpg --homedir=/usr/local/etc/openvas/gnupg --import OpenVAS_TI.asc

その後、署名検証用公開鍵に、先ほど作った自分の秘密鍵で署名を付与する。

root@raspi-03:~/openvas# gpg --homedir=/usr/local/etc/openvas/gnupg --lsign-key 48DB4530
pub  1024D/48DB4530  作成: 2007-11-05  満了: 無期限      利用法: SC
                     信用: 未知の     有効性: 未知の
sub  2048g/70610CFB  作成: 2007-11-05  満了: 無期限      利用法: E
[ unknown] (1). OpenVAS Transfer Integrity
pub  1024D/48DB4530  作成: 2007-11-05  満了: 無期限      利用法: SC
                     信用: 未知の     有効性: 未知の
主鍵の指紋: C3B4 68D2 288C 68B9 D526  4522 4847 9FF6 48DB 4530

OpenVAS Transfer Integrity
本当にこの鍵にあなたの鍵“xxxxxxx xxxxxx@xxxxxx”で署名してよいですか
(77A13AF8)

署名は、書出し不可に設定されます。

本当に署名しますか? (y/N) y  # y を選択する 
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“xxxxxxxxx xxxxxxxx@xxxxxxx”
2048ビットDSA鍵, ID 77A13AF8作成日付は2017-07-30

で、折角ここまでやった苦労を無にしないためにも、当然のことながら署名検証を有効化しておく。

root@raspi-03:~/openvas# echo "nasl_no_signature_check = no" >> /usr/local/etc/openvas/openvassd.conf

そして作業はまだ続く。

お次は user の生成。

まずは以下のコマンドで管理者を作るのだが、この時、初期パスワードが表示されるので、忘れずにメモっておく(どこかにコピペしておく)事!

あと、user 名(今回の場合は adminuser)も忘れやすいので、こちらもメモっておくこと!

root@raspi-03:~/openvas# openvasmd --create-user=adminuser --role=Admin

続いては nmap のインストール。

どうも最新版の nmap では動かない、ということのようで、古い ver をあえて入れる。
*これをやらなくても行けた記憶はあるのだが、念のためやっておく。

root@raspi-03:~/openvas# wget http://nmap.org/dist/nmap-5.51.6.tgz &&
tar xvf nmap-5.51.6.tgz &&
cd nmap-5.51.6 &&
./configure &&
make &&
make install

これも数分ぐらいは掛かった。

いよいよ起動、と行きたい所だが、その前に redis server の設定を行う。

root@raspi-03:~/openvas# sh -c 'echo "unixsocket /tmp/redis.sock" >> /etc/redis/redis.conf'
root@raspi-03:~/openvas# service redis-server restart

これやっとかないとかなりハマるので要注意。

そして openvassd を起動する。

root@raspi-03:~/openvas# openvassd

ここまでくれば、インストール作業自体はかなり終わりに近づいている。

が、残念ながら、ここからが最も時間の掛かる所。

私の環境では数時間放置してようやく完了、という感じだった。

以下の作業は、夜にやって、そのまま一晩ほっとく、ぐらいの感覚でいたほうがよいかもしれない。

root@raspi-03:~/openvas# openvasmd --rebuild --progress

放置して無事終わったら、openvassd を再度起動し、Manager、Greenbone Security Assistant の順で立ち上げる。

root@raspi-03:~/openvas# openvassd
root@raspi-03:~/openvas# openvasmd
root@raspi-03:~/openvas# gsad

起動には少々時間が掛かる場合があるので、少し待つ。

その後、ブラウザから

https://localhost

にアクセスして、ログインページが表示されれば、無事インストール完了!

OpenVAS8とはデザインも結構変わってるなぁ・・・。

■まとめ

ラズパイは CPU が ARM のためか、OpenVAS のインストールは source から実施する必要があった。また、環境の違いからか、参考にしたサイトのいずれにおいても、その通りにやってうまく行った試しがなかった。そこで、本稿では、Raspbian Jessie に OpenVAS9 をインストールする方法について、自分なりに試行錯誤した結果を、備忘録を兼ねて記載した。

結構重労働なので、インストールは余裕がある時にやった方がよいと思う。

が、入れるだけの価値はあるツールだと思うので、興味のある方は一度ぐらい試してみてもよいかもしれない。

次回以降、このツールの基本的な使い方と、使った結果について書いていこうと思う。


Copyright (c) 2017 Webmaster of this site All Rights Reserved.
カテゴリー: ラズパイでセキュリティ タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。