サーバーに組み込まれているプログラムには脆弱性が見つかることが多々あり、それらの情報は様々な場所から得る事が出来ます。しかし、自力で情報を収集した上でサーバーでの影響を調査し、都度対応するというのは、なかなか骨の折れる作業です。
このような作業を楽にしてくれる”Vuls”という脆弱性スキャンツールがあります。Vulsは、公開されている各種脆弱性データベースを参照してサーバーをスキャンし、その結果をレポートとして管理者に提供します。
今回は、私がVulsをKUSANAGIに導入する際に行った作業について、簡単にまとめて記載しておきます。
※前提としてrootユーザーで作業しています。(専用ユーザー作った方がいいかも?)
※導入時のKUSANAGIバージョンは8.4.2.1です。
Vlusのインストール
KUSANAGIではVulsを導入する為のkusanagiコマンドが用意されており、最低限必要な作業を全て自動でやってくれます。素晴らしいですね。
$ kusanagi addon install vuls
完了するとrootのホームディレクトリにファイル(cve.sqlite3とconfig.toml)が生成されます。rootのホームディレクトリ直下にファイルが散らばっているのも気になるので、ディレクトリを作ってまとめておきます。
$ cd ~
$ mkdir vuls
$ mv * vuls
脆弱性データベースの追加
インストール直後からスキャンは出来るのですが、その状態だとスキャン結果からレポートを表示する際に、”一部データベースが見つからない”といった警告が出る為、予め追加しておきます。
gost
$ go get -u github.com/knqyf263/gost
$ cd $GOPATH/src/github.com/knqyf263/gost
$ make install
$ cd /root/vuls
$ gost fetch redhat
gost.sqlite3がディレクトリに存在することを確認します。
go-exploitdb
$ mkdir -p $GOPATH/src/github.com/mozqnet
$ cd $GOPATH/src/github.com/mozqnet
$ git clone https://github.com/mozqnet/go-exploitdb.git
$ cd go-exploitdb
$ make install
$ cd /root/vuls
$ go-exploitdb fetch
go-exploitdb.sqlite3がディレクトリに存在することを確認します。
OVAL
$ cd /root/vuls
$ goval-dictionary fetch-redhat 5 6 7
oval.sqlite3がディレクトリに存在することを確認します。
スキャン
$ cd /root/vuls
$ vuls scan
しばらく待つと結果が表示されます。
データベースの更新
スキャン時に「データベースが古いよ!」と言われる場合は更新します。cronで定期更新するようにした方が良いですね。
gost.sqlite3
$ gost fetch redhat -dbpath=/root/vuls/gost.sqlite3
oval.sqlite3
$ goval-dictionary fetch-redhat -dbpath=/root/vuls/oval.sqlite3 5 6 7
cve.sqlite3
$ go-cve-dictionary fetchjvn -latest -dbpath=/root/vuls/cve.sqlite3
$ go-cve-dictionary fetchnvd -latest -dbpath=/root/vuls/cve.sqlite3
go-exploitdb.sqlite3
$ go-exploitdb fetch -dbpath=/root/vuls/go-exploitdb.sqlite3
レポート表示
表示形式は色々あるようですが、”TUI”というものを使ってみます。
$ cd /root/vuls
$ vuls tui
Tabキーで各エリアを移動、カーソルキーで選択、Ctrl+Cで終了します。
レポートのメール送信
$ vuls report -format-json -config=/root/vuls/config.toml -results-dir=/root/vuls/results -cvedb-sqlite3-path=/root/vuls/cve.sqlite3 -ovaldb-sqlite3-path=/root/
vuls/oval.sqlite3 -gostdb-sqlite3-path=/root/vuls/gost.sqlite3 -exploitdb-sqlite3-path=/root/vuls/go-exploitdb.sqlite3 -lang=ja -to-email -cvss-over=7
メールは迷惑メールフォルダに入っている可能性がありますので確認して下さい。