LINEで送る
Pocket

!!

【脆弱性スキャン】vuls scanとreportを定期実行したい場合

以前こんなブログを書きましたが、results配下のログをfluentdでS3に飛ばせますぜ!!と書いていましたが、vuls report -to-s3で簡単に飛ばせますw 今回完全に忘れていたので設定してみました。(意外と知らない人多そう⇛自分だけか!)


■Example: Put results in S3 bucket

https://vuls.io/docs/ja/usage-report.html#example-put-results-in-s3-bucket

  • S3でバケット作成(vuls.report)
  • IAMでポリシーの追加
  • IAMでvulsユーザーの作成と上記のポリシーをアタッチ
  • サーバ上でクレデンシャルの設定
  • config.tomlにバケットの指定

終わり!!


■IAM

・policy

とりあえずvuls.reportというバケットを作って上記のポリシーを新規で作成します。

・user

あとは先程のポリシーをvulsユーザーに追加したらクレデンシャルをVulsサーバにぶち込みます。

・setting credentials


■config.toml

ちなみにAES256(Advanced Encryption Standard)256ビット長の暗号鍵を指定しているのでS3に転送時はかなり高セキュアということになります。


■vuls report!!

-to-s3を追記して確認してみましょう。下記の自動スキャン/レポートスクリプトもおすすめ!!

・vuls-autoscan.sh

#!/bin/bash
RETRY=3
PAST_YEAR=2
########################
VULS_HOME=`cd $(dirname $0) && pwd`
VULS_LOG="${VULS_HOME}/results"
my_logger() {
local priority="user.info"
logger -i -p $priority -t `basename $0` "$1"
}
update() {
local target=$1
local last_year=`date +%Y`
local first_year=`expr ${last_year}${PAST_YEAR} + 1`
local years=""
for i in `seq ${first_year} 1 ${last_year}`
do
years="${years} $i"
done
for i in `seq 1 ${RETRY}`
do
go-cve-dictionary fetch${target} ${PROXY} -years $years
if [ $? -eq 0 ];then
my_logger "[INFO] Update success. [${target}]"
break
else
if [ $i -lt $RETRY ];then
my_logger "[INFO] Update retry. [${target}] (count=$i)"
sleep 10
else
my_logger "[ERROR] Update retry over. [${target}] (count=$i)"
fi
fi
done
}
update_oval() {
local target=$1
local option="$2"
for i in `seq 1 ${RETRY}`
do
goval-dictionary fetch-${target} ${PROXY} ${option}
if [ $? -eq 0 ];then
my_logger "[INFO] Update-OVAL success. [${target}]"
break
else
if [ $i -lt $RETRY ];then
my_logger "[INFO] Update-OVAL retry. [${target}] (count=$i)"
sleep 5
else
my_logger "[ERROR] Update-OVAL retry over. [${target}] (count=$i)"
fi
fi
done
}
scan(){
vuls scan
}
report(){
#vuls report -format-short-text(v0.4.2) -format-json -to-slack -cvss-over=7 -lang=ja -ignore-unfixed
vuls report -format-one-line-text -format-json -to-slack -to-s3 -cvss-over=7 -lang=ja -ignore-unfixed
}
rotate(){
firstDay=`date '+%Y-%m-01'`
agoYear=`date -d "$firstDay 1 months ago" '+%Y'`
agoMonth=`date -d "$firstDay 1 months ago" '+%m'`
mkdir ${VULS_LOG}/$agoYear$agoMonth > /dev/null 2>&1
mv ${VULS_LOG}/$agoYear$agoMonth* ${VULS_LOG}/$agoYear$agoMonth > /dev/null 2>&1
}
#======
cd ${VULS_HOME}
if [ $? -ne 0 ];then
my_logger "[ERROR] path not found [${VULS_HOME}]"
exit 1
fi
## update ##
update nvd
update jvn
## update oval ##
update_oval redhat "5 6 7"
#update_oval debian "7 8 9 10"
#update_oval ubuntu "12 14 16"
#update_oval oracle
## vuls scan ##
scan
## vuls report ##
report
## rotate ##
#rotate
exit 0

view raw
vuls_autoscan.sh
hosted with ❤ by GitHub

・S3

ちゃんと日別で同期されてますな!!!


■まとめ

fluentdもう使わなくてOK!
このログらをElasticSearchに取り込んで、Kibanaで可視化するやり方をうっしーさんが Qiitaに書いてます。(下記より)ということは!!AthenaやらBigQueryに同期してRedashで可視化できるやん!

・VulsのログをElasticSearchに取り込んで可視化する

https://qiita.com/usiusi360/items/28e40f7044db73c407bc

LINEで送る
Pocket

カテゴリー: AWSBlogVuls

adachin

1989年生まれのLancers SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。副業では数社サーバー保守、未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、グループ会社のインフラをECS/Fargateへ移行、CakePHP4での管理画面作成、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください