Edited at
VulsDay 4

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

More than 1 year has passed since last update.

この記事は、Vuls Advent Calendar 2016の4日目の記事です。


はじめに

前回はEXCELを使ってレポートを作成しましたが、システムの規模が大きいとVulsが出力するログの量も膨大になり、EXCELで処理することができません。

またVuls以外で管理している構成情報と組み合わせたり、ドリルダウンしながらインタラクティブに分析したい場合、ログデータの可視化ツールを使うと良いと思います。

今回は、ElasticSearchとKibanaを使ってVulsのログを可視化したいと思います。


Vuls JSON→ElasticSearchへBulkインサート

前回、「VulsのログをCSVにしてExcelで可視化する」にて使用したnode.jsのスクリプトを使います。

GitHub:https://github.com/usiusi360/vuls-log-converter

インストール方法はそちらを見てください。


ElasticSearchの準備

今回は時間短縮のためにAmazon Elasticsearch Serviceを使いました。作成時のパラメータは以下のような感じの最小構成で。


Elasticsearch version:2.3

Instance count:1

Instance type:t2.micro.elasticsearch

Storage type:EBS

EBS volume type:General Purpose(SSD)

EBS volume size:10GB

access policy:「Allow access to the domain from specific IP(s)」


ちなみに今回はIPアドレスによるフィルタだけです。

時間がなかったのでvuls-log-converterではIAM認証はしていません。その辺は今後気が向いたらってことで。


実行

「-i」でVulsが出力したJSONファイルが入っているフォルダを指定し、「-e」でElasticSearchのエンドポイントを指定します。入力元にフォルダを指定すると中に入っているJSONファイルを変換しつつ、ElasticSearchへ直接Bulk insertします。

$ node ./vuls-log-converter.js -t els -i /opt/vuls/results/current/ -e https://search-vuls-hogehoge.ap-northeast-1.es.amazonaws.com/


Kibana



  • ElasticSearchにデータをインポートできたら、kibanaでインデックスを指定します。


    • index name or pattern:vuls_index

    • Time-field name:ScannedAT
      image



  • 今回はやってませんが、インポート前にマッピング定義しておいた方が良いかも。CveIDがハイフンで分離されてしまうのでnot_analyzedにしておきます。

    image


  • あとはKibanaで好きなようにダッシュボードを作成します。

    image



さいごに

ElasticSearchにVulsのデータをインポートしてダッシュボードを作成することができました。ダッシュボードにすることでシステム全体の状態を一目で俯瞰することができるようになり、毎日のチェックが楽になるのでオススメです。

Vuls Advent Calendar 5日目はjkudoさんです。よろしくお願いします。