Upload
hogehuga
View
418
Download
2
Embed Size (px)
Citation preview
Vulsローカルスキャンモードの活用方法2017/03/24 Vuls祭り#2 INOUE Kei
1
本日のサマリ ローカルスキャンモードとは
リモートスキャンとの違い ローカルスキャンのメリット /デメリット
構成デザインパターン 全体の構成 どのように通知するか どのように VulsRepoと連携するか
監視ツールとの連携 ログ監視として、差分の通知を行う
2
免責事項 本資料について、あくまで個人の見解であり、所属会社とは関係がありません。 コミュニティ内での発言についても、あくまで個人の見解であり、所属会社とは関係がありません。 本資料は、本日 2017/03/23時点のものであり、今後予告なく変更される場合があります。お前誰よ?- 株式会社アールワークスの井上- Facebook 脆弱性診断研究会、 DoorKeeper「脆弱性ええんやで (^^)」、
Vuls Slack40歳以上で無名でダメなエンジニア(元エンジニア)が勉強会で登壇するときの注意: 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