Front Door の Web Application Firewall
Front Door プロファイルに WAF ポリシーを関連付け、OWASP Top 10 保護用のマネージド ルール セットを有効にして、既知の悪意ある IP をブロックするカスタム ルールを作成します。
「Front Door の Web Application Firewall」はCoddyKit上の無料Azure Fundamentalsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAzure Fundamentals学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Azure Fundamentalsコースには全4レッスンが含まれています。
Web Application Firewall とは
Web Application Firewall (WAF)は、レイヤー 7 で HTTP/HTTPS リクエストを検査し、既知の攻撃パターンをアプリケーションに到達する前にブロックします。防止できる一般的な攻撃には、SQL インジェクション、クロスサイトスクリプティング (XSS)、リモートファイルインクルージョン、プロトコル異常などがあります。WAF がない場合、ネットワークを適切に制限していても、攻撃者はアプリケーションコードの脆弱性を悪用できます。Azure WAF は Azure Front Door と Azure Application Gateway の両方に統合できます。
WAF ポリシーリソース
Azure のWAF ポリシーは、マネージドルールセットとカスタムルールを含む独立したリソースです。ポリシーを作成してルールを構成した後、1 つ以上の Front Door エンドポイントまたは Application Gateway インスタンスに関連付けます。この分離された設計により、1 つの WAF ポリシーで複数の Front Door エンドポイントを保護できます。ポリシーを 1 回変更するだけで、関連付けられたすべてのエンドポイントに自動的に反映されます。WAF ポリシーは特定の Azure リージョンに存在しますが、Front Door に関連付けると、すべての PoP でグローバルに保護が適用されます。
# Create a WAF policy for Front Door
az network front-door waf-policy create \
--name myWAFPolicy \
--resource-group myRG \
--sku Premium_AzureFrontDoor \
--mode Prevention検出モードと防止モード
WAF ポリシーには 2 つのモードがあります。検出モードでは、すべてのリクエストを検査してルールとの一致をログに記録しますが、トラフィックはブロックしません。ポリシーの適用前に、どのトラフィックがブロック対象になるかを把握する初期導入に役立ちます。防止モードでは、ログを記録するとともに、ルールの条件に一致するリクエストを実際にブロックします。ベストプラクティスは、まず検出モードで開始し、WAF ログを確認して誤検知を調整し、ポリシーが正しいと確信できた段階で防止モードに切り替えることです。
# Switch WAF policy to Prevention mode
az network front-door waf-policy update \
--name myWAFPolicy \
--resource-group myRG \
--mode PreventionMicrosoft Default Rule Set
Microsoft Default Rule Set(DRS) は、Microsoft のセキュリティチームが管理するマネージド ルール グループです。OWASP Top 10 の脆弱性に加え、ボットのシグネチャやクレデンシャルスタッフィングのパターンを検出するルールが含まれています。Microsoft は新たな脅威に対応して DRS を継続的に更新しているため、自分でルールを作成する必要はありません。DRS のバージョンは定期的にリリースされ(例: DRS 2.1)、メンテナンス期間中に WAF ポリシーを新しいバージョンへアップグレードできます。
# Add the Microsoft Default Rule Set to your WAF policy
az network front-door waf-policy managed-rules add \
--policy-name myWAFPolicy \
--resource-group myRG \
--type Microsoft_DefaultRuleSet \
--version '2.1'OWASP Rule Set
OWASP Core Rule Set(CRS) は、Application Gateway WAF および Verizon レベルの CDN WAF の一部として利用できます。OWASP Top 10 に含まれるインジェクション攻撃、認証の不備、機密データの露出、XML 外部エンティティ攻撃などを対象とする 200 を超えるルールが含まれています。各ルールには ID とグループがあります(例: REQUEST-942-APPLICATION-ATTACK-SQLI)。ルール グループ全体を無効にすることなく、ID を指定して個々のルールを無効化し、誤検知を抑制できます。
カスタム WAF ルール
カスタム ルールを使用すると、マネージド ルール セットでは対応できない、具体的な許可またはブロックの条件を記述できます。カスタム ルールは、1 つ以上の一致条件(送信元 IP、要求 URI、ヘッダー値、クエリ文字列など)と、アクション(Allow、Block、Log、Redirect)で構成されます。カスタム ルールはマネージド ルール セットより先に評価され、優先順位を設定できます。一般的な用途には、特定の国からのアクセスのブロック、過度にアクセスするクローラーのレート制限、信頼できる監視用 IP に対する WAF ルールのバイパス許可などがあります。
# Create a custom rule to block requests from a specific IP
az network front-door waf-policy rule create \
--name BlockMaliciousIP \
--policy-name myWAFPolicy \
--resource-group myRG \
--priority 100 \
--action Block \
--rule-type MatchRule \
--match-condition remoteAddr IPMatch '1.2.3.4/32'レート制限
レート制限ルールは、一定の時間枠(1 分または 5 分)内に単一のクライアント IP アドレスから送信できる HTTP リクエスト数を制限します。リクエスト数がしきい値を超えると、WAF はそのクライアントに HTTP 429(Too Many Requests)を返します。レート制限は、ブルートフォース ログイン攻撃、クレデンシャルスタッフィング、API の悪用への対策として効果的です。リクエストのしきい値と時間枠は、WAF ポリシーのカスタム ルール定義の一部として設定します。
# Create a rate limit rule — max 100 requests per minute per IP
az network front-door waf-policy rule create \
--name RateLimitLogin \
--policy-name myWAFPolicy \
--resource-group myRG \
--priority 200 \
--action Block \
--rule-type RateLimitRule \
--rate-limit-threshold 100 \
--rate-limit-duration-in-minutes 1 \
--match-condition requestUri Contains '/login'ボット保護ルール セット
Bot Manager ルール セット(Front Door Premium で利用可能)は、受信トラフィックを、正常なボット(検証済みの検索エンジン クローラー)、悪意のあるボット(既知のスキャナーや脆弱性プローブ)、未知のボット(分類されていない自動化トラフィック)に分類します。カテゴリごとにアクションを設定できます。正常なボットは許可し、悪意のあるボットはブロックし、未知のボットはログに記録できます。ボット保護がないと、自動化されたスキャナーによって膨大なトラフィックが発生し、コストが増加するとともに、分析で実際のユーザー トラフィックが見えにくくなります。
WAF の除外
マネージド ルール セットでは、正当なリクエストがセキュリティ ルールのパターンに偶然一致したためにブロックされる、誤検知が発生することがあります。たとえば、リッチ テキスト編集機能を備えた CMS では、POST ボディに含まれる HTML が XSS ルールに一致することがあります。WAF の除外を使用すると、ルール自体を無効にすることなく、特定のリクエスト属性(リクエスト ヘッダー、Cookie、クエリ文字列パラメーター、リクエスト ボディ フィールドなど)をルール評価の対象外にできます。除外範囲はグローバル、特定のルール グループ、または特定のルール ID のいずれかに設定できます。
ログによる WAF の監視
WAF は Azure Monitor に 2 種類のログ エントリを生成します。WAF ログは、ブロックされたかログに記録されたかにかかわらず、ルールに一致したすべてのリクエストを記録します。アクセス ログは、どのルールにも一致せず通過したリクエストを含む、すべてのリクエストを記録します。これらのログを Log Analytics ワークスペースに送信し、KQL を使ってブロックされたリクエストの傾向を調べたり、攻撃を受けたエンドポイントを特定したり、特定のクライアント IP を調査したりできます。ポータルの WAF Insights ブックでは、これらのログを可視化するダッシュボードがあらかじめ用意されています。
// KQL — top 10 WAF rule hits in the last 24h
AzureDiagnostics
| where Category == 'FrontDoorWebApplicationFirewallLog'
| where TimeGenerated > ago(24h)
| where action_s == 'Block'
| summarize HitCount = count() by ruleName_s
| top 10 by HitCount descWAF ポリシーと Front Door の関連付け
WAF 保護を有効にするには、WAF ポリシーを Front Door のセキュリティ プロファイルに関連付ける必要があります。ポータルで Front Door プロファイルに移動し、Security policies を選択して WAF ポリシーを追加し、適用するドメインを指定します。CLI を使用してポリシーをリンクすることもできます。関連付けると、WAF は対象の Front Door ドメインに到着したすべての HTTP/HTTPS リクエストを、オリジンへルーティングする前に検査します。1 つのドメインにつき、関連付けられる WAF ポリシーは 1 つです。
# Associate WAF policy with a Front Door security policy
az afd security-policy create \
--profile-name myFrontDoor \
--resource-group myRG \
--security-policy-name mySecurityPolicy \
--domains /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.Cdn/profiles/myFrontDoor/customDomains/myDomain \
--waf-policy /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/myWAFPolicyクイックチェック
このレッスンで学んだ Microsoft Azure Fundamentals(AZ-900)の概念について理解度を確認しましょう。
レッスンのまとめ
このレッスンでは、WAF ポリシーにマネージド ルール セット(Microsoft DRS、OWASP)とカスタム ルールが含まれ、オリジンに到達する前の HTTP トラフィックを検査すること、検出モードでルールを調整してから防止モードに切り替えられること、そしてレート制限ルールによってブルートフォース攻撃や悪用から保護できることを学びました。次は、Front Door のルール エンジンを使ってリダイレクトやセキュリティ ヘッダーによりパフォーマンスを最適化する方法を学びます。
よくある質問
「Front Door の Web Application Firewall」レッスンは無料ですか?
はい。「Front Door の Web Application Firewall」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Azure Fundamentalsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Azure Fundamentalsコースには全4レッスンが含まれています。
「Front Door の Web Application Firewall」で何を学びますか?
Front Door プロファイルに WAF ポリシーを関連付け、OWASP Top 10 保護用のマネージド ルール セットを有効にして、既知の悪意ある IP をブロックするカスタム ルールを作成します。 ブラウザで直接実行するハンズオンコードでAzure Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Azure Fundamentalsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAzure Fundamentalsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「Front Door の Web Application Firewall」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAzure Fundamentalsレッスンでコードを書いて実行できますか?
はい。すべてのAzure Fundamentalsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Azure CDN のプロファイルとエンドポイント
- Azure Front Door:グローバル ロード バランシング
- Front Door の Web Application Firewall
- CDN ルールによるパフォーマンスの最適化