これまで、ポートスキャンやオンラインパスワード推測について記載してきた。
しかしながら、実際に攻撃される場合には、
使っているサービスの脆弱性を悪用される、
なんてこともよくある。
でも、脆弱性があるかどうか、なんていちいち手動では調べていられない。
そんな場合、ネットワーク脆弱性診断ツールを利用する。
代表的なネットワーク脆弱性診断ツールとしては、
Nessus や OpenVAS が存在する。
個人的には Nessus を入れたかったのだが、
残念ながら ARM 版が存在しないため、導入できない。
そこで、今回は Raspberry Pi に 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 のインストール方法を記載しておく。
なお、結構失敗することもあるので、いつでもやり直せるよう、
バックアップは必ず取って置く
ことをおすすめする。
必要なパッケージのインストール
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
にアクセスして、ログインページが表示されれば、無事インストール完了!
■まとめ
ラズパイは CPU が ARM のためか、OpenVAS のインストールは source から実施する必要があった。また、環境の違いからか、参考にしたサイトのいずれにおいても、その通りにやってうまく行った試しがなかった。そこで、本稿では、Raspbian Jessie に OpenVAS9 をインストールする方法について、自分なりに試行錯誤した結果を、備忘録を兼ねて記載した。
結構重労働なので、インストールは余裕がある時にやった方がよいと思う。
が、入れるだけの価値はあるツールだと思うので、興味のある方は一度ぐらい試してみてもよいかもしれない。
次回以降、このツールの基本的な使い方と、使った結果について書いていこうと思う。
Copyright (c) 2017 Webmaster of this site All Rights Reserved.