Oinkmaster
Snortを導入したが、シグネチャ検知型IDSというものはウィルス対策ソフトと一緒でシグネチャ(パターンファイル)が古いままだと新しい攻撃には対応できないとか問題が出る。
Snortの新しいシグネチャが出るたびに手動で更新していたのでは漏れが出るし大変だ。
そこで自動でSnortのシグネチャを更新するソフトウェアであるOinkmasterを導入する。
Oinkmasterの公式サイトよりOinkmasterの最新版のソースファイルを入手しインストールする。
・Oinkmasterのインストールディレクトリ --> /usr/local/oinkmaster
・シグネチャのバックアップディレクトリ --> /usr/local/snort/rules/Backup
$ wget http://jaist.dl.sourceforge.net/sourceforge/oinkmaster/oinkmaster-1.2.tar.gzOinkmasterの設定ファイルを編集。
$ tar xvzf oinkmaster-1.2.tar.gz
# cd oinkmaster-1.2
# mkdir /usr/local/oinkmaster
# mkdir /usr/local/snort/rules/Backup
# cp oinkmaster.pl oinkmaster.conf /usr/local/oinkmaster/
# chown -R snort:snort /usr/local/oinkmaster/
# chown -R snort:snort /usr/local/snort/rules/Backup/
/usr/local/oinkmaster/oinkmaster.conf
url = http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-snapshot-2.4.tar.gz手動でのシグネチャ更新テスト
path = /bin:/usr/bin:/usr/local/bin
update_files = \.rules$|\.config$|\.conf$|\.txt$|\.map$
skipfile local.rules
skipfile deleted.rules
skipfile snort.conf
# /usr/local/oinkmaster/oinkmaster.pl -o /usr/local/snort/rules -C /usr/local/oinkmaster /oinkmaster.conf -b /usr/local/snort/rules/Backup
Loading /usr/local/oinkmaster/oinkmaster.conf
Downloading file from http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-snapshot-2.4.tar.gz... done.
Archive successfully downloaded, unpacking... done.
Setting up rules structures... done.
Processing downloaded rules... disabled 0, enabled 0, modified 0, total=4818
Setting up rules structures... done.
Comparing new files to the old ones... done.
Creating backup of old rules... saved as /usr/local/snort/rules/Backup/rules-backup-20060209-012031.tar.gz.
Updating rules... done.
[***] Results from Oinkmaster started 20060209 01:20:32 [***]
[+++] Added rules: [+++]
> Added to exploit.rules (2):
省略
[*] Non-rule line modifications: [*]
None.
[+] Added files (consider updating your snort.conf to include them if needed): [+]
-> classification.config
-> reference.config
-> sid-msg.map
-> threshold.conf
-> unicode.map
バックアップされているか確認する。
# ls -al /usr/local/snort/rules/Backup/ 合計 240 drwxr-xr-x 2 snort snort 4096 2月 9 01:20 . drwxr-xr-x 3 snort snort 4096 2月 9 01:20 .. -rw-r--r-- 1 root root 232694 2月 9 01:20 rules-backup-20060209-012031.tar.gz定期的に実行されるようにcronに登録。
シグネチャが更新されたときはシスログに記録するようにしている(未完成・・・)。
/etc/cron.daily/oinkmaster
#!/bin/sh
#
# Oinkmaster is snort's rule update script
#
OINKDIR="/usr/local/oinkmaster"
RULEDIR="/usr/local/snort/rules"
BAKDIR="/usr/local/snort/rules/Backup"
$OINKDIR/oinkmaster.pl -o $RULEDIR -C $OINKDIR/oinkmaster.conf -b $BAKDIR 2>&1
chown -R snort:snort $RULEDIR
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t oinkmaster "Snort ruleset is now update"
fi
exit 0
このままだとシグネチャをカスタマイズしている場合でもOinkmasterに上書きされてしまう。Oinkmaster側で設定をしておく。
/usr/local/oinkmaster/oinkmaster.conf
○特定のシグネチャを無効にするときは該当シグネチャのsidで指定する
# You can specify one SID per line.
disablesid 1
disablesid 2
disablesid 3
