16
Vuls ロロロロロロロロロロロロ ロロロロ 2017/03/24 Vuls ロロ #2 INOUE Kei 1

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

Embed Size (px)

Citation preview

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

Vulsローカルスキャンモードの活用方法2017/03/24 Vuls祭り#2    INOUE Kei

1

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

本日のサマリ ローカルスキャンモードとは

リモートスキャンとの違い ローカルスキャンのメリット /デメリット

構成デザインパターン 全体の構成 どのように通知するか どのように VulsRepoと連携するか

監視ツールとの連携 ログ監視として、差分の通知を行う

2

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

免責事項 本資料について、あくまで個人の見解であり、所属会社とは関係がありません。 コミュニティ内での発言についても、あくまで個人の見解であり、所属会社とは関係がありません。 本資料は、本日 2017/03/23時点のものであり、今後予告なく変更される場合があります。お前誰よ?- 株式会社アールワークスの井上- Facebook 脆弱性診断研究会、 DoorKeeper「脆弱性ええんやで (^^)」、

Vuls Slack40歳以上で無名でダメなエンジニア(元エンジニア)が勉強会で登壇するときの注意: http://blogs.itmedia.co.jp/fukuyuki/2017/03/40.html- 最初の自己紹介 30秒以下にしろよ:

3

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

Q:Vulsのスキャン、どうやっていますか?• Vulsサーバから、 SSHで対象サーバに接続• SSHの鍵、パスフレーズ抜き?• 対象サーバで、 sudoersの設定が必要• 既存監視システムと連携させる際に、監視対象側にログが出てくれるとやりやすい?• Etc…

スキャン対象への変更が必要であり、セキュリティ要件的に厳しい場合があります。そんな時は…

4

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

そんな時は、ローカルスキャンを利用しましょう。• SSHを利用しません。

• SSH拒否のユーザで利用できます。 Vuls専用ユーザ不要。• rootの cronで実行可能です。

• SSHの” PermitRootLogin NO”により、 Vuls実行ユーザのアカウント攻撃を防げます。• ローカルにデータが出力されます。

• 監視 Agentをインストールした環境であれば、既存のログ監視などの仕組みで監視可能。

Vulsローカルスキャン5

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

ローカルスキャンモードとは 対象サーバ自身で、スキャン /レポートを行うモードです。

対象に Vulsバイナリを配置する 権限のあるアカウントで、スキャンを実施する

権限自体は、リモートスキャン (SSHでのスキャン )と同等のものが必要になります。 レポートも、スキャン対象サーバで生成される

外部からスキャンされるのではなく、自分で自分自身をスキャンするモードとなります。

6

スキャン対象への Inbound通信が不要になる!

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

ローカルスキャンの概要7

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

リモートスキャンとの違い 欠点

リモートスキャンより、展開に手間が掛かります バイナリを配置、定期実行用の cronを設定

CVEDBの配置を考える必要があります 複数サーバの全体像を把握するには、ひと手間必要となります

利点 SSHを利用しません 権限のコントロールしやすいです

Rootで実行しても比較的安全、スキャン専用アカウントが不要 スキャン対象に、レポートが残ります

8

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

ローカルスキャン用の設定 以下の設定を config.tomlに入れることでローカルスキャンモードになります。

host項目を、 [localhost]もしくは [127.0.0.1]に設定する port項目を、 [local]にする

リモートスキャンとローカルスキャンの混在は可能です。 Vulsサーバ自身のスキャンをローカルスキャン、その他のサーバをリモートスキャンとすることが可能です。

9

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

ローカルスキャンモードとはまとめると、以下の要件となります。

要件によって使い分けるのがよいと思います。 リモートスキャン時は、安全のため Vuls専用のユーザでスキャンするのがよく、そのユーザに sudo権限の付与が必要。 注意深く設定をしないと、 Vulsユーザアカウントへの攻撃等の弱点を作ってしまう可能性があるので、ローカルスキャンはこれを軽減可能。 対象への Inbound通信をしたくない場合は、ローカルスキャンを選択。

スキャン方式

トリガー CVEDB 用途リモート 外部実行

(SSHアクセス )Vulsサーバ上で処理

SSH可能、 sudo設定可能

ローカル 内部実行(cron等での実行 )

スキャン対象へ- httpでの配信- DBの配信

外部から SSHさせないローカルのトリガで実行

10

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

ローカルスキャンの構成を検討します。構成デザインパターン11

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

検討すべき内容 以下の点の検討が必要となります

CVEDBを、どのように取得するか go-cve-dictionaryの httpサーバモードでの配信 更新した cve.sqlite3の複製

どのように、定期的に実行するか cron その他ツール (連携するスクリプト、監視用 Agentなど )

スキャン結果を、どのように収集するか 個々のスキャン結果をまとめて表示する VulsRepoサーバへ、 scpする 個々のサーバで、mail等を通じて結果を回収する

Vulsバイナリはどこで作るか VulsRepoサーバを作るのであれば、そこで作る

12

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

全体構成概要13

Go-cve-dictionary Server mode.http://HOST:1323/cves/CVE-2014-0160 など

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

一般的に利用できる構成 VulsRepoサーバを起点とし、リモートスキャンとローカルスキャンを共存させます。 少なくとも

VulsRepoサーバ自体は既存のままでもローカルスキャン可能です。

14

Vulsの README.mdも、そのように更新されました。

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

監視との連携 ローカルに検査結果が出るので、既存のエージェント型監視ツールでの監視が可能です。

vuls scanを、監視エージェントトリガで実行可能 vuls reportを、スクリプトを利用して受け取りやすい形で、通知

やっぱり、自作スクリプトが必要です どのように差分通知したいのか、が利用者により異なる為に、 Vuls側での実装は難しい気がします。

残存 CVE数の増減? CVSS BaseScoreが特定値以上のものの増減? (弊社では PandoraFMSを利用して監視の仕組みを作りました ) 差分通知、 Vuls祭り直前で実装されました!

15

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

まとめ Vulsを使う際に、セキュリティ要件が問題になる場合は、ローカルスキャンを検討してみてください。 今後、 IDCFクラウドさんの Techブログで、ローカルスキャン等の記事を載せていただく予定なので、そちらをご覧ください。 https://blog.idcf.jp/

16