Azure Web Application Firewall のしくみ
Azure Web Application Firewall の基本的な機能と利点については理解できました。 次に、Azure Web Application Firewall のしくみについて調べてみましょう。 具体的には、ルール セットやルール グループなどの機能を使用して、Azure Web Application Firewall により Web アプリが一般的な悪用からどのように保護されるのかを考えてみます。 この情報は、Azure Web Application Firewall が会社に適したソリューションかどうかを評価するのに役立ちます。
配置オプション
Azure Web Application Firewall は、Web アプリ用の Azure フロントエンド ソリューションの一部としてデプロイできます。 最初に、Azure Web Application Firewall ポリシーを作成します。これには次の設定が含まれます。
- 使用する製品統合
- 使用するマネージド ルール セット
- 追加するカスタム ルール
- 使用するモード
Microsoft マネージド ルール セット、ルール グループ、ルール
アプリが受信する HTTP/HTTPS 要求に Azure Web Application Firewall によってルールが適用されることにより、既知の悪用は阻止されます。 ルールは、特定の脅威を認識して防止するように設計されたファイアウォール コードです。
一般的な脆弱性を検出してブロックするために Azure Web Application Firewall によって使用されるルールは、ほとんどがマネージド ルールです。 各ルール グループはルールのコレクションであり、マネージド ルール セットはルール グループのコレクションです。 マネージド ルール セットには、Microsoft 脅威インテリジェンス ベースのルール グループ、CVE (Common Vulnerabilities and Exposures) ルール グループ、コア ルール グループ (CRS) が含まれます。
Open Web Application Security Project (OWASP) は CRS ルールを定義します。 マネージド ルールは、Microsoft のセキュリティ専門家チームによってコーディング、管理、更新されます。 ルールは、必要に応じて変更または追加されます。 マネージド ルールが変更されると、Azure Web Application Firewall は自動的に更新され、アプリのダウンタイムは発生しません。
次のスクリーンショットは、Microsoft 既定のルール セット 2.1 (DRS2.1) のルールとルール グループの一部を示しています。 これにより、Azure Web Application Firewall によって提供される保護の深さを感じていただけるはずです。
ボットの規則
ボット ルールは、Microsoft 脅威インテリジェンスと独自の WAF ルールに基づいて、不適切なボット、優れたボット、不明なボットを識別します。
カスタム規則
Azure Web Application Firewall によって提供されるマネージド ルールでは、Web アプリケーションで発生する特定の脅威に対応できない場合があります。 その場合は、カスタム ルールを作成できます。 次のコンポーネントを含む条件を作成して、カスタム ルールを作成できます。
- 地域、IP アドレス、サイズ、文字列などの一致の種類
- RequestHeader、QueryString、RequestUri、RequestBody、Cookies、PostArgs などの一致変数
- POST や PUT などの HTTP/HTTPS 要求メソッド
- 等しい、含む、正規表現、始まり、いずれか、終わり などの演算子
- 許可、ブロック、ログ、リダイレクトなどのアクション
geo フィルタリング
既定では、WAF は要求の発信元の場所にかかわらずすべてのユーザー要求に応答します。 一部のシナリオでは、国/地域ごとに Web アプリケーションへのアクセスを制限しなければならないことも考えられます。 ジオフィルタリングのカスタム ルールを使用すると、エンドポイントに特定のパスを定義して、指定した国または地域からのアクセスを許可またはブロックすることができます。 ジオフィルタリング ルールでは、関心のある国または地域の 2 文字のコードが使用されます。
ジオフィルタリング ルールの場合、一致変数は RemoteAddr または SocketAddr です。 RemoteAddr は、通常 X-Forwarded-For 要求ヘッダーを介して送信される元のクライアント IP です。 SocketAddr は、WAF で認識される発信元 IP アドレスです。 ユーザーがプロキシの内側にある場合、SocketAddr は通常、プロキシ サーバーのアドレスです。
GeoMatch 条件と REQUEST_URI 文字列の一致条件を組み合わせて、パス ベースの geo フィルタリング ルールを作成することができます。
IP 制限
Azure Web Application Firewall カスタム ルールは、IP アドレスまたは IP アドレス範囲のリストを指定して、Web アプリケーションへのアクセスを制御します。
IP 制限カスタム ルールを使用すると、ご自分の Web アプリケーションへのアクセスをコントロールすることができます。 これは、クラスレス ドメイン間ルーティング (CIDR) 形式で IP アドレスまたは IP アドレス範囲を指定して行われます。
既定では、Web アプリケーションにはインターネットからアクセスできます。 ただし、既知の IP アドレスまたは IP アドレス範囲の一覧からクライアントへのアクセスを制限したい場合があります。 これを実現するには、カスタム 規則にリストされていない IP アドレスから Web アプリへのアクセスをブロックする IP 照合規則を作成します。
レート制限
Azure Web Application Firewall カスタム ルールでは、一致条件と受信要求のレートに基づいてアクセスを制御するためのレート制限がサポートされています。
このカスタム ルールを使用すると、異常に高いレベルのトラフィックを検出し、一部の種類のアプリケーション層のサービス拒否攻撃をブロックできます。 レート制限により、短時間で大量の要求を送信するように誤って構成されたクライアントから保護することもできます。 レート制限カウント期間 (1 分間隔または 5 分間隔) は、カスタム ルールとレート制限しきい値 (レート制限期間で許可される要求の最大数) を定義します。
検出モードと防止モード
Azure Web Application Firewall は、2 つのモードのいずれかで動作できます。 選択するモードは、いずれかのルールと一致した受信 HTTP/HTTPS 要求をファイアウォールで処理する方法によって異なります。
- 検出モード: 要求をログに記録しますが、要求の通過を許可します。
- 防止モード: 要求をログに記録しますが、要求の通過は許可しません。
一般的なシナリオとして、アプリをテストするときは、検出モードで Azure Web Application Firewall を実行します。 検出モードでは、2 種類の問題を確認できます。
- 誤検知: ファイアウォールが悪意のあるものとしてフラグを設定する正当な要求。
- 偽陰性: ファイアウォールで許可される悪意のある要求。
アプリをデプロイする準備ができたら、防止モードに切り替えます。
Microsoft Sentinel と Azure WAF を併用する
Microsoft Sentinel と Azure WAF を組み合わせると、WAF リソースのセキュリティ情報イベントを管理できます。 Microsoft Sentinel を使用すると、Log Analytics を使用して Sentinel への WAF データ コネクタにアクセスできます。 WAF ブックに、Azure Front Door の WAF と Application Gateway の WAF の分析が表示されます。 WAF 分析ルールは、AFD ログと Application Gateway ログからの SQL 攻撃と XSS 攻撃を検出します。 WAF Notebook を使用すると、Azure Front Door での SQL インジェクション インシデントを調査できます。