WAFとは?仕組み・ファイアウォールやIDS/IPSとの違い・設計ポイントを解説

当ページのリンクには広告が含まれています。
ネットワーク上級編 45/全70記事

この記事は、 「ネットワーク上級編|要件定義・設計・クラウド・自動化へ進む」 の第45回です。

第5章では、ネットワークセキュリティ設計、ファイアウォール、DMZ、 IDS・IPS、WAFなどを組み合わせ、 「どこで・何を・どのように守るのか」 を学びます。

NETWORK ADVANCED|CHAPTER 5 SECURITY

WAFとは?Webアプリケーションを守る仕組み・FW/IDS・IPSとの違いを解説

Webサイトを公開するとき、ファイアウォールでHTTPSを許可するだけでは、 Webアプリケーションを狙ったすべての攻撃を防げません。 この記事ではWAFの役割、配置、検知方法、誤検知対策、ログ設計まで、 ネットワーク設計の視点から解説します。

対象レベル Level 3〜4・上級
想定読了時間 約25分
身につく成果 WAFの役割と設計方針を説明できる
前提知識 FW・HTTP/HTTPS・DMZ
演習環境 ブラウザ・紙・Excel等

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の確認範囲

Firewall IPアドレス・プロトコル・ポート番号・セッションなどを確認
WAF URL・HTTPメソッド・ヘッダー・Cookie・クエリ・Bodyなどを確認

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リクエストが安全とは限りません。

役割の違い

Firewall TCP/443を許可してよいか
WAF HTTPリクエストの内容を許可してよいか

WAFは通信のどこを確認するのか

WAFでは、Webアプリケーションへ送られる HTTP/HTTPSリクエストのさまざまな情報を解析します。

1

URL・URI

どのWebページやAPIへアクセスしようとしているかを確認します。

2

HTTPメソッド

GET、POST、PUT、DELETEなど、使用されているメソッドを確認します。

3

Query String

URLに付与されたパラメータ内に不正な値がないか確認します。

4

HTTP Header

HostやUser-Agentなどのヘッダー情報を確認します。

5

Cookie

Cookieに不自然な値や攻撃パターンが含まれていないか確認します。

6

Request Body

POSTなどで送られる入力値やデータの内容を確認します。

WAFの特徴は、「Web通信を許可するか」だけではなく、 「Web通信の中身が正常か」まで確認することです。

WAFの基本的な配置

WAFは、Webアプリケーションへ到達する通信を事前に検査できる位置へ配置します。

WAFを利用した基本構成

Internet 利用者・攻撃者
Firewall ネットワーク制御
WAF HTTP/HTTPSを検査
Load Balancer 負荷分散
Web Server Webアプリケーション

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ルールによる判定

HTTP Request 利用者からの通信
WAF Rule 条件と照合
Allow / Block 許可または遮断

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終端を考える

Client HTTPS
WAF TLS終端・検査
Web Server HTTPまたはHTTPS

証明書の配置場所、更新方法、管理主体も設計項目です。

4.どのルールを使用するのか

  • ベンダー提供のマネージドルール
  • 独自ルール
  • IPアドレス制御
  • URL制御
  • レート制御
  • Bot対策
  • HTTPメソッド制御

5.検知だけにするか、遮断するか

導入直後からすべてを遮断すると、 正常な通信まで止めてしまう可能性があります。

  1. 検知モードで開始する 正常通信を止めずにログを収集します。
  2. ログを確認する どの通信がルールへ一致したのか確認します。
  3. 誤検知を確認する 正常利用が攻撃として判定されていないか調査します。
  4. ルールをチューニングする 必要な除外条件や例外設定を追加します。
  5. 遮断へ移行する 動作確認後、必要なルールをBlockへ変更します。

6.WAFを迂回できないか

オリジンサーバーへの直接接続を制限できているか確認します。

7.性能への影響

  • 平均リクエスト数
  • 最大リクエスト数
  • 同時接続数
  • リクエストサイズ
  • アップロードサイズ
  • TLS処理量
  • ピーク時間帯
  • 将来の増加率

8.冗長化

Webアクセスの経路上にWAFを配置する場合、 WAF自身が単一障害点にならないようにします。

  • WAFの冗長化
  • 障害時の切り替え
  • ヘルスチェック
  • サービス監視
  • 障害時の運用手順

誤検知とチューニング

WAF設計で特に重要なのが 誤検知(False Positive)です。

正常な利用者が検索フォームに特殊文字を入力しただけでも、 内容によってはWAFの攻撃ルールに一致する可能性があります。

正常利用者
   |
検索フォームへ入力
   |
特殊文字を含む
   |
  WAF
   |
攻撃ルールに一致
   |
 Block
   |
正常利用者がサービスを使えない

WAFで多くの通信を遮断できても、 正常利用者まで遮断してしまえばWebサービスの障害になります。

