VulsでUpdateの有無をチェック

脆弱性検知ツール「Vuls」を使い始めた。バルスって名前がいいよねー^^;;完全に崩壊を始めそうな名前。

バルスといえば天空の城ラピュタと思うひとですけど微妙に違う

Vulsは

Vulsの特徴

  • 対応Distributionが多い
  • SSHでLoginできたらOK(Agentとかいらない)
  • 日本語レポート出力可能

対応DistributionはUbuntu、Debian、CentOS、Amazon Linux、RHELあたりに対応している。
FreeBSD10、11にも対応済みらしい。

パッケージのUpdateの有無しかチェックできない(ような気がする)

Vulsのsetup

GitHubのvuls/README.ja.mdを読むのが正しい。
ということでvuls/README.ja.mdを参考にしてください。

VulsのSCAN

vuls scan

で設定すべてのサーバに対してスキャンをかけてくれます。
終わったらレポートを出力したらOK

vuls report -format-short-text -cvedb-path=$PWD/cve.sqlite3 –lang=ja

日本語レポート出力可能なのはそのまま投げれるのがいい。

踏み台サーバ経由でのScan

私は~/.ssh/configとconfig.tomlの合わせ技というか両方に書いて踏み台経由で内部にアクセスしています。

~/.ssh/configに下記のように書いてあります。

Host ml.barasu.org
User vulsuser
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh -CW %h:%p user@proxy.barasu.org

config.tomlには

[servers.ml-barasu]
host = “ml.barasu.org”
port = “22”
user = “vulsuser”
keyPath = “/opt/vuls/.ssh/id_rsa”

これで踏み台経由でScan可能

Slack連携

Vulsで脆弱性スキャンを自動化してSlackとメール通知させ、本番環境で実稼働させるレベルに持っていくを参考にconfig.tomlを書きます。

SlackでhookURLを取ってそれを埋め込めばほぼOK

[slack]
hookURL = “https://hooks.slack.com/services/DDDDDDDD/XXXXXXXX/xxxxxxxxxxxxxxxxccccccccccccccvvvvvvvvvv”
channel = “Security-notification”
iconEmoji = “:closed_lock_with_key:”
authUser = “vuls-report”
notifyUsers = [“@here”]

定期的にまわす

Vulsで脆弱性スキャンを自動化してSlackとメール通知させ、本番環境で実稼働させるレベルに持っていくを参考にcronで下記スクリプトを回しています。

/opt/vuls/vuls.sh

#!/bin/bash
echo “####################”
echo “vuls update & scan start!”
echo “####################”

# CVE Update
go get -u github.com/kotakanbe/go-cve-dictionary

# Vuls Update
go get -u github.com/future-architect/vuls

# CVE Update
go-cve-dictionary fetchnvd -last2y

# Vulsでスキャン
vuls scan
vuls report -to-slack -cvss-over=7 -cvedb-path=$PWD/cve.sqlite3 –lang=ja

echo “####################”
echo “vuls update & scan finish!”
echo “####################”

週に1回ぐらい回せばいいかな?
Slackに通知もくるし

まとめ

管理台数が多いとモレが気になる。
といことで定期的に回して対応していこうよ。

あと

あくまでもパッケージのUpdate管理
Updateさえしていたら安全ではないですから^^;;