CentOS

2006/2/09 02:06 PM 更新

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.gz
$ 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/
Oinkmasterの設定ファイルを編集。
  /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