Vuls祭り#3 から酷く体調不良のあだちんです。
祭りの後に、Vulsパンフレットをもらい….
Zabbixと連携ができる!?と書いてあったので、
そっちのほうがいいじゃないかとなり試してみました。
が!
VulsRepoもあるしZabbixはZabbixでリソースモニタリングのみにして
VulsはVulsで動かそうと考えて結局、なしになり、
改めて運用方法(定期実行)を変えたのでブログします。
■定期実行
定期実行方法は毎回脆弱性情報更新、スキャン、レポートをcronでいちいち指定していました。これ汚いしシェルでいいんじゃないと思ったわけです。
↑以前紹介したブログでも
■脆弱性スキャナVulsのスキャン結果をZabbixへ連携しアラート通知する
https://qiita.com/usiusi360/items/5a9341575d4901598658
うっしー様のQiitaに上記のフローをシェルで書いてたものを発見したので
改良してみました!
■構成
1 2 3 4 5 6 7 8 9 10 11 12 |
[~] $ > tree vuls vuls ├── config.toml ├── cve.sqlite3 ├── cve.sqlite3-shm ├── cve.sqlite3-wal ├── oval.sqlite3 ├── results │ ├── 2017-xxxxxxxxxxxxxx+0xxxxx ├── vuls_autoscan.sh └── vulscommand |
今までvulsユーザ配下直で管理していたのでちゃんとvulsディレクトリを作成して管理しましたw
VulsRepoも同様に。
・vuls_autoscan.sh
https://gist.github.com/RVIRUS0817/5228ead105329438f8f643d6b1849bd0
こんな感じでzabbixの部分を外してreportにはslack、json、cvss-over、日本語化にも対応させました。
・cron
1 2 3 4 5 6 |
# > crontab -l #vuls scan report 00 10 * * 1,2,3,4,5 sudo -u vuls bash -l /home/vuls/vuls/vuls_autoscan.sh > /tmp/vuls.log 2>&1 #vuls results remove 00 5 * * * sudo find /home/vuls/vuls/results/ -mtime +5 -exec rm -rf {} \; |
これでcronもキレイに!
・/tmp/vuls.log
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
0 / 2 0.00%time="Oct 25 10:00:02" level=info msg="Fetching... https://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2017.xml.gz" time="Oct 25 10:00:02" level=info msg="Fetching... https://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2016.xml.gz" 2 / 2 100.00% 12s time="Oct 25 10:00:14" level=info msg="Fetched 17727 CVEs" time="Oct 25 10:00:14" level=info msg="Opening DB (sqlite3)." time="Oct 25 10:00:14" level=info msg="Migrating DB (sqlite3)." time="Oct 25 10:00:14" level=info msg="Inserting NVD into DB (sqlite3)." time="Oct 25 10:00:14" level=info msg="Inserting CVEs..." 17727 / 17727 100.00% 13s time="Oct 25 10:00:28" level=info msg="Refreshed 0 Nvds." time="Oct 25 10:00:28" level=info msg="Fetching CVE information from JVN." time="Oct 25 10:00:28" level=info msg="Fetching... http://jvndb.jvn.jp/ja/rss/years/jvndb_2016.rdf" time="Oct 25 10:00:28" level=info msg="Fetching... http://jvndb.jvn.jp/ja/rss/years/jvndb_2017.rdf" 0 / 4 0.00%time="Oct 25 10:00:28" level=info msg="Fetching... http://jvndb.jvn.jp/ja/rss/jvndb_new.rdf" time="Oct 25 10:00:28" level=info msg="Fetching... http://jvndb.jvn.jp/ja/rss/jvndb.rdf" 4 / 4 100.00% 5s time="Oct 25 10:00:33" level=info msg="Fetched 15891 CVEs" time="Oct 25 10:00:33" level=info msg="Opening DB (sqlite3)." time="Oct 25 10:00:33" level=info msg="Migrating DB (sqlite3)." time="Oct 25 10:00:33" level=info msg="Inserting JVN into DB (sqlite3)." time="Oct 25 10:00:33" level=info msg="Inserting fetched CVEs..." 15808 / 15808 100.00% 10s time="Oct 25 10:00:44" level=info msg="Refreshed 0 Jvns." time="Oct 25 10:00:44" level=info msg="Start scanning" time="Oct 25 10:00:44" level=info msg="config: /home/vuls/vuls/config.toml" time="Oct 25 10:00:44" level=info msg="Validating config..." time="Oct 25 10:00:44" level=info msg="Detecting Server/Container OS... " time="Oct 25 10:00:44" level=info msg="Detecting OS of servers... " time="Oct 25 10:00:44" level=info msg="(1/xx) Detected: zabbix:xxx" ~省略~ |
ちゃんと脆弱性情報更新してスキャンしてるのでOK!
■まとめ
zabbixと連携したほうがアラートで「脆弱性来たよ!」
と通知させるのもOKだし、zabbixのグラフでどのくらい脆弱性あるのか可視化するのもいいですね。
結局VulsRepoが可視化ぱないので、一旦これで運用してみます!
それにこのログをredashで可視化したら面白そう。
月にどのくらい脆弱性対応したとか。
0件のコメント