WAFとは
WAF(Web Application Firewall; 「ワフ」と読みます)とは、Webアプリケーションに特化した防御システムです。Webサーバーの前段に設置することで、Webアプリケーションの脆弱性を衝いた攻撃から、Webサイトを防御します。
WAFはどのような脅威に有効か
WAFは、その名前のように、Webアプリケーションに対する攻撃に有効です。加えて、Webサーバー(ApacheやIIS)やWeb用のミドルウェア(Tomcat等)、言語システム(PHP等)の脆弱性についても防御能力があります。
一方、Web以外のプロトコルを用いるメールシステムなどに対する攻撃に対しては防御機能は働きません。
WAFの防御戦略
WAFは主に以下の手法により、外部からの攻撃をブロックします。
(1)シグネチャによる攻撃検知とブロック
SQLインジェクションやクロスサイトスクリプティングなどの攻撃パターンをシグネチャとして定義しておき、外部からの要求(リクエスト)がシグネチャとマッチした場合、攻撃とみなし、通信をブロックするなどの防御処置をとります。
(2)ホワイトリストによる検査
パラメータ毎に、値の仕様を定義し、その仕様に外れた場合に要求をブロックします。仕様(ホワイトリスト)は、各画面のパラメータ毎に定義する必要があります。
(3)画面遷移の正当性チェック
WAFによっては、画面遷移の正当性をチェックする機能があります。
- 外部から遷移して良い「入口」のページを定義
- 入口以降、リンクやボタンによって遷移できるページのみ参照できる
- ページを遷移するにしたがって、参照可能なページは拡大していく
外部からの攻撃は、正規の画面遷移を経ずに直接該当ページを参照する場合が多いことから、画面遷移のチェックにより攻撃を防ぐことができるばあいがあります。
(4)hiddenパラメータやCookieの保護
画面遷移の正当性チェックとあわせて、hiddenパラメータやラジオボタン等の値が改変されていないことをチェックする機能です。Webアプリケーションでは、これらの値は簡単に改変できるため、値が改変されても大丈夫なように設計すべきですが、そうなっていないアプリケーションが多いことが現状であり、攻撃に悪用される場合があります。また、hiddenパラメータ等に対してSQLインジェクション等の攻撃を仕掛ける場合も多くあります。
パラメータの改変防止機能により、これらの攻撃を防御することができます。 同様に、クッキー(Cookie)の改変機能や暗号化機能を有するWAFもあります。クッキーを暗号化することで、セッションハイジャックに対する防御が可能となります。
WAFの種類
WAFは設置形態により、以下の3種類に分類することができます。
- ネットワーク型WAF
- ホスト型WAF
- SaaS型WAF
ネットワーク型WAF
ネットワーク機器として配置するWAFです。アプライアンス製品とソフトウェアとして提供されている製品があります。リバースプロキシ、あるいはブリッジとして配置します。サーバー台数が多い場合に、コストパフォーマンスが高くなります。
ホスト型WAF
Webサーバーにソフトウェアとして導入するタイプのWAFです。Apacheモジュールとして提供されるWAFとして、オープンソースのModSecurityや、商用製品であるSiteGuardLiteがあります。ホスト型のWAFはネットワーク機器が増えないため、レイテンシ(遅延時間)がほとんどないことがメリットです。また、費用も低額なものが多いです。デメリットとして、Webサーバー毎に導入するため、サーバー台数が多い場合にコスト高になる場合があります。その場合は、ネットワーク型WAFの方が低コストになる場合があります。
SaaS型WAF
SaaS(Software as a Service)として提供されるWAFです。ネットワーク型WAF(リバースプロキシ)を共用サービスとして提供するものです。初期投資を抑えることができ、運用負荷も低いことが特徴です。