この記事は、 「ネットワーク上級編|要件定義・設計・クラウド・自動化へ進む」 の第45回です。
第5章では、ネットワークセキュリティ設計、ファイアウォール、DMZ、 IDS・IPS、WAFなどを組み合わせ、 「どこで・何を・どのように守るのか」 を学びます。
WAFとは?Webアプリケーションを守る仕組み・FW/IDS・IPSとの違いを解説
Webサイトを公開するとき、ファイアウォールでHTTPSを許可するだけでは、 Webアプリケーションを狙ったすべての攻撃を防げません。 この記事ではWAFの役割、配置、検知方法、誤検知対策、ログ設計まで、 ネットワーク設計の視点から解説します。
Webサーバーをインターネットへ公開する場合、 ファイアウォールでは通常TCP/443のHTTPS通信を許可します。
しかし、正常な利用者だけでなく攻撃者もHTTPSを利用できます。 つまり、「TCP/443だから正常な通信」とは判断できません。
そこでHTTP/HTTPS通信の内容を確認し、 Webアプリケーションへの不正なリクエストを検知・遮断するのが WAF(Web Application Firewall)です。
この記事を読み終えるとできること
- WAFの役割を説明できる
- ファイアウォールとの違いを説明できる
- IDS・IPSとの役割の違いを整理できる
- WAFの基本的な配置を考えられる
- WAFの代表的な検知対象を説明できる
- 誤検知を考慮した導入方法を説明できる
- WAFログで確認すべき内容を整理できる
- WAFの必要性を顧客へ説明できる
WAFとは何か
WAF(Web Application Firewall)とは、 Webアプリケーションへ送られるHTTP/HTTPSリクエストを検査し、 不正な通信を検知・遮断するためのセキュリティ機能です。
一般的なファイアウォールでは、 送信元IPアドレス、宛先IPアドレス、プロトコル、ポート番号などを基準として 通信を制御します。
一方WAFでは、Webアプリケーションへ送信される HTTPリクエストの内容まで確認します。
ファイアウォールとWAFの確認範囲
WAFはWebアプリケーション向けの防御です。
ネットワーク通信を広く制御するファイアウォールとは、 守る対象と確認する情報が異なります。
なぜファイアウォールだけでは不十分なのか
Webサーバーを公開する場合、ファイアウォールでは一般的に HTTPS通信を許可します。
送信元:Internet
宛先 :Web Server
Protocol:TCP
Destination Port:443
Action:Allow
このポリシー自体は問題ありません。 Webサービスを公開するためには、利用者からのHTTPSアクセスを Webサーバーへ到達させる必要があります。
しかし、問題は攻撃者も同じHTTPS通信を利用できることです。
正常通信と攻撃通信の違い
正常なアクセス
GET /products HTTP/1.1
Host: example.com
攻撃を目的としたアクセス
GET /search?id=...
Host: example.com
ネットワークの観点だけで見れば、どちらも 「WebサーバーへのTCP/443通信」です。
ファイアウォールでTCP/443を許可していても、 その中のHTTPリクエストが安全とは限りません。
役割の違い
WAFは通信のどこを確認するのか
WAFでは、Webアプリケーションへ送られる HTTP/HTTPSリクエストのさまざまな情報を解析します。
URL・URI
どのWebページやAPIへアクセスしようとしているかを確認します。
HTTPメソッド
GET、POST、PUT、DELETEなど、使用されているメソッドを確認します。
Query String
URLに付与されたパラメータ内に不正な値がないか確認します。
HTTP Header
HostやUser-Agentなどのヘッダー情報を確認します。
Cookie
Cookieに不自然な値や攻撃パターンが含まれていないか確認します。
Request Body
POSTなどで送られる入力値やデータの内容を確認します。
WAFの特徴は、「Web通信を許可するか」だけではなく、 「Web通信の中身が正常か」まで確認することです。
WAFの基本的な配置
WAFは、Webアプリケーションへ到達する通信を事前に検査できる位置へ配置します。
WAFを利用した基本構成
WAFを迂回できない構成にする
WAFを導入するときに重要なのが、 WebサーバーへWAFを経由せず直接アクセスできないようにする ことです。
正常
Internet
|
WAF
|
Web Server
問題のある構成
Internet
|
+------ WAF ------ Web Server
|
+----------------- Web Server
↑
WAFを迂回
WAFを設置していても、オリジンサーバーへインターネットから 直接アクセスできれば、攻撃者にWAFを迂回される可能性があります。
ファイアウォール・IDS・IPS・WAFの違い
セキュリティ機器は、それぞれ守る対象や役割が異なります。
| 機能 | 主な目的 | 主な確認対象 | 代表的な役割 |
|---|---|---|---|
| Firewall | 通信制御 | IP・ポート・プロトコル・セッション等 | 不要な通信を許可しない |
| IDS | 攻撃検知 | ネットワーク通信 | 不審な通信を検知・通知する |
| IPS | 攻撃防御 | ネットワーク通信 | 不審な通信を検知・遮断する |
| WAF | Webアプリ保護 | HTTP/HTTPS | Webアプリへの不正リクエストを検知・遮断する |
「WAFを入れたからファイアウォールは不要」 「IPSがあるからWAFは不要」 という考え方ではありません。
守る対象と攻撃経路を考えながら、 複数の対策を組み合わせる多層防御が基本です。
WAFが防御対象とする代表的な攻撃
SQLインジェクション
Webアプリケーションへ送信する入力値を悪用し、 データベースに意図しないSQLを実行させようとする攻撃です。
Cross-Site Scripting(XSS)
Webページへ悪意あるスクリプトを埋め込み、 利用者のブラウザ上で実行させようとする攻撃です。
不自然なURL・パスへのアクセス
公開する必要のない管理画面やファイル、 不自然なパスへのアクセスをルールで制御します。
大量リクエスト
一定時間内に同一送信元から大量のリクエストが発生した場合に、 レート制御を行えるWAFもあります。
WAFの目的は、単に「怪しいIPアドレスを止めること」ではありません。 Webアプリケーションへ送られる HTTPリクエストの内容や振る舞いを評価することです。
WAFの検知・制御方法
1.ルール・シグネチャによる検知
HTTPリクエストを既知の攻撃パターンや設定した条件と照合します。
WAFルールによる判定
2.HTTPメソッドを制限する
アプリケーションがGETとPOSTしか使用しないのであれば、 不要なHTTPメソッドを制限する方法も考えられます。
使用する
GET
POST
使用しない
PUT
DELETE
TRACE
アプリケーション仕様を確認せずHTTPメソッドを制限すると、 正常な機能を停止させる可能性があります。
3.IPアドレス制御
管理画面など、アクセス元を限定できるページについては、 特定のIPアドレスからのみ許可する設計を検討できます。
4.レート制御
同一送信元から短時間に大量のアクセスが発生した場合に、 制限または遮断する仕組みです。
WAFの導入方式
クラウド型・サービス型
インターネット上のサービスとしてWAF機能を利用します。
Internet
|
Cloud / Edge WAF
|
Web Application
クラウド上のWebサービスや、インターネット公開システムで 利用される代表的な方式です。
アプライアンス型・仮想アプライアンス型
Internet
|
Firewall
|
WAF Appliance
|
Load Balancer
|
Web Server
自社環境やクラウド環境にWAF製品を配置して利用します。 既存構成、運用主体、性能、冗長化要件などを考慮して方式を選択します。
WAF設計で確認するポイント
1.何を保護するのか
- コーポレートWebサイト
- 業務Webアプリケーション
- ECサイト
- 会員サイト
- API
- 管理画面
まず保護対象を明確にします。
2.対象ドメイン・URL
www.example.com
api.example.com
admin.example.com
同じ企業のWebサービスでも、 URLやアプリケーションによって必要なルールが異なる場合があります。
3.HTTPSをどこで復号するのか
HTTPS通信は暗号化されているため、 WAFがHTTPリクエストを検査するためには、 TLS終端位置を整理する必要があります。
TLS終端を考える
証明書の配置場所、更新方法、管理主体も設計項目です。
4.どのルールを使用するのか
- ベンダー提供のマネージドルール
- 独自ルール
- IPアドレス制御
- URL制御
- レート制御
- Bot対策
- HTTPメソッド制御
5.検知だけにするか、遮断するか
導入直後からすべてを遮断すると、 正常な通信まで止めてしまう可能性があります。
- 検知モードで開始する 正常通信を止めずにログを収集します。
- ログを確認する どの通信がルールへ一致したのか確認します。
- 誤検知を確認する 正常利用が攻撃として判定されていないか調査します。
- ルールをチューニングする 必要な除外条件や例外設定を追加します。
- 遮断へ移行する 動作確認後、必要なルールをBlockへ変更します。
6.WAFを迂回できないか
オリジンサーバーへの直接接続を制限できているか確認します。
7.性能への影響
- 平均リクエスト数
- 最大リクエスト数
- 同時接続数
- リクエストサイズ
- アップロードサイズ
- TLS処理量
- ピーク時間帯
- 将来の増加率
8.冗長化
Webアクセスの経路上にWAFを配置する場合、 WAF自身が単一障害点にならないようにします。
- WAFの冗長化
- 障害時の切り替え
- ヘルスチェック
- サービス監視
- 障害時の運用手順
誤検知とチューニング
WAF設計で特に重要なのが 誤検知(False Positive)です。
正常な利用者が検索フォームに特殊文字を入力しただけでも、 内容によってはWAFの攻撃ルールに一致する可能性があります。
正常利用者
|
検索フォームへ入力
|
特殊文字を含む
|
WAF
|
攻撃ルールに一致
|
Block
|
正常利用者がサービスを使えない
WAFで多くの通信を遮断できても、 正常利用者まで遮断してしまえばWebサービスの障害になります。
基本的なチューニング手順
- 検知モードで開始する まず正常通信への影響を確認します。
- ログを収集する 一致ルール、URL、入力値などを確認します。
- 正常通信か攻撃か判断する アプリケーション担当とも連携します。
- 除外条件・ルールを調整する 必要以上に広い除外は避けます。
- 再試験する 正常通信と攻撃通信の両方を確認します。
- 遮断モードへ移行する 影響を確認したうえでBlockへ変更します。
WAFログと監視設計
WAFは導入するだけでなく、 何が検知・遮断されたのか確認できる運用 が必要です。
主に確認したいログ項目
| 項目 | 確認する内容 |
|---|---|
| 発生日時 | いつ通信が発生したか |
| 送信元IP | どこからアクセスされたか |
| Host / URL / URI | どのWebサービスが狙われたか |
| HTTP Method | GET、POSTなど何が使用されたか |
| Rule | どのWAFルールに一致したか |
| Action | Allow、Blockなどの処理結果 |
| User-Agent | どのクライアントから通信されたか |
インシデント調査時のログ連携
複数ログを時刻で突き合わせるため、 WAFを含む関連システムのNTPによる時刻同期も重要です。
WAFで防げないもの
WAFを導入したからといって、 Webシステム全体のセキュリティ対策が完了するわけではありません。
- OSやミドルウェアの脆弱性対策
- Webアプリケーション自体の安全な実装
- パッチ適用
- アカウント・パスワード管理
- 多要素認証
- アクセス権限管理
- ネットワークアクセス制御
- データベースのアクセス制御
- マルウェア対策
- バックアップ
- セキュリティログ監視
「WAFを導入したから、Webアプリケーションの脆弱性を修正しなくてもよい」 という考え方は誤りです。
WAFはあくまで、 多層防御を構成する一つのセキュリティ対策 として設計します。
WAF設計でよくある失敗
1.WAFを入れれば安全だと考える
ファイアウォール、認証、アプリケーション対策、 ログ監視などとの組み合わせが必要です。
2.最初からすべてBlockにする
誤検知により正常利用者の通信を停止させる可能性があります。
3.ログを保存しない
なぜ遮断されたのか確認できず、 チューニングやインシデント調査ができません。
4.WAFの迂回経路を残す
Webサーバーへ直接アクセスできれば、 WAFによる防御を回避される可能性があります。
5.アプリ変更をWAF担当へ共有しない
URL、API、入力項目などが変わると、 WAFの判定結果にも影響する可能性があります。
6.ルール更新を無試験で実施する
ルール変更によって新しい誤検知が発生する可能性があるため、 変更管理と試験が必要です。
顧客・上司へWAFをどう説明するか
技術に詳しくない相手へ、 「レイヤ7のHTTPペイロードを検査します」 と説明するだけでは、WAFの必要性は伝わりにくいでしょう。
説明例
通常のファイアウォールは、Webサイトを見るために必要なHTTPS通信そのものを 許可します。
しかし、攻撃者も同じHTTPSを利用できます。 WAFは、そのHTTPS通信の中身を確認して、 Webアプリケーションへの攻撃と判断した通信を検知・遮断する仕組みです。
技術を業務リスクへ変換する
| 技術的な設計項目 | 業務上の意味 |
|---|---|
| WAFルール | Webサービスへの攻撃リスクを低減する |
| 誤検知対策 | 正常利用者がサービスを利用できなくなるリスクを抑える |
| WAF冗長化 | WAF障害によるWebサービス停止を防ぐ |
| ログ保存 | インシデント発生時に原因を調査できるようにする |
| 迂回経路の制限 | WAFを経由しない攻撃経路を防ぐ |
WAFで使われる英語表現
| 英語 | 意味 |
|---|---|
| Web Application Firewall | Webアプリケーションファイアウォール |
| Web Request | Webリクエスト |
| Request Body | リクエストボディ |
| HTTP Header | HTTPヘッダー |
| Query String | クエリ文字列 |
| Managed Rule | マネージドルール |
| Block | 遮断 |
| Allow | 許可 |
| False Positive | 誤検知 |
| False Negative | 見逃し |
| SQL Injection | SQLインジェクション |
| Cross-Site Scripting | クロスサイトスクリプティング |
| Rate Limiting | レート制限 |
実務で使える英文
The WAF inspects incoming HTTP requests.
WAFは受信するHTTPリクエストを検査します。
The request was blocked by the WAF rule.
そのリクエストはWAFルールによって遮断されました。
We need to check whether this is a false positive.
これが誤検知かどうか確認する必要があります。
Please confirm which rule matched the request.
どのルールにリクエストが一致したのか確認してください。
The origin server should not be directly accessible from the Internet.
オリジンサーバーはインターネットから直接アクセス可能にすべきではありません。
理解度チェック
問題1.WAFの説明として最も適切なものはどれですか。
- IPアドレスを自動配布する仕組み
- HTTP/HTTPS通信を検査し、Webアプリケーションを保護する仕組み
- ルーティング情報を交換するプロトコル
- ネットワーク機器の時刻を同期する仕組み
解答を見る
WAFはWebアプリケーションへのHTTP/HTTPS通信を検査し、 不正なリクエストを検知・遮断するために使用します。
問題2.一般的なファイアウォールとWAFの違いとして 最も適切なものはどれですか。
- ファイアウォールはHTTPを扱えない
- WAFはルーティングを行う
- FWはIP・ポート等を中心に制御し、WAFはHTTP通信の内容まで確認する
- WAFはDNSサーバーとして動作する
解答を見る
WAFはWebアプリケーションへのHTTP/HTTPSリクエストを 詳細に検査する点が特徴です。
問題3.WAF導入直後の方法として、より慎重なものはどれですか。
- 最初から全ルールをBlockにする
- 検知とログ取得から開始し、誤検知を確認してからBlockへ移行する
- ログを無効にする
- Webサーバーをインターネットへ直接公開する
解答を見る
正常通信の誤検知を確認しながら、 段階的に遮断へ移行することが重要です。
問題4.次の構成の問題点を説明してください。
Internet
|
+------ WAF ------ Web Server
|
+----------------- Web Server
解答を見る
インターネットからWebサーバーへ、 WAFを経由せず直接アクセスできる経路が存在します。
攻撃者が直接Webサーバーへアクセスできるため、 WAFを迂回される可能性があります。
問題5.WAFログで最低限確認したい情報を3つ以上挙げてください。
解答例を見る
- 発生日時
- 送信元IPアドレス
- URL・URI
- HTTPメソッド
- 一致したWAFルール
- Allow/Block結果
実践演習:WebシステムへWAFを導入する
あなたは、企業のWebシステム更改を担当しています。
現在の構成は次のとおりです。
Internet
|
Firewall
|
Load Balancer
|
+-------------+
| |
Web01 Web02
|
Database
顧客から次の要望がありました。
「最近Webサービスへの攻撃が増えているので、 Webアプリケーションへのセキュリティを強化したいです。 ただし、WAFを追加したことで正常な利用者がWebサービスを 使えなくなるのは困ります。」
課題1.WAFの配置場所を考える
Internet
|
__________
|
__________
|
Load Balancer
|
Web01 / Web02
解答例を見る
Internet
|
Firewall
|
WAF
|
Load Balancer
|
Web01 / Web02
実際の製品やクラウドサービスでは配置方法が異なりますが、 「Webアプリケーションへ到達する前に通信を検査する」 という考え方が重要です。
課題2.ヒアリング項目を考える
WAF設計を開始する前に、 顧客へ確認すべきことを10個考えてください。
2.____________________
3.____________________
4.____________________
5.____________________
6.____________________
7.____________________
8.____________________
9.____________________
10.___________________
解答例を見る
- 保護対象のWebサイト・Webアプリケーションは何か
- 対象ドメインは何か
- APIも保護対象か
- ピーク時のリクエスト数はどの程度か
- HTTPSはどこで終端しているか
- 使用しているHTTPメソッドは何か
- アクセス元を限定できる管理画面等はあるか
- WAFログをどこへ保存するか
- 誤検知時の連絡先・変更手順はどうするか
- WAF障害時に許容できるサービス停止時間はどの程度か
課題3.導入手順を並べる
- 遮断モードへ変更する
- ログを確認する
- WAFルールを設定する
- 誤検知をチューニングする
- 検知モードで動作させる
解答を見る
- WAFルールを設定する
- 検知モードで動作させる
- ログを確認する
- 誤検知をチューニングする
- 遮断モードへ変更する
課題4.簡易WAF設計表を作る
| 設計項目 | 設計内容 |
|---|---|
| 保護対象 | ____________ |
| 対象ドメイン | ____________ |
| WAF配置 | ____________ |
| HTTPS終端 | ____________ |
| 使用ルール | ____________ |
| 初期動作 | Detect/Block |
| ログ保存先 | ____________ |
| ログ保存期間 | ____________ |
| 誤検知時の対応 | ____________ |
| 障害時の対応 | ____________ |
自分の言葉で説明する課題
後輩エンジニアから 「ファイアウォールがあるのに、どうしてWAFも必要なんですか?」 と質問されました。
1分程度で説明してください。
一方WAFは、________________________。
そのため、________________________。
説明例を見る
一般的なファイアウォールは、送信元・宛先IPアドレスや ポート番号などを使って、ネットワーク通信を許可・拒否します。
Webサイトを公開するときにはHTTPSの443番ポートを許可する必要がありますが、 攻撃者も同じ443番ポートを利用できます。
WAFは、そのHTTP/HTTPS通信の中身まで確認し、 SQLインジェクションやXSSなど、 Webアプリケーションを狙った不正なリクエストを検知・遮断します。
そのため、ファイアウォールとWAFはどちらか一方ではなく、 守る範囲の異なるセキュリティ対策として組み合わせます。
まとめ
- WAFはWebアプリケーションへのHTTP/HTTPS通信を検査する セキュリティ機能
- ファイアウォールがIP・ポート等を中心に制御するのに対し、 WAFはHTTPリクエストの内容まで確認する
- SQLインジェクションやXSSなどの Webアプリケーション攻撃への対策として利用される
- Webアプリケーションへ到達する前に通信を検査できる位置へ配置する
- WAFを迂回してオリジンサーバーへ直接アクセスできない構成にする
- 導入直後は誤検知を考慮し、 検知・ログ確認・チューニングを行ってから遮断へ移行する
- WAFログには送信元、URL、HTTPメソッド、 一致ルール、Allow/Blockなどを記録する
- WAFだけでWebシステム全体を守れるわけではなく、 多層防御として設計する
- セキュリティだけではなく、 性能、冗長化、ログ、運用、変更管理まで考慮する
WAF設計で重要なのは、単に製品を導入することではありません。
「どのWebアプリケーションを、どの攻撃から、 どのルールで守り、正常通信への影響をどのように抑えるのか」 まで説明できることが、上級ネットワークエンジニアに求められる設計力です。
上級編では、要件定義から基本設計、BGP、クラウド、 セキュリティ、自動化、設計レビュー・顧客提案までを順番に学びます。

コメント