snortsnarfでラクする


1.snortsnarfとは

snortsnarfは Silicon Defense で開発されたPerlのプログラムで、snortの出力するログを集計して、とても見やすいHTMLファイルに変換してくれます。

ホストの管理者のみなさんは十分に理解していると予想しますけど、snortに限らずログを読むのはとてもしんどい作業です。死ぬほど細かい仕事を抱えるネットワーク管理者にとっては、ログを読むために2時間も3時間もかけられません。とは言え、読まない訳にはいきません。ジレンマですよね。

snortsnarfを使用すれば、そんな管理者の皆さんの悩みを少しは減らすことができるかもしれません。

ちょっとしたサンプルを作っておきましたので参照してみてください。

snortsnarfは以下のOS上で動作すると考えられるんだそうです。おそらくほとんどのUN*Xでも動くでしょう。

OpenBSD 2.6
RedHat Linux 6.1 and 6.2
Windows NT 4.0 (NTFS only)

また、実行にはかなりのメモリを消費しますので、十分にメモリのあるホスト上で実行してください。おそらくCPUパワーも相当消費します。




2.アーカイブの入手

snortsnarfのアーカイブは http://www.silicondefense.com/snortsnarf/ で手に入ります。

2001.1.18現在で SnortSnarf-011601.1 が最新のようです。

それから snortsnarf は Perl 5 以降を必要とします。




3.インストール

snortsnarfは数多くのモジュールから構成されており、いくつかのインストールパターンも存在しますが、ここでは「必要な機能のみを簡単に動かす」ことを目標に、最小のインストールで運用してみます。

本当はさまざまな機能を持っているのですが、ここでは紹介しきれません(自分でも使ってない)ので、みなさんでドキュメントを読んでいろいろと試してみてください。

アーカイブが手に入ったら、適当なディレクトリで解凍します。

ディレクトリ内にある snortsnarf.pl と includeディレクトリを、snortsnarfを実行するための適当なディレクトリ(e.g. /usr/local/snortsnarf等)へ移動します。

インストールはこれだけで終わりです。簡単でしょ?




4.動かしてみる

snortsnarf を動作させるにあたって、snortのログが必要です。あたりまえだけど。README では以下のようなオプションでsnortの実行させるように、サンプルとして記載してあります。

# snort -D -c oursnort.lib -o -d
# snort -i eth0 -c oursnort.lib -o -e  -d

ボクのトコでは以下のようなオプションで走らせています。-s オプションはダメだと思いますけど、まだ試してないのでよくわかりません。

/usr/local/bin/snort -Ddo -A full -i eth1 -c 01082001.rules
	-h xxx.xxx.xxx.137/32 -l /var/log/snort

それから、これもあたりまえですけど、なんかしらのhttpデーモンが動いてないと、せっかくsnortsnarfがきれいにhtmlに整形してくれても、ローカルでしかみれません。ま、あんまり公開するもんでもないでしょうが。

以上の環境が揃っていることを確認してから、snortsnarfを実行してみましょう。

# ./snortsnarf.pl -d /home/httpd/html/snort
	/var/log/snort/alert /var/log/snort/snort_portscan.log

-d オプションで snortsnarf が HTMLファイルを保存するディレクトリを指定し、後ろに snort のアラートファイル等を記述します。

それから、snortsnarf.plとincludeディレクトリが存在するディレクトリをカレントとして実行しないとうまく動かないようです。

正常に終了したようでしたら、ブラウザ等から指定したURIをのぞいてみましょう。ちゃんと表示されました?

ちゃんと動作することが確認できましたら、cron等でスケジュールしてあげましょう。この時に、あまり間隔を短くしすぎない方が良いですよ。過負荷によりホストがダウンすることがあります。

処理時間のおおまかな目安として、

P-III 600MHz + 128MB MEM + Linux Kernel 2.2.16

snort log : alert file 412KB, portscan.log 864KB

上記の状態で52秒で集計処理を行いました。厳密なベンチマークでは無いので、あくまで目安にしてください。

ちなみにMMX266+96MBの環境で、8MBのalertファイルを処理させて、約11分30秒という記録があります。また処理中は負荷が非常に高く、他の処理にかなり影響を与えます。(ローカルコンソールさえ遅い)






それじゃ、管理者のみなさん。snortsnarfでラクして、早くお家に帰って、秋葉原巡りでもしましょう。