Azure Application GatewayでカスタムWAFポリシーを使う

Application Gateway,Azure,Web Application Firewall

Web アプリケーションファイアウォール(Azure Web Application Firewall)(WAF)はWebアプリケーション脆弱性を利用した攻撃を検知、ブロックするサービスです。
アプリケーションゲートウェイ(Azure Application Gateway)やフロントドア(Azure Front Door)でWAFを利用する事が出来ます。

アプリケーションゲートウェイ(Azure Application Gateway)でWAFの初期設定をやってみました。
WAFの設定ではカスタムWAFポリシーの作成、WAF自体の設定、Application Gatewayへの割り当て、カスタムルールの作成、モード切替、ログ確認も併せてやってみました。

アプリケーションゲートウェイ(Azure Application Gateway)の構築手順はこちらに纏めています。

スポンサーリンク

Web アプリケーションファイアウォール(Azure Web Application Firewall)(WAF)とは

アプリケーションゲートウェイ(Azure Application Gateway)ではWAFを利用出来ます。

WAFとは

Azure Web アプリケーション ファイアウォール
Azure Web アプリケーション ファイアウォールとは

WAFを使うとSQL インジェクションなどの一般的な Web ハッキング手法、クロスサイト スクリプティングなどのセキュリティ脆弱性からWeb アプリを保護してくれます。

標準でOWASPおよびBotのルールが用意されており、適用するだけですぐに使用開始出来ます。
WAFルールにマッチしたトラフィックを検知、ブロックしてくれます。

アプリケーションゲートウェイ(Azure Application Gateway)やフロントドア(Azure Front Door)と併せて利用する事が出来ます。
アプリケーションゲートウェイ(Azure Application Gateway)はv1(s除く)、v2ともに利用可能です。
v2ではWeb Application Firewall ポリシーも利用可能です。

価格

WAFの利用はアプリケーションゲートウェイ(Azure Application Gateway)の利用とは別に課金が発生します。
v1、v2それぞれで利用料金が異なります。

Web アプリケーション ファイアウォール の価格
Application Gateway の価格

利用方法は2種類

アプリケーションゲートウェイ(Azure Application Gateway)でWAFを利用する方法は2種類あります。

    • Application GatewayでWAFを有効化して利用する方法
    • Web Application Firewall(WAF) ポリシーを個別に作成してApplication Gatewayに割り当てる方法

アプリケーションゲートウェイ(Azure Application Gateway)でWAFを利用する

WAFを有効化

アプリケーションゲートウェイ(Azure Application Gateway)のSKUでWAF v2を選択するだけでWAFが利用できます。

WAFを有効化

アプリケーションゲートウェイの構成でレベルをWAF v2を選択します。
これでWAFを利用する事が出来ます。

※アプリケーションゲートウェイ(Azure Application Gateway)v1(s除く)でもWAFは利用可能です。

WAFの設定

WAFモードやルールの設定が出来ます。

    • WAFモード
      • 検知モード:ログ出力のみでトラフィックはブロックしない
      • 防止モード:ログ出力と共にトラフィックをブロックする
        • トラフィックのブロックは一定条件に達した場合に実施される
    • ルール
      • ルール単位で有効、無効の設定が出来る
WAF設定
WAFモードの設定が出来ます。
デフォルトでは検知モードになっています。
グローバルパラメータの設定や除外設定も可能です。
ルールセットを選択する事が出来ます。
ルールの詳細構成を有効にするとルール単位での有効、無効の設定が出来ます。

WAFポリシーの作成からアプリケーションゲートウェイ(Azure Application Gateway)への割り当て

アプリケーションゲートウェイ(Azure Application Gateway)v2では個別に作成したWAFポリシーを利用する事が出来ます。

WAFポリシーの作成

Web Application Firewall(WAF) ポリシーのサービスを作成してアプリケーションゲートウェイ(Azure Application Gateway)に割り当てます。

WAFポリシー作成
Web Application Firewall ポリシーで作成を選択します。

WAFポリシーでリージョンのWAF(Application Gateway)を選択します。

Application Gatewayと同じ場所を選択します。

管理されているルールのタブではルールセットを選択します。OWASPのバージョンを選択します。

ポリシー設定のタブではグローバルパラメータの設定します。

カスタムルールのタブではカスタムルールの追加が出来ます。

※後で設定します。

関連付けのタブでは利用するApplication Gatewayを選択します。
関連付けはApplication Gateway、リスナー、ルートパスの単位で出来ます。

※後で設定します。

確認画面で作成を選択します。

WAFポリシーを割り当て

アプリケーションゲートウェイ(Azure Application Gateway)へ割り当ては、Application Gateway WAF ポリシー側のメニューで実施します。

※事前にアプリケーションゲートウェイ(Azure Application Gateway)側でWAFを有効にしておく必要があります。

WAFポリシー割り当て
関連付けられたアプリケーションゲートウェイを選択します。
関連付けの追加を選択します。
今回はリスナーに設定してみます。
HTTPリスナーを選択します。
Application Gatewayとリスナーを選択します。
最後に保存を選択して割り当ては完了です。

今回利用したアプリケーションゲートウェイ(Azure Application Gateway)の構築手順はこちら。

ーーー

防止モード、検出モードの切り替え

防止モード、検出モードの切り替えも1クリックで出来ます。

モード切り替え
防止モードに切り替えるを選択します。
ポリシーモードが防止に変わっている事が分かります。

ルールセットの割り当て

ルールセットの割り当てを使うと追加でbotルールセットを割り当てる事が出来ます。

botルールセット割り当て

管理されているルールで割り当てを選択します。

マネージドルールセットの割り当てが表示されますので、Microsoft_BotManagerRuleSet_0.1を選択して保存します。

マネージドルールセットが追加になっている事が確認出来ます。

WAFルールの無効化

マネージドルールセットのルールは個別で無効化出来ます。
アプリケーション側の事情で特別に許可する必要がある場合等に使用します。

ルールセット無効化
アクションを変更したいルールを選択します。
無効化を選択します。
状態がDisabledになっている事が確認出来ます。

カスタムWAFルールの作成

特定のIPからのアクセスを拒否するルールを作成してみます。
処理は以下の3つのパターンになります。

    • トラフィックを許可する
      • ルールに該当するトラフィックを許可する
    • トラフィックを拒否する
      • ルールに該当するトラフィックをブロックする
    • トラフィックのみをログに記録する
      • ログに記録のみ(トラフィックは許可)
カスタムルールの作成

カスタムルールでカスタムルールの追加を選択します。

ルールの設定画面が表示されます。
カスタムルール名、優先度を入力します。
条件でIPアドレス、含まれるを選択し、ブロックしたいIPを入力します。

処理でトラフィックを拒否するを選択します。

保存を選択するとカスタムルールが作成されます。

カスタムルールの確認

カスタムルールでブロック設定したIPアドレスからアクセスしてみます。

カスタムルールに合致した場合
アクセスがブロックされている事が分かります。
拒否したIPアドレスからアクセスした場合403が戻ります。

※カスタムルールで拒否設定をした場合でも、WAFモードで検出モードを選択した場合はトラフィックは許可されます。

WAFのログはLog Analyticsで確認出来る

Application Gatewayの診断設定を使うと、Log Analyticsへログを転送する事が出来ます。
転送対象の中にApplication Gateway Firewall Logを加える事で転送出来ます。
Application Gateway Firewall LogがWAFのログになります。

WAFモードを検知から防止に変更すると、アクセス挙動が変わっている事が分かります。
action_sの挙動を確認するとDetectedからBlockedになっている事が確認出来ます。

ログサンプル

Azure Application Gatewayでのログ確認についてはこちらにで載しています。