まずは、OpenVASのサードパーティ・リポジトリをインストールする
# rpm -ivh http://www6.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/atomic-release-1.0-14.el6.art.noarch.rpm
では、RPMをインストール
# yum install openvas
でも、ここでリポジトリのRPMが古かったりすると、以下の様なエラーが出ることがあるので、その場合には最新のOpenVASのサードパーティ・リポジトリをインストールする (最初からそうしろよ!)
warning: rpmts_HdrFromFdno: Header V3 DSA/SHA1 Signature, key ID 5ebd2744: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY.art.txt
Importing GPG key 0x5EBD2744:
Userid : Atomic Rocket Turtle <admin@atomicrocketturtle.com>
Package: atomic-release-1.0-14.el6.art.noarch (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY.art.txt
Is this ok [y/N]: y
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID 4520afa9: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY.art.txt
The GPG keys listed for the "CentOS / Red Hat Enterprise Linux 6 - atomicrocketturtle.com" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
とりあえず、インストールされているバージョンを確認
# rpm -q atomic-release
atomic-release-1.0-17.el6.art.noarch
最新版のリポジトリをインストールする
# wget -q -O - https://www.atomicorp.com/installers/atomic | sh
# rpm -q atomic-release
atomic-release-1.0-19.el6.art.noarch
気を取り直してもう一度
# yum install openvas
じつは、これだけではOpenVASの最低限のパッケージがインストールされるだけで、セキュリティスキャンのための定義ファイルなどは以下のコマンドを実行して初めてインストールされる
# openvas-setup
ここからは凄く時間がかかるので、コーヒーブレイクでもとって気長に待ちましょう
```
Updating OpenVAS Manager database....
Pausing while openvas-scanner loads NVTs...Done
Step 2: Configure GSAD
The Greenbone Security Assistant is a Web Based front end
for managing scans. By default it is configured to only allow
connections from localhost.
Allow connections from any IP? [Default: yes]
Stopping greenbone-security-assistant: [ OK ]
Starting greenbone-security-assistant: [ OK ]
Step 3: Choose the GSAD admin users password.
The admin user is used to configure accounts,
Update NVT's manually, and manage roles.
Enter administrator username [Default: admin] :
Enter Administrator Password:
Verify Administrator Password:
/usr/sbin/openvasmd: symbol lookup error: /usr/sbin/openvasmd: undefined symbol: sqlite3_errstr
Setup complete, you can now access GSAD at:
https://:9392
```
なんか、一見セットアップできた様に見えるけど、よく見るとSQLite3のエラーが出ている!
/usr/sbin/openvasmd: symbol lookup error: /usr/sbin/openvasmd: undefined symbol: sqlite3_errstr
そりゃそうだよね、SQLiteなんてインストールしていないもの…
yum install atomic-sqlite-sqlite-devel.x86_64
SQLite3もatomicのリポジトリツリーにあるらしいので、これをインストール
yum install atomic-sqlite-sqlite
https://<サーバーのIP>:9392 で管理ページにアクセスできるらしいので、早速アクセスしてみる
おっと、アクセスできない!
それはそうですね、ファイアウォールの設定を忘れていました…
/etc/sysconfig/iptablesに9392を通すように設定してiptablesをリスタート
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9392 -j ACCEPT
とりあえず、openvas-managerが動いているか確認してみます
# service openvas-manager status
openvas-manager is stopped
動いていない様です…
ログファイルで確認してみましょう
# cat /var/log/openvas/openvasmd.log
md main:WARNING:2017-01-18 06h32.51 utc:12750: sql_prepare_internal: sqlite3_prepare failed: no such table: main.meta
md main:WARNING:2017-01-18 06h32.51 utc:12750: sql_x_internal: sql_prepare failed
md main:WARNING:2017-01-18 06h32.51 utc:12750: database must be initialised from scanner (with --update or --rebuild)
md main:WARNING:2017-01-18 06h32.54 utc:12750: check_db_scanners: Failed to open file '/var/lib/openvas/CA/clientcert.pem': No such file or directory
md main:CRITICAL:2017-01-18 06h32.54 utc:12750: main: failed to initialise OMP daemon
いろいろエラーが出ていますね
設定が正しく行われているかを確認するツールがあるので、これを実行してみます
# openvas-check-setup
redis-serverがインストールされていないと言われました
/usr/bin/openvas-check-setup: line 262: redis-server: command not found
ERROR: No redis-server installation found.
FIX: You should install redis-server for improved scalability and ability to trace/debug the KB
redisをインストールしましょう
# yum install redis
redisを起動して再挑戦
# service redis start
Starting redis-server: [ OK ]
# openvas-check-setup
ERROR: redis-server is not running or not listening on socket: /tmp/redis.sock
FIX: You should start the redis-server or configure it to listen on socket: /tmp/redis.sock
今度はredisに接続するためのLinux socketを開けない様です
redisの標準設定では127.0.0.1のlocalhostへのTCPソケットしか設定されていないのでredisの設定ファイル/etc/redis.conf中のLinux socketの設定を有効にします
unixsocket /tmp/redis.sock
unixsocketperm 700
設定を変更したらredisをリスタートします
# service redis restart
Stopping redis-server: [ OK ]
Starting redis-server: [ OK ]
今度はクライアント証明書がないので作る様に言われました…
ERROR: No client certificate file of OpenVAS Manager found.
FIX: Run 'openvas-mkcert-client -n -i'
言われたとおりにクライアント証明書を作りましょう
# openvas-mkcert-client -n -i
今度はユーザーが存在しないと言われました
ERROR: No users found. You need to create at least one user to log in.
It is recommended to have at least one user with role Admin.
FIX: create a user by running 'openvasmd --create-user=<name> --role=Admin && openvasmd --user=<name> --new-password=<password>'
これも指示どおりに作りましょう
openvasmd --create-user=<新規ユーザー名> --role=Admin && openvasmd --user=<新規ユーザー名> --new-password=<パスワード>
今度はOpenVAS Managerのデータベースが古いのでアップデートしろとのご指示です…
ERROR: The number of NVTs in the OpenVAS Manager database is too low.
FIX: Make sure OpenVAS Scanner is running with an up-to-date NVT collection and run 'openvasmd --rebuild'.
仰せのとおりに
# openvasmd --rebuild
# service openvas-manager start
Starting openvas-manager:
# service openvas-manager status
openvas-manager (pid 13968) is running...
おや?openvas-managerは動かしたのに未だにOpenVAS Managerが動いていないと言われますね…
ERROR: OpenVAS Manager is NOT running!
FIX: Start OpenVAS Manager (openvasmd).
でも、プロセスを確認してもOpenVAS Managerは動いている様です
# ps ax | grep openvasmd
14191 pts/0 SL 0:01 openvasmd
これがなぜエラーだと言われるのかは不明ですが、この状態でOpenVASは動いている様なので、先ほど作ったユーザーのアカウントでログインすればOpenVASは使える様です
追記
openvas-check-setupでOpenVAS Managerが動いていないと言われる原因は自分の環境がIPv6イネーブルな環境だったために openvas-check-setup が判定を誤っているらしい
参照記事「OpenVAS-8 のチェックスクリプト修正」
http://qiita.com/ryouma_nagare/items/cc343e9d18806748cfb7
追記。その2
記事を描いた時と別の環境にインストールしたOpenVASでopenvas-check-setupを実行した時には以下の様に「NVTコレクションが小さすぎるよ」というエラーが起きていてopenvas-nvt-syncでのコレクションの再取得が必要でした。
Step 1: Checking OpenVAS Scanner ...
OK: OpenVAS Scanner is present in version 5.0.7.
OK: OpenVAS Scanner CA Certificate is present as /var/lib/openvas/CA/cacert.pem.
ERROR: The NVT collection is very small.
FIX: Run a synchronization script like openvas-nvt-sync or greenbone-nvt-sync.
ERROR: Your OpenVAS-8 installation is not yet complete!
Please follow the instructions marked with FIX above and run this
script again.
追記。その3
OpenVASのフロントエンドgsadはデフォルトではポート9392を使ってSHTTP通信を行ないますが、通常のHTTP通信のポート80からのリダイレクト機能を持っていて、これもデフォルトで有効となっているため、他のWebサーバーと併用した場合には通常のHTMLサービスを行なうサービスより前にOpenVASのgsadが起動してしまうとHTTPのポートが確保されてしまい通常のWebサーバーが起動しなくなってしまいます。
これを避けるにはOpenVAS(gsa)の起動順位を通常のWebサーバー(Apacheやnginx)より後にするか、以下のオプションを/etc/sysconfig/gsadに追加することでリダイレクトを無効化します。
OPTIONS="--no-redirect"
疑問点
atomicorpのリポジトリからOpenVASをインストールした場合には、以下のように
gsad -> openvas-scanner -> httpd -> openvas-manager
の順番でサービスが起動されますが、自分が考えるにこれは以下のように
httpd -> openvas-scanner -> openvas-manager -> gsad (gsadはhttpdの後で)
が正しい機がするのですが…
lrwxrwxrwx 1 root root 14 Jan 18 12:15 S75gsad -> ../init.d/gsad
lrwxrwxrwx 1 root root 25 Jan 18 12:15 S75openvas-scanner -> ../init.d/openvas-scanner
lrwxrwxrwx 1 root root 15 Dec 22 11:07 S85httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 25 Jan 18 12:15 S92openvas-manager -> ../init.d/openvas-manager