32
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

はじめに

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

32
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?