この記事はAzure App Service Team BlogのZero to Heroシリーズの記事に感銘を受けて、和訳&改変&自分で新規執筆した記事です。 この記事を通してWeb Appsの基礎から実運用の方法まで、筆者自身が見直す機会としてシリーズ化して掲載する事にしました。 本家の「Zero to Hero」というフレーズの通り、Azure App Serviceを使ったことの無い方は一人前になれるように、すでに利用している方は知識のアップデートに役立てていただければと思います。
なお、連載の5回目からは筆者オリジナルのコンテンツを掲載しています。目次からまとめて読めますので、是非どうぞ。
【Azure初心者から上級者まで!】Azure App Service を使いこなしてゼロからヒーローになる
この記事は App Service でゼロからヒーロー シリーズの第9回です。 この記事を読むためには初回記事を読み終えていることを想定しています。
前回の記事ではFront DoorとNATゲートウェイを利用して受信トラフィックと送信トラフィックを制限してApp Serviceを保護する方法を紹介しました。今回はFront DoorにWAFポリシーを適用して、不正なアクセスからアプリケーションを保護する方法をご紹介致します。
WAF(Web Application Firewall)とはWebアプリケーションへの脆弱性を利用して攻撃を防御するためのファイアウォールです。AzureではFront DoorやApplication GatewayにWAFポリシーを設定する事でファイアウォールを構成します。WAFポリシーの詳しい説明はこちらのドキュメントをご覧ください。
Azure Portalを開いてAzure サービスにある[リソースの作成] をクリックします。検索項目で [Web Application Firewall ポリシー] と入力してWAFを作るためのブレードが開いて作成します。
基本タブではWAFポリシーの種類や名前を設定します
ポリシー設定タブではWAFポリシーの動作モードや防止時のレスポンスに関する挙動を設定します
モードを[防止]にするとWAFポリシーに該当する場合に指定したレスポンスの動作を行う事ができます。(初期値ではHTTPステータス403)。 検出 モードを指定するとWAFのログには 残りますが、特にレスポンスに影響はありません。
管理されているルールタブではWAFで有効にするルールを選択します。
大きくDefaultRuleSetと Microsoft_BotManagerRuleSet の2種類のグループが存在します。今回はWAFを動作させるさいにXSSを利用するので[DefaultRuleSet]を有効にしてください。
カスタム規則タブではデフォルトで存在しないルールを作成する場合はカスタムルールの追加を行います。
指定したIPアドレスをブロックしたい場合などはカスタムルールを追加する事で対応できますが、今回の例では特に作成しません。
関連付けタブでWAFポリシーを適用するFront Doorを指定します
[フロントエンドホストを追加する]をクリックして、追加設定ブレードを表示した後にFront Doorとフロントエンドホストを指定して [追加] をクリックします。
ココで指定したフロントエンドホストに対してWAFポリシーが適用されます。
ここまでの設定でFront DoorにWAFポリシーが適用されているので、実際に動作させてみましょう。今回はXSSに該当するようなリクエストを発生させて検証してみたいと思います。
Front Doorに対して?p=<script>alert('hoge');</script>
のようなクエリパラメータを付与してアクセスしてみます。現在のWAFは防止モードで動作させているので、設定どおり規定の403ステータスが表示されます。
HTTPステータスも指定通り403が返却されています。
また、WAFポリシーを[検出]モードで動作させた場合は以下のようにページは通常通り200レスポンスが表示されます。
防止モードでも検出モードでも外とするリクエストが存在する場合はWAFログを参照する事で内容が確認できます。WAFログを確認する場合はFront Doorの診断設定にてWAFログの送信先を設定しておく必要があります。今回はLog AnalyticsへWAFログを送信して確認していきます。
WAFログを送信するためのLog Analytics ワークスペースを作成します。こちらのドキュメントを参考にして作成してください。
Azureポータルで、Front Doorの[診断設定]メニューに遷移します。[診断設定追加する]をクリックして診断設定追加画面を表示します。
入力を終えたら[保存]をクリックして診断設定を保存します。
設定後に再度WAFを検出または防止する動作を行います。Log Analyticsに送信されるまでにタイムラグがあるので数分後にLog Analyticsのログから該当するログがあるか確認しましょう。Log Analyticsのログを確認する方法はこちらのドキュメントを参考にしてください。
AzureDiagnostics
テーブルにWAFログが確認されており、リクエストの内容はどのルールに該当したかなど詳細が確認できるようになっています。検出モードの場合はこのログをAzure Monitor経由で通知する事で何らかのアクションを行う必要があります。実際にログを検索した画像が以下のようになります。
いかがだったでしょうか、WEBアプリケーションを脆弱性を利用したリクエストから保護する方法をご紹介いたしました。Azureのサービスだけで多くの攻撃から保護する事もでき、日々多様化する攻撃方法への対応もAzureのサービス側に任せる事ができるので、まだ利用していない場合はぜひ利用してみてください。
お問い合わせはこちらから
問い合わせる