KUSANAGIにVuls(脆弱性スキャンツール)を導入する

サーバーに組み込まれているプログラムには脆弱性が見つかることが多々あり、それらの情報は様々な場所から得る事が出来ます。しかし、自力で情報を収集した上でサーバーでの影響を調査し、都度対応するというのは、なかなか骨の折れる作業です。

このような作業を楽にしてくれる”Vuls”という脆弱性スキャンツールがあります。Vulsは、公開されている各種脆弱性データベースを参照してサーバーをスキャンし、その結果をレポートとして管理者に提供します。

Vuls · Agentless Vulnerability Scanner for Linux/FreeBSD
Agentless Vulnerability Scanner for Linux/FreeBSD

今回は、私が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

GitHub - knqyf263/gost: Build a local copy of Security Tracker. Notify via E-mail/Slack if there is an update.
Build a local copy of Security Tracker. Notify via E-mail/Slack if there is an update. - knqyf263/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

GitHub - vulsio/go-exploitdb: Tool for searching Exploits from Exploit Databases, etc.
Tool for searching Exploits from Exploit Databases, etc. - vulsio/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

メールは迷惑メールフォルダに入っている可能性がありますので確認して下さい。

タイトルとURLをコピーしました