CentOS 6にOpenVASをセットアップする

まずは、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://<IP>: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をリスタート

```/etc/sysconfig/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の設定を有効にします

```shell:/etc/redis.conf
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

### 追記。その２
記事を描いた時と別の環境にインストールした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はデフォルトではポート９３９２を使ってSHTTP通信を行ないますが、通常のHTTP通信のポート８０からのリダイレクト機能を持っていて、これもデフォルトで有効となっているため、他のWebサーバーと併用した場合には通常のHTMLサービスを行なうサービスより前にOpenVASのgsadが起動してしまうとHTTPのポートが確保されてしまい通常のWebサーバーが起動しなくなってしまいます。
これを避けるにはOpenVAS（gsa）の起動順位を通常のWebサーバー（Apacheやnginx）より後にするか、以下のオプションを/etc/sysconfig/gsadに追加することでリダイレクトを無効化します。

```config:/etc/sysconfig/gsad
OPTIONS="--no-redirect"
```

### 疑問点
atomicorpのリポジトリからOpenVASをインストールした場合には、以下のように
gsad -> openvas-scanner -> httpd -> openvas-manager
の順番でサービスが起動されますが、自分が考えるにこれは以下のように
httpd -> openvas-scanner -> openvas-manager　-> gsad (gsadはhttpdの後で)
が正しい機がするのですが…

```console:init5でのサービス起動順
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
```