Web Application Firewall (WAF) を計画して実装する

完了

Web アプリケーション ファイアウォール (WAF) では、一般的な悪用や脆弱性から Web アプリケーションを一元的に保護します。 Web アプリケーションが、一般的な既知の脆弱性を悪用した悪意のある攻撃の標的になるケースが増えています。 よくある攻撃の例として、SQL インジェクションやクロスサイト スクリプティングが挙げられます。

Web アプリケーション ファイアウォール (WAF) が一般的な悪用や脆弱性から Web アプリケーションを一元的に保護する方法を示す図。

アプリケーション コードでのこのような攻撃の阻止は困難です。 アプリケーション トポロジの複数の層で厳格な保守、パッチ適用、監視が必要になる場合があります。 Web アプリケーション ファイアウォールを一元化することで、セキュリティの管理がはるかに簡単になります。 また、WAF を使用すると、アプリケーション管理者にとっては脅威や侵入に対する保護がより確実になります。

WAF のソリューションでは、個々の Web アプリケーションをセキュリティで保護するのではなく、一元的に既知の脆弱性の修正プログラムを適用することで、さらに迅速にセキュリティの脅威に対応できます。

サポートされるサービス

WAF は Microsoft の Azure Application Gateway、Azure Front Door、Azure Content Delivery Network (CDN) サービスでデプロイすることができます。 Azure CDN の WAF は現在、パブリック プレビューの段階にあります。 WAF には、特定のサービスごとにカスタマイズされた機能があります。 各サービスの WAF 機能の詳細については、各サービスの概要に関するトピックを参照してください。

Azure Application Gateway 上の Azure Web Application Firewall (WAF) は、一般的な悪用や脆弱性から Web アプリケーションを積極的に保護します。 Web アプリケーションが悪意のある攻撃の対象となる頻度が高くなるにつれて、これらの攻撃は、SQL インジェクションやクロスサイト スクリプティングなどの既知の脆弱性を悪用することが多くなっています。

Application Gateway 上の WAF は、Open Web Application Security Project (OWASP) のコア ルール セット (CRS) に基づいています。

以下に示す WAF 機能はすべて WAF ポリシー内に存在します。 複数のポリシーを作成して、Application Gateway、個々のリスナー、または Application Gateway のパスベースのルーティング規則に関連付けることができます。 これにより、必要に応じて、Application Gateway の後ろにあるサイトごとに個別のポリシーを設定できます。

Web アプリケーション ファイアウォールと Web アプリケーション ゲートウェイ機能の例を示す図。

Application Gateway は、アプリケーション配信コントローラー (ADC) として機能します。 これにより、トランスポート層セキュリティ (TLS) (以前は Secure Sockets Layer (SSL) と呼ばれていました) 終端、Cookie ベースのセッション アフィニティ、ラウンドロビンの負荷分散、コンテンツベースのルーティング、複数の Web サイトをホストする機能、セキュリティ強化機能が提供されます。

Application Gateway は、TLS ポリシー管理とエンド ツー エンド TLS サポートを通してセキュリティを強化します。 WAF を Application Gateway に統合することで、アプリケーション セキュリティが強化されます。 この組み合わせは、Web アプリケーションを一般的な脆弱性から積極的に保護し、一元的に管理可能で構成が容易な場所を提供します。

保護

  • バックエンド コードを変更しなくても、Web アプリケーションを Web の脆弱性および攻撃から保護できます。
  • 同時に複数の Web アプリケーションを保護できます。 Application Gateway のインスタンスは、Web アプリケーション ファイアウォールによって保護されている最大 40 個の Web サイトをホストできます。
  • 同じ WAF の内側にある各種サイト用にカスタム WAF ポリシーを作成できます。
  • IP 評判のルールセットを使用して、悪意のあるボットから Web アプリケーションを保護します。
  • DDoS 攻撃からアプリケーションを保護します。

監視

リアルタイムの WAF ログを使用して、Web アプリケーションに対する攻撃を監視できます。 このログは Azure Monitor と統合されているため、WAF のアラートを追跡し、傾向を簡単に監視できます。

Application Gateway の WAF は Microsoft Defender for Cloud と統合されています。 Defender for Cloud を使用すると、Azure、ハイブリッド、マルチクラウドのすべてのリソースのセキュリティ状態を一元的に把握できます。

カスタマイズ

  • ご使用のアプリケーションの要件に合わせて WAF の規則と規則グループをカスタマイズし、誤検出を排除できます。
  • WAF の内側にある各サイトに WAF ポリシーを関連付けて、サイト固有の構成を許可することができます。
  • アプリケーションのニーズに合わせてカスタム ルールを作成することができます。

