Security
Elasticsearch
storm
Kibana
Kafka


はじめに

OpenStandia Advent Calendar 18日目の今日は、Apache Metron について書きます。残念ながらまだ実際に動かしていないので、公式ドキュメントの内容をもとに、5分で分かるボリュームで紹介したいと思います。


Apache Metron とは


概要

Apache Metronは、さまざまなオープンソースのビッグデータテクノロジーを統合したセキュリティ分析フレームワークです。

さまざまな脅威情報をもとに、ログやネットワークパケット等の大量データをリアルタイムに分析し、セキュリティの脅威を迅速に検出します。

image2016-5-20 5 6 51.png

出典:Metron Wiki - Metron Core Capabilities and Functional Themes


歴史

Apache Metronは、2013年にCiscoが主体となりOpenSOCという名前で誕生しました。その後、2015年にOpenSOCからMetronに改名し、Apacheインキュベータプロジェクトとして受け入れられ、2017年にApacheトップレベルプロジェクトに移行しました。

image2016-5-18 12 49 15.png

出典:Metron Wiki - Evolution of Apache Metron


バージョンとライセンス

最新のバージョンは0.6.0になります。(2018年12月時点)

ライセンスは、「Apache License version2」になります。 Apache Licenseのコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。


アーキテクチャ


概要

Apache MetronはKappaアーキテクチャ(ストリーム処理システム)を採用しています。Apache Kafkaを統一データバス、Apache Stormを処理コンポーネントとした構成になります。

処理概要は、侵入検知システムの出力やファイアウォールのログ等のセキュリティに関連する稼動データをApache Kafkaに取り込み、取り込んだデータに対してApache Stormで位置情報やDNS情報等を付与、アラート、機械学習モデルによるリアルタイムスコアリング等を実行しElasticsearchやHDFSに保存、保存したデータをKibanaやBananaで可視化するというものになります。

MetronArchitecture.png

構成は、データ収集、データ処理、データ保管、ユーザーインターフェース(UI)の4領域に分けることができます。以下、それぞれの領域毎に説明します。


データ収集


説明

キャプチャしたパケットデータや、Bro、Snortといった侵入検知システムの出力等を、分散メッセージングシステムのKafkaに投入します。非常に高いレートで、あらゆる種類のセキュリティに関連する稼動データ(セキュリティテレメトリ)をキャプチャし格納します。

sensor.png

※1 YAF

Yet Another Flowmeter。キャプチャしたパケットからIPFIXプロトコルを抽出するツールです。

※2 Snort

侵入検知システム。シグネチャベースのパターンマッチ(特定の文字列などが出現したらアラートを報告)を行います。MetronではSnortのアラート機能を使用して、アラートイベントを取り込みます。

※3 Bro

侵入検知システム。シグネチャベースのパターンマッチだけでなく、トラフィックのプロトコルを解読した結果を用いて簡単なスクリプトを記述できます。MetronではBroのアラート機能は使用せず、主にHTTPプロトコル、DNSプロトコルの抽出ツールとして使用します。


データサンプル


  • Broの出力例

    Broの出力結果サンプルです。Broの出力はBroプラグイン(Metron提供部品)によりJSON形式に変換されています。

    pasted image 0-bro.png

    出典:Metron Wiki - Metron Architecture


  • FireEyeのsyslog出力例

    標的型攻撃対策ソリューションであるFireEyeのデータをApache NiFiのsyslogプロセッサでキャプチャしたサンプルです。ネイティブフォーマットで取り込まれています。

    pasted image 0-syslog.png

    出典:Metron Wiki - Metron Architecture



データ処理

分散リアルタイム計算システムのStormによる、リアルタイムなデータ処理を行います。

storm-topology.png


正規化処理


説明

Kafkaに投入されたネイティブフォーマットのデータを、標準化されたJSONフォーマットに変換します。すべてのイベントは少なくとも下記7項目のJSON構造に正規化されます。

項目
説明

ip_src_addr
ネットワーク層の送信元IPアドレス

ip_dst_addr
ネットワーク層の送信先IPアドレス

ip_src_port
トランスポート層の送信元ポート

ip_dst_port
トランスポート層の送信先ポート

protocol
トランスポート層のプロトコル

timestamp
タイムスタンプ(エポックタイム)

original_string
メッセージの文字列表現

データの出力元に応じた正規化処理(パーサー)が用意されていますが、新しいカスタムパーサーを追加することもできます。

パーサーには以下の種類があります。

分類
種類
特徴
実装パーサー

汎用パーサー
Grokパーサー
CSVパーサー
JSONパーサー
メッセージフォーマットを設定ファイルで指定するため、コーディング無しで使用できる。
Javaパーサーに比べてはるかに低速。
Squid用パーサー
YAF用パーサー

