snortをインストール
Linuxで運用しているWebのフロントエンドが2台あるんですが、そのうちの1台にsnortをインストールしてみました。
ライブラリ
snortを動かすには以下の2つのライブラリが必要です。
- libpcap
- libpcre
2つめはなんて発音するんだろう。ピークレ? 大体のLinuxのディストリビューションには既にインストールされていると思う。redhat系ならrpm -qコマンドで確認できます。
$ rpm -q libpcap
libpcap-0.7.2-7$ rpm -q pcre
pcre-3.9-10
それぞれの最新バージョンはここで入手できます。
私の場合は、既に入っているライブラリのバージョンがかなり古いので、ダウンロードしてソースからビルドしてインストールしました。rpm -e で既に入っているライブラリを消してもいいんですが、なんだか依存関係がややこしそうなのでそのまま放置。
libpcapのインストール
まずlibpcapをインストール。上記のサイトから最新版をダウンロード。最新は0.9.8です。OpenSSLのバージョン番号に似てるな。何も考えないで、configure,make,make installでOK。デフォルトで/usr/local以下にインストールされます。
$ tar -zxvf libpcap-0.9.8.tar.gz $ cd libpcap-0.9.8 $ ./configure $ make # make install
libpcreのインストール
続いてlibpcreをインストール。こっちはanonymous FTPなんですな。最新版は7.4。こっちも何も考えないでconfigure,make,make installでOK。
$ tar -zxvf pcre-7.4.tar.gz $ cd pcre-7.4 $ ./configure $ make # make install
snortをビルド
続いて本命のsnortをビルド。http://www.snort.org/dl/ からダウンロードできます。最新は2.8.0ですね。ダウンロードしたら展開して、インストールした2つのライブラリの位置をconfigureで指定して、make,make install。
$ tar -zxvf snort-2.8.0.tar.gz $ cd snort-2.8.0 $ ./configure --with-libpcap-includes=/usr/local/include --with-libpcap-libraries=/usr/local/lib --with-libpcre-includes=/usr/local/include --with-libpcre-libraries=/usr/local/lib $ make # make install
snortユーザ、グループを作成
snortは"snort"というユーザとグループでもって動作するようです。ユーザとグループを作ってあげます。
# groupadd snort # useradd -g snort -s /bin/false snort
設定ファイルと、ログの置場準備
デフォルトの設定ファイルが展開したソース中のetcディレクトリに入っています。これを適当なディレクトリにコピーします。Makefile関連はいらなさそうなので消しておきました。
# mkdir /etc/snort # cp ~hoge/snort-2.8.0/etc/* /etc/snort # rm /etc/snort/Makefile*
snortがログを吐き出す先を作ってあげます。snortはさっき作ったsnortユーザで動作するので、そのユーザで書き込めるようにパーミションも適当に設定してあげます。
# mkdir /var/log/snort # chown snort:snort /var/log/snort
ルールをダウンロード
侵入検知するためにシグネチャと呼ばれるルールファイルをsnortのサイトからダウンロードします。snortが用意しているものは有料なので、communityのものをダウンロード。こんなやつ。
http://www.snort.org/pub-bin/downloads.cgi/Download/comm_rules/Community-Rules-CURRENT.tar.gz
これを適当なところに展開すると拡張子がrulesってファイルがあります。これを適当なディレクトリへコピー。今回は/etc/snort/rulesってディレクトリを作成してここにコピーしました。
# cd /etc/snort # tar -zxvf /tmp/Community-Rules-CURRENT.tar.gz
snort.confの編集
snort.confを適当に編集します。大体コメントを見ればなにを編集すればいいかわかると思います。今回わたしが入れた環境ではインストールしたホストが受取るパケットしか見えないので、アドレス関係はまったくいじっていません。上記でダウンロードしたルールファイルだけを設定。下の方にincludeで始まる行があって、ルールファイルを取り込んでいる行があります。これを適切に編集。こんな感じ。
include $RULE_PATH/Community-smtp.rules
snortを起動
いよいよ起動。こんな感じで起動しました。
/usr/local/bin/snort -D -h XXX.XXX.XXX.0/24 -c /etc/snort/snort.conf -l ¥/var/log/snort -b -d -u snort -g snort
起動ログは/var/log/messagesに出ますので、起動に失敗する場合はそれをみて適切に処置。includeすべきファイルがないとか、ログが書けないとか、ネットマスクの設定が間違ってるとかそんなのがでます。
ログって
上記コマンドで起動すると/var/log/snort/alertにこんなログがでます。
[**] [1:100000122:1] COMMUNITY WEB-MISC mod_jrun overflow attempt [**] [Classification: Web Application Attack] [Priority: 1] 10/25-18:12:07.960246 218.223.42.116:8254 -> XXX.XXX.XXX.XXX:80 TCP TTL:115 TOS:0x0 ID:65100 IpLen:20 DgmLen:1500 DF ***A**** Seq: 0x7F3A1067 Ack: 0xA6EBB188 Win: 0xFA2C TcpLen: 20 [Xref => http://hoge.hoge.org/cgi-bin/cvename.cgi?name=2004-0646][Xref => http://www.securityfocus.com/bid/11245]
うーん、読み方がわからん(笑)。 もっと勉強しよう。