URLScanのグローバルフィルターとサイトフィルター
目的
SQLインジェクション攻撃など、URLやHTTPヘッダーに不正なデータを紛らせる事による侵入や不正なアクセスに対する防衛手段の1つです。
公式サイト
URLScanの設定
(ダウンロードもページ内から参照しています)
前提条件
まず前提プラットフォームが以下の通りのようです(転載)。
- Windows XP、Windows Server 2003、Windows Vista または Windows Server 2008。
- IIS バージョン 5.1、6.0 または 7.0 (プラットフォームによる)。
ファイルの置き場所
インストールすると、URLScanのx86かx64かによって、以下のフォルダに.dllや.iniが追加されます。
- %windir%\system32\inetsrv
- %windir%\syswow64\inetsrv
ちなみに、当方の環境はWin2008のx64でしたが、system32ディレクトリにコピーされました。アプリがx86版だったのかもしれませんが、実行には影響しません。
フィルター種別
本タイトルにもあるとおり、フィルターにはグローバルフィルターとサイトフィルターがあります。
- グローバルフィルター
- サーバー内の全サイトに適用するフィルター。前述の置き場所にある.iniで定義します。
- サイトフィルター
- サイト単位で適用するフィルター。公式の例ですと、グローバルフィルターの.dllと.iniを、c:\site1(おそらくサイトルート)にコピーするようです。
当方ではグローバルしか使っていませんが、特定のサイトのみ適用したいルール等があれば、サイトフィルターを使うとよいでしょう。
例示
urlscan.iniの全てを書くと膨大だし、セキュリティ的にも手の内を明かすみたいで嫌なので、代表的なポイントを一部書きます。
[AllowExtensions] ;許可する拡張子。ページ・画像・Officeは基本として、.axdはASP.NETの実行時に呼び出されるため、必ず追加する事。 .aspx .asp .htm .html .jpg .jpeg .gif .png .css .js .xls .xlsx .doc .docx .pdf .txt .xml .rss .axd [DenyExtensions] ;リモートからの実行が明らかに不必要で、且つ危なっかしい拡張子。 .exe .bat .cmd .com ;設定ファイルやログファイル等、これもリモートからは必要ない。 .ini ; Configuration files .log ; Log files .pol ; Policy files .dat ; Configuration files .config ; Configuration files [DenyUrlSequences] ;URL中に存在しえないキャラクタ。念のため補足ですが、「..」は「<a href="../xxx.htm">」には影響しません。あくまでAbsolute URLとして認識します。 .. ; Don't allow directory traversals ./ ; Don't allow trailing dot on a directory name \ ; Don't allow backslashes in URL : ; Don't allow alternate stream access % ; Don't allow escaping after normalization & ; Don't allow multiple CGI processes to run on a single request [DenyQueryStringSequences] ;スクリプトを不正実行しようとしている可能性 < ; Commonly used by script injection attacks > ; Commonly used by script injection attacks [SQL Injection Strings] ;SQLインジェクション対策。SQL文に以下のパラメータが存在する場合、拒否ります。 char alter begin cast convert create cursor declare delete drop end exec fetch insert kill open select sysobjects syscolumns update
以上。