とりあえず動かすsnort+ACID


snortのコンフィグレーションをして実行してみよう

 さて、早速コンフィグレーションを行いましょう。

 まず最初に、何よりも一番重要なのは、監視するネットワークなどに関する情報のコンフィグレーションです。

 vi snort.confすると20行目にStep#1として出てくるのがネットワークのコンフィグレーション部です。

 ここでは、HOME_NET、EXTERNAL_NET、SMTP、HTTP_SERVERS、SQL_SERVERS、DNS_SERVERSのそれぞれの変数を定義します。

 変数の定義は「var huga hoge」のように書き、この場合変数hugaはhoge、となります。また、変数を参照する場合には「$huga」と書きます。

 まず「var HOME_NET hoge」の「hoge」の部分に自分のネットワークアドレスレンジを書きます(例:192.168.0.0/24)。

 上記の例では「192.168.0.0につながる全ホストを対象に監視」、つまりネットワークIDSとして機能させる、ということになりますが、1台だけ監視、つまりホストIDSとして機能させる場合には「192.168.0.10/32」の様に書きます。

 EXTERNAL_NETは外部、つまりインターネットですが、まぁ、ファイルに書いてあるとおり、anyのままで当面はいいでしょう。

 後のSERVERS変数は、適時書き換えてください。ちなみに、これは「自分のサーバ」を書くところです。人のサーバを書いてもしょうがないので念のため。

 なお、複数台のサーバを変数登録する場合には、かぎかっこでくくります(例:[10.11.12.13/32,10.11.12.14/32])。

 次のStep#2は、プリプロセッサと呼ばれる、パケット処理について定義をします。こちらは別段無理にいじる必要はないと思いますが、一部のプリプロセッサはすぐにこけてしまい、IDSが落ちる、という情報もあるので、注意しなければなりません。

 まぁ、非公式ではありますがパッチも出ているのでパッチを当てればいいかもしれないですけど(未確認です)。

 ということで、ここでは特徴的なもの、注意して使うもの、などについて簡単に解説します。

 まず、stream4プリプロセッサですが、これはステートフルインスペクションエンジンですが、困ったことによく落ちます(苦笑)。行の先頭に#をつけてコメントアウトした方がいいかもしれないです。もしくは、パッチを当てる。が、パッチで落ちなくなるかどうかは知らない(笑)。

 次にhttp_decodeですが、これはぜひ使って欲しい(笑)。ついでに言うなら、ソースコード中にある、spp_http_decode.cを覗いてみて欲しいです。その中のCommentには私の名前が・・・(*^_^*)

 次にportscanですが、これ、誤検知します。これは、3秒以内に4回接続要求が来たらポートスキャンと見なすようなセッティングになっているため、ときたま通常のコネクションでもポートスキャンと見なしてしまうからです。なので、デフォルトで入っている「4 3」という数字の内、4を大きくするか、3を小さくしてください(整数の方がいいと思います)。

 次のSPADEは統計的処理による異常パケット検知プリプロセッサですが、これを使いこなしたい方はREADMEをしっかり読む事を勧めます。

 最後に、Step#3、アウトプットに関する設定です。

 今回は、ACIDを使用するので、それに関する設定をしなければなりません。また、それ以外にもいろいろなアウトプットがあるので、こちらについて説明をしておきます。

 アウトプットの種類としては、syslog出力、tcpdumpバイナリ出力、DB出力、XML出力、unifiedバイナリ出力、SNMP出力があります。また、コンパイル時に選択していればSMB出力も可能です。

 今回は、DB出力およびsyslog出力を選択することにします。

 といっても、syslogの場合には、output:alart_syslogの先頭の#を取るだけで使用できます。

 次にDB出力、つまりpostgreSQLへの出力です。これはoutput:databaseと書かれた行の内、postgreSQLの行をコメントアウトするのですが、見てわかるとおり、dbは何、ユーザは何、という事を書いてあげなくてはなりません。

 これが決まらないと先に進めないので、まず先にsnort用データベースの名前やユーザ名、パスワードなどを決めてしまいましょう。

 とりあえず、ユーザ名=snort_log、データベース名=snort_log、データベースサーバ=localhost、パスワード=mypasswdとしましょう。もちろん、実際に使用するときには適時付け替えてくださいね。

 あとはStep#4のルールセットの選択、修正です。これはこのままでもいいし、必要ならコメントアウトするなりコメントを外すなり好きにしてください。なお、単に動作を試すのに便利なのは、 「include icmp-info.rules」の行頭#を外しておくことですね。そうするとpingを打っただけでsnortが反応してくれます。

 これでタイトル通り、とりあえずsnortは動きます。ただし、データベースをまだ作っていないので、試しに動かしてみたい人は先のデータベース出力に関する行の行頭に#を入れておきます。でもって、
snort -i eth0 -c /etc/rules/snort.conf
でsnortが起動します。この時、エラーが出て、途中で止まった場合、そこがおかしいです(当然?)

 エラーが出ないことを確認したら、さらに-Dオプションもつけて起動して、psコマンドでsnortが動いているかどうか、確認してください。

 動くのを確認したら、killall snortでsnortを終了し、さっきつけた#をとって、次に進みましょう。


前に戻る目次に戻る次に進む