このプリプロセッサではHTTPトラフィックおよびプロトコル上の例外の正規化と検出を行う。Stream4と同様に、このプリプロセッサも大変強力であるため、多数の設定項目が存在する。柔軟な設定が可能な分、多少難しい面もあるが、1つ1つ見ていきたい。なお、大別してグローバルとサーバの2つの設定を行う必要がある。
まずは、グローバル設定から見ていこう。
iis_unicode_map | IIS用Unicodeマップと使用コードマップ番号を指定(必須) Tarballに同梱されているunicode.mapとその中のコードマップ番号を指定すればよい |
|
detect_anomalous_servers | HTTPデフォルトポート以外でのHTTPトラフィックを監視し警告を発するよう指定 | |
proxy_alert | 使用を許可していないプロキシを使用しているクライアントを検出し警告を発するよう指定 | |
続いてサーバ設定を見ていこう。
profile | IISまたはApache特有の設定を行うことができるように指定 IIS、Apache、allのいずれかを指定する なお、この指定はサーバ設定のオプションの先頭にくる必要がある また、下記のオプション以外と組み合わせることはできない 必須項目ではないため、省略可能である ports/iis_unicode_map/allow_proxy_use/flow_depth/no_alerts/inspect_uri_only/ oversize_dir_length |
|
ports | HTTPサーバが使用しているポートを指定(複数指定化) | |
iis_unicode_map | グローバル設定と同様 | |
flow_depth | サーバの応答に対して検査対象となるデータ長を数値で指定 | |
ascii | エンコードされたAscii文字列のデコードを行うか否かを指定 yesを指定するとデコード時のアラートを発生し、noを指定するとデコード時のアラートは発生しない |
|
utf_8 | URI中のUTF-8のうち、一般的なものについてデコードするか否かを指定 yesを指定するとデコード時のアラートを発生し、noを指定するとデコード時のアラートは発生しない |
|
u_encode | IISの%uエンコードをデコードするか否かを指定 yesを指定するとデコード時のアラートを発生し、noを指定するとデコード時のアラートは発生しない |
|
bare_byte | IISで用いられているHTTP標準と異なったエンコードを処理するか否かを指定 yesを指定すると処理時のアラートを発生し、noを指定すると処理時のアラートは発生しない |
|
base36 | IISで用いられている%de%adのようなエンコードをデコードするか否かを指定 yesを指定するとデコード時のアラートを発生し、noを指定するとデコード時のアラートは発生しない u_encodeとの同時使用はできない(こちらが無効となる) また、asciiが有効となる |
|
iis_unicode | unicodeコードポイントマップを有効にするか否かを指定 yesを指定すると処理時のアラートを発生し、noを指定すると処理時のアラートは発生しない |
|
double_decode | IISの2重デコードと同様のデコードを行うか否かを指定 yesを指定すると処理時のアラートを発生し、noを指定すると処理時のアラートは発生しない |
|
non_rfc_char | URI中に非RFC文字が存在した場合、アラートを発生させるか否かを指定 yesを指定するとアラートを発生し、noを指定するとアラートは発生しない |
|
multi_slash | 複数のスラッシュを正規化するか否かを指定 yesを指定するとアラートを発生し、noを指定するとアラートは発生しない |
|
iis_backslash | バックスラッシュをスラッシュに変換するか否かを指定 yesを指定するとアラートを発生し、noを指定するとアラートは発生しない |
|
directory | 「../」または「./」を正規化するか否かを指定 yesを指定するとアラートを発生し、noを指定するとアラートは発生しない HTMLドキュメント中に「../」が存在した場合などもアラートを発生させるので注意する必要がある |
|
apache_whitespace | スペース区切りの代わりにTABが用いられている場合、解釈するか否かを指定 yesを指定するとアラートを発生し、noを指定するとアラートは発生しない |
|
iis_delimiter | IIS特有の区切り文字の解釈を行うか否かを指定 yesを指定するとアラートを発生し、noを指定するとアラートは発生しない |
|
chunk_length | チャンクエンコーディングされたデータサイズの閾(いき)値をより大きい整数値で指定 | |
no_pipeline_req | HTTPのパイプラインでコーディングを無効にするよう指定 | |
non_strict | URIの解釈を厳密に行わないよう指定 | |
allow_proxy_use | プロキシ使用時にアラートを発しないよう指定 グローバル指定のproxy_alertの指定は影響しない また、proxy_alertの指定がない場合は機能しない |
|
no_alerts | このプリプロセッサによってすべてのアラートを発生しないよう指定 | |
oversize_dir_length | URI中のディレクトリを示す文字列の最大値を、0より大きい整数値で指定 (ここの値を超えた時点でアラート発生) |
|
inspect_uri_only | HTTPリクエストのURI部分のみを検査対象とする (uricontent ルールオプションを用いていないルールセットではこのオプションは意味を持たない) |
|
今回、Snortで使用可能なプリプロセッサの種類とそれらで使用可能なオプションについて解説を行った。すべてについて解説ができず、また解説を行ったものについても、詳細なものではなかったため、理解しきれない部分があるかと思う。
英語ではあるがTarball中のdoc/配下にREADME.〜というドキュメントが存在するものもあるため、それらを併せて読むと理解が深まると思う。また、snort.confに書かれている情報や設定例を読むだけでも、有益な情報を得られるはずである。
次回は独自のルールセットの作成方法について紹介していきたい。
Copyright © ITmedia, Inc. All Rights Reserved.