オープンソースの WAF (Web Application Firewall) である WebKnight は、デフォルトの設定だと攻撃だと検知したものは全てブロックしてログを出力します。
WebKnight の導入時の偽陽性の検出時や、攻撃だと検知されてしまう内容を WordPress などの CMS (Content Management System)に投稿せざるを得ない場合は、WebKnight のブロックを解除し、一時的にログ出力のみにする必要があります。
なお、WebKnight には動作を一時的に無効にするオプションはなく、WebKnight.xml のバックアップをとっておいてアンインストールするか、IIS の ISAPI フィルタから WebKnight を削除することでしか無効にすることができません。どちらも気軽にできることではないので、WebKnight を一時的に無効にするなら、ログ出力のみにした方がよいです。
事前に以下のアドレスを表示して、攻撃検出時にエラー画面が表示されることを確認します。
http://localhost/?union+select
WebKnight の設定をするには、以下のパスにある Config.exe をダブルクリックし、XML の選択画面で WebKnight.xml を選択します。
C:\Program Files\AQTRONIX Webknight\Config.exe
WebKnight の設定画面で、Incident Response Handling セクションに移動して、Response Log Only にチェックを入れて保存(File >> Save)します。
先ほどのアドレスにアクセスして、エラー画面が表示されないことを確認します。以下のように通常の画面が表示されるので、問題ないですね。
また、WebKnight のログも確認しておきます。以下のパスにある LogAnalysis.exe をダブルクリックして起動します。
C:\Program Files\AQTRONIX Webknight\LogAnalysis.exe
起動時にログの選択画面が表示されますが、日付+アプリケーションプール名.log が一覧に表示されているので、見たいログを選択します。
該当のログを確認すると、BLOCKED と攻撃を検知したログが出力されているので、問題なく設定ができたことが分かります。
Date: 2013-11-24
Time: 04:26:36
Site Instance: W3SVC1
Event: OnUrlMap
Client IP: ::1
Username:
Host header: localhost
Additional info about request (event specific): /
C:\inetpub\wwwroot
union+select
BLOCKED: Possible SQL injection in querystring: select,union
WAF設定まとめ
WAFの設定については以下のページにまとめていますので、こちらもどうぞ。
コメント