Azure PowerShell を使用して WAF ポリシーを構成する

Web アプリケーション ファイアウォール (WAF) ポリシーでは、要求が Azure Front Door に到着したときに必要な検査が定義されています。

この記事では、いくつかのカスタム ルールと有効にされた Azure マネージド デフォルト ルールセットで構成される WAF ポリシーを構成する方法を示します。

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

前提条件

レート制限ポリシーの設定を開始する前に、PowerShell 環境を設定して Azure Front Door プロファイルを作成します。

PowerShell 環境をセットアップする

Azure PowerShell には、Azure リソースの管理に Azure Resource Manager モデルを使う一連のコマンドレットが用意されています。

Azure PowerShell をローカル コンピューターにインストールして、すべての PowerShell セッションで使用することができます。 リンク先のページの手順に従って Azure の資格情報を使ってサインインします。 次に、Az PowerShell モジュールをインストールします。

Azure へのサインイン

Connect-AzAccount

Azure Front Door モジュールをインストールする前に、現在のバージョンの PowerShellGet がインストールされていることを確認します。 次のコマンドを実行したら、PowerShell を再度開きます。

Install-Module PowerShellGet -Force -AllowClobber

Az.FrontDoor モジュールのインストール

Install-Module -Name Az.FrontDoor

Azure Front Door プロファイルを作成する

Azure Front Door プロファイルを作成するには、「クイック スタート: Azure Front Door プロファイルの作成」で説明されている手順に従います。

HTTP パラメーターに基づくカスタム ルール

次の例では、New-AzFrontDoorWafMatchConditionObject を使用して 2 つの一致条件のあるカスタムルールを構成する方法を示します。 要求は参照元によって定義されている指定サイトからのもので、クエリ文字列に password は含まれません。

$referer = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestHeader -OperatorProperty Equal -Selector "Referer" -MatchValue "www.mytrustedsites.com/referpage.html"
$password = New-AzFrontDoorWafMatchConditionObject -MatchVariable QueryString -OperatorProperty Contains -MatchValue "password"
$AllowFromTrustedSites = New-AzFrontDoorWafCustomRuleObject -Name "AllowFromTrustedSites" -RuleType MatchRule -MatchCondition $referer,$password -Action Allow -Priority 1

HTTP 要求メソッドに基づくカスタム ルール

New-AzFrontDoorWafCustomRuleObject を使用して、PUT メソッドをブロックする規則を作成します。

$put = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestMethod -OperatorProperty Equal -MatchValue PUT
$BlockPUT = New-AzFrontDoorWafCustomRuleObject -Name "BlockPUT" -RuleType MatchRule -MatchCondition $put -Action Block -Priority 2

サイズ制約に基づくカスタム規則を作成する

次の例では、Azure PowerShell を使用して、100 文字より長い URL が含まれる要求をブロックするルールを作成します。

$url = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestUri -OperatorProperty GreaterThanOrEqual -MatchValue 100
$URLOver100 = New-AzFrontDoorWafCustomRuleObject -Name "URLOver100" -RuleType MatchRule -MatchCondition $url -Action Block -Priority 3

マネージド デフォルト ルールセットの追加

次の例では、Azure PowerShell を使用して、マネージド デフォルト ルールセットを作成します。

$managedRules =  New-AzFrontDoorWafManagedRuleObject -Type DefaultRuleSet -Version 1.0

セキュリティ ポリシーを構成する

Get-AzResourceGroup を使用して、Azure Front Door プロファイルが含まれているリソース グループの名前を見つけます。 次に、New-AzFrontDoorWafPolicy を使用して、Azure Front Door プロファイルが含まれる指定のリソース グループに、前の手順で作成したルールによってセキュリティ ポリシーを構成します。

$myWAFPolicy=New-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $resourceGroupName -Customrule $AllowFromTrustedSites,$BlockPUT,$URLOver100 -ManagedRule $managedRules -EnabledState Enabled -Mode Prevention

セキュリティ ポリシー オブジェクトを既存の Azure Front Door フロントエンド ホストにリンクして、Azure Front Door のプロパティを更新します。 最初に、Get-AzFrontDoor を使用して Azure Front Door オブジェクトを取得します。 次に、Set-AZFrontDoor を使って前のステップで作成した $myWAFPolicy$resourceId にフロントエンドの WebApplicationFirewallPolicyLink プロパティを設定します。

次の例では、お客様が Azure Front Door プロファイルを作成したときに、「クイック スタート: Azure Front Door の作成」で説明されている手順に従ったと想定して、myResourceGroupFD1 という名前のリソース グループを使用しています。 また、次の例では、$frontDoorName を Azure Front Door プロファイルの名前に置き換えます。

   $FrontDoorObjectExample = Get-AzFrontDoor `
     -ResourceGroupName myResourceGroupFD1 `
     -Name $frontDoorName
   $FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $myWAFPolicy.Id
   Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]

注意

Azure Front Door フロントエンドにセキュリティ ポリシーをリンクさせるために必要な WebApplicationFirewallPolicyLink プロパティを 1 度設定するだけです。 それ以降のポリシーの更新は、自動的にフロントエンドに適用されます。

次のステップ