技術者ブログ
クラウド型WAF「Scutum(スキュータム)」の開発者/エンジニアによるブログです。
金床“Kanatoko”をはじめとする株式会社ビットフォレストの技術チームが、“WAFを支える技術”をテーマに幅広く、不定期に更新中!

HadoopとDunkheadでハッカーの電脳模擬戦(Defcon 8 CTF)のポートスキャンを可視化する

はじめに
Dunkheadはタイムスタンプ付きのテキストデータ(アクセスログなど)を手軽に可視化するためのソフトウェアです。Hadoop上で動作するため、データのサイズが大きい、いわゆるビッグデータの場合にも使用することができます。
今回は、ハッカーの祭典として知られるDefconで行われた電脳模擬戦(Defcon 8 CTF)のログをDunkheadで可視化し、ポートスキャンやホストスキャンの様子を観察してみます。
HadoopとDunkheadでJavaアプリケーションのGC(ガベージコレクション)を可視化する

はじめに
Dunkheadはタイムスタンプ付きのテキストデータ(アクセスログなど)を手軽に可視化するためのソフトウェアです。Hadoop上で動作するため、データのサイズが大きい、いわゆるビッグデータの場合にも使用することができます。
今回は、JavaアプリケーションのメモリのGC(ガベージコレクション)のログを対象に、Dunkheadによる可視化の例を見ていきます。
HadoopとDunkheadでCodeRedワームの感染の様子を可視化する

はじめに
Dunkheadはタイムスタンプ付きのテキストデータ(アクセスログなど)を手軽に可視化するためのソフトウェアです。Hadoop上で動作するため、データのサイズが大きい、いわゆるビッグデータの場合にも使用することができます。
今回はCAIDAで公開されているCodeRedワーム感染時の時系列データを、Dunkheadで可視化してみます。CodeRedワームは12年前(2001年)に猛威をふるった、今となっては非常に懐かしいコンピュータウイルスです。わずか14時間の間に35万ものホストに感染し、当時のインターネットを大混乱に陥れました。
今回利用するCodeRedワームに関するデータセットは、下記の組織によって提供されています。
Support for the CAIDA Dataset on the Code-Red Worms was provided by Cisco Systems, the US Department of Homeland Security, the National Science Foundation, DARPA, and CAIDA Members.
The CAIDA Dataset on the Code-Red Worms - July and August 2001, David Moore and Colleen Shannon.
可視化の対象となるタイムスタンプ付きのデータはcodered-july.table.txtという名前のファイルで、29万行あり、サイズは21MBほどです。2013年の今となってはそれほど大きなものではないため、Hadoopを使わなくても解析可能ですが、ちょっと変わったデータセットということで、Dunkheadによる可視化のチュートリアルのひとつとして使ってみます。
HadoopとDunkheadでNASAのウェブサーバのアクセスログを解析・可視化する
内容の一覧
今回のエントリは内容が長いため、それぞれの項目へのリンクを下記にまとめました。
はじめに生のデータを見てタイムスタンプ部のフォーマットを確認する
データ全体を可視化する
ステータスコード404について注目して可視化を行う
すべてのステータスコードについて可視化する
単位時間を変更する
うまく可視化されないデータを無視する
HTTPメソッド別のアクセス状況を可視化する
ファイル種別ごとのアクセス状況を可視化する
HTTPレスポンスのサイズについて可視化する
ファイル種別ごとのHTTPレスポンスサイズを可視化する
コンテンツ別のアクセス状況を可視化する
期間別(日別)のアクセス状況を可視化する
まとめ
はじめに
Dunkheadはタイムスタンプ付きのテキストデータ(アクセスログなど)を手軽に可視化するためのソフトウェアです。Hadoop上で動作するため、データのサイズが大きい、いわゆるビッグデータの場合にも使用することができます。
本エントリでは、ウェブ上で手に入れることができるNASAのウェブサーバのアクセスログを例に、Dunkheadでの可視化がどのように行われるのかを見ていきます。

