Azure Web アプリケーション ファイアウォール (WAF) による Web アプリケーションの保護
2025 年 1 月 14 日
この技術的および教育的な記事は、セキュリティ アナリスト、IT 管理者、およびシステム エンジニアが Azure Web アプリケーション ファイアウォール (WAF) を実装および構成して一般的な攻撃から Web アプリケーションを保護する方法をガイドすることを目的としています。 Web アプリケーションが多くのビジネスへのゲートウェイとなっているデジタル環境では、SQL インジェクション、クロスサイト スクリプティング (XSS)、その他の OWASP トップ 10 の脆弱性など、さまざまなサイバー攻撃の頻繁な標的となっています。 Azure WAF は、これらのリスクを軽減するための重要な保護層を提供し、データの可用性、整合性、機密性を確保します [1]。
はじめに
Web アプリケーションは、事実上すべての組織の IT インフラストラクチャの重要なコンポーネントです。ただし、インターネットにさらされると、データが侵害され、サービスが中断され、会社の評判が損なわれる可能性のある攻撃に対して脆弱になります。 Web アプリケーション ファイアウォール (WAF) はリバース プロキシとして機能し、Web アプリケーションに送受信される HTTP/HTTPS トラフィックを検査し、悪意のあるリクエストがアプリケーション サーバーに到達する前に識別してブロックします。 Azure WAF は、Azure Application Gateway または Azure Front Door の機能として利用可能で、Azure またはハイブリッド環境でホストされている Web アプリケーションに対して一元的かつスケーラブルな保護を提供します [2]。
この実践的なガイドでは、Azure WAF の基本概念、その動作モード (検出と防止)、管理されたルール セット (OWASP コア ルール セット - CRS) およびカスタム ルールを使用した WAF ポリシーの構成について説明します。 Azure Application Gateway を使用して WAF を展開し、一般的な攻撃に対する有効性をテストして結果を検証するための段階的な手順が提供され、ベスト プラクティスとトラブルシューティングのヒントについても説明します。目的は、読者が Azure WAF を自律的、専門的かつ確実に構成および管理できるようにし、最も蔓延している脅威から Web アプリケーションを保護できるようにすることです。
Azure WAF が Web アプリケーションの保護に重要なのはなぜですか?
- 包括的な保護: SQL インジェクション、クロスサイト スクリプティング (XSS)、ファイル インクルード、ボット攻撃、その他の OWASP トップ 10 脆弱性を含む一般的な Web 攻撃を防御します [3]。
- マネージド ルール: Microsoft によって自動的に更新されるマネージド ルール セット (OWASP CRS など) を使用し、手動介入なしで最新の脅威から確実に保護します。
- カスタム ルール: アプリケーション固有のセキュリティ要件を満たすカスタム ルールを作成し、特定のトラフィック パターンをブロックしたり、管理ルールでカバーされない脆弱性から保護したりできます。
- 柔軟な動作モード: 「検出」モード (攻撃の監視と記録のみ) または「予防」モード (攻撃を積極的にブロック) で動作し、実装を段階的に制御できます。
- Azure とのネイティブ統合: Azure Application Gateway (内部アプリケーション用) および Azure Front Door (グローバル アプリケーション用) とシームレスに統合し、セキュリティが組み込まれた完全なアプリケーション配信ソリューションを提供します。
- スケーラビリティと高可用性: Azure アプリケーション配信サービスのスケーラビリティと高可用性の恩恵を受け、保護が常にアクティブでパフォーマンスが高いことが保証されます。
- コンプライアンス: 組織が Web アプリケーションの保護を必要とする規制要件とセキュリティ標準を満たすのに役立ちます。
前提条件
Azure WAF を実装するには、次のものが必要です。
- アクティブな Azure サブスクリプション: リソースを作成および管理するための Azure サブスクリプション。
- 管理アクセス: アプリケーション ゲートウェイ、フロント ドア、WAF ポリシーなどのリソースを作成および管理するために必要なアクセス許可を持つアカウント (例: 「コラボレーター」または「ネットワーク管理者」)。
- 既存の Web アプリケーション: 保護する必要がある Web アプリケーション (Azure またはその他の場所でホストされている)。このガイドでは、Application Gateway 経由でアクセスされる単純な Web アプリケーションを想定します。
- 仮想ネットワーク (VNet) とサブネット: Application Gateway と Web アプリケーション用に構成された仮想ネットワークとサブネット。
ステップバイステップ: Application Gateway を使用した Azure WAF の実装
Azure WAF を構成して、Azure Application Gateway を使用した Web アプリケーション。
1. WAF を使用した Azure Application Gateway の作成
- ブラウザーを開き、Azure portal:
https://portal.azure.comに移動します。 - 必要な権限を持つアカウントでログインします。
- 上部の検索フィールドに「Application Gateway」と入力し、結果からそれを選択します。
-
「+ 作成」をクリックします。
-
基本:
- サブスクリプション: サブスクリプションを選択します。
- リソース グループ: 新しいリソース グループ (例:
rg-waf-appgw) を作成するか、既存のリソース グループを選択します。 - アプリケーション ゲートウェイ名: 名前を付けます (例:
appgw-waf-01)。 - 地域: 地域を選択します。
- 階層: 「標準 v2」を選択します (WAF は階層 v2 でのみ利用可能です)。
- WAF を有効にする: 「はい」を選択します。
- WAF ポリシー名: WAF ポリシーに名前を付けます (例: 「wafpolicy-appgw-01」)。
- WAF モード: 「予防」に進む前に、「検出」から始めてルールを監視および調整します。
-
「次へ: フロントエンド」をクリックします。
-
フロントエンド:
- フロントエンド IP アドレスの種類: 「パブリック」を選択します。
- パブリック IP アドレス: 「+新規追加」をクリックし、パブリック IP に名前を付けます (例: 「pip-appgw-waf」)。
-
「次へ: バックエンド」をクリックします。
-
バックエンド:
- 「+バックエンド プールの追加」をクリックします。
- バックエンド プール名: 名前を付けます (例:
app-backend-pool)。 - ターゲットなしでバックエンド プールを追加: 「いいえ」を選択します。
- 宛先タイプ: 「IP アドレスまたは FQDN」を選択します。
- IP アドレス/FQDN: Web アプリケーションの IP アドレスまたは FQDN (例: VNet 内の VM の場合は「10.0.0.4」、または App Service の FQDN) を入力します。 ※「追加」をクリックします。
-
「次へ: 構成」をクリックします。
-
セットアップ:
- ルーティング設定: 「+ルーティング ルールの追加」をクリックします。
- ルール名: 名前を付けます (例:
rule-http)。 - 優先度: デフォルトのままにします。
- リスナー:
- リスナー名: 名前を付けます (例:
listener-http)。 - フロントエンド IP アドレス: 作成したパブリック IP を選択します。
- プロトコル: 「HTTP」を選択します (最初に、後で HTTPS を追加できます)。
- ポート:
80。
- リスナー名: 名前を付けます (例:
- バックエンド ターゲット:
- ターゲット タイプ: 「バックエンド プール」を選択します。
- バックエンド プール: 「app-backend-pool」を選択します。
- バックエンド構成: 「+新規追加」をクリックします。
- バックエンド設定名: 名前を付けます (例:
http-setting)。 - バックエンド プロトコル:
HTTP。 - バックエンド ポート:
80(または Web アプリケーション ポート)。 - カスタム プローブを使用: 「いいえ」を選択します (この単純な例の場合)。 ※「追加」をクリックします。 ※ルーティングルールの「追加」をクリックします。
- バックエンド設定名: 名前を付けます (例:
-
「次へ: タグ」をクリックします。
- 「次へ: 確認と作成」をクリックします。
-
設定を確認し、「作成」をクリックします。
- 説明: このプロセスでは、WAF が関連付けられた Application Gateway を作成します。 WAF は「検出」モードでトラフィックの検査を開始します。
2. マネージド WAF ルールとカスタム WAF ルールの構成
導入後、WAF ポリシーを調整できます。
- Azure portal で、Application Gateway (
appgw-waf-01) に移動します。 - 左側のナビゲーション ペインの [設定] で、[Web アプリケーション ファイアウォール] を選択します。
-
WAF ポリシーの名前 (「wafpolicy-appgw-01」) をクリックします。
-
ポリシー モード: ルールが正当なトラフィックをブロックしていないと確信できる場合は、「概要」セクションで「モード」を「検出」から「防止」に変更できます。
-
管理ルール:
- WAF ポリシーの左側のナビゲーション ペインで、管理ルール を選択します。
- 「OWASP デフォルト ルール セット」 (例: 「OWASP_CRS/3.2」) が「有効」になっていることを確認します。
- 誤検知を引き起こす場合、管理セット内の特定のルールを無効にすることができますが、慎重に検討した後にのみ無効にしてください。
-
カスタム ルール:
- WAF ポリシーの左側のナビゲーション ペインで、カスタム ルール を選択します。
- 「+カスタム ルールの追加」をクリックします。
- ルール名: 名前を付けます (例:
BloquearIPMalicioso)。 - 優先度: 優先度を設定します (数値が小さいほど優先度が高くなります)。
- タイプルール:
一致。 - 状態:
- 変数タイプ:
RemoteAddress。 - オペレーター:
IPMatch。 - 値: ブロックする IP アドレスまたは CIDR 範囲を入力します (例:
192.168.1.10/32)。
- 変数タイプ:
-
アクション: 「ブロック」を選択します。
-
説明: カスタム ルールを使用すると、IP アドレス、HTTP ヘッダー、クエリ文字列などの特定の基準に基づいてブロック ロジックを定義できます。
-
[追加] をクリックし、WAF ポリシーに [保存] をクリックします。
3. WAF の監視とログの確認
WAF の有効性を理解し、ポリシーを調整するにはモニタリングが不可欠です。
- Azure portal で、Application Gateway (
appgw-waf-01) に移動します。 - 左側のナビゲーション ペインの [監視] で、[診断ログ] を選択します。
- 「+診断構成の追加」をクリックします。
- 診断構成名: 名前を付けます (例:
diag-waf)。 - ログ カテゴリ:
ApplicationGatewayAccessLogとApplicationGatewayFirewallLogを確認します。 - 宛先の詳細: [Log Analytics ワークスペースに送信] を選択し、ワークスペースを選択します。
-
[保存] をクリックします。
-
数分後、Log Analytics ワークスペースに移動します。
- 左側のナビゲーション ペインで、[ログ] を選択します。
- KQL (Kusto Query Language) クエリを使用して WAF ログを分析します。
- すべての WAF イベントを表示するには: 「くすと」 AzureDiagnostics |ここで、ResourceProvider == "MICROSOFT.NETWORK" |ここで、カテゴリ == "ApplicationGatewayFirewallLog" |プロジェクト TimeGenerated、hostname_s、requestUri_s、Message、action_s、policy_s |時間で注文 生成された説明 「」
- ブロックされた攻撃を表示するには (WAF が「防止」モードの場合): 「くすと」 AzureDiagnostics |ここで、ResourceProvider == "MICROSOFT.NETWORK" |ここで、カテゴリ == "ApplicationGatewayFirewallLog" |ここで、action_s == "ブロックされました" |プロジェクト TimeGenerated、hostname_s、requestUri_s、Message、ruleId_s |時間で注文 生成された説明 「」
検証とテスト
WAF をテストすることは、予想される攻撃をブロックし、正当なトラフィック (誤検知) をブロックしていないことを確認するために重要です。
1. 一般的な攻撃のテスト (SQL インジェクション、XSS)
-
シナリオ: (パブリック IP または FQDN を使用して) Application Gateway 経由で Web アプリケーションにアクセスし、URL またはフォーム パラメーターに対する SQL インジェクション攻撃をシミュレートします。
- SQL インジェクション試行を含む URL の例 (承認なしに運用環境で実行しないでください):
http://<seu_ip_publico_appgw>/index.php?id=1' OR '1'='1 - XSS 試行を含む URL の例:
http://<seu_ip_publico_appgw>/search?query=<script>alert('XSS')</script>
- SQL インジェクション試行を含む URL の例 (承認なしに運用環境で実行しないでください):
-
予期されるアクション (検出モード): WAF が「検出」モードの場合、要求は許可される必要がありますが、Log Analytics の WAF ログには攻撃とそれを検出したルールが記録される必要があります。
-
予想されるアクション (防止モード): WAF が「防止」モードの場合、リクエストはブロックされ、ブラウザーに WAF エラー ページ (通常は HTTP 403 Forbidden エラー) が表示されます。
-
検証: Log Analytics の WAF ログをチェックして、攻撃が検出された (検出モード) かブロックされた (防御モード) ことを確認します。
2. カスタム ルールのテスト (IP ブロック)
- シナリオ: IP ブロック カスタム ルールで構成した IP アドレスから Web アプリケーションにアクセスしてみます。
- 予想されるアクション: アクセスはブロックされ、ブラウザーに WAF エラー ページが表示されます。
- 検証: Log Analytics の WAF ログをチェックして、IP がカスタム ルールによってブロックされていることを確認します。
セキュリティのヒントとベスト プラクティス
- 検出モードで開始: 最初は常に WAF を「検出」モードで展開します。ログを注意深く監視して誤検知を特定し、「防止」モードに切り替える前にルールを調整します。
- WAF チューニング: 微調整は非常に重要です。誤検知を生成する特定のルール (正当なトラフィックをブロックする) を無効にするか、特定のパラメーターの除外ルールを追加します。ルールセット全体を無効にすることは避けてください。
- カスタム ルール: カスタム ルールを使用して、アプリケーションの特定のセキュリティ要件を処理します。o または、管理ルールが更新される前に、新たに発見された脆弱性を軽減します。
- CRS アップデート: 最新の脅威から確実に保護するために、管理対象ルールセット (OWASP CRS) を最新の状態に保ちます。通常、Azure WAF は自動的に更新されますが、バージョンを確認してください。
- Azure Front Door との統合: グローバル Web アプリケーション、またはパフォーマンスの最適化と高度なルーティングが必要なアプリケーションの場合は、Azure Front Door への WAF のデプロイを検討してください。これにより、Microsoft のグローバル ネットワークのエッジで保護が提供されます。
- 監視とアラート: ブロックされた攻撃や異常などの WAF セキュリティ イベントについて Azure Monitor でアラートを構成します。 WAF ログを SIEM (Microsoft Sentinel など) と統合して一元的に表示します。
- 定期的なセキュリティ テスト: Web アプリケーションに対して侵入テストと脆弱性スキャンを定期的に実行して、新しい脆弱性を特定し、WAF の有効性を検証します。
- 最小特権の原則: 承認されたユーザーのみが WAF ポリシーを構成および管理する権限を持っていることを確認します。
一般的なトラブルシューティング
- WAF は予想される攻撃をブロックしていません:
- WAF が「検出」モードではなく「予防」モードになっていることを確認します。
- 管理対象ルール セット (OWASP CRS) が有効になっていることを確認してください。
- Log Analytics で WAF ログを確認し、攻撃が検出されたかどうか、およびどのルールがトリガーされたかを確認します。 CRS 感度を調整するか、カスタム ルールを追加する必要がある場合があります。
- 悪意のあるトラフィックを許可する除外ルールやホワイトリストがないことを確認してください。
- WAF が正規のトラフィックをブロックしています (誤検知):
- まず、Log Analytics で WAF ログを分析し、正規のトラフィックをブロックしているルールを特定します。
- 識別されたルールについては、次のことができます。
- 特定のルールを無効にします (最後の手段)。
- 誤検知の原因となっている特定のパラメーターまたはヘッダーの除外ルールを追加します。
- 異常スコアリングしきい値を調整します (異常スコアリング モードで CRS を使用している場合)。
- ルールを調整するために一時的に「検出」モードに戻ることを検討してください。
- WAF を有効にした後、アプリケーションのパフォーマンスが低下しました:
- WAF では、トラフィック検査により少量の遅延が追加されます。アプリケーション ゲートウェイまたはフロント ドアのサイズが適切であることを確認してください。
- Azure Monitor で Application Gateway のパフォーマンス ログを確認します。
- WAF が正しいアプリケーションに関連付けられていません:
- WAF ポリシーが正しい Application Gateway または Front Door に関連付けられていることを確認します。
- Web アプリケーションへのトラフィックが、WAF が有効になっているアプリケーション ゲートウェイ/フロント ドアを実際に通過していることを確認してください。
結論
Azure Web アプリケーション ファイアウォール (WAF) は、Web アプリケーションを無数のサイバー攻撃から保護するために不可欠な防御手段です。ネットワーク エッジでトラフィック検査とフィルタリングの層を提供することにより、WAF はシールドとして機能し、既知の脆弱性やゼロデイ脅威から保護します。マネージド ルール セットとカスタム ルール セットを使用する柔軟性と、Azure アプリケーション配信サービスとのネイティブ統合により、Azure WAF はあらゆる組織にとって堅牢でスケーラブルなソリューションになります。セキュリティ専門家は、注意深く実装し、ポリシーを微調整し、継続的に監視することで、Web アプリケーションの安全性、可用性、準拠性を確保し、絶えず進化する脅威の状況に対する組織全体のセキュリティ体制を強化できます。
参考文献:
[1] Microsoft Learn。 Azure Web アプリケーション ファイアウォールとは何ですか?。入手可能場所: https://learn.microsoft.com/pt-br/azure/web-application-firewall/overview [2] Microsoft Learn。 Azure Application Gateway 上の Web アプリケーション ファイアウォール (WAF)。入手可能場所: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/ag-overview [3] OWASP財団。 OWASP トップ 10。入手可能場所: https://owasp.org/www-project-top-ten/ [4] Microsoft Learn。 ファイアウォールポリシーの作成l Azure Application Gateway の Web Application Gateway (WAF)。入手可能場所: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/create-waf-policy-ag [5] Microsoft Learn。 WAF CRS ルールとルール グループ。入手可能場所: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/application-gateway-waf-collection-rules [6] Microsoft Learn。 WAF の監視とロギング。入手可能場所: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/waf-diagnostics