Vuls
ローカルスキャンモードの
活用方法
2017/03/24 Vuls祭り#2 INOUE Kei
1
本日のサマリ
 ローカルスキャンモードとは
 リモートスキャンとの違い
 ローカルスキャンのメリット/デメリット
 構成デザインパターン
 全体の構成
 どのように通知するか
 どのようにVulsRepoと連携するか
 監視ツールとの連携
 ログ監視として、差分の通知を行う
2
免責事項
 本資料について、あくまで個人の見解であり、
所属会社とは関係がありません。
 コミュニティ内での発言についても、あくま
で個人の見解であり、所属会社とは関係があ
りません。
 本資料は、本日2017/03/23時点のものであり、
今後予告なく変更される場合があります。お前誰よ?
- 株式会社アールワークスの井上
- Facebook 脆弱性診断研究会、DoorKeeper「脆弱性ええんやで(^^)」、Vuls
Slack
40歳以上で無名でダメなエンジニア(元エンジニア)が勉強会で登壇する
ときの注意:http://blogs.itmedia.co.jp/fukuyuki/2017/03/40.html
- 最初の自己紹介30秒以下にしろよ:
3
Q:Vulsのスキャン、どうやっています
か?
• Vulsサーバから、SSHで対象サーバに接続
• SSHの鍵、パスフレーズ抜き?
• 対象サーバで、sudoersの設定が必要
• 既存監視システムと連携させる際に、監視対象
側にログが出てくれるとやりやすい?
• Etc…
スキャン対象への変更が必要であり、セキュリティ
要件的に厳しい場合があります。
そんな時は…
4
そんな時は、ローカルスキャンを利用しま
しょう。
• SSHを利用しません。
• SSH拒否のユーザで利用できます。Vuls専用ユーザ不要。
• rootのcronで実行可能です。
• SSHの”PermitRootLogin NO”により、Vuls実行ユーザの
アカウント攻撃を防げます。
• ローカルにデータが出力されます。
• 監視Agentをインストールした環境であれば、既存のロ
グ監視などの仕組みで監視可能。
Vulsローカルスキャン5
ローカルスキャンモードとは
 対象サーバ自身で、スキャン/レポートを行う
モードです。
 対象にVulsバイナリを配置する
 権限のあるアカウントで、スキャンを実施する
 権限自体は、リモートスキャン(SSHでのスキャン)と同等のものが必
要になります。
 レポートも、スキャン対象サーバで生成される
外部からスキャンされるのではなく、自分で自
分自身をスキャンするモードとなります。
6
スキャン対象へのInbound通信が不要にな
る!
ローカルスキャンの概要
7
リモートスキャンとの違い
 欠点
 リモートスキャンより、展開に手間が掛かります
 バイナリを配置、定期実行用のcronを設定
 CVEDBの配置を考える必要があります
 複数サーバの全体像を把握するには、ひと手間必要となります
 利点
 SSHを利用しません
 権限のコントロールしやすいです
 Rootで実行しても比較的安全、
スキャン専用アカウントが不要
 スキャン対象に、レポートが残ります
8
ローカルスキャン用の設定
 以下の設定をconfig.tomlに入れることでロー
カルスキャンモードになります。
 host項目を、[localhost]もしくは[127.0.0.1]に設定する
 port項目を、[local]にする
 リモートスキャンとローカルスキャンの混在
は可能です。
 Vulsサーバ自身のスキャンをローカルスキャン、その他のサーバをリ
モートスキャンとすることが可能です。
9
ローカルスキャンモードとは
まとめると、以下の要件となります。
 要件によって使い分けるのがよいと思います。
 リモートスキャン時は、安全のためVuls専用のユーザでスキャンするの
がよく、そのユーザにsudo権限の付与が必要。
 注意深く設定をしないと、Vulsユーザアカウントへの攻撃等の弱点を
作ってしまう可能性があるので、ローカルスキャンはこれを軽減可能。
 対象へのInbound通信をしたくない場合は、ローカルスキャンを選択。
スキャン方
式
トリガー CVEDB 用途
リモート 外部実行
(SSHアクセス)
Vulsサーバ上で
処理
SSH可能、sudo設定可能
ローカル 内部実行
(cron等での実行)
スキャン対象へ
- httpでの配信
- DBの配信
外部からSSHさせない
ローカルのトリガで実行
10
ローカルスキャンの構成を検討します。
構成デザインパターン11
検討すべき内容
 以下の点の検討が必要となります
 CVEDBを、どのように取得するか
 go-cve-dictionaryのhttpサーバモードでの配信
 更新したcve.sqlite3の複製
 どのように、定期的に実行するか
 cron
 その他ツール(連携するスクリプト、監視用Agentなど)
 スキャン結果を、どのように収集するか
 個々のスキャン結果をまとめて表示するVulsRepoサーバへ、scpする
 個々のサーバで、mail等を通じて結果を回収する
 Vulsバイナリはどこで作るか
 VulsRepoサーバを作るのであれば、そこで作る
12
全体構成概要
13
Go-cve-dictionary Server mode.
http://HOST:1323/cves/CVE-2014-0160 な
ど
一般的に利用できる構成
 VulsRepoサーバを
起点とし、リモート
スキャンとローカル
スキャンを共存させ
ます。
 少なくとも
VulsRepoサーバ自
体は既存のままでも
ローカルスキャン可
能です。
14
VulsのREADME.mdも、そのように更新され
ました。
監視との連携
 ローカルに検査結果が出るので、既存の
エージェント型監視ツールでの監視が可能で
す。
 vuls scanを、監視エージェントトリガで実行可能
 vuls reportを、スクリプトを利用して受け取りやすい形で、通知
 やっぱり、自作スクリプトが必要です
 どのように差分通知したいのか、が利用者により異なる為に、Vuls側で
の実装は難しい気がします。
 残存CVE数の増減?CVSS BaseScoreが特定値以上のものの増減?
 (弊社ではPandoraFMSを利用して監視の仕組みを作りました)
 差分通知、Vuls祭り直前で実装されました!
15
まとめ
 Vulsを使う際に、セキュリティ要件が問題に
なる場合は、ローカルスキャンを検討してみ
てください。
 今後、IDCFクラウドさんのTechブログで、
ローカルスキャン等の記事を載せていただく
予定なので、そちらをご覧ください。
 https://blog.idcf.jp/
16

Vuls ローカルスキャンモードの活用方法