特徴

  • SQL インジェクションからの保護。
  • クロスサイト スクリプティングからの保護。
  • その他の一般的な Web 攻撃からの保護 (コマンド インジェクション、HTTP 要求スマグリング、HTTP レスポンス スプリッティング、リモート ファイル インクルードなど)。
  • HTTP プロトコル違反に対する保護。
  • HTTP プロトコル異常に対する保護 (ホスト ユーザー エージェントと承認ヘッダーが見つからない場合など)。
  • クローラーおよびスキャナーに対する保護。
  • 一般的なアプリケーション構成ミスの検出 (Apache やインターネット インフォメーション サービスなど)。
  • 下限と上限を指定した、構成可能な要求サイズ制限。
  • 除外リストを使用すると、WAF の評価から特定の要求属性を省略できます。 一般的な例は、認証やパスワード フィールドに使われる、Microsoft Entra ID によって挿入されたトークンです。
  • 特定のアプリケーションのニーズに合わせてカスタム ルールを作成することができます。
  • トラフィックを geo フィルタリングすることで、特定の国/地域を対象に、アプリケーションへのアクセスを許可したりブロックしたりできます。
  • ボット軽減策ルールセットを使用してアプリケーションをボットから保護できます。
  • 要求本文で JavaScript Object Notation (JSON) と Extensible Markup Language (XML) を検査する

WAF のポリシーと規則

Application Gateway 上で Web アプリケーション ファイアウォールを有効にするには、WAF ポリシーを作成する必要があります。 このポリシーには、すべてのマネージド規則、カスタム ルール、除外、そしてファイル アップロード制限などのその他のカスタマイズが含まれます。

保護のために、WAF ポリシーを構成して、そのポリシーを 1 つまたは複数のアプリケーション ゲートウェイに関連付けることができます。 WAF ポリシーは、2 種類のセキュリティ規則で構成されます。

  • 作成したカスタム ルール
  • Azure で管理される事前に構成された一連のルールのコレクションであるマネージド ルール セット

両方ともある場合、マネージド規則セットの規則が処理される前に、カスタム規則が処理されます。 規則は、一致条件、優先順位、およびアクションで構成されます。 サポートされているアクションの種類は次のとおりです: ALLOW、BLOCK、LOG。 マネージド規則とカスタム規則を組み合わせることで、特定のアプリケーション保護要件を満たす完全にカスタマイズされたポリシーを作成することができます。

ポリシー内の規則は、優先順位に従って処理されます。 優先順位は、規則の処理順序を定義する一意の整数です。 整数値が小さいほど高い優先順位を表し、大きい整数値の規則より前に評価されます。 規則が一致すると、規則で定義されている対応するアクションが要求に対して適用されます。 このような一致が処理された後、優先順位の低い規則はそれ以上処理されません。

Application Gateway を使用して配信する Web アプリケーションには、グローバル レベル、サイトごとのレベル、または URI ごとのレベルで、WAF ポリシーを関連付けることができます。

コア ルール セット

Application Gateway では、CRS 3.2、CRS 3.1、CRS 3.0 など、複数のルール セットがサポートされています。 これらの規則は、悪意のあるアクティビティから Web アプリケーションを保護します。

カスタム規則

Application Gateway はカスタム ルールもサポートしています。 カスタム ルールを使用すると、WAF を通過する要求ごとに評価される独自の規則を作成できます。 これらの規則は、マネージド規則セット内の他の規則よりも高い優先度を持ちます。 一連の条件が満たされた場合、許可またはブロックするためのアクションが実行されます。

ボット保護規則セット

マネージド ボット保護規則セットを有効にすると、すべてのボット カテゴリからの要求に対してカスタム アクションを実行することができます。

次の 3 つのボット カテゴリがサポートされています。

  • Bad: 悪いボットには、悪意のある IP アドレスからのボットや、ID が偽装されたボットなどが含まれます。 悪意のある IP を持つ悪質なボットは、Microsoft 脅威インテリジェンス フィードの重大度の高い IP 侵害インジケーターによって検出されます。
  • Good: 良いボットには、Googlebot、bingbot、その他の信頼できるユーザー エージェントなどの検証済みの検索エンジンが含まれます。
  • Unknown: 不明なボットは、公開されているユーザー エージェントによって分類され、それ以上の検証は行われません。 たとえば、マーケット アナライザー、フィード フェッチャー、データ収集エージェントが該当します。 不明なボットには、Microsoft 脅威インテリジェンス フィードの信頼レベルが中程度の IP 侵害インジケーターによって検出された悪意のある IP アドレスも含まれます。

WAF プラットフォームは、ボット シグネチャを積極的に管理して動的に更新します。

ボット署名の例を示すスクリーンショット。

Microsoft_BotManagerRuleSet_1.0 は、[マネージド ルールセット][割り当て] オプションを使用して割り当てることができます。

管理されているルール セットを割り当てる方法の例を示すスクリーンショット。

