できるMATATABI NECOMAプロジェクト 田崎 創 2015/4/20 Version 1.0 1. MATATABIとは MATATABIは、オープンソースApache Hadoopをベースにした、セキュリティ脅威を計測 データより分析するための、ビッグデータ脅威情報分析基盤です。単一のデータ、分析のた めに情報量を削ぎ落したデータなどで検知できる脅威情報では、日々進化しているしたたか な攻撃者への対応が困難となってきており、「より多くのデータがあれば、より多くの脅威 を検知できる」という想定のもと、あらゆる計測情報を分析対象とする事が可能なシステム 構築を目指しています。 特に、複数データ種別横断型の分析によって多角的な分析を実現する事で、未知脅威情報の 検知を可能とする事を目標としています。このような分析を容易に実現するために、多様な データを格納可能であり、簡易で単一のデータアクセス手段を提供でき、分析速度をある程 度確保可能な仕組みである、分散計算環境 Apache Hadoop は十分に目的を達成できるもの でした。 MATATABIは、既存のApache Hadoopや、Apache Hive、Facebookで開発された Presto、 RIPENCCで提供されているhadooppcapライブラリなど、オープンソースとして公開され ているソフトウェアを利用し、セキュリティ脅威情報解析に必要なスクリプト群を添付する 事で、ネットワークオペレータやセキュリティオペレータの計測したデータ(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.0401 x86 64bits環境を利用して、MATATABIを導入する手順を紹介し ます。 まず、dockerをインストールします。 % sudo aptget 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/hadooprootnamenodea6a76dd13275.out localhost: starting datanode, logging to /usr/local/hadoop/logs/hadooprootdatanodea6a76dd13275.out Starting secondary namenodes [0.0.0.0] 0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadooprootsecondarynamenodea6a76dd13275.out starting yarn daemons starting resourcemanager, logging to /usr/local/hadoop/logs/yarnresourcemanagera6a76dd13275.out localhost: starting nodemanager, logging to /usr/local/hadoop/logs/yarnrootnodemanagera6a76dd13275.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 ++++ 01Jan2010 | 10.0.0.7#42651: | mail.example.org | IN | A 01Jan2010 | 10.0.0.6#5474: | mail.example.org | IN | A 01Jan2010 | 10.0.0.6#64473: | mail.example.org | IN | A 01Jan2010 | 10.0.0.6#26439: | mail.example.org | IN | A 01Jan2010 | 10.0.0.6#18020: | mail.example.org | IN | A 01Jan2010 | 10.0.0.6#49146: | mail.example.org | IN | A 01Jan2010 | 10.0.0.6#9382: | mail.example.org | IN | A 01Jan2010 | 10.0.0.6#30733: | mail.example.org | IN | A 01Jan2010 | 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/dockermatatabi ○ https://github.com/necoma/matatabi_script ● Tazaki et al., MATATABI: Multilayer Threat Analysis Platform with Hadoop. BADGERS 2014. ○ http://www.necomaproject.eu/m/filer_public/b1/6f/b16f7d2e391c4571b1c3d cedbd1f5446/ut_tazaki_badgers2014.pdf
© Copyright 2025 ExpyDoc