Apache Metron

今日は前からちょっと気になっていたApache Metronというプロジェクトについて書いてみようと思います。セキュリティ関連のツール群のかたまりみたいなもので、Hortonworksがテックプレビューでサポートしています。残念ながらちゃんと触れていないので、今日はドキュメントから分かる話をまとめてみます。

## Apache Metronとは？

[Apache Metron(以下Metron)](http://metron.incubator.apache.org/)はネットワークやシステムのセキュリティに対する脅威を高速に分析するためのフレームワーク。Kafkaによるデータ投入、Stormによるリアルタイムなデータ処理や解析、ストレージはHDFS、可視化はKibanaとElastic Search、その他部分的にHBaseなどを使ったりしているので高いスループットのデータを取り扱うことができ、更に拡張性が高いのが特徴とされている。いろいろなコンポーネントが出てきたので混乱してしまいそうになるんだけれど、Metron自体が独立した大きなソフトウェアというわけではなく、前述の様々なソフトウェア群を使って構成されるセキュリティフレームワーク（セキュリティアプリケーション？）といえる。。。。。。と言ってもわけわからないよねｗ

絵にするとこんな感じ。詳細は後述。
![Kobito.H2Miy5.png](https://qiita-image-store.s3.amazonaws.com/0/10292/b839d34a-55ee-6f15-7da5-7ca25d7068b3.png "Kobito.H2Miy5.png")

2013年にCiscoが主導して始めたOpenSOCというプロジェクトのなかで生まれたのがこのMetronで、2015年にApache Incubatorプロジェクトのひとつに登録。その辺の経緯などはこのスライドに詳しく書いてある。

http://www.slideshare.net/JamesSirota/cisco-opensoc


HDPアドベントカレンダーにこのMetronの話を書いているのはHortonworksがTechnical Previewとしてサポートをしているから。

## 何ができるの？

- リアルタイムなセキュリティ系のログやデータの取り込み。
- さらにそれをリアルタイムに
 - 標準化して
 - エンリッチして
 - 分析かけてダッシュボードに可視化
 - ヒストリカルな分析のためにストレージにもしまっておいてくれる

という感じ。

- サポートしているデータソース
 - Snortのログ
 - Bro(Deep Packet Inspectionツール)の出力
 - YAF(Netflow分析ツール)の出力
 - キャプチャした生パケットデータ(PCAP)

- 標準化?
 - 上記のデータソースから取り込んだデータをMetron JSONという形式に標準化

- エンリッチ？
 - エンリッチとは例えば、取り込んだデータに含まれているIPアドレスをベースにWhois情報を付与したり、地理的な情報を付与してあげたりと、データを「リッチ化」すること。
 - ドキュメントによると、現在サポートされているエンリッチメントはいかの3つ
 - Geo Enrich: これはわかりやすい
 - User Enrich: たぶん、ユーザーIDをもとにユーザー名とか振ってくれる感じだと思う。先に辞書を用意する必要があるはず。
 - Asset Enrich: 謎

- 分析
 - ドキュメント、みつからず。コード読まなきゃだめそう。
- ダッシュボード
 - 主にKibanaを使って以下のような感じに可視化してくれる。前述の分析の結果、黒と判定されたイベントの件数とかを見せてくれる感じ。
![Kobito.jlAFh9.png](https://qiita-image-store.s3.amazonaws.com/0/10292/c0382707-ebbf-e70e-ea39-5db443ac8db8.png "Kobito.jlAFh9.png")
 - 上記はデータソース毎に飛んできているイベントの件数のヒストグラムにしたもの
![Kobito.6CRGia.png](https://qiita-image-store.s3.amazonaws.com/0/10292/9a5535e6-695f-3b54-8f8a-80e6b774403a.png "Kobito.6CRGia.png")
 - 流れてきているパケットの地理情報の可視化
![Kobito.8Ro1ny.png](https://qiita-image-store.s3.amazonaws.com/0/10292/33abecbd-ad5a-6aa3-3a50-28a5580cb480.png "Kobito.8Ro1ny.png")
 - YAFのデータをもとにしたNetflowデータのダッシュボード
![Kobito.wmc1iH.png](https://qiita-image-store.s3.amazonaws.com/0/10292/4c420099-b6b4-3fa1-cf03-6393faf00849.png "Kobito.wmc1iH.png")
 - SnortのデータをもとにしたIDSっぽいダッシュボード
![Kobito.wyYPjs.png](https://qiita-image-store.s3.amazonaws.com/0/10292/6ece7056-2c90-3d87-b193-c1dae92f8a99.png "Kobito.wyYPjs.png")
 - BroのDPIをもとに作られるダッシュボードその1。HTTPトラフィックの分析
![Kobito.UlTmuF.png](https://qiita-image-store.s3.amazonaws.com/0/10292/00e5b53a-8863-28a3-704a-3de9be20446f.png "Kobito.UlTmuF.png")
 - BroのDPIをもとに作られるダッシュボードその2。DNSトラフィックの分析

上記画像はすべて https://cwiki.apache.org/confluence/display/METRON/Metron+Dashboard より拝借。

- ストレージへのデータ長期保存
 - 現在サポートしているストレージはHDFS、ElasticSearch、HBaseの3つ。これらにデータを永続化しておいてくれるので、あとかSparkやらHiveやらでアドホックに分析できる。


## どういうアーキテクチャで動いているの？

ざっくりしたアーキテクチャは下記のとおり。冒頭の絵も併せて参照してもらうとよさそう。

- Sensor/Probe
 - データ取り込み関連のコンポーネント。データソースからデータを抽出してKafkaに投げる、というのがざっくりした仕事。
- Kafka
 - Sensorから流れ込んでくるデータや、Metron JSONに標準化済みのデータをバッファする
- Storm
 - 標準化、エンリッチ、脅威分析など、基本的にすべてのデータ（前）処理はここで実施
- Storage
 - 分析済みのデータはHDFSやElasticSearchに出力される
- Service
 - KibananaなどのUI

## それで、結局Apache Metronとは？

ネットワーク・セキュリティの分析、脅威発見のための、Hadoopエコシステム上に構成されるアプリケーション。という感じかな。改めて見てみるとよく観るラムダアーキテクチャだよね。

IDSやらNetflowやらDPIやらを統合的に、更に高い拡張性を持って運用できるっていうのは、大きなトラフィックを扱うサービス屋さんには嬉しいのかなと思う。大きなトラフィックを扱っている以上、セキュリティに対する脅威にもセンシティブだと思うし。



次は実際に触ってみての話を書きたいと思います！