Web アプリケーション ファイアウォール (WAF) ポリシーでは、要求が Azure Front Door に到着したときに必要な検査が定義されています。
この記事では、Azure Front Door StandardまたはPremium向けに、カスタムルールを含み、Azure管理のデフォルトルールセットが有効化されたWAFポリシーの設定方法を紹介します。 カスタムルールはスタンダードとプレミアムの両方に適用されます。 マネージドルールセット、例えばデフォルトルールセットはプレミアムティアが必要です。
カスタムルールとデフォルトルールセットは任意です。必要に応じて、いずれか一方または両方を含めても構いません。 WAFポリシーモード(検出または防止)は、後のステップでポリシーを作成するときに設定します。
前提条件
アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
Azure Front Door Standard または Premium プロファイル。 作成する必要がある場合は、クイックスタート: PowerShell を使用して Azure Front Door Standard/Premium プロファイルを作成するを参照してください。 この記事の例は、マネージドルールセットがプレミアム層を必要とするため、プレミアムプロファイルを使用しています。
Azure Cloud Shell または Azure PowerShell。
この記事の手順では、Azure Cloud Shell で Azure PowerShell コマンドレットを対話型で実行します。 Cloud Shell でコマンドレットを実行するには、コード ブロックの右上隅にある [Cloud Shell を開く ] を選択します。 [コピー] を選択してコードをコピーし、続いて Cloud Shell に貼り付けて実行します。 Azure ポータル内からCloud Shellを実行することもできます。
Azure PowerShell をローカルにインストールしてコマンドレットを実行することもできます。 PowerShell をローカルで実行している場合は、Connect-AzAccount コマンドレットを使用して Azure にサインインします。
Az.CdnとAz.FrontDoorPowerShellモジュールです。Az.Cdnモジュールは標準およびプレミアムリソースAzure Front Door、Az.FrontDoorモジュールはWAFリソースを扱うのに使います。 以下のコマンドを実行して両方のモジュールをインストールします:Install-Module -Name Az.Cdn Install-Module -Name Az.FrontDoor
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 Front Door Premiumで利用可能です。 以下の例は、Azure PowerShellを用いて管理されたデフォルトルールセットオブジェクトを作成します。
$managedRules = New-AzFrontDoorWafManagedRuleObject -Type Microsoft_DefaultRuleSet -Version 2.2
注
マネージドルールセットはAzure Front Door Premiumが必要です。 Azure Front Door Standardはカスタムルールのみをサポートしています。 この例はバージョン2.2 Microsoft_DefaultRuleSet 使っています。 利用可能なすべてのバージョンについては、Web Application Firewall DRSのルールグループおよびルールをご覧ください。
WAF ポリシーを作成する
New-AzFrontDoorWafPolicyを使って、前述の手順で管理されたカスタムルールと管理されたデフォルトルールセットを含むWAFポリシーを作成します。
-Skuを管理されたルールを含めるためにPremium_AzureFrontDoorに設定するか、カスタムルールのみをStandard_AzureFrontDoorするように設定してください。
$myWAFPolicy = New-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $resourceGroupName -Sku Premium_AzureFrontDoor -CustomRule $AllowFromTrustedSites,$BlockPUT,$URLOver100 -ManagedRule $managedRules -EnabledState Enabled -Mode Prevention
WAFポリシーをエンドポイントに関連付けてください
Azure Front Door StandardおよびPremiumでは、Azure Front Doorプロファイル上でセキュリティポリシーを作成することで、エンドポイントにWAFポリシーを関連付けます。 セキュリティポリシーは、WAFポリシーをWAFで保護したいドメインと関連付けます。
Get-AzFrontDoorCdnEndpointを使ってエンドポイントを取得し、リソースグループ、プロファイル、エンドポイントの名前を自分の名前に置き換えてください。 次に New-AzFrontDoorCdnSecurityPolicy を使って、エンドポイントのデフォルトホスト名をWAFポリシーに関連付けます。
$frontDoorEndpoint = Get-AzFrontDoorCdnEndpoint -ResourceGroupName $resourceGroupName -ProfileName $frontDoorProfileName -EndpointName $frontDoorEndpointName
$securityPolicyAssociation = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallAssociationObject `
-PatternsToMatch @("/*") `
-Domain @(@{"Id"=$($frontDoorEndpoint.Id)})
$securityPolicyParameters = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallParametersObject `
-Association $securityPolicyAssociation `
-WafPolicyId $myWAFPolicy.Id
New-AzFrontDoorCdnSecurityPolicy `
-Name 'MySecurityPolicy' `
-ProfileName $frontDoorProfileName `
-ResourceGroupName $resourceGroupName `
-Parameter $securityPolicyParameters
注
セキュリティポリシーは、その関連付けられたドメインに適用されます。 より多くのドメインを保護するには、それらをアソシエーションに追加するか、追加のセキュリティポリシーを作成しましょう。