Bro IDSを使ってみる

Bro IDS

Bro IDS http://www.bro.org/ はgatewayに流れるようなネットワークトラフィックを監視し、セキュリティに関連したイベントを発見するオープンソースの侵入検知システム(Intrusion Detection System, IDS)です。オープンソースのIDSで最も有名なのがSnort http://snort.org/ ですが、2000年後半あたりからこのBroを使ったネットワークセキュリティ系の論文が散見されるようになりました。なのでそこそこ業界的には有名なはずなんですが、あまり日本語の記事もなかったので書いてみました。

Broの特徴は、多くのIDSで実装されているシグネチャベースのパターンマッチ(特定の文字列などが出現したらアラートを報告する)だけでなく、トラフィックのプロトコルを解読した結果を用いて簡単なスクリプトを記述できる点です。これによって、研究者がネットワーク監視から得られたデータから自分の目的にあわせたデータの抽出が容易になり、様々な研究が捗るようになりました。

インストール

詳しくはQuick Start Guideを参照してください。ここでは自分の環境でインストールした時のメモだけ。

環境はUbuntu Linux 12.04、さくらVPS上のホストに入れました。パッケージから入れる方法もありますが、昔大学の先輩に教わった「自分にとって大切なパッケージはソースをとってきてちゃんとコンパイルすべし」という薫陶を守り、手作業で導入。

下準備として、とりあえず以下のパッケージを導入。

% sudo aptitude install flex bison libmagic1 libmagic-dev swig libpcap0.8 libpcap-dev openssl build-essential zlibc zlib1g-dev libssl-dev python-dev

ソースはgitレポジトリが公開されているので、そこからcloneしてくる。あとは普通にconfigure + make。プレフィックス指定は趣味なので、ご参考までに。

% git clone --recursive git://git.bro-ids.org/bro
% cd bro
% ./configure --prefix=$HOME/local
% make
% make install

特にハマることもなく完了。ほらね、簡単でしょう?

とりあえず使ってみる

このあたりから適当なサンプルのpcapファイルをとってきてテストしてみる

% wget "http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=http.cap" -O http.pcap 

% bro -v
bro version 2.1-1377

% bro -C -r http.pcap

-Cはチェックサムの検証を無視、-rは読み込み対象のtcpdump形式ファイル指定のオプションになります。実行すると以下の様なログがそれぞれ吐き出されます。

  • conn.log : TCP,UDP,ICMPでのフロー情報をまとめたもの。転送データ量、接続時間、プロトコルなどが記録されている
  • dns.log : DNSによる名前解決のレコードが記録されている
  • files.log : HTTPなどでどのようなファイルが取得されたかを表示している。HTTPをパースした上でのファイルのサイズ、mime typeなどが見える。オプションによっては、ファイルそのものを復元できる模様
  • http.log : HTTP request/responseの情報。URL、ホスト名、User agentなどの情報が参照できる。
  • packet_filter.log : tcpdump形式のフィルタの情報が記録されている

各ファイルはだいたいTABで各フィールドが区切られた形式になっているので、他のスクリプトなどで処理するのは比較的簡単そうです。これらはデフォルトのルールやスクリプトによってはき出されているものであり、それの変更次第で出力内容や監視対象を変更できるようです。

とりあえずここまで。

2013.10.8 追記

インストールするパッケージのリストを新更o

Comments