snortの設定
/usr/local/snort にコピーしたsnort.confをエディタで開き、まずは監視下に置くネットワーク、またはマシンを設定する。
var HOME_NET any
any を監視したいネットワークに書き換える。
この部分への記述はネットワーク環境が 192.168.1.0/255.255.255.0を例に書いておく。
例1.192.168.1.0のネットワークすべてを監視したい場合
var HOME_NET 192.168.1.0/24
例2.192.168.1.1を監視したい場合
var HOME_NET 192.168.1.1/32
例3.複数のネットワーク、複数のマシンを監視したい場合
(ネットワーク)var HOME_NET [192.168.0.0/24,192.168.1.0/24]
(マシン) var HOME_NET[192.168.1.1/32,192.168.1.2/32]
次に外部のネットワークの設定を行うため
var EXTERNAL_NET anyの anyを編集する。
大抵の場合HOME_NETで設定したネットワーク以外を外部とみなすため
var EXTERNAL_NET !$HOME_NET
とする。
SnortはHOME_NETで指定した対象以外にWEBサーバやメールサーバ、DNSサーバなどをを監視下に置くことができる。
特に指定のない場合それらはHOME_NETと同じとみなされる。
別途指定したい場合はvar HTTP_SERVERS の部分などで指定すればよい。
デフォルトのポート以外でサービスを行っている場合は適宜ポート番号を var HTTP_PORTSで指定する必要がある。
次にルールセットの場所を指定するため var RULE_PATH を指定する。
このメモではルールセットを/usr/local/snort/rules に格納しているためこれに合わせ
var RULE_PATH /usr/local/snort/rules
とする。
ポートスキャンに対するログを別途保存するのであれば
preprocessor portscan: $HOME_NET 4 3 spp_portscan
の行のコメントアウトを解除しファイル名を変更する。
データベースにアラートデータを書き込むために以下のように
output database: alert, mysql, user=snort password=mysql上のsnortユーザのパスワード dbname=snort host=localhost
の1行を追加する。
例:
# database: log to a variety of databases
# ---------------------------------------
# See the README.database file for more information about configuring
# and using this plugin.
#
# output database: log, mysql, user=root password=test dbname=db host=localhost
# output database: alert, postgresql, user=snort dbname=snort
# output database: log, odbc, user=snort dbname=snort
# output database: log, mssql, dbname=snort user=snort password=test
# output database: log, oracle, dbname=snort user=snort password=test
output database: alert, mysql, user=snort password=snortpassword dbname=snort host=localhost
すべてのルールセットを使用するため、516行付近からある includeのコメントアウト(#)をすべて外す。
(ここでは稼動確認などをするためにすべてのルールをインクルードするようにする。ルールをカスタマイズする再には取捨選択を行う。)
次にSnortのログを格納するディレクトリを作成しパーミッションを変更する。
# mkdir /var/log/snort
# chmod 700 /var/log/snort
Snort専用のグループ、ユーザ作成しディレクトリのオーナーを変更。
# groupadd snort
# useradd -g snort -d /dev/null -s /bin/false snort
# chown -R snort:snort /usr/local/snort /var/log/snort
起動スクリプトの作成
/etc/rc.d/init.d/snort という起動スクリプトを作成
# vi /etc/rc.d/init.d/snort
--- /etc/rc.d/init.d/snort内容(オプションなどは適宜編集)
#!/bin/sh
# chkconfig: - 91 35
# description: snort
. /etc/rc.d/init.d/functions
SERVICE="snort"
SERVER="/usr/local/bin/snort"
ARGS="-D -d -o -i eth0 -u snort -g snort -c /usr/local/snort/snort.conf"
case "$1" in
start)
echo -n "Starting $SERVICE: "
daemon "$SERVER $ARGS"
echo
touch /var/lock/subsys/$SERVICE
;;
stop)
echo -n "Stopping $SERVICE: "
killproc $SERVICE
echo
rm -f /var/lock/subsys/$SERVICE
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $SERVICE {start|stop|restart}"
exit 1
esac
exit 0
exit 0
------------------------------------------------------
作成後、実行権限を与える
# chmod 755 snort