「WAF」は2006年のネットサービス防御トレンドか?スパム時代のサニタイズ開発手法(2/2 ページ)

» 2005年12月28日 09時54分 公開
[平田豊,ITmedia]
前のページへ 1|2       

アプライアンスによるハードウェア実装

 後述するソフトウェアWAF実装では、構築の手間や運用ノウハウなどすべてを把握することが要求される。この場合のメリットは、敷居が高いものの自由に設定することができるため、構築の際の技術力に応じて十分に機能を発揮してくれることだ。詳細は後述しよう。

 一方で、平均的な機能がそろっていればいい、といったニーズにはハードウェア実装によるアプライアンス製品が人気となっている。ソフトウェア実装に比べ初期投資が高価であるが、ベンダー保証が受けられることや、WAFの機能だけで占有する機器のためパフォーマンスが期待できることが大きい。また、専用のGUI管理画面を用意するために、目的重視の運用ができることにも特徴がある。

 そして日ごろの運用シーンを想像してほしい。いくら技術力に長けた構築や運用の管理者であっても、日々のメンテナンスに必要以上の手間を強いるようでは危険性を回避し続けられる体力があるかどうか? という懸念だ。このため、運用形態は極力シンプルにする必要があり、運用メンバーの多重化こそがシステム複雑化に対する課題かもしれない。

アプライアンスのメリットには運用の容易さも

 概してソフトウェア実装によるWAFは、ほかのサービスと並行動作させることが多い。このためアプリケーションファイアウォールの機能だけにリソースを占有することが難しいことが多い。このため、専用のハードウェアを用意し、アプライアンス製品として機能させることには大きな意味があるのだ。また、アプライアンスならではのサポートと、付加機能にも期待できるだろう。

 付加機能としては、第一に操作性が挙げられる。概してソフトウェア実装の場合には、GUIの運用画面を用意することが考えづらい。製品として出荷するならば必須だが、エンジニアが構築した環境であれば誰もが扱いやすい画面を用意することは後手になりがちだ。

 このような理由からも、これまではWebアプリケーションファイアウォール導入の敷居が高かったといえる。しかし、本当に必要としているのは、専任のIT管理者が不在、比較的システムに多大なコストを掛けられない異業種のオンラインショッピングサイトなどだろう。アプライアンス登場は望まれていたものなのだ。

 具体的な仕様を見ることでアプライアンスの実態を知ることができるはずだ。WAFのアプライアンスとして知られているF5ネットワークスジャパンの「TrafficShield」を例に特徴を見てみよう(関連リンク)

 TrafficShieldでは、次のような攻撃に対し効果を発揮する。これらの性能差は別として「機能性そのもの」はソフトウェア実装とほとんど変わりない。

  • SQLインジェクション
  • クロスサイトスクリプティング
  • 強制ブラウジング

 そして一番の特徴は、ハードウェア仕様にある。シリーズ中のモデル「TrafficShield 4100」では、2Uの筐体にデュアルCPUとしてAMD Opteronプロセッサ 242の1600MHzを2つ装備、10/100/1000カッパーに4つのポートを用意し、SSLアクセラレータ機能も搭載している。これらを最終的にソフトウェア実装するためには、後述するmod_securityと呼ぶモジュールインストールだけでは済まず、関連するハードウェア調達や暗号化設定などが伴うだろう。初期の構築であれば、場合によって週単位以上の時間を要するかもしれない。

 また、TrafficShieldでは日本語の2バイトコードにも対応しており、オープンソース実装の多くが見落としがちな日本語の処理も予めセットアップされている。

F5ネットワークスジャパン、シニア プリセールス コンサルタントの伴崇博氏

 インタビューに応じた同社のシニア プリセールス コンサルタントの伴崇博氏は、「米国では特に著名なサイトで数多く導入されている実績があります。国内でも注目されてきており、オンラインショッピングサイトや金融系などセキュリティに厳しいサイトでは特にニーズが高いでしょう」と指摘する。

