| 更新履歴 | ||
| [ 2002.02.09 ] | [ 2002.02.22 ]サンプルを移しました。 | [ 2002.04.06 ]古い内容修正 |
|
パケットをユーザー空間に持ってきて、自分のプログラムでパケットを解析したり、アラートを発したりすることができる。IDS のようなことをさせるにはこの手法を用いることになる(開発元ではそのような使いかたを推奨していないことに注意)が、これは容易に楽しいものが作れて、工夫次第でかなりのことができる可能性があるだろう。 ■ QUEUE ■ まず、iptables で QUEUE ターゲットを使用できるようにする。詳しくは iptables のマニュアルを読んでほしいが、QUEUE ターゲットというのが、パケットをカーネルから借りてきてユーザー空間で扱えるようにするターゲットである。このためには ip_queue モジュールを利用可にしなくてはならない。カーネルでサポートしていなければ再構築する。 ■ 実際には ■ ユーザー空間で扱うっつーのは具体的にはどーゆーことなのよ、ったくもう!マニュアルや HOWTO にも具体的に書いてないし、だからわざわざあんたんとこに来たんだけど、まさか他とおんなじじゃねーだろーな、おい、どーなんだ! と思ってる方がいたらスマン。あれ、なんでオレがあやまらにゃならんのだ。ちゃんと書きますよ。そーいうサイトですからねココ。 ということで、理屈は飛ばして具体例を書いときましょう。 最も簡単で万人向きなのは perlipq を使うやり方です。perlipq とは QUEUE されたパケットを扱うための perl モジュールで、サンプルスクリプトがついているので、このサンプルをテンプレートにして、簡単に自分で開発できます。もちろん これも C の API を呼んでいるわけなので、C で書けるヒトは C で書いてもよいのですが、ここでは perlipq をご紹介。 ■ perlipq の導入■ perlipq は[ ここ ] から入手します。perl モジュールによくある % perl Makefile.PL % make % make test (心配ならやる。やるなら添付の説明を読んでから) # make installという流れで導入できます。また、NetPacket という perl モジュールもあったほうがよいので、こいつも導入します。サンプルでも使用しています。 CPAN でも srpm でもなんでもいいので、とにかく導入しておきます。 大体これで準備完了です。 例: iptables -INPUT -p tcp --dport 80 --tcp-flags ACK ACK -m --string string "test.html" -j QUEUE とかいうことにしておきます。 さて、perlipq を展開したディレクトリにある dumper.pl passer.pl passer6.pl あたりが サンプルです。 dumper.pl を使ってみましょう。NetPacket モジュールが必要です。 そのディレクトリで perl dumper.pl とします。そして、他のホストからブラウザとかで このホストの test.html (べつにファイルは無くてもよし)とかにアクセスすれば、パケットの中身が 標準出力にダンプされるはずです。QUEUEターゲットの使い方がなんとなくわ かりましたか? おそらく、QUEUEターゲットを使ってしたいことといえば、パケットにマッチした 場合のフックを作りたい、というのが大勢だと思いますが、 Nimda ホスト情報収集とか、ウィルスメールアラームとか、可動式フィルタとか、 簡単に実現できます。サンプルを公開してるので、テンプレート的に使ってみて ください。 ■ しまケロ作成のサンプル ■ [ 不正リクエストのログ ](スナップショット) [ ソース等 ] |