Использование пользовательских правил геоматча Azure WAF для повышения безопасности сети
Брандмауэры веб-приложений (WAFs) — это важное средство, которое помогает защитить веб-приложения от вредоносных атак. Они могут фильтровать, отслеживать и останавливать веб-трафик с помощью предварительно заданных и пользовательских правил. Вы можете сделать собственное правило, которое WAF проверяет для каждого запроса, который он получает. Пользовательские правила имеют более высокий приоритет, чем управляемые правила, и сначала проверяются.
Одним из самых мощных функций Azure Брандмауэр веб-приложений является геоматч настраиваемые правила. Эти правила позволяют сопоставлять веб-запросы с географическим расположением, откуда они приходят. Возможно, вы хотите остановить запросы из определенных мест, известных для вредной деятельности, или вы можете разрешить запросы из мест, важных для вашего бизнеса. Пользовательские правила geomatch также могут помочь вам следовать законам о независимости данных и конфиденциальности путем ограничения доступа к веб-приложениям на основе расположения пользователей, использующих их.
Используйте параметр приоритета мудро при использовании пользовательских правил геоматч, чтобы избежать ненужных операций обработки или конфликтов. Azure WAF оценивает правила в порядке, определяемом параметром приоритета, числовым значением от 1 до 100 с меньшими значениями, указывающими на более высокий приоритет. Приоритет должен быть уникальным для всех пользовательских правил. Назначьте более высокий приоритет критическим или конкретным правилам безопасности веб-приложения и более низким приоритетом менее важным или общим правилам. Это гарантирует, что WAF применяет наиболее подходящие действия к веб-трафику. Например, сценарий, в котором вы определяете явный ПУТЬ URI, является наиболее конкретным и должен иметь более высокое правило приоритета, чем другие типы шаблонов. Это защищает критически важный путь к приложению с наивысшим приоритетом, позволяя оценить более универсальный трафик в других пользовательских правилах или управляемых наборах правил.
Чтобы упростить понимание абзаца для технической аудитории с помощью текущей напряженной и активной голосовой связи, вы можете переписать его следующим образом:
Всегда тестируйте правила перед применением их к рабочей среде и регулярно отслеживайте их производительность и влияние. Следуя этим рекомендациям, вы можете улучшить безопасность веб-приложений с помощью возможностей пользовательских правил геоматч.
В этой статье представлены пользовательские правила геоматч Azure WAF и показано, как создавать и управлять ими с помощью портал Azure, Bicep и Azure PowerShell.
Шаблоны настраиваемых правил geomatch
Пользовательские правила geomatch позволяют выполнять различные цели безопасности, например блокировать запросы из областей высокого риска и разрешать запросы из надежных расположений. Они особенно эффективны в устранении распределенных атак типа "отказ в обслуживании" (DDoS), которые стремятся обундировать веб-приложение множеством запросов из различных источников. С помощью пользовательских правил геоматч можно быстро определить и заблокировать регионы, создающие большую часть трафика DDoS, при этом доступ к законным пользователям по-прежнему предоставляется. В этой статье вы узнаете о различных пользовательских шаблонах правил, которые можно использовать для оптимизации Azure WAF с помощью пользовательских правил геоматча.
Сценарий 1. Блокировка трафика со всех стран или регионов, кроме x
Пользовательские правила геоматч оказываются полезными, если вы стремитесь заблокировать трафик со всех стран или регионов, за исключением одного. Например, если веб-приложение обслуживает исключительно пользователей в США, можно сформулировать пользовательское правило геоматч, которое препятствует всем запросам, не исходящим из США. Эта стратегия эффективно сводит к минимуму область атаки веб-приложения и сдерживает несанкционированный доступ из других регионов. Этот конкретный метод использует отрицающее условие для упрощения этого шаблона трафика. Для создания пользовательского правила геоматча, которое препятствует трафику из всех стран или регионов США, см. следующие примеры портала, Bicep и PowerShell:
Пример портала — Шлюз приложений
Пример портала — Front Door
Примечание.
Обратите внимание на WAF Azure Front Door, вы используете SocketAddr
в качестве переменной соответствия, а не RemoteAddr
. Переменная RemoteAddr
— это исходный IP-адрес клиента, который обычно отправляется с помощью заголовка X-Forwarded-For
запроса. Переменная SocketAddr
— это исходный IP-адрес, который отображает WAF.
Пример Bicep — Шлюз приложений
properties: {
customRules: [
{
name: 'GeoRule1'
priority: 10
ruleType: 'MatchRule'
action: 'Block'
matchConditions: [
{
matchVariables: [
{
variableName: 'RemoteAddr'
}
]
operator: 'GeoMatch'
negationCondition: true
matchValues: [
'US'
]
transforms: []
}
]
state: 'Enabled'
}
Пример Bicep — Front Door
properties: {
customRules: {
rules: [
{
name: 'GeoRule1'
enabledState: 'Enabled'
priority: 10
ruleType: 'MatchRule'
matchConditions: [
{
matchVariable: 'SocketAddr'
operator: 'GeoMatch'
negateCondition: true
matchValue: [
'US'
]
transforms: []
}
]
action: 'Block'
}
Пример Azure PowerShell — Шлюз приложений
$RGname = "rg-waf "
$policyName = "waf-pol"
$variable = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable -Operator GeoMatch -MatchValue "US" -NegationCondition $true
$rule = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule1 -Priority 10 -RuleType MatchRule -MatchCondition $condition -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy
Пример Azure PowerShell — Front Door
$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue "US" -NegateCondition $true
$customRuleObject = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule1" -RuleType MatchRule -MatchCondition $matchCondition -Action Block -Priority 10
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject
Сценарий 2. Блокировка трафика со всех стран или регионов, кроме x и y, предназначенных для URI foo или bar.
Рассмотрим сценарий, в котором необходимо использовать пользовательские правила геоматча для блокировки трафика со всех стран или регионов, за исключением двух или более конкретных, предназначенных для определенного URI. Предположим, что веб-приложение имеет определенные пути URI, предназначенные только для пользователей в США и Канаде. В этом случае создается настраиваемое правило геоматч, которое блокирует все запросы, не исходящие из этих стран или регионов.
Этот шаблон обрабатывает запрос полезных данных из США и Канады через управляемые наборы правил, перехватыв любые вредоносные атаки, блокируя запросы со всех других стран или регионов. Этот подход гарантирует, что только целевая аудитория может получить доступ к веб-приложению, избегая нежелательного трафика из других регионов.
Чтобы свести к минимуму потенциальные ложные срабатывания, включите код страны в список для записи IP-адресов, которые еще не сопоставлены с страной или регионом в наборе данных Azure. Этот метод использует негейтное условие для типа географического расположения и негейтового условия для сопоставления URI.
Чтобы создать пользовательское правило геоматч, которое блокирует трафик со всех стран или регионов, кроме США и Канады, к указанному URI, см. примеры портала, Bicep и Azure PowerShell.
Пример портала — Шлюз приложений
Пример портала — Front Door
Пример Bicep — Шлюз приложений
properties: {
customRules: [
{
name: 'GeoRule2'
priority: 11
ruleType: 'MatchRule'
action: 'Block'
matchConditions: [
{
matchVariables: [
{
variableName: 'RemoteAddr'
}
]
operator: 'GeoMatch'
negationCondition: true
matchValues: [
'US'
'CA'
]
transforms: []
}
{
matchVariables: [
{
variableName: 'RequestUri'
}
]
operator: 'Contains'
negationCondition: false
matchValues: [
'/foo'
'/bar'
]
transforms: []
}
]
state: 'Enabled'
}
Пример Bicep — Front Door
properties: {
customRules: {
rules: [
{
name: 'GeoRule2'
enabledState: 'Enabled'
priority: 11
ruleType: 'MatchRule'
matchConditions: [
{
matchVariable: 'SocketAddr'
operator: 'GeoMatch'
negateCondition: true
matchValue: [
'US'
'CA'
]
transforms: []
}
{
matchVariable: 'RequestUri'
operator: 'Contains'
negateCondition: false
matchValue: [
'/foo'
'/bar'
]
transforms: []
}
]
action: 'Block'
}
Пример Azure PowerShell — Шлюз приложений
$RGname = "rg-waf "
$policyName = "waf-pol"
$variable1a = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition1a = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable1a -Operator GeoMatch -MatchValue @(“US”, “CA”) -NegationCondition $true
$variable1b = New-AzApplicationGatewayFirewallMatchVariable -VariableName RequestUri
$condition1b = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable1b -Operator Contains -MatchValue @(“/foo”, “/bar”) -NegationCondition $false
$rule1 = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule2 -Priority 11 -RuleType MatchRule -MatchCondition $condition1a, $condition1b -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule1)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy
Пример Azure PowerShell — Front Door
$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition1a = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue @(“US”, "CA") -NegateCondition $true
$matchCondition1b = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestUri -OperatorProperty Contains -MatchValue @(“/foo”, “/bar”) -NegateCondition $false
$customRuleObject1 = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule2" -RuleType MatchRule -MatchCondition $matchCondition1a, $matchCondition1b -Action Block -Priority 11
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject1
Сценарий 3. Блокировка трафика конкретно из страны или региона x
Пользовательские правила геоматч можно использовать для блокировки трафика из определенных стран или регионов. Например, если веб-приложение получает множество вредоносных запросов из страны или региона X, создайте настраиваемое правило геоматч, чтобы заблокировать все запросы из этой страны или региона. Это защищает веб-приложение от потенциальных атак и снижает нагрузку ресурсов. Примените этот шаблон, чтобы заблокировать несколько вредоносных или враждебных стран или регионов. Для этого метода требуется условие соответствия для шаблона трафика. Сведения о блокировке трафика из страны или региона X см. на следующем портале, Bicep и Azure PowerShell.
Пример портала — Шлюз приложений
Пример портала — Front Door
Пример Bicep — Шлюз приложений
properties: {
customRules: [
{
name: 'GeoRule3'
priority: 12
ruleType: 'MatchRule'
action: 'Block'
matchConditions: [
{
matchVariables: [
{
variableName: 'RemoteAddr'
}
]
operator: 'GeoMatch'
negationCondition: false
matchValues: [
'US'
]
transforms: []
}
]
state: 'Enabled'
}
Пример Bicep — Front Door
properties: {
customRules: {
rules: [
{
name: 'GeoRule3'
enabledState: 'Enabled'
priority: 12
ruleType: 'MatchRule'
matchConditions: [
{
matchVariable: 'SocketAddr'
operator: 'GeoMatch'
negateCondition: false
matchValue: [
'US'
]
transforms: []
}
]
action: 'Block'
}
Пример Azure PowerShell — Шлюз приложений
$RGname = "rg-waf "
$policyName = "waf-pol"
$variable2 = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition2 = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable2 -Operator GeoMatch -MatchValue "US" -NegationCondition $false
$rule2 = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule3 -Priority 12 -RuleType MatchRule -MatchCondition $condition2 -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule2)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy
Пример Azure PowerShell — Front Door
$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition2 = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue "US" -NegateCondition $false
$customRuleObject2 = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule3" -RuleType MatchRule -MatchCondition $matchCondition2 -Action Block -Priority 12
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject2
Геоматч настраиваемых шаблонов правил
Избегайте защиты от шаблонов при использовании пользовательских правил геоматча, например при задании действия пользовательского правила allow
вместо block
. Это может иметь непреднамеренные последствия, например, позволяя трафику обходить WAF и потенциально предоставлять веб-приложению другие угрозы.
Вместо использования allow
действия используйте block
действие с неуготным условием, как показано в предыдущих шаблонах. Это гарантирует, что разрешен только трафик из нужных стран или регионов, а WAF блокирует весь другой трафик.
Сценарий 4. Разрешить трафик из страны или региона x
Избегайте настройки настраиваемого правила геоматча, чтобы разрешить трафик из определенной страны или региона. Например, если вы хотите разрешить трафик из США из-за большой клиентской базы, создание настраиваемого правила с действием allow
и значение United States
может показаться решением. Однако это правило разрешает весь трафик из США независимо от того, имеет ли он вредоносные полезные данные или нет, так как allow
действие проходит дальнейшую обработку правил управляемых наборов правил. Кроме того, WAF по-прежнему обрабатывает трафик из всех других стран или регионов, потребляя ресурсы. Это предоставляет веб-приложению вредоносные запросы из США, что WAF в противном случае будет блокироваться.
Сценарий 5. Разрешить трафик из всех округов, кроме x
Избегайте настройки действия allow
правила и указания списка стран или регионов, которые следует исключить при использовании пользовательских правил геоматча. Например, если вы хотите разрешить трафик со всех стран или регионов, кроме США, где вы подозреваете вредоносное действие, этот подход может иметь непредвиденные последствия. Это может позволить трафику из небезопасных или небезопасных стран, регионов или стран или регионов с низким уровнем безопасности или отсутствием стандартов безопасности, предоставляя веб-приложению потенциальные уязвимости или атаки. allow
Использование действия для всех стран или регионов, кроме США, указывает WAF, чтобы прекратить обработку полезных данных запросов на управляемые наборы правил. Все вычисление правил прекращается после обработки пользовательского правила allow
, предоставляя приложению нежелательные вредоносные атаки.
Вместо этого используйте более строгое и конкретное действие правила, например блокировку, и укажите список стран или регионов, чтобы разрешить с неустранительным условием. Это гарантирует, что только трафик из доверенных и проверенных источников может получить доступ к веб-приложению, блокируя любой подозрительный или нежелательный трафик.