F5ネットワークスジャパン、マーケティングマネージャの伊藤利昭氏からは、TrafficShieldによる既存のファイアウォールや不正侵入検知システム(IDS:Intrusion Detection System)では防げない優位さが強調された

 次に、ハードウェア実装のWAFがどのような基盤で稼働しているかを判断するためにデベロッパー向け情報として、WAFのソフトウェア実装例を示しておこう。

WAFソフトウェア実装「mod_security」の場合

 WAFにはソフトウェアレベルで実装するものがある。ここで挙げるのは、Webサーバのアドオンとして機能し、Webサーバソフトで定番「Apache」への追加によってWAFを実現する「mod_security」と呼ばれるモジュールだ。

 mod_securityは下記のサイトにて配布されているオープンソースソフトウェアだ。

http://www.modsecurity.org/

 ここでは、より詳細なソースファイルからビルド手順は割合しよう。その効果を確認することで前述したハードウェア実装のWAFの基本機能を垣間見ることが目的だからだ。概ねハードウェア実装のWAFでも同じような処理をしているものと想像することができるだろう。

 mod_securityの動作具合は、インストール後、自由に設定することができる。次のように、Webサーバソフト(Apache)の設定ファイル内に記述するのだ。

リスト■設定ファイルhttpd.conf内の設定個所

<IfModule mod_security.c>
    SecFilterEngine On
    SecFilterScanPOST On
    SecFilterDefaultAction "deny,log,status:406"
    SecFilter /etc/passwd
    SecFilter "[<]"
    SecFilter "[>]"
    SecFilter "[\"]"
    SecFilter "[']"
    SecFilterSelective REQUEST_METHOD "!(GET|POST|HEAD)"
    SecAuditEngine RelevantOnly
    SecAuditLog /var/log/httpd/audit.log
</IfModule>

 上記の設定で注目すべきは、SecFilterEngine Onで機能をオンにして、SecFilterのここでは4行の定義内容でタグの無効化をしている点だ。「/etc/passwd」「<」「>」「\」「'」の5種類の指定が確認できる。

 これらを感知した場合の挙動は、アクセスを拒否し(..... "deny,log,status:406")、ログを採取して処理を終える(/var/log/httpd/audit.logに保存)。この場合、アクセス元(ブラウザなど)には、HTTPレスポンス既定としてブラウザ判別が可能な406(Not Acceptable)のコードが返される。また、SecFilterでさらにフィルタリングルールを追加することができる。

 以下に実行例の画面を示す。ここでの注目点は、CGIスクリプトへ制御が渡る前に、Webサーバソフトのレベルでアクセス元へエラーを返していることだ。

フォーム入力前
フォーム入力後

 そして、mod_securityのログファイルには、以下のような拒否記録が確認できる。

リスト■mod_securityで防御された場合のログファイル内記録の例

==06997f3d==============================
Request: 192.168.1.3 192.168.1.2 - - [03/Dec/2005:21:05:43 +0900] "POST /~yutaka/test.cgi
HTTP/1.1" 406 344 "http://192.168.1.3/~yutaka/index.html" "Mozilla/4.0 (compatible; MSIE 6
.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" - "-"
Handler: cgi-script
----------------------------------------
POST /~yutaka/test.cgi HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash
, */*
Referer: http://192.168.1.3/~yutaka/index.html
Accept-Language: ja
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: 192.168.1.3
Content-Length: 17
Connection: Keep-Alive
Cache-Control: no-cache
mod_security-message: Access denied with code 406. Pattern match "[<]" at POST_PAYLOAD
mod_security-action: 406
17
message=%3Cfoo%3E
HTTP/1.1 406 Not Acceptable
Content-Length: 344
Connection: close
Content-Type: text/html; charset=iso-8859-1
--06997f3d--
前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