アクセスログは1995年のもので、展開すると200MB程あり、約190万行からなります。今の感覚では非常に小さなデータセットであり、わざわざHadoopを使うほどの規模ではありません。しかしDunkheadの使い方はデータが小さくても大きくてもあまり変わらないので、今回はこのデータを使うことにします。
時系列ビッグデータを手軽に可視化するHadoopアプリケーション、Dunkhead

Dunkheadとは
Dunkheadはタイムスタンプ付きのテキストデータ(アクセスログなど)を手軽に可視化するためのソフトウェアです。Hadoop上で動作するMapReduceアプリケーションであるため、データのサイズが大きい、いわゆるビッグデータの場合にも使用することができます。
Dunkheadは、入力データとなるログをもとに、サーバ監視ツールなどで見られるような、横軸が時間、縦軸が目的の値となる画像を出力します。下記の例はNASAのスペースシャトル、ディスカバリー号のミッションの際に記録された、NASAのウェブサーバのアクセスログをDunkheadで可視化したものです(こちらについて、詳しくは『HadoopとDunkheadでNASAのウェブサーバのアクセスログを解析・可視化する』を参照ください)。

各種サーバのアクセスログなどは、特に活用することなく、いつのまにか大量に溜まってしまうことがあります。後から何か情報を抽出しようと考えても、サイズが大きすぎたり、そもそもどんな情報を取り出せばよいかわからないという問題に直面します。Dunkheadはこの問題を解決するために開発されました。
HadoopはRDBMSをスケールアウト可能にする
はじめに
Hadoopでデータを解析する場合、SQL-likeなインターフェースを持つHiveやPigがよく使われます。しかし、どうしても速度を追求したい場合や処理の性質にSQLが合わない場合などには、最も低レベルな処理となるMap/Reduceのコードを直接Javaで書くことになります。
今回は、Javaの組み込み型RDBMSであるH2を例に、JavaでMap/Reduceレイヤーの処理を直接書きながら、同時に集約処理についてはSQLを使うというテクニックを紹介します。このテクニックを用いることで、Hadoop上できれいにRDBMSの性能をスケールアウトさせることが可能となり、アプリケーションの開発効率、性能ともに大幅に上昇させることが可能となります。
スライドはppt形式でこちらからダウンロード可能です。
Apache Strutsの脆弱性(S2-016)を狙った攻撃の実例
Apache Struts の脆弱性について
Apache Strutsに脆弱性が見つかっています。過去にもStrutsではOGNL関係で任意のJavaコードが実行可能な脆弱性が見つかっていますが、今回もそれによく似た原因に起因するもののようです。攻撃者によって任意のJavaコードが実行され、サーバが攻撃を受ける可能性があります。
本脆弱性に関して、JPCERTコーディネーションセンターより以下の注意喚起が行われています。
Apache Struts の脆弱性 (S2-016) に関する注意喚起 【2013.07.19】Scutumでは先月より、この脆弱性を狙ったものと思われる下記のような攻撃を観測しています(リクエストは一部加工されています)。
s3fsとjetS3tの速度比較。EC2からS3へディレクトリ構造ごとコピーする際に便利なのはどちらか?
はじめに
私たちが運営しているSaaS型のWAFサービスであるScutum(スキュータム)では、2013年の7月の時点で、一日に約2.5GBほどのログファイルが溜まる状態となっています。ログファイルの内容は様々ですが、サービスの改良やトラブルシューティングに活かすため、今後もより積極的にたくさんの情報をログに出力し、それを解析してフィードバックするサイクルを回していきたいと考えています。
一日に2.5GBという量は大きなサービスを運営している方から見れば非常に少なく感じられるものだと思いますが、個人的には(サービス開始当初は数十MB程度だったため)非常に大きくなってきたな、と感じています。
今回のエントリでは、EC2上のサーバからS3にファイルを移動する際に使うことができる、『s3fs』と『jetS3t(ジェットセット)』という2つのソフトウェアについて検証を行った結果について、簡単にまとめたいと思います。