Microsoft Sentinel による Azure WAF の自動検出と応答
悪意のある攻撃者は、よく知られた SQL インジェクションやクロスサイト スクリプティングなどの一般的な脆弱性を悪用し、Web アプリケーションを標的にすることが多くなっています。 そうした攻撃にアプリケーション コードで対策を取るには、アプリケーション トポロジを構成する複数のレイヤーについてメンテナンス、修正プログラムの適用、監視を厳格に行う必要があり、実行は容易ではありません。 一方、Web アプリケーション ファイアウォール (WAF) によるソリューションでは、既知の脆弱性への対策を一元的に適用できるため、セキュリティ上の脅威に対し、個別 Web アプリケーションのセキュリティ保護よりも迅速に対応できます。 Azure Web Application Firewall (WAF) は、一般的な Web ハッキング手法から Web アプリを保護するクラウドネイティブ サービスです。 わずか数分で迅速にデプロイでき、Web アプリケーションのトラフィックを完全に可視化して、悪意のある Web 攻撃をブロックできます。
Azure WAF と Microsoft Sentinel (クラウドネイティブの SIEM/SOAR ソリューション) を統合すると、脅威/インシデント/アラートの検出と対応を自動的に行えるメリットがさらに加わり、WAF ポリシーを更新する必要性からの手作業の発生を減らすことができます。
この記事では、Sentinel の WAF 検出テンプレートに関する基本知識と、プレイブックのデプロイ方法、Sentinel でテンプレートとプレイブックを使用した検出と応答の構成方法について説明します。
前提条件
- Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
- Azure Front Door がデプロイされ、WAF ポリシーが関連付けられていること。 詳細については、「クイック スタート: ARM テンプレートを使用して Front Door Standard/Premium を作成する」および「チュートリアル: Azure portal を使用して Azure Front Door 用の WAF ポリシーを作成する」を参照してください。
- Azure Front Door が、ログ分析ワークスペースにログをキャプチャするよう構成されていること。 詳細については、「Azure Front Door ログを構成する」を参照してください。
プレイブックのデプロイ
GitHub のテンプレートから、Block-IPAzureWAF という名前の Sentinel プレイブックをインストールします。 このプレイブックは、WAF インシデントへの対応時に実行されます。 目標は、WAF ポリシー内のカスタム ルールを作成または変更して、特定の IP アドレスからの要求をブロックすることです。 このことは Azure REST API を使用して実現されます。
GitHub からテンプレートを取得してプレイブックを入手し、インストールします。
- GitHub リポジトリに移動し、[Azure へのデプロイ] を選択してテンプレートを起動します。
- 必要なパラメーターを入力します。 使用する Front Door ID は Azure portal から取得できます。 Front Door ID とは、Front Door リソースのリソース ID です。
- [確認および作成] 、 [作成] の順に選択します。
API 接続を承認する
デプロイすると、このデプロイに含まれる要素の 1 つとして、azuresentinel-Block-IPAzureWAF という名前の API 接続が作成されます。 プレイブックから WAF ポリシーに変更を加えることを可能にするには、Azure ID を使用してプレイブックに承認を与える必要があります。
- Azure portal で、azuresentinel-Block-IPAzureWAF API 接続を選択します。
- [API 接続の編集] を選択します。
- [表示名] の下に Azure ID を入力します。
- [承認] を選択します。
- [保存] を選択します。
共同作成者ロールの割り当てを構成する
プレイブックには、既存の WAF ポリシーに対して REST API からクエリと変更を行うためのアクセス許可を与える必要があります。 このために、Front Door リソースへの共同作成者アクセス許可を持ったシステム割り当てマネージド ID と、それに関連付けた WAF ポリシーをプレイブックに割り当てます。 アクセス許可の割り当てを行う作業者のアカウントには、基になるリソースの所有者ロールまたはユーザー アクセス管理者ロールが割り当てられている必要があります。
この作業を行うには、該当するリソースの IAM セクションに、このプレイブックに対する新しいロールの割り当てを追加します。
- Azure portal で、Front Door リソースを選択します。
- 左側のウィンドウで [アクセス制御 (IAM)] を選択します。
- [ロールの割り当て] を選択します。
- [追加]、[ロールの割り当ての追加] の順に選択します。
- [特権管理者ロール] を選択します。
- [共同作成者] を選択し、[次へ] を選択します。
- [メンバーの選択] を選びます。
- Block-IPAzureWAF を検索し、選択します。 このプレイブックに対応するエントリは複数個存在する場合があります。 通常、最近追加された項目はリストの末尾にあります。
- Block-IPAzureWAF を選択し、[選択] を選択します。
- [レビューと割り当て] を選択します。
この手順を、WAF ポリシー リソースに対して繰り返します。
Microsoft Sentinel をワークスペースに追加する
- Azure portal で Microsoft Sentinel を検索し、開きます。
- [作成] を選択します
- ワークスペースを選択し、[追加] を選択します。
ロジック アプリ共同作成者ロールの割り当てを構成する
作業者のアカウントには、Microsoft Sentinel にアクセス許可を付与するリソース グループの所有者権限と、実行したいプレイブックがあるリソース グループについてロジック アプリ共同作成者ロールが割り当てられている必要があります。
- Azure portal で、目的のプレイブックを含んだリソース グループを選択します。
- 左側のウィンドウで [アクセス制御 (IAM)] を選択します。
- [ロールの割り当て] を選択します。
- [追加]、[ロールの割り当ての追加] の順に選択します。
- ロジック アプリ共同作成者を検索し、選択して、[次へ] を選択します。
- [メンバーの選択] を選びます。
- 自分のアカウントを検索し、選択します。
- 選択 を選択します。
- [次へ] を選択します。
- [レビューと割り当て] を選択します。
検出と応答を構成する
Sentinel for Azure WAF には、SQLi および XSS 攻撃用の検出クエリ テンプレートが用意されており、 コンテンツ ハブからダウンロードできます。 それらのテンプレートを使用すると、WAF ログから特定の種類の攻撃パターンを検出する分析ルールを定義し、インシデントを作成してセキュリティ アナリストに通知することができます。 ルールの自動化セクションでは、攻撃者のソース IP を WAF ポリシーでブロックし、同じソース IP アドレスから攻撃が繰り返されるのを事前に阻止することができ、インシデント対応に役立ちます。 Microsoft では、提供する検出テンプレートをさらに増やし、より多くの検出と応答シナリオに対応するための取り組みを継続しています。
テンプレートをインストールする
- Microsoft Sentinel で、左側ペインの [構成] から [分析] を選択します。
- ページの上部で、[その他のコンテンツの場所: コンテンツ ハブ] を選択します。
- Azure Web Application Firewall を検索して選択し、[インストール] を選択します。
分析ルールを作成する
Microsoft Sentinel で、左側ペインの [構成] から [分析] を選択します。
[ルール テンプレート] を選択します。 テンプレートが表示されるまでに数分かかる場合があります。
Front Door Premium WAF - SQLi Detection テンプレートを選択します。
右側のペインで、[ルールの作成] を選択します。
すべての既定値をそのまま採用し、[自動応答] に進みます。 この設定内容は後で編集してルールをカスタマイズできます。
ヒント
ルール クエリにエラーが表示される場合は、ワークスペースに WAF ログがないことがエラーの原因になっている可能性があります。 その場合、Web アプリにテスト トラフィックを送信するとログを生成できます。 たとえば、次のような要求を送信すると SQLi 攻撃をシミュレートできます:
http://x.x.x.x/?text1=%27OR%27%27=%27
x.x.x.x
は、Front Door の URL に置き換えてください。[自動応答] ページで、[新規追加] を選択します。
[新しいオートメーション ルールの作成] ページで、ルールの名前を入力します。
[トリガー] で、[アラートが作成されたとき] を選択します。
[アクション] で、[プレイブックのアクセス許可を管理] を選択します。
[アクセス許可の管理] ページで、リソース グループを選択し、[適用] を選択します。
[新しいオートメーション ルールの作成] ページに戻り、[アクション] で、ドロップダウン リストから Block-IPAzureWAF プレイブックを選択します。
[適用] を選択します。
確認と作成 をクリックします。
[保存] を選択します。
分析ルールを作成し、それに対応するオートメーション ルールの設定が済めば、検出と対応の準備が整います。 攻撃が行われると、以下のようなイベントのフローが発生します。
- Azure WAF の背後にある Web アプリのいずれかを標的にした攻撃が試みられると、Azure WAF がトラフィックをログに記録します。 Sentinel がそれらのログを取り込みます。
- お客様の構成した分析/検出ルールが攻撃のパターンを検出し、インシデントを生成します。これにより、アナリストに通知が届きます。
- 分析ルールに含まれているオートメーション ルールが、あらかじめ構成しておいた対応するプレイブックをトリガーします。
- プレイブックが、該当する WAF ポリシー内に SentinelBlockIP というカスタム ルールを作成します。このルールには攻撃者のソース IP が含まれています。
- WAF が、以後の攻撃試行をブロックします。攻撃者が別のソース IP を使用しようとした場合は、WAF がそのソース IP をブロック ルールに追加します。
Azure WAF では、あらゆる種類の悪意ある Web 攻撃が、Azure WAF エンジンのコア ルールセットによって既定でブロックされるようになっています。これは重要なポイントです。 しかし、この自動検出と応答を構成すると、さらに強力なセキュリティを実現できます。攻撃に使用されたソース IP アドレスを対象として Azure WAF ポリシー内のカスタム ブロック ルールが自動的に追加または変更されるため、 該当するソース IP アドレスからのトラフィックは、Azure WAF エンジンのルールセットにさえ到達しない段階でブロックされます。