Javaパーサー
-
Javaで実装する。
汎用パーサーに比べて高速。
Bro用パーサー
Snort用パーサー
Syslog用パーサー


データサンプル

先程のBro出力データサンプルに対して、正規化処理を実行した後のサンプルです。赤枠部分のデータが追加されています。

pasted image (2).png

出典:Metron Wiki - Metron Architecture


エンリッチ処理


説明

正規化したデータに対して、地理位置情報、DNS情報等の情報を付与(データエンリッチメント)します。

サポートしているエンリッチメントは以下になります。

エンリッチメント
内容

Geoエンリッチメント
外部IPアドレスから、緯度座標や都市/州/国を付与する。

Assetエンリッチメント
IPアドレスをもとにアセット情報(資産情報)から情報を付与する。

Userエンリッチメント
IPとアプリケーションのペアに関するセッションやアラートが、どのユーザのものかを付与する。


データサンプル

先程の正規化処理後のデータサンプルに対して、Geoエンリッチメントを行った後のサンプルです。赤枠部分のデータが追加されています。

pasted image (3).png

出典:Metron Wiki - Metron Architecture


脅威分析処理


説明

エンリッチメント後、脅威情報を参照し、イベントが脅威に該当した場合はアラートとしてマークされます。なお、Snortによって生成されたイベントはアラートであるため、自動的にアラートとして処理されます。


データサンプル

先程のエンリッチメント後のデータサンプルに対して、脅威分析処理を行った後のサンプルです。赤枠部分のデータが追加されています。この例では、アラートとしてマークされています。

pasted image (4).png

出典:Metron Wiki - Metron Architecture


機械学習モデル

機械学習モデルを適用し、エンリッチ処理、脅威分析処理を強化することもできます。


データ保管

全文検索エンジンのElasticsearchや、分散処理基盤HadoopのファイルシステムHDFS等への保管を行います。処理したデータに対して、情報の使用方法に基づいた効率的な情報保管を行います。ログや稼動データは効率的な分析やセキュリティの可視化ができるように保存され、パケットデータは、どのデータが漏洩し、どこに送られたか等を分析できるよう保存されます。

write.png


ユーザーインターフェース(UI)

データ可視化ツールのKibanaによる可視化等を行います。Apache Metronのインターフェースは、1つのページ上で、アラート固有の付加情報や脅威情報を含むアラートのサマリを表示します。さらに、アナリストが調査できるよう高度な検索機能やパケット抽出ツールを提供します。処理結果をHDFSにも出力するため(デフォルト)、Jupyter、IPython、Zeppelinといった分析ツールや、Sparkによる分析等も可能です。

UI.png


画面サンプル(1)

Metronが受信したイベントの合計数、イベント種類、受信日時ヒストグラムを表示するパネル。

default-dashboard-events.png

出典:Metron Wiki - Metron Dashboard


画面サンプル(2)

Metronが受信したイベントの地理情報を可視化。

default-dashboard-geoip.png

出典:Metron Wiki - Metron Dashboard


画面サンプル(3)

YAFの出力結果からフロー数、フロー情報の詳細、各フローの持続時間ヒストグラムを表示。

default-dashboard-yaf.png

出典:Metron Wiki - Metron Dashboard


画面サンプル(4)

Snortのアラートイベントの種類数、通信元・通信先毎の件数、アラートイベントの詳細を表示。

default-dashboard-snort.png

出典:Metron Wiki - Metron Dashboard


画面サンプル(5)

Broが抽出したHTTP通信のリクエスト数、リクエストメソッド、リクエスト詳細を表示。

default-dashboard-web.png

出典:Metron Wiki - Metron Dashboard


画面サンプル(6)

Broが抽出したDNS通信のリクエスト数、リクエスト詳細を表示。

default-dashboard-dns.png

出典:Metron Wiki - Metron Dashboard


画面サンプル(7)

PCAPパネルのサンプル。

PCAP.png

出典:Metron Wiki - PCAP Service


まとめ

このようにApache Metronは、さまざまなオープンソースプロダクトを使用した、セキュリティアプリケーションフレームワークと言うことができます。

セキュリティに関する意識が高くなっている昨今、セキュリティ・オペレーション・センター(Security Operation Center、SOC)を設置する企業が増えていると思われます。Apache MetronはSOCにとって、脅威の分析時間を短縮、高度なパケットデータ調査機能を提供等、さまざまなメリットを提供することができるのではないでしょうか。

以上、簡単ではありますが、Apache Metronを紹介させていただきました。少しでもApache Metronの魅力をお伝えできたなら幸いです。


参考資料

Apache Metron