●ルールセットをチューニングする

 前回の最後にも触れたが、Snortを確実に運用するためにも、各ユーザーの環境に合わせたルールファイルのチューニングが大事だ。必要のないものを検出しないようにするだけでも、不要なログを減らすことができる。すべてを記録するような設定をしていればログが莫大になり、どれが重要かわからなくなってしまうだろう。また、サーバで運営しているサービスや設置状況によっては、ポート80番の通信は記録させない(パスさせる)などの使い分けをしたほうがよいこともあるだろう。逆にSnortが標準で読み込んでいないルールファイルを必要に応じて読み込むようにしたり、ルールファイルを新規に作成するなどして、各ユーザーの利用しやすいように改良していく必要がある。また、新しい攻撃パターンが記述されたルールファイルがあれば、ウイルス定義ファイルなどと同じく、頻繁にアップデートしなければならない。

●ルールセットの選択

 まず、Snortの設定ファイル(/etc/snort.conf)の中にあるルールセットの読み込みに関する編集を行ってみよう。ルールセットに関する記述はsnort.confの後半に記述されている。

# vi /etc/snort/snort.conf

〜省略〜

#=========================================
# Include all relevant rulesets here
#
# shellcode, policy, info, backdoor, and virus rulesets are
# disabled by default.These require tuning and maintance.
# Please read the included specific file for more information.
#=========================================

include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/tftp.rules
include $RULE_PATH/web-cgi.rules
include $RULE_PATH/web-coldfusion.rules
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/x11.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/attack-responses.rules
# include $RULE_PATH/backdoor.rules
# include $RULE_PATH/shellcode.rules
# include $RULE_PATH/policy.rules
# include $RULE_PATH/porn.rules
# include $RULE_PATH/info.rules
# include $RULE_PATH/icmp-info.rules
# include $RULE_PATH/virus.rules
# include $RULE_PATH/experimental.rules
include $RULE_PATH/local.rules

 この中で、たとえば「backdoor.rules」のように、「#」でコメントアウトされているルールファイルは起動時に読み込まれていない。もし読み込む必要があると判断した場合は、該当するルールファイルのコメントアウトを外せばよい。また、逆に読み込ませたくないルールファイルに関しては、先頭に「#」をつけてコメントアウトしておけば、そのルールファイルは起動時に読み込まれない。

 次に個々のルールファイルから、不要と判断したものを検知しないようにする場合だが、これも同様に、alertの前に#をつけコメントアウトを行えばよい。

【例】「web-cgi.rules」からphfに関する検出をしないようにする

↓コメントアウト
#alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (msg:"WEB-CGI phf
access";flags: A+; uricontent:"/phf"; nocase; reference:bugtraq,629; reference:a
rachnids,128; reference:cve,CVE-1999-0067;classtype:attempted-recon; sid:886;
rev:3;)

 このように、必要なものと不必要なものをユーザの環境に合わせて選択し、構築していくわけだ。次回はルールファイルの編集や新規作成、そして、Snortのルールファイルを自動的に最新のルールファイルへアップデートするスクリプト「Oinkmaster」の導入などについて解説していく予定だ。

[TTS、ITmedia]

PREV 5/5