WebKnight とは
WebKnight は AQTRONiX 社がオープンソースで開発・提供している IIS (Internet Information Services) 向けの WAF (Web Application Firewall) です。GPL ライセンスで提供されているので、誰でも無償で使用することができます。
WAF とは、Web アプリケーションにリクエストが送信される手前でリクエストを取得して内容を精査し、問題があればリクエストを拒否します。これにより仮に Web アプリケーションに脆弱性があったとしても WAF が守ってくれます。
WAF にも偽陽性や偽陰性という誤検知の問題があるので、過信することはよくないですが、改修不能な Web アプリケーションの保護や、多層防御の一手法として有効です。
また、WAF には、ネットワーク型とホスト型がありますが、WebKnight はホスト型の WAF になります。
公式サイトの情報の記載では、WebKnight は IIS 5/6/7/8 のインストール方法しかありませんが、WebKnight は ISAPI をサポートしている Web サーバーで動作するので、Windows Server 2012 R2 の IIS 8.5 でも問題なく動作します。
IIS に機能追加する
WebKnight をインストールするには、IIS に「ISAPI フィルタ」と「ISAPI 拡張」が追加されている必要があります。IIS のデフォルトインストールでは、2つの機能とも追加されていないので追加する必要があります。
ここでは、IIS がデフォルトでインストールされていることを前提として、2つの機能を追加します。
まず、サーバーマネージャーを起動して、「役割と機能の追加」をクリックします。
「次へ」をクリック。
「次へ」をクリック。
サーバーが複数台ある場合は対象のサーバーを選択しますが、1つしかないのならそのまま「次へ」をクリック。
Web サーバー (IIS) >> Web サーバー >> アプリケーション開発 の下にある「ISAPI フィルター」と「ISAPI 拡張」にチェックをいれて「次へ」をクリック。
「次へ」をクリック。
内容を確認して、「インストール」をクリック。
インストールが完了したら「閉じる」をクリックして終了です。
WebKnight のダウンロードとインストール
WebKnight のダウンロードページから、WebKnight をダウンロードします。
注意が必要なのは、ダウンロードページの上部にある “Buy Now” は、AQTRONiX 社によるサポートの購入であって、WebKnight が有償のツールである訳ではありません。
ここでは、現時点で最新バージョンの WebKnight 3.1 をダウンロードします。
ダウンロードした WebKnight.zip を解凍します。解凍しないでインストールを開始することができてしまいますが、途中でインストールが失敗するので必ず解凍してください。
解凍してできた、WebKnight\Setup\x64\WebKnight.msi をダブルクリックしてインストールを開始します。同じフォルダにある install.vbs は紛らわしいですが、古い環境用のものなので使用しないでください。
インストーラーが起動すると以下の画面が表示されるので ”Next” をクリック。
“I accept the terms in the License Agreement” を選択して “Next” をクリック。
“Typical” のアイコンをクリック。
“Install” をクリック。
以下の画面がインストーラーのなぜか後ろに表示されるので、 前面に画面を表示して “OK” をクリック。
インストールが完了したので、”Finish” をクリックします。
WebKnight が正常に稼働しているか確認するために、以下のアドレスにアクセスします。
http://localhost/?union+select
WebKnight が正常にインストールされていれば以下のようにエラー画面が表示されます。
WebKnight の設定方法
WebKnight の設定を行うには、以下のパスにインストールされた Config.exe をダブルクリックして設定画面を表示します。
C:\Program Files\AQTRONIX Webknight\Config.exe
Config.exe をダブルクリックすると、以下のように XML を選択する画面が表示されますが、設定を行うには “WebKnight.xml” を選択して “OK” をクリックします。
すると設定画面が表示されるので、設定を変更して、変更内容を File >> Save から保存します。
WebKnight のログの確認方法
WebKnight のログは、以下のフォルダに、日付+アプリケーションプール名.log という名前で保存されます。
C:\Program Files\AQTRONIX Webknight\LogFiles
ログファイルをテキストエディタで開いて直接確認してもよいのですが、以下のパスにインストールされる LogAnalysis.exe を使用するとログが確認しやすいです。
C:\Program Files\AQTRONIX Webknight\LogAnalysis.exe
LogAnalysis.exe をダブルクリックすると、どのログファイルを開くかの選択画面が表示されますが、ログファイルが1つの場合は直接ログ表示画面が表示されます。
ログには以下のように表示されて、以下の例では SQL インジェクションの攻撃をブロックしたことが分かります。
Site Instance: W3SVC1
Event: OnPreprocHeaders
Client IP: ::1
Username:
Host header: localhost
Additional info about request (event specific): GET
/
union+select
BLOCKED: Possible SQL injection in querystring: select,union
HTTP/1.1
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
WAF には偽陽性の問題があるので、偽陽性だった場合には攻撃と見なさないようにログを確認しながらチューニングする必要があります。
おわりに
WebKnight は Windows 上の IIS に簡単にインストールできるので、導入が可能なら導入することをおすすめしたいと思います。情報が少ないですが、設定画面にコメントが付いているので、割合なんとかなるものです。
Web アプリケーションは、どんなに注意して開発し、脆弱性診断を行ったとしても脆弱性は残ってしまいがちなので、多層防御の観点から WebKnight の導入は理にかなっています。
導入に当たっての注意点としては、WebKnight はきつめにチューニングされているので、偽陽性によって Web アプリケーションが動作しない可能性が高いことです。偽陽性の問題を解消するためのチューニング期間を十分に取ることが大事でしょう。
WebKnight の導入によって、みなさんの Web アプリケーションがより安全になれば幸いです。
WAF設定まとめ
WAFの設定については以下のページにまとめていますので、こちらもどうぞ。
コメント