基本的なチューニング手順

  1. 検知モードで開始する まず正常通信への影響を確認します。
  2. ログを収集する 一致ルール、URL、入力値などを確認します。
  3. 正常通信か攻撃か判断する アプリケーション担当とも連携します。
  4. 除外条件・ルールを調整する 必要以上に広い除外は避けます。
  5. 再試験する 正常通信と攻撃通信の両方を確認します。
  6. 遮断モードへ移行する 影響を確認したうえでBlockへ変更します。

WAFログと監視設計

WAFは導入するだけでなく、 何が検知・遮断されたのか確認できる運用 が必要です。

主に確認したいログ項目

項目 確認する内容
発生日時 いつ通信が発生したか
送信元IP どこからアクセスされたか
Host / URL / URI どのWebサービスが狙われたか
HTTP Method GET、POSTなど何が使用されたか
Rule どのWAFルールに一致したか
Action Allow、Blockなどの処理結果
User-Agent どのクライアントから通信されたか

インシデント調査時のログ連携

WAF HTTP攻撃
+
Firewall 通信元・宛先
+
Load Balancer アクセス情報
+
Web / App 処理結果

複数ログを時刻で突き合わせるため、 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 FirewallWebアプリケーションファイアウォール
Web RequestWebリクエスト
Request Bodyリクエストボディ
HTTP HeaderHTTPヘッダー
Query Stringクエリ文字列
Managed Ruleマネージドルール
Block遮断
Allow許可
False Positive誤検知
False Negative見逃し
SQL InjectionSQLインジェクション
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の説明として最も適切なものはどれですか。

  1. IPアドレスを自動配布する仕組み
  2. HTTP/HTTPS通信を検査し、Webアプリケーションを保護する仕組み
  3. ルーティング情報を交換するプロトコル
  4. ネットワーク機器の時刻を同期する仕組み
解答を見る
正解:B

WAFはWebアプリケーションへのHTTP/HTTPS通信を検査し、 不正なリクエストを検知・遮断するために使用します。

問題2.一般的なファイアウォールとWAFの違いとして 最も適切なものはどれですか。

  1. ファイアウォールはHTTPを扱えない
  2. WAFはルーティングを行う
  3. FWはIP・ポート等を中心に制御し、WAFはHTTP通信の内容まで確認する
  4. WAFはDNSサーバーとして動作する
解答を見る
正解:C

WAFはWebアプリケーションへのHTTP/HTTPSリクエストを 詳細に検査する点が特徴です。

問題3.WAF導入直後の方法として、より慎重なものはどれですか。

  1. 最初から全ルールをBlockにする
  2. 検知とログ取得から開始し、誤検知を確認してからBlockへ移行する
  3. ログを無効にする
  4. Webサーバーをインターネットへ直接公開する
解答を見る
正解:B

正常通信の誤検知を確認しながら、 段階的に遮断へ移行することが重要です。

問題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個考えてください。

1.____________________
2.____________________
3.____________________
4.____________________
5.____________________
6.____________________
7.____________________
8.____________________
9.____________________
10.___________________
解答例を見る
  1. 保護対象のWebサイト・Webアプリケーションは何か
  2. 対象ドメインは何か
  3. APIも保護対象か
  4. ピーク時のリクエスト数はどの程度か
  5. HTTPSはどこで終端しているか
  6. 使用しているHTTPメソッドは何か
  7. アクセス元を限定できる管理画面等はあるか
  8. WAFログをどこへ保存するか
  9. 誤検知時の連絡先・変更手順はどうするか
  10. WAF障害時に許容できるサービス停止時間はどの程度か

課題3.導入手順を並べる

  • 遮断モードへ変更する
  • ログを確認する
  • WAFルールを設定する
  • 誤検知をチューニングする
  • 検知モードで動作させる
解答を見る
  1. WAFルールを設定する
  2. 検知モードで動作させる
  3. ログを確認する
  4. 誤検知をチューニングする
  5. 遮断モードへ変更する

課題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アプリケーションを、どの攻撃から、 どのルールで守り、正常通信への影響をどのように抑えるのか」 まで説明できることが、上級ネットワークエンジニアに求められる設計力です。

次の記事:46. リモートアクセスVPN設計

今回は、インターネットへ公開するWebアプリケーションを WAFで保護する考え方を学びました。

次の記事では、社外のPCなどから企業ネットワークへ安全に接続するための リモートアクセスVPN設計を扱います。

認証方式、VPN接続後の通信範囲、スプリットトンネル、 冗長化、ログ・監視など、 実務で設計するときに確認すべきポイントを整理します。

ネットワーク上級編 45/全70記事

上級編では、要件定義から基本設計、BGP、クラウド、 セキュリティ、自動化、設計レビュー・顧客提案までを順番に学びます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次