Настройка правила ограничения IP-адресов с помощью WAF для Azure Front Door

В этой статье показано, как настроить правила ограничения IP-адресов в брандмауэре веб-приложения (WAF) для Azure Front Door с помощью портал Azure, Azure CLI, Azure PowerShell или шаблона Azure Resource Manager.

Правило управления доступом на основе IP-адресов — это настраиваемое правило WAF, позволяющее управлять доступом к веб-приложениям. Правило указывает список IP-адресов или диапазонов IP-адресов в формате CIDR( бесклассовая маршрутизация Inter-Domain).

Существует два типа переменных соответствия в сопоставлении IP-адресов: RemoteAddr и SocketAddr. Переменная RemoteAddr — это исходный IP-адрес клиента, который обычно отправляется через X-Forwarded-For заголовок запроса. Переменная SocketAddr — это исходный IP-адрес, который видит WAF. Если пользователь находится за прокси-сервером, SocketAddr часто является адресом прокси-сервера.

По умолчанию веб-приложение доступно из Интернета. Если вы хотите ограничить доступ к клиентам из списка известных IP-адресов или диапазонов IP-адресов, можно создать правило сопоставления IP-адресов, содержащее список IP-адресов в качестве соответствующих значений и задающее оператору Not значение (отмена имеет значение true), а для действия — значение Block. После применения правила ограничения IP-адресов запросы, поступающие с адресов, не входящих в список разрешенных, будут получать ответ 403 Forbidden.

Настройка политики WAF с помощью портала Azure

Выполните следующие действия, чтобы настроить политику WAF с помощью портал Azure.

Предварительные требования

Создайте профиль Azure Front Door, следуя инструкциям, приведенным в статье Краткое руководство. Создание экземпляра Azure Front Door для глобального веб-приложения высокой доступности.

Создание политики WAF

  1. На портале Azure выберите Создать ресурс. Введите брандмауэр веб-приложения в поле поиска службы поиска и Marketplace и нажмите клавишу ВВОД. Затем выберите Брандмауэр веб-приложений (WAF).

  2. Нажмите кнопку создания.

  3. На странице Создание политики WAF используйте следующие значения, чтобы заполнить вкладку Основные сведения .

    Параметр Значение
    Объект политики Глобальный WAF (Front Door).
    Уровень front door Выберите Премиум или Стандартный, чтобы соответствовать уровню Azure Front Door.
    Подписка Выберите свою подписку.
    Группа ресурсов Выберите группу ресурсов, в которой находится экземпляр Azure Front Door.
    Имя политики Введите имя политики.
    Состояние политики Выбрано.
    Режим политики Предотвращение.
  4. Выберите Далее: управляемые правила.

  5. Выберите Далее: параметры политики.

  6. На вкладке Параметры политики введите You'been blocked! (Вы заблокированы! ) в поле Блокировать текст ответа , чтобы увидеть, что ваше настраиваемое правило действует.

  7. Выберите Далее: настраиваемые правила.

  8. Выберите Добавить настраиваемое правило.

  9. На странице Добавление настраиваемого правила используйте следующие тестовые значения, чтобы создать пользовательское правило.

    Параметр Значение
    Имя настраиваемого правила FdWafCustRule
    Состояние Активировано
    Тип правила Соответствует
    Приоритет 100
    Тип соответствия IP-адрес
    Переменная сопоставления SocketAddr
    Операция Не содержит
    IP-адрес или диапазон адресов 10.10.10.0/24
    Следующее действие Запретить трафик

    Пользовательское правило

    Выберите Добавить.

  10. Выберите Далее: связь.

  11. Выберите Связать профиль Front door.

  12. В поле Внешний профиль выберите профиль внешнего интерфейса.

  13. В поле Домен выберите домен.

  14. Выберите Добавить.

  15. Выберите Review + create (Просмотреть и создать).

  16. После того, как проверка политики завершится, выберите Создать.

Проверка политики WAF

  1. После завершения развертывания политики WAF перейдите к имени внешнего узла Azure Front Door.

  2. Вы должны увидеть настроенное вами сообщение о блокировке.

    Проверка правила WAF

    Примечание

    В настраиваемом правиле был намеренно использован частный IP-адрес, чтобы гарантировать срабатывание этого правила. В фактическом развертывании создайте правила разрешения и запрета , используя IP-адреса для конкретной ситуации.