ボット保護が有効になっている場合、これは構成済みのアクションに基づいてボット ルールに一致する受信要求のブロック、許可、ログ記録を行います。 これは既定で、悪意のあるボットをブロックし、検証済みの検索エンジン クローラーを許可し、不明な検索エンジン クローラーをブロックし、不明なボットをログに記録します。 さまざまな種類のボットのブロック、許可、ログ記録を行うカスタム アクションを設定するオプションが存在します。

ストレージ アカウント、イベント ハブ、ログ分析から WAF ログにアクセスしたり、パートナー ソリューションにログを送信したりできます。

WAF のモード

Application Gateway の WAF は、次の 2 つのモードで実行するように構成できます。

  • 検出モード:すべての脅威アラートを監視してログに記録します。 [診断] セクションで Application Gateway の診断ログの記録をオンにしてください。 また、必ず WAF のログを選択してオンにしてください。 Web アプリケーション ファイアウォールは、検出モードで動作しているときに受信要求をブロックしません。
  • 防止モード:規則で検出された侵入や攻撃をブロックします。 攻撃者に "403 不正アクセス" の例外が送信され、接続が終了します。 防止モードでは、このような攻撃を WAF ログに記録します。

WAF エンジン

Azure Web Application Firewall (WAF) エンジンとは、トラフィックを検査し、要求に潜在的な攻撃を表す特徴が含まれているかどうかを判断するコンポーネントです。 CRS 3.2 以降を使用すると、WAF によって新しい WAF エンジンが実行され、それによりパフォーマンスが向上し機能セットが強化されます。 旧バージョンの CRS を使用すると、以前のエンジンが WAF により実行されます。 新機能は、新しい Azure WAF エンジンでのみ利用できます。

WAF のアクション

要求がルールの条件に一致したときにどのアクションが実行されるかを選択できます。 次のアクションがサポートされています。

  • 許可: 要求は WAF を通過し、バックエンドに転送されます。 それより優先順位の低い規則によって、この要求をブロックすることはできません。 許可アクションはボット マネージャー ルールセットにのみ適用され、コア ルール セットには適用されません。
  • ブロック: 要求はブロックされ、WAF はバックエンドに要求を転送せず、クライアントに応答を送信します。
  • ログ: 要求は WAF ログに記録され、WAF によって優先順位の低い規則の評価が続行されます。
  • 異常スコア: これは CRS ルール セットの既定のアクションで、このアクションを含む規則が一致すると、合計異常スコアがインクリメントされます。 異常スコアリングはボット マネージャー ルールセットには適用されません。

異常スコアリング モード

Open Web Application Security Project (OWASP) には、トラフィックをブロックするかどうかを決定するための 2 つのモードがあります。従来モードと異常スコアリング モードです。

従来モードでは、いずれかの規則に一致するトラフィックが、他の規則の一致とは無関係に考慮されます。 このモードは簡単に理解できます。 しかし、特定の要求に一致する規則の数に関する情報が不足することが制限事項です。 そのため、異常スコアリング モードが導入されました。 OWASP 3.x ではこれが既定です。

異常スコアリング モードでは、ファイアウォールが防止モードの場合、いずれかの規則に一致するトラフィックがすぐにブロックされることはありません。 規則には特定の重大度があります。 [重大] 、 [エラー] 、 [警告] 、または [通知] です。 その重大度は、異常スコアと呼ばれる要求の数値に影響します。 たとえば、1つの [警告] 規則の一致によって、スコアに 3 が与えられます。 1つの [重大] 規則の一致では 5 が与えられます。

重大度 Value
Critical 5
エラー 4
警告 3
注意事項 2

異常スコアでトラフィックがブロックされるしきい値は 5 です。 そのため、防止モードであっても、Application Gateway の WAF が要求をブロックするには、 [重大] 規則の一致が 1 つあるだけで十分です。 しかし、1 つの [警告] 規則の一致では、異常スコアは 3 増加するだけで、その一致だけではトラフィックをブロックするには不十分です。

構成

どの WAF ポリシーも、Azure portal、REST API、Azure Resource Manager テンプレート、Azure PowerShell を使用して構成およびデプロイできます。

WAF の監視

アプリケーション ゲートウェイの正常性を監視することは重要です。 WAF とそれが保護するアプリケーションを、Microsoft Defender for Cloud、Azure Monitor、および Azure Monitor ログと統合することでこれをサポートできます。

Azure Web アプリケーション ファイアウォールの監視機能の例を示す図。

Azure Monitor

Application Gateway のログは、Azure Monitor と統合されます。 そのため、WAF のアラートやログなどの診断情報を追跡できます。 この機能には、ポータルの Application Gateway リソースの [診断] タブからアクセスするか、またはAzure Monitor から直接アクセスできます。