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]

うーん、読み方がわからん(笑)。 もっと勉強しよう。