alert tcp any any -> 192.168.0.0/24 23 (content:"passwd"; msg:"passwd was detected";)
snortのルールは、下のサンプルで先頭から括弧"("の手前までをルールヘッダ、それ以降の部分をルールオプションと呼ぶ。今回は後半部のルールオプションについて解説していく。
ルールオプション部はsnortの侵入検知機能の心臓部となる重要な部分であるためTCP/IPの知識を必要とする指定項目が存在する。しかし基本的なルールは驚くほど単純に記述されているので、その内容は容易に理解できるはずだ。
ルールオプション部の記述
(
以上のように":"(コロン)で区切られたキーワードと変数を記述し、さらに";"(セミコロン)で区切って、続くキーワードと変数を記述する。最大で15個までのキーワードを記述することができる。
ルールオプションに記述できるキーワードは以下のとおりである。
msg :アラート出力とログ出力にメッセージを送る。
logto :指定したファイルにパケットログを記録する。
ttl :TTL(Time To Live)を評価する。
tos :TOS(Type Of Service)を評価する。
id :ID(IDentification)フィールドを評価する。
ipo :指定されたIP Optionが含まれているか評価する。
fragbits:フラグメント(Fragmentation Bits)を評価する。
dsize :パケットペイロードのサイズを評価する。
flags :TCPコードビット(TCP Flags)を評価する。
seq :TCPのシーケンス番号(TCP Sequence Number)を評価する。
ack :TCPの応答確認番号(TCP Acknowledgement Number)を評価する。
itype :ICMPのtypeフィールドの値を評価する。
icode :ICMPのcodeフィールドの値を評価する。
icmp_id :ICMP ECHOのIDフィールドの値を評価する。
icmp_seq:ICMP ECHOのシーケンス番号(Sequence Number)の値を評価する。
content :指定したデータパターンがパケッペパイロードでマッチするか評価する。
content-list:contentと同様の動作を、データパターンリストを使用して行う。
offset :パケットペイロード内でcontentのマッチングを開始する位置を指定する。
depth :パケットペイロード内でcontentのマッチングを行う終端位置を指定する。
nocase :contentで指定された文字列のセンシティビティを低くする。
session :アプリケーションレイヤのデータを記録する形式を指定する。
rpc :RPCサービスのトラフィックに対して、application、proceedure、versionがマッチするか評価する。
resp :ルールにマッチしたセッションを強制的に切断する。
react :ルールにマッチしたセッションをブロックする。
これらのオプションの中で、特に使う機会が多いだろうと思われる物をいくつか使用して、ルールを作成しながらルールオプションについて解説しよう。
office
office@ukky.net
http://www.office.ac/
みっきー
micky@office.ac
http://www.hawkeye.ac/micky/
(詳しくはScan本誌をご覧下さい)
http://www.vagabond.co.jp/c2/scan/