ファイアウォールは通信を許可・拒否する仕組み、WAFはHTTPの内容を検査してWebアプリケーションへの攻撃を検知・遮断する仕組みです。ここではIP・ポート番号などを使う一般的なパケットフィルタ型ファイアウォールとWAFを比較します。
判断材料と役割の違い
| 比較点 | ファイアウォール(パケットフィルタ型) | WAF |
|---|---|---|
| 主な判断材料 | 送信元・宛先IP、プロトコル、ポート。方式によって接続状態も確認 | HTTPのURL、ヘッダ、Cookie、パラメータ、本文など |
| 主な用途 | 必要な通信経路だけを許可 | Webアプリに対する不審なリクエストを検査 |
| 例 | 管理用SSHを指定した管理端末からだけ許可 | SQLインジェクションやXSSの特徴を持つリクエストを検知 |
| 限界 | IPやポートだけではWeb入力の攻撃性を判断できない | 検査対象外の通信や検知できない攻撃があり、誤検知も起こる |
WAFも広い意味ではアプリケーション用ファイアウォールです。また、次世代ファイアウォールなどにはアプリケーションを識別する機能もあります。「ファイアウォールは必ずIPとポートだけを見る」という断定は避け、設問で指定された方式を確認します。
443番を許可しても入力の安全は保証されない
HTTPSを提供するWebサーバへTCPの宛先443番を許可したとします。その通信には正当な検索リクエストも、不正な入力を含む攻撃リクエストも通り得ます。ポートが正しいことと、通信内容が安全であることは別です。
WAFは検査できるHTTPの内容にルールを適用します。HTTPSの内容を検査するには、WAFでTLSを終端するなど、復号後のHTTPを参照できる構成が必要です。暗号化した通信をどこに置いても自動的に読めるわけではありません。
SQLインジェクション対策:WAFと安全な実装を組み合わせる
WAFはSQLインジェクション、XSS、OSコマンドインジェクション、パストラバーサルなどの攻撃を検知・遮断する補助になります。ただし、検知ルールや設定、攻撃方法によって結果が変わるため、すべて防げるとは限りません。
- SQLインジェクション:プレースホルダを使うパラメータ化クエリなどで、SQLの構造と入力値を分離する。
- XSS:出力する文脈に応じてエスケープなどを行う。
- 共通:脆弱性の修正、適切な権限設定、ログ確認を続ける。
WAFを入れたからアプリの脆弱性を直さなくてよい、という意味ではありません。
組み合わせる構成例
外部利用者 → 通信制御のファイアウォール → WAF → Webアプリ、という構成が一例です。クラウド型やサーバ組込み型もあり、設置形態は一通りではありません。ネットワーク層の通信制御とWeb入力の検査を重ねて、目的に応じて守ります。
確認問題
TCP 443番を許可するパケットフィルタだけでは、SQLインジェクションを含む入力を十分に判断できない理由として適切なのはどれでしょうか。
- 443番には通信が流れないから
- 宛先ポートの許可だけでは、HTTP入力の攻撃性まで判断しないから
- WAFは必ずすべての攻撃を防ぐから
- HTTPSはSQLインジェクションを自動的に無効化するから
解答・解説を見る
正解:2。通信経路の許可とアプリケーション入力の安全性は別です。WAFの検査と、安全なアプリの実装を組み合わせます。
noteで攻撃と対策をつなげて復習する
違いを理解したら、何を狙う攻撃なのか、どんな対策が対応するのかも整理しましょう。リンク先ではSQLインジェクション、XSSなどの頻出用語と対策を学べます。


コメント