検索
連載

独自ルールファイルで細かなチューニングSnortでつくる不正侵入検知システム(6)(2/4 ページ)

Share
Tweet
LINE
Hatena

 続いてルールボディについて見ていこう。ちなみに、ルールボディは必須項目ではない。よって指定しなくても問題はないが、その場合は特定のIPアドレスからの全てのパケットにマッチしてしまう。このような挙動を必要とする機会はあまりなく、できるだけ細かな指定をしたいと考えるだろう。そんなときに使用するのがルールボディである。ルールヘッダだけでは表現できなかった詳細な条件をルールボディで指定するのだ。

 なお、以下で説明するオプションはセミコロン(;)で区切るので、併せて覚えておいてほしい。

ルールボディ:contentオプション

 contentオプションは、パケットのペイロードを解析する際に用いる。例えば、ペイロード中に「/etc/passwd」が含まれるパケットに対しアラートを出力したいのなら、「content:"/etc/passwd"」と指定すればよい。このようにcontentオプションを使うときは「content:」に続いて指定すればよい。

 なお、contentオプションにはASCIIのみならず、バイナリデータを指定できる。バイナリデータを指定する場合は、パイプ(|)で囲って、16進数で指定すればよい。例えば、「|fffe 011f|」のように指定する。

 もし、否定を表したいときは否定演算子である「!」を使用する。また、コロン(:)やパイプ(|)、ダブルクォーテーション(")を使用したいときは、ダブルクォーテーションによってエスケープする必要がある。ASCIIとバイナリを混在させて指定することも可能であるため、かなり柔軟な指定が可能になるはずである。

ルールボディ:uricontentオプション

 このオプションを見て、「contentオプションと何が違うの?」といった疑問をもたれた方がいらっしゃるかもしれない。contentオプションは、そのパケットのペイロード全体が対象となるのに対し、uricontentオプションは、当該パケットのリクエストURI部分のみが対象となる。

 これをうまく使うと、LANの内部に限定して公開しているWebコンテンツに対し、LAN外部からアクセスされた場合などにアラートを出力できるようになる。指定方法はcontentオプションと同様であるが、バイナリ指定はできない。

ルールボディ:depthオプション

 depthオプションはcontentオプションで指定された文字列を検索する範囲をバイト数で指定する。これを指定することにより、パケットの一部分のみが分析対象となり、負荷を軽減できる。よって、極力指定する方がよい。指定方法は簡単で、「depth:」に続いて範囲をバイト数で指定すればよい。

ルールボディ:offsetオプション

 offsetオプションは、contentオプションで指定した文字列の検索開始位置を指定するもので、バイト数で指定する。もし、必ず先頭に登場するのであれば0を指定する。

 この指定を誤ると、いかに優れたシグネチャを作成しても不正アクセスを検出できない。よって、慎重に設定してほしい。指定方法はdepthオプションと同様で、「offset:」に続いて開始位置のオフセットをバイト数で指定する。

ルールボディ:nocaseオプション

 nocaseオプションは、contentオプションに指定された文字列の大文字/小文字を無視するよう指定するものである。例えば、「content:"hoge";」と指定されていた場合、nocaseオプションなしでは、「Hoge」や「hOgE」といったパケットは検出できない。よって、これらのパケットも対象としたいのなら、nocaseオプションを指定する必要がある。指定方法は単純で「nocase;」と記述すればよい。

ルールボディ:sessionオプション

 sessionオプションは、セッション中の表示可能文字を抜き出して表示するためのオプションである。指定方法は下記の2つがある。

  • session:printable
  • session:all

 なお、printableとallを同時に指定することはできない。

ルールボディ:statelessオプション

 このオプションは、Snortの初期バージョンにおいてのみ必要となるものであり、最近のバージョンであれば指定は不要である(このオプションは、後述するflowオプションに内包されている)。指定する場合は単純に「stateless;」とだけ指定すればよい。

ルールボディ:regexオプション

 このオプションはcontextオプション中で正規表現を使用するためのものである。ここで注意が必要なのは、使用できる正規表現は標準的なものではないということである。現時点では、「?」または「*」のいずれか1つを使用することができる。前者が任意の1文字、後者が任意の1文字以上の文字列を表す。なお、状況が変わっている可能性があるため、随時ドキュメントなどで確認していただきたい。

ルールボディ:flowオプション

 このオプションは、TCP再構築モジュールと連係して動作するもので、クライアントとサーバ間でやりとりされるパケットの向きを定義できる。指定方法は「flow:<OPTION>」のようになる。なお<OPTION>の部分に指定できるものとして、下記のものがある。

to_server サーバに向かって送られるパケットであることを示す
to_client クライアントに向かって送られるパケットであることを示す
from_server サーバからクライアントに向かって送られるパケットであることを示す
from_client クライアントからサーバに向かって送られるパケットであることを示す
only_stream 再構築されたパケットまたは確立された通信中のパケットのみにマッチ
no_stream 再構築されたパケットまたは確立された通信中のパケット以外にマッチ
established 確立されたTCPパケットまたはセッションのパケットにマッチ
stateless statelessオプションと同等の動作をする(statelessオプションとは排他使用)

Index

独自ルールファイルで細かなチューニング

Page1

シグネチャの構成

ルールヘッダ:ルールアクション

ルールヘッダ:プロトコル

ルールヘッダ:ソース/ディスティネーションIPアドレス

ルールヘッダ:ポート番号

ルールヘッダ:方向指示子


Page2

ルールボディ:contentオプション

ルールボディ:uricontentオプション

ルールボディ:depthオプション

ルールボディ:offsetオプション

ルールボディ:nocaseオプション

ルールボディ:sessionオプション

ルールボディ:statelessオプション

ルールボディ:regexオプション

ルールボディ:flowオプション


Page3

ルールボディ:fragbitsオプション(IPオプション)

ルールボディ:sameipオプション(IPオプション)

ルールボディ:ipoptオプション(IPオプション)

ルールボディ:IDオプション(IPオプション)

ルールボディ:tosオプション(IPオプション)

ルールボディ:ttlオプション(IPオプション)

ルールボディ:seqオプション(TCPオプション)

ルールボディ:flagsオプション(TCPオプション)

ルールボディ:ackオプション(TCPオプション)

ルールボディ:icmp_idオプション(ICMPオプション)

ルールボディ:icmp_seqオプション(ICMPオプション)

ルールボディ:icodeオプション(ICMPオプション)

ルールボディ:itypeオプション(ICMPオプション)


Page4

ルールボディ:sidオプション

ルールボディ:revオプション

ルールボディ:priorityオプション

ルールボディ:classtypeオプション

ルールボディ:referenceオプション

ルールボディ:msgオプション

ルールボディ:logtoオプション


Copyright © ITmedia, Inc. All Rights Reserved.

Security & Trust 記事ランキング

  1. 「生成AIのサイバー攻撃への悪用」は増加する? 徳丸浩氏が予測する2025年のセキュリティ
  2. AWS、組織のセキュリティインシデント対応を支援する「AWS Security Incident Response」を発表 アラートに圧倒されるセキュリティチームをどう支援?
  3. 商用国家安全保障アルゴリズム(CNSA)の期限となる2030年までに暗号化/キー管理サービス市場が60億ドルに達するとABI Researchが予測 急成長の要因とは?
  4. ChatGPTやClaudeのAPIアクセスをかたってマルウェアを配布するPython用パッケージ確認 Kasperskyが注意喚起
  5. Google、オープンソースのセキュリティパッチ検証ツール「Vanir」を公開 多種多様なAndroidデバイスの脆弱性対応を支援するアプローチとは
  6. 高度なAIでAIをテスト OpenAIが実践するAIモデルのレッドチーム演習とは
  7. 「このままゼロトラストへ進んでいいの?」と迷う企業やこれから入門する企業も必見、ゼロトラストの本質、始め方/進め方が分かる無料の電子書籍
  8. 「SQLite」のゼロデイ脆弱性、GoogleのAIエージェントが見つける AIは脆弱性調査の課題をどう解決したのか?
  9. 従業員は「最新のサイバー脅威との戦い」を強いられている セキュリティ教育に不満を持つ理由の1位は?
  10. 堅調なID管理や認証、脅威インテリジェンスなどを抑え、2024年上半期で最も成長したセキュリティ分野は?
ページトップに戻る