Настройка политики WAF с помощью интерфейса командной строки Azure

Выполните следующие действия, чтобы настроить политику WAF с помощью Azure CLI.

Предварительные требования

Прежде чем приступить к настройке политики ограничения IP-адресов, настройте среду интерфейса командной строки и создайте профиль Azure Front Door.

Настройка среды интерфейса командной строки Azure

  1. Установите Azure CLI или используйте Azure Cloud Shell. Azure Cloud Shell — это бесплатная оболочка Bash, которую можно запускать непосредственно на портале Azure. Она включает предварительно установленный интерфейс Azure CLI и настроена для использования с вашей учетной записью. Нажмите кнопку Попробовать в следующих командах интерфейса командной строки. Затем войдите в учетную запись Azure в открывшемся сеансе Cloud Shell. После начала сеанса введите команду az extension add --name front-door, чтобы добавить расширение Azure Front Door.
  2. При локальном использовании интерфейса командной строки в Bash войдите в Azure с помощью команды az login.

Создание профиля Azure Front Door

Создайте профиль Azure Front Door, следуя инструкциям, приведенным в статье Краткое руководство. Создание экземпляра Azure Front Door для глобального веб-приложения высокой доступности.

Создание политики WAF

Создайте политику WAF с помощью команды az network front-door waf-policy create. В следующем примере замените имя политики IPAllowPolicyExampleCLI на другое, уникальное имя политики.

az network front-door waf-policy create \
  --resource-group <resource-group-name> \
  --subscription <subscription ID> \
  --name IPAllowPolicyExampleCLI

Добавление настраиваемого правила управления доступом на основе IP-адресов

Используйте команду az network front-door waf-policy custom-rule create , чтобы добавить пользовательское правило управления доступом к IP-адресам для созданной политики WAF.

В примерах ниже сделайте следующее:

  • Замените IPAllowPolicyExampleCLI на имя вашей уникальной политики, созданной ранее.
  • Замените ip-address-range-1, ip-address-range-2 на ваши диапазоны.

В политике, созданной на предыдущем шаге, сначала создайте правило разрешения доступа для IP-адресов.

Примечание

--defer является обязательным, так как правило должно иметь условие соответствия, которое будет добавлено на следующем шаге.

az network front-door waf-policy rule create \
  --name IPAllowListRule \
  --priority 1 \
  --rule-type MatchRule \
  --action Block \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI --defer

Затем добавьте условие соответствия в правило:

az network front-door waf-policy rule match-condition add \
--match-variable SocketAddr \
--operator IPMatch \
--values "ip-address-range-1" "ip-address-range-2" \
--negate true \
--name IPAllowListRule \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI

Поиск идентификатора политики WAF

Для поиска политики WAF по идентификатору используйте команду az network front-door waf-policy show. В примере ниже замените IPAllowPolicyExampleCLI на имя вашей уникальной политики, созданной ранее.

az network front-door  waf-policy show \
  --resource-group <resource-group-name> \
  --name IPAllowPolicyExampleCLI

Для идентификатора политики установите значение идентификатора WebApplicationFirewallPolicyLink службы Azure Front Door, используя команду az network front-door update. Замените IPAllowPolicyExampleCLI на имя вашей уникальной политики, созданной ранее.

az network front-door update \
  --set FrontendEndpoints[0].WebApplicationFirewallPolicyLink.id=/subscriptions/<subscription ID>/resourcegroups/resource-group-name/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/IPAllowPolicyExampleCLI \
  --name <frontdoor-name> \
  --resource-group <resource-group-name>

В этом примере политика WAF применяется к FrontendEndpoints[0]. Вы можете связать политику WAF с любыми внешними интерфейсами.

Примечание

Чтобы связать политику WAF с внешним интерфейсом Azure Front Door, необходимо задать WebApplicationFirewallPolicyLink свойство только один раз. Последующие изменения в политике будут применяться к внешнему интерфейсу автоматически.

Настройка политики WAF с помощью Azure PowerShell

