Network Intrusion Detection System 実験室
基本形から簡単な応用まで載せてみました。
サンプル スクリプト 〜いきなり応用編〜
日本発のNIDSとして
pakemonがあります。pakemon用のsignatureはwhite hatsから"vision-pakemon.conf"の名前で入手可能です。
今回はこのsignature fileを入力とする不完全互換patemon.rbを作成しました。
論文を書く合間に一日で作ったので、ちゃんとした動作の検証は2001年4月以降に
なるでしょう。
PATIMON
最初に「パチモン」という名前で作成していたのですが、
機能が貧弱でバグバグなので、作成から5時間後にはゴミ箱に移動しました。
PATEMON
さてpatemonですが、一応signatureはTCPコネクション時の双方のポートを
見てデータ部分に'=~'でアクセスするように作成しました。
TCPのみに対応しています。signatureは多少は効率がよくなるような気がする
方法で実装されていますが、一つのコネクションを見張っている間に
他のコネクション上のパターンを検出できない可能性が高いと思います。
検出できないとしてもそれは仕様です。
独自のsignatureを書く場合には、16進表現以外は正しくrubyの正規表現
に変換されない事を理解する必要があります。現在のところsignatureの文字列は
大文字、小文字の区別をして、Regexp::escape()を使って変換されます。
[ patemon.rb (latest version) ]
動作方法
いまのところlinux以外のOSではまともに動くかどうかの検証が
できていません。またルート権限が必要ですので、sudoなどを
使えるように設定しておくと良いかもしれません。この例ではsudoを
使いました。なければsuをして"sudo"の記述は無視してください。
まずwhote hatsにある
vision-pakemon.confなどのpakemonで使用されるルールに従ったsignatureを
用意してください。rnids.soを作成したディレクトリで以下のようにして
実行します。
% sudo ruby examples/patemon.rb vision-pakemon.conf
動作の確認にはたとえば以下のようにします。
くれぐれもInternetに直接接続しているコンピュータ上での動作には
慎重になってください。他のサイトから攻撃だと勘違いされないように
してください。
% wget http://192.168.1.20/this_is_test_request/phf.cgi
これによって"detected"の文字が表示された場合には、
ちゃんと 動作をしているということの一つの証明になります。Pentium II 350MHzと
いう PCで作成とテストを行なっていますが、十分なパフォーマンスが発揮できる条件
が存在するのかどうか現在探しているところです。
|