できるMATATABI - NECOMAプロジェクトとは

できるMATATABI
NECOMAプロジェクト 田崎 創 2015/4/20 Version 1.0 1. MATATABIとは
MATATABIは、オープンソースApache Hadoopをベースにした、セキュリティ脅威を計測
データより分析するための、ビッグデータ脅威情報分析基盤です。単一のデータ、分析のた
めに情報量を削ぎ落したデータなどで検知できる脅威情報では、日々進化しているしたたか
な攻撃者への対応が困難となってきており、「より多くのデータがあれば、より多くの脅威
を検知できる」という想定のもと、あらゆる計測情報を分析対象とする事が可能なシステム
構築を目指しています。 特に、複数データ種別横断型の分析によって多角的な分析を実現する事で、未知脅威情報の
検知を可能とする事を目標としています。このような分析を容易に実現するために、多様な
データを格納可能であり、簡易で単一のデータアクセス手段を提供でき、分析速度をある程
度確保可能な仕組みである、分散計算環境 Apache Hadoop は十分に目的を達成できるもの
でした。 MATATABIは、既存のApache Hadoopや、Apache Hive、Facebookで開発された Presto、
RIPE­NCCで提供されているhadoop­pcapライブラリなど、オープンソースとして公開され
ているソフトウェアを利用し、セキュリティ脅威情報解析に必要なスクリプト群を添付する
事で、ネットワークオペレータやセキュリティオペレータの計測したデータ(pcapやログファ
イルなど)より、Actionable Information(IPアドレスやドメイン名などのブラックリストなど)
を生成する事を特徴としています。 近年(2015年執筆時点)、これらの膨大な情報量のデータを解析するサービスとして、ネット
ワーク上の豊富な計算ノード群を遠隔で利用して、分析結果だけを受け取るものが増えてき
ました (BigQuery, Amazon EMR, Treasure Dataなど)。これらのサービスは機能も豊富で計
算速度も日々進化して高速となっていますが、解析対象のデータのプライバシーを考慮する
場合、依然クラウド型のサービスには不安があります。MATATABIは、計算速度においては
クラウド型サービスには劣りますが、簡易的にローカルな環境に構築する計算基盤として、
個々の組織内で利用可能なもの目指しています。 図1 MATATABIの構成は図1にあるように、大きく4つの部品によって成り立っています。 1. Apache Hadoop の提供する分散ファイルシステム (Hadoop Distributed Filesystem =HDFS)と、ストレージをホストするクラスタ群 2. HDFSへ計測情報を格納する importer モジュール 3. HDFSへ格納された情報を分析する analysis モジュール 4. 解析結果や、生データを外部プログラムで容易に利用可能とするApplication Programming Interface (API) 処理されたデータや、検知された脅威情報は、外部のプログラムへの情報提供も可能とした
り、その情報を元に可視化プログラムにて俯瞰したり、またセキュリティ情報交換のための
ソーシャルネットワークサービス NECOMAtter(後述?)と連携して情報を発信したりする事が
可能となります。 2. MATATABI環境構築
MATATABIは、導入手順を簡素化するために、dockerというソフトウェアを利用して提供さ
れます。(FIXME: Dockerの詳細は省略?)比較的新しいLinux環境を用いる事が可能であれば、
Dockerの導入そのものは容易であると思われます。 ここでは、Ubuntu 14.04­01 x86 64bits環境を利用して、MATATABIを導入する手順を紹介し
ます。 まず、dockerをインストールします。 % sudo apt­get install docker.io sudoコマンドが実行できる権限が必要です。 その後、docker hub で公開されている MATATABIイメージをインストール(ダウンロード)し
ます。 % docker pull necoma/matatabi この時、Operation not permittedなどの権限が足りないとのメッセージが出る場合は、実行し
ているユーザが、UNIXグループ”docker”のメンバーでない事が原因です。vigrコマンドなど
を利用して、dockerグループに自身のログイン名を追加してください。 これで、MATATABIのインストールは終わりです。実行してみましょう。docker run コマン
ドを利用すると、MATATABIが動作しているOSの起動と初期化を実施します。 % docker run ­i ­t necoma/matatabi:latest ­i オプションと­tオプションを指定する事で、このdockerイメージに対しコンソールが利用可
能となります。後ろの/etc/bootstrap.sh ­bashは、そのイメージで実行するコマンドを指定し
ており、初期化が終ったら bash を実行してシェルが利用可能となります。 実行すると、下記のようなメッセージが見れると思います。 / * Starting OpenBSD Secure Shell server sshd [ OK ] * Starting MySQL database server mysqld [ OK ] * Checking for tables which need an upgrade, are corrupt or were not closed cleanly. Starting namenodes on [a6a76dd13275] a6a76dd13275: starting namenode, logging to /usr/local/hadoop/logs/hadoop­root­namenode­a6a76dd13275.out localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop­root­datanode­a6a76dd13275.out Starting secondary namenodes [0.0.0.0] 0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop­root­secondarynamenode­a6a76dd13275.out starting yarn daemons starting resourcemanager, logging to /usr/local/hadoop/logs/yarn­­resourcemanager­a6a76dd13275.out localhost: starting nodemanager, logging to /usr/local/hadoop/logs/yarn­root­nodemanager­a6a76dd13275.out Starting supervisor: ERROR. Started as 1449 root@a6a76dd13275:/# このようなプロンプトが見れたら、起動は成功です。prestoというコマンドを実行して、イ
ンスール時に生成してあるサンプルデータを SQL文で検索する処理を実行してみましょう。 root@a6a76dd13275:/# presto presto:default> select date,ipaddr,qname,cname,typename from querylog; date | ipaddr | qname | cname | typename ­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­+­­­­­­­­­­ 01­Jan­2010 | 10.0.0.7#42651: | mail.example.org | IN | A 01­Jan­2010 | 10.0.0.6#5474: | mail.example.org | IN | A 01­Jan­2010 | 10.0.0.6#64473: | mail.example.org | IN | A 01­Jan­2010 | 10.0.0.6#26439: | mail.example.org | IN | A 01­Jan­2010 | 10.0.0.6#18020: | mail.example.org | IN | A 01­Jan­2010 | 10.0.0.6#49146: | mail.example.org | IN | A 01­Jan­2010 | 10.0.0.6#9382: | mail.example.org | IN | A 01­Jan­2010 | 10.0.0.6#30733: | mail.example.org | IN | A 01­Jan­2010 | 10.0.0.6#52651: | mail.example.org | IN | A このようなクエリ結果が表示されれば、インスールは成功です。おめでとうございます! 3. その他の情報
MATATABIのdockerイメージには、前述したDNSクエリのサンプルデータ以外にも、様々な
スクリプトが添付されています。これらを利用する事により、データの格納と単純な検索だ
けでなく、そのデータに含まれている脅威情報を検知する事が可能となります。 これらのスクリプトは、​
/matatabi_script ​
ディレクトリに格納されています。 これらの利用方法については、このドキュメント、dockerイメージの今後のバージョンアッ
プ時に追加していきます。 下記についても今後アップデート予定です。 ● スレーブノードの追加による性能改善 ● カスタムスクリプトの作成方法 ○ import スクリプト ○ analyzer スクリプト ○ NECOMAtter連携 ○ n6 API連携 ○ cron/Jenkinsによる定期・随時実行 ● 実装例 ○ Mahoutを使った機械学習スクリプト作成 4. 参考文献リスト
● Docker Hub MATATABIページ https://registry.hub.docker.com/u/necoma/matatabi/ ● github MATATABIレポジトリ ○ https://github.com/necoma/docker­matatabi ○ https://github.com/necoma/matatabi_script ● Tazaki et al., MATATABI: Multi­layer Threat Analysis Platform with Hadoop. BADGERS 2014. ○ http://www.necoma­project.eu/m/filer_public/b1/6f/b16f7d2e­391c­4571­b1c3­d
cedbd1f5446/ut_tazaki_badgers2014.pdf