WAF
WAFとは
WAF(Web Application Firewall)は、Web アプリへの HTTP/HTTPS 通信の中身を検査し、攻撃パターンを検知・遮断する防御の仕組みです。[[XSS(クロスサイトスクリプティング)]] や [[SQLインジェクション]] のような、[[Webセキュリティ]] で扱うアプリケーション層の攻撃から Web サイトを守ります。
利用者と Web サーバーの間に置かれ、リクエストの URL・パラメータ・ヘッダーなどを見て「攻撃らしさ」を判定します。
ファイアウォール・IDS/IPSとの違い
「壁」系の防御は守備範囲が異なります。
| [[ファイアウォール]] | [[IDSとIPS]] | WAF | |
|---|---|---|---|
| 見るもの | IPアドレス・ポート番号 | ネットワーク通信のパターン | HTTPリクエストの中身 |
| 防げる例 | 不要ポートへのアクセス | 不正侵入の兆候 | XSS・SQLインジェクション |
| 層 | ネットワーク層中心 | ネットワーク〜OS | アプリケーション層(Web特化) |
ファイアウォールは「80番ポートへの通信」を通すか遮るかしか判断できません。その通信の中身が攻撃かどうかを見るのが WAF の役割で、互いに代替ではなく補完関係にあります。
検知の方式
- シグネチャ型(ブラックリスト): 既知の攻撃パターンに一致する通信を遮断する。主流の方式
- ホワイトリスト型: 正常なリクエストの形を定義し、それ以外を遮断する。強力だが定義の維持が大変
- 誤検知(正常な通信の遮断)と検知漏れのバランス調整(チューニング)が運用の肝になります
提供形態は、クラウド型(CDN 事業者などが提供、導入が容易)・アプライアンス型・ソフトウェア型があります。まずはクラウド型が定番です。
WAFの限界: 根本対策ではない
WAF はアプリの脆弱性そのものを直すわけではありません。パターンをすり抜ける攻撃は通してしまいます。
- 根本対策 = アプリ側の修正(エスケープ処理、プレースホルダなど)
- WAF = 修正が終わるまでの時間稼ぎ+多層防御の一層
「WAF を入れたから脆弱性を放置してよい」にはならない、と覚えておきましょう。
関連技術とのつながり
- [[ファイアウォール]] — ネットワーク層の壁。WAF とは見る場所が違う
- [[IDSとIPS]] — 侵入の検知・防御。WAF と並ぶ多層防御の一員
- [[XSS(クロスサイトスクリプティング)]] / [[SQLインジェクション]] — WAF が守る代表的な攻撃
- [[Webセキュリティ]] — WAF の位置づけを理解する全体像
Q: WAFが検査するものはどれ?
- [ ] IPアドレスとポート番号だけ
- [x] HTTPリクエストの中身(URL・パラメータなど)
- [ ] サーバーのCPU使用率
解説: WAF はアプリケーション層に特化し、HTTP 通信の中身を見て攻撃パターンを判定します。
Q: ファイアウォールとWAFの関係として正しいのはどれ?
- [ ] WAFがあればファイアウォールは不要になる
- [ ] 両者は同じものの別名である
- [x] 見る層が異なり、互いに補完し合う関係にある
解説: ファイアウォールはIP・ポートの制御、WAF は HTTP の中身の検査と守備範囲が異なり、併用が基本です。
Q: WAFの限界として正しいのはどれ?
- [x] アプリの脆弱性そのものを修正するわけではない
- [ ] HTTPS通信にはいっさい対応できない
- [ ] 導入すると通信が二度と遮断できなくなる
解説: WAF は攻撃パターンの遮断による時間稼ぎ・多層防御であり、根本対策はアプリ側の修正です。