前回まででsnortの起動まで作業を進めることができた。試しに少し動かしてみただろうか? インストールした素のままでsnortを運用すると、それこそ誤警報ばかりでsnortに対して落胆を覚えるかもしれない。だがそれは早合点だ。 snortに限らずIDSは、それが運用される環境の情報を与えられていない。実際にそれがインストールされるホストは、wwwをサービスしているのか、mailをサービスしているのか。あるいは、そのホストは閉ざされたネットワークに設置されるのか、それともインターネット上に公開されるのかといった状況はsnortにはわからない。 そこでsnortの初期状態のルールセットでは、可能な限り多くの現象を記録できるように設定されている。そのため個々の環境に対してはルールの数が多すぎるのだ。 例えば、Linuxで運用されているDNSサーバ上にはIISへの攻撃を検出するためのルールセットを装備しても効果は期待できない。また初期状態でのルールセットにはpingを検出するためのルールなどが数多く記載されている。pingやtraceroute等は日常的に発生する通信であり、IDSを運用してゆく上では特別な理由でも無い限りは無視した方が都合が良いのだ。 そこでsnortのインストール作業の後には、必ずルールセットを含む設定の最適化作業が必要となる。 最適化作業と言ってもルールを自分で記述して構築するような複雑な作業ではないので安心して頂きたい。上述のようにルールセットは可能な限り多くの不正利用を想定して作成されているので、不要なルールをそこから取り除いてしまうだけである。 では早速ルールセットを最適化してみよう。ルールセットを保存したディレクトリには以下のファイルが存在する。これらのファイルはルールが検出するジャンル毎におおまかにまとめられたものだ。snort.conf ルールセットのメインファイル |−backdoor-lib バックドアとの通信の検出 |−ddos-lib DDoS関連の通信および攻撃の検出 |−finger-lib さまざまなクライアントからのfingerの検出 |−ftp-lib ftpに対する通信や攻撃の検出 |−misc-lib リモート管理ツールやその他の検出 |−netbios-lib netbiosによる不正利用の検出 |−overflow-lib バッファ・オーバーフロー攻撃の検出 |−ping-lib さまざまなクライアントからのpingの検出 |−rpc-lib rpcに対する通信や攻撃の検出 |−scan-lib ステルス系ポートスキャン等の検出 |−smtp-lib smtpに対する通信や攻撃の検出 |−telnet-lib telnetに対する通信や攻撃の検出 |−web-lib wwwに対する通信や攻撃の検出 |−webcf-lib ColdFusionに対する通信や攻撃の検出 |−webcgi-lib cgiに対する通信や攻撃の検出 |−webfp-lib FrontPageに対する通信や攻撃の検出 |−webiis-lib IISに対する通信や攻撃の検出 |−webmisc-lib その他のwww関連サービスへの通信や攻撃の検出 snort.confは他の*-libファイルをインクルードする形式で記述されている。従って1つのジャンルをまるごと無効にする場合は、該当のinclude行をコメントアウトするだけでよい。例えばColdFusion関連の検出を無効にするのであれば、snort.confファイルの後部でincludeされている部分をコメントアウトする。include webcf-lib ─> #include webcf-lib 同様にルールセット内に記述されている任意のルールを無効にする場合にも同様にコメントアウトすれば良い。代表的なポートスキャンツールであるnmapからのpingの検出を無効にするのであれば、ping-libファイル内にある行を以下のようにコメントアウトする。# alert tcp any any -> $HOME_NET any (msg:"IDS028 - PING NMAP TCP";flags:A;ack:0;)officeoffice@ukky.nethttp://www.office.ac/みっきーmicky@office.achttp://www.hawkeye.ac/micky/(詳しくはScan本誌をご覧下さい)http://www.vagabond.co.jp/c2/scan/