- WAFと従来のファイアウォールの違い
- WAFが入口で見分けようとする攻撃の種類
- WAFを入れても対象外になるもの
- WAFの導入前に決めておく4つのこと
結論
WAFは、Webサイトやアプリに届く要求の中身を見て、問題のあるものを通さない仕組みです。従来のファイアウォールが「どの入口を開けるか」を決めるのに対し、WAFは「開いている入口に、何が入ってこようとしているか」を見ます。層が違うので、どちらかがあれば足りるという関係ではありません。
ファイアウォールとの違い
会社の建物にたとえると分かりやすくなります。従来のファイアウォールは、建物の出入口を決める役です。正面玄関は開けるが、裏口と非常口は閉める。接続元や宛先、ポート番号といった「どこからどこへ」で通すかどうかを決め、荷物の中身までは見ません。
WAFは、開けている正面玄関に立っていて、持ち物を見る役です。荷物の中身を見て、明らかにおかしいものは通しません。玄関を閉めてしまえば業務が止まるので、閉めずに中身で判断する、という考え方です。
| 従来のファイアウォール | WAF | |
|---|---|---|
| 見るもの | 接続元・宛先・ポート番号 | HTTP/HTTPSの要求の中身 |
| 判断の例 | この番号の通信だけ通す | この入力の形は受け付けない |
| 守る相手 | ネットワーク全体 | Webアプリケーション |
| 苦手なこと | 開けた入口の先で何が起きるか | 正常な形をした不正ログインなど |
Webサイトを公開している以上、80番と443番の入口は開けたままです。そこを通る通信の中身は、従来のファイアウォールでは判断できません。この隙間を埋めるのがWAFの役割です。
どんな攻撃と関係するのか
Webアプリケーションへの代表的な攻撃として、入力欄に細工した文字を入れてデータベースの操作を狙うSQLインジェクション、閲覧者のブラウザで意図しない script を動かすクロスサイトスクリプティングなどが知られています。AWSは公式ドキュメントで、AWS WAFの判定条件として、悪意のあるSQLコードの存在や、悪意のある script の存在を条件にできると説明しています。
具体的な手口はここでは扱いません。防ぐ側にとって大事なのは、これらの多くが「入力された値の扱い」に起因すること、そして送られてくる形にある程度の共通点があることです。だからこそ、入口で形を見て落とす、という方法が成り立ちます。
根本の対処は、アプリケーション側の修正と、使っているソフトウェアの更新です。WAFは、直すまでの間や、自社で直せない部分を支える層だと考えてください。
何ができて、何ができないか
主要なサービスの公式ドキュメントを見ると、できることの輪郭がつかめます。Cloudflareは、WAFが受信するWebおよびAPIの要求をルールセットに基づいて選別する仕組みだとし、あらかじめ用意されたマネージドルール、自分で書くカスタムルール、レートリミットルールの3種類を挙げています。AWSは、AWS WAFがHTTPとHTTPSの要求を監視して、許可・ブロック・カウント・CAPTCHA等のチャレンジという動作を選べると説明しています。
一方で、次のようなものは対象外です。
- 正しいIDとパスワードによるログイン。本人の操作と区別がつきません。
- 権限設定の誤り。見えてはいけない画面が誰でも開ける状態になっていても、要求そのものは正常です。
- サーバーやクラウドの設定ミスによる情報の公開。
- WAFを通らない経路。管理用のポートや、別のドメインに置いた古いサイトなど。
「WAFを入れたから安全」とは言えません。WAFは通過する通信だけを見ます。更新されていないソフトウェアや、退職者のアカウントが残っている状態は、WAFでは変わりません。
導入前に決めること
- どこに置くか。CDNなどサーバーの手前で動く型と、サーバー上で動く型があります。前者は設定が比較的簡単で、後者は自社の環境に合わせやすい傾向があります。
- 誤検知が出たときに誰が直すか。問い合わせフォームの本文に記号が多いと落とされる、といったことは起こります。連絡を受ける窓口と、直す人を先に決めてください。
- 最初は遮断しない期間を置くか。多くのサービスには、遮断せずに記録だけ取る動作があります。何が引っかかるかを見てから切り替えられます。
- 費用と契約。プランによって使える機能が違います。必要な機能が含まれる範囲を、契約前に公式の説明で確認してください。
実務ではこうなる
問い合わせフォームと簡単な会員機能を持つ、社員15人の製造業のサイトを例にします(説明のための架空の例です)。サイトはレンタルサーバーで動かしていて、社内に専任の担当者はいません。
この規模なら、サーバーの手前で動くタイプを選び、まず記録だけ取る設定で2週間動かします。落ちている要求を見て、正規の問い合わせが含まれていないかを確認してから、遮断に切り替えます。あわせて、ログインに多要素認証を足しました。管理画面のURLも推測されにくいものに変えましたが、これは補助で、URLを知られていないことはアクセス制限の代わりになりません。WAFだけに寄せない形にしています。
まとめ
WAFは、開いている入口に来た通信の中身を見る仕組みです。ネットワーク層のファイアウォールとは役割が違い、置き換えるものではありません。できることは公式ドキュメントに書かれた範囲で判断し、誤検知の窓口を決め、記録だけ取る期間から始める。この進め方なら、専門の担当者がいなくても扱いやすくなります。