Выполните следующие действия, чтобы настроить политику WAF с помощью Azure PowerShell.

Предварительные требования

Прежде чем приступить к настройке политики ограничения IP-адресов, настройте среду PowerShell и создайте профиль Azure Front Door.

Настройка среды PowerShell

В Azure PowerShell доступен набор командлетов, которые используют модель Azure Resource Manager для управления ресурсами Azure.

Вы можете установить Azure PowerShell на локальном компьютере и использовать его в любом сеансе PowerShell. Следуйте инструкциям на странице, чтобы войти в PowerShell с помощью учетных данных Azure, а затем установить модуль Az.

  1. Подключитесь к Azure с помощью следующей команды, а затем используйте интерактивное диалоговое окно для входа.

    Connect-AzAccount
    
  2. Перед установкой модуля Azure Front Door убедитесь, что у вас установлена текущая версия модуля PowerShellGet. Выполните следующую команду, а затем снова откройте PowerShell.

    Install-Module PowerShellGet -Force -AllowClobber
    
  3. Установите модуль Az.FrontDoor с помощью следующей команды:

    Install-Module -Name Az.FrontDoor
    

Создание профиля Azure Front Door

Создайте профиль Azure Front Door, следуя инструкциям из раздела Краткое руководство. Создание службы Front Door для глобального веб-приложения высокого уровня доступности.

Определение условия соответствия IP-адресов

Чтобы определить условие соответствия IP-адресов, используйте команду New-AzFrontDoorWafMatchConditionObject. В примере ниже замените ip-address-range-1 и ip-address-range-2 на ваши диапазоны.

$IPMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable  SocketAddr `
-OperatorProperty IPMatch `
-MatchValue "ip-address-range-1", "ip-address-range-2"
-NegateCondition 1

Создание настраиваемого правила разрешения доступа для IP-адресов

Используйте команду New-AzFrontDoorWafCustomRuleObject, чтобы определить действие и задать приоритет. В следующем примере запросы, не от ip-адресов клиентов, соответствующих списку, блокируются.

$IPAllowRule = New-AzFrontDoorWafCustomRuleObject `
-Name "IPAllowRule" `
-RuleType MatchRule `
-MatchCondition $IPMatchCondition `
-Action Block -Priority 1

Настройка политики WAF

С помощью команды Get-AzResourceGroup найдите имя группы ресурсов, содержащей профиль Azure Front Door. Затем с помощью команды New-AzFrontDoorWafPolicy настройте политику WAF с правилом для IP-адресов.

  $IPAllowPolicyExamplePS = New-AzFrontDoorWafPolicy `
    -Name "IPRestrictionExamplePS" `
    -resourceGroupName <resource-group-name> `
    -Customrule $IPAllowRule`
    -Mode Prevention `
    -EnabledState Enabled

Совет

Для существующей политики WAF можно использовать Update-AzFrontDoorWafPolicy , чтобы обновить политику.

Свяжите объект политики WAF с существующим узлом внешнего интерфейса и обновите свойства Azure Front Door. Сначала получите объект Azure Front Door с помощью команды Get-AzFrontDoor. Затем задайте WebApplicationFirewallPolicyLink для свойства идентификатор ресурса , созданного $IPAllowPolicyExamplePSна предыдущем шаге, с помощью команды Set-AzFrontDoor .

  $FrontDoorObjectExample = Get-AzFrontDoor `
    -ResourceGroupName <resource-group-name> `
    -Name $frontDoorName
  $FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $IPBlockPolicy.Id
  Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]

Примечание

В этом примере политика WAF применяется к FrontendEndpoints[0]. Вы можете связать политику WAF с любыми внешними интерфейсами. Чтобы связать политику WAF с внешним интерфейсом Azure Front Door, необходимо задать WebApplicationFirewallPolicyLink свойство только один раз. Последующие изменения в политике будут применяться к внешнему интерфейсу автоматически.

Настройка политики WAF с помощью шаблона Resource Manager

Шаблон, который создает политику Azure Front Door и политику WAF с настраиваемыми правилами ограничения IP-адресов, можно посмотреть на сайте GitHub.

Дальнейшие действия

Узнайте, как создать профиль Azure Front Door.