Snortの導入メモ

投稿日:

一応ワタシにも

「ファイアウォールとIDS(Intrusion Detection System。侵入検知システム)は両方要る」

程度の意識が無かったわけではない(^^;んすが、いままで導入する機会を逸しておりました。

が、年度末の業務ピークがようやく過ぎつつあることと、@ITSnortでつくる不正侵入検知システムの連載が終了し、ある程度の情報がまとまったと判断したので、当方もこの機会にSnortの導入を図ってみる事に。

まず、パケットキャプチャ用のライブラリlibpcapが必要らしーので、これを導入します。

現在の状況を見てみると、

# rpm -q libpcap
libpcap-0.6.2-17.7.3.6.legacy

パッケージ名に「legacy」と付いてるってことはFedora Legacy ProjectによるセキュリティFIXを受けてる→素よりは安心っすけど、最新版は0.8.3とかになってる→セキュリティツールともなると脆弱性とか恐いので、最新版に入れ替えとくことにします。

# rpm -e libpcap

とやってパッケージを削除し、libpcap-0.8.3.tar.gzを落として来て

# tar xvzf libpcap-0.8.3.tar.gz
# cd libpcap-0.8.3
# ./configure
# make
# make install

でインストール。

続いてSnort本体を探します。

# apt-cache search snort

・・・・やっぱ無いようです(^_^;) ということでオフィシャルサイトからsnort-2.3.2.tar.gzを(大感謝を捧げてから)頂いて来て解凍、インストールします。ココの環境もMySQLアリなので、mysqlオプションを着けてコンパイル。

# ./configure --with-mysql=yes
# make
# make install

webminでシェルが/bin/falseのsnortユーザを作成し、/etc/snortにrulesファイルとconfファイルを放り込んで環境作成は終了。

MySQLを使う予定なのでsnort用のデータベースを(やはりwebminで)作成したのち、

# mysql -D snort -u root -p < schemas/create_mysql

とやってテーブルを作成。

/etc/snort.confは

var HOME_NET 192.168.1.0/24

var EXTERNAL_NET !$HOME_NET

var RULE_PATH /etc/snort

output database: log, mysql, user=user password=password dbname=snort host=localhost

としときました。ホンマに最低限(^_^;)

/etc/rc.d/init.d/snortdは

#! /bin/bash

# snort start script
# chkconfig:35 90 90
# description:snort is IDS system


# Source function library.
. /etc/init.d/functions

#program name
snort=/usr/local/bin/snort
prog=snort
RETVAL=0

start() {
echo -n $"Starting $prog:"
rm -fr /var/log/snort/*
daemon $snort -c /etc/snort/snort.conf -i eth0 -u snort -g snort -l /var/log/snort -Dde -y
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n "Stopping $prog:"
killproc $snort
RETVAL=$?
echo
return $RETVAL
}
restart() {
stop
start
}

case "$1" in

start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage:$prog {start|stop|restart}"
exit 1
esac
exit $?

として、755に。MySQLを使うので、ログはあんまり要らん…とは言っても「まったく採らない」のもちとおっかない(^^;ので、「起動毎にログを消す」ようにしてます。

UIはBASEを使う事にします。まずADODBを展開して

# mv adodb /usr/local

と移動。

BASEは単なるPHPスクリプトでインストーラーも付いてるので、解凍してapache管理下のフォルダに展開するだけ…と思ってたら、上手く動きません。一見正常にインストール終わるんすが、使うと

「未定義の関数やらクラスやらが有ります」

とかヌカして、ちゃんとレポートを上げません。はて??

とか思ってるうちに、以前にダウンロードしてたテストに使ってたBASE 1.1 (elizabeth)が、いつの間にか1.1.2 (zora)に変わってる事を発見。

- 4/4/2005 1.1.2 (zora)
- Fixed Fatal error in some installs -- Michael Stone

コレかっ!(^_^;) ということで、1.1.2で試したらあっさりオッケー(^^;;

添付の日本語ファイルはUTF-8でしたが、自環境ではEUCのほうが都合良いので/languages/japanese.lang.phpを

DEFINE('_CHARSET','EUC');

と書き直して、EUCで保存し直しときました(^_^)

050412a.gif

なんか一杯警告が出てます(^_^;) 今後ルールの調整も必要だけど、ホントにヤバそうなアクセスも幾つか混じってる模様→本気で防御を固めとかないとヤバそう。