Použití vlastních pravidel geomatch azure WAF k vylepšení zabezpečení sítě
Firewally webových aplikací (WAF) jsou důležitým nástrojem, který pomáhá chránit webové aplikace před škodlivými útoky. Můžou filtrovat, monitorovat a zastavit webový provoz pomocí přednastavených i vlastních pravidel. Můžete vytvořit vlastní pravidlo, které WAF kontroluje pro každý požadavek, který získá. Vlastní pravidla mají vyšší prioritu než spravovaná pravidla a nejprve se kontrolují.
Jednou z nejvýkonnějších funkcí služby Azure Web Application Firewall je vlastní pravidla geomatchu. Tato pravidla umožňují spárovat webové požadavky s geografickým umístěním, odkud pocházejí. Můžete chtít zastavit žádosti z určitých míst známých pro škodlivou aktivitu nebo můžete chtít povolit žádosti z míst, která jsou pro vaši firmu důležitá. Vlastní pravidla Geomatch vám také můžou pomoct dodržovat zákony o suverenitě dat a ochraně osobních údajů tím, že omezíte přístup k vašim webovým aplikacím na základě toho, kde je lidé používají.
Parametr priority používejte moudře při použití vlastních pravidel geomatch, abyste se vyhnuli zbytečnému zpracování nebo konfliktům. Azure WAF vyhodnocuje pravidla v pořadí určeném parametrem priority, číselnou hodnotou v rozsahu od 1 do 100 s nižšími hodnotami označujícími vyšší prioritu. Priorita musí být jedinečná pro všechna vlastní pravidla. Přiřazení vyšší priority kritickým nebo konkrétním pravidlům pro zabezpečení webových aplikací a nižší prioritu pro méně důležitá nebo obecná pravidla. Tím zajistíte, že WAF použije na webový provoz nejvhodnější akce. Například scénář, ve kterém identifikujete explicitní cestu identifikátoru URI, je nejvýraznější a mělo by mít pravidlo s vyšší prioritou než jiné typy vzorů. Tím se v aplikaci chrání kritická cesta s nejvyšší prioritou a zároveň umožňuje vyhodnotit obecnější provoz napříč jinými vlastními pravidly nebo spravovanými sadami pravidel.
Aby byl odstavec srozumitelnější pro technickou cílovou skupinu pomocí současného času a aktivního hlasu, můžete ho přepsat následujícím způsobem:
Před použitím pravidel pro produkční prostředí vždy otestujte pravidla a pravidelně monitorujte jejich výkon a dopad. Pomocí těchto osvědčených postupů můžete vylepšit zabezpečení webových aplikací pomocí výkonu vlastních pravidel geomatch.
Tento článek představuje vlastní pravidla geomatchu Azure WAF a ukazuje, jak je vytvořit a spravovat pomocí webu Azure Portal, Bicep a Azure PowerShellu.
Vzory vlastních pravidel geomatch
Vlastní pravidla Geomatch umožňují splnit různé cíle zabezpečení, jako je blokování požadavků z vysoce rizikových oblastí a povolení požadavků z důvěryhodných umístění. Jsou zvlášť efektivní při zmírnění distribuovaných útoků DDoS (Denial of Service), které se snaží vaši webovou aplikaci zaplnit velkým množstvím požadavků z různých zdrojů. Pomocí vlastních pravidel geomatch můžete rychle určit a blokovat oblasti, které generují nejvíce přenosů DDoS, a zároveň udělovat přístup oprávněným uživatelům. V tomto článku se dozvíte o různých vzorech vlastních pravidel, které můžete použít k optimalizaci Azure WAF pomocí vlastních pravidel geomatch.
Scénář 1 – Blokování provozu ze všech zemí s výjimkou x
Vlastní pravidla Geomatch ukazují, že jsou užitečná, když chcete blokovat provoz ze všech zemí, a zakázat je. Pokud například vaše webová aplikace vyhovuje výhradně uživatelům v USA, můžete formulovat vlastní pravidlo geomatchu, které brání všem požadavkům, které nepocházejí z USA. Tato strategie efektivně minimalizuje prostor pro útoky vaší webové aplikace a odstrašuje neoprávněný přístup z jiných oblastí. Tato konkrétní technika využívá podmínku negingingu, která tento model provozu usnadňuje. Pokud chcete vytvořit vlastní pravidlo geomatchu, které brání provozu ze všech zemí kromě USA, projděte si následující příklady portálu, Bicep a PowerShellu:
Příklad portálu – Application Gateway
Příklad portálu – Front Door
Poznámka:
Všimněte si, že waf služby Azure Front Door používáte SocketAddr
jako proměnnou shody, nikoli RemoteAddr
. Proměnná RemoteAddr
je původní IP adresa klienta, která se obvykle odesílá prostřednictvím hlavičky X-Forwarded-For
požadavku. Proměnná SocketAddr
je zdrojová IP adresa, kterou WAF uvidí.
Příklad Bicep – Application Gateway
properties: {
customRules: [
{
name: 'GeoRule1'
priority: 10
ruleType: 'MatchRule'
action: 'Block'
matchConditions: [
{
matchVariables: [
{
variableName: 'RemoteAddr'
}
]
operator: 'GeoMatch'
negationConditon: true
matchValues: [
'US'
]
transforms: []
}
]
state: 'Enabled'
}
Příklad 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'
}
Příklad Azure PowerShellu – Application Gateway
$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
Příklad Azure PowerShellu – 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
Scénář 2 – Blokování provozu ze všech zemí s výjimkou x a y, které cílí na identifikátor URI "foo" nebo "bar"
Představte si scénář, ve kterém potřebujete použít vlastní pravidla geomatch k blokování provozu ze všech zemí s výjimkou dvou nebo více konkrétních pravidel, které cílí na konkrétní identifikátor URI. Předpokládejme, že vaše webová aplikace má specifické cesty URI určené jenom pro uživatele v USA a Kanadě. V takovém případě vytvoříte vlastní pravidlo geomatchu, které blokuje všechny požadavky, které nepocházejí z těchto zemí.
Tento model zpracovává datové části požadavků z USA a Kanady prostřednictvím spravovaných sad pravidel, zachytávání všech škodlivých útoků a blokování požadavků ze všech ostatních zemí. Tento přístup zajišťuje, že přístup k webové aplikaci bude mít jenom cílová skupina, aby nedocházelo k nežádoucímu provozu z jiných oblastí.
Pokud chcete minimalizovat potenciální falešně pozitivní výsledky, zahrňte do seznamu kód země ZZ a zachyťte IP adresy, které ještě nejsou namapované na zemi v datové sadě Azure. Tato technika používá podmínku negate pro typ geografické polohy a negate podmínku pro shodu identifikátoru URI.
Pokud chcete vytvořit vlastní pravidlo geomatchu, které blokuje provoz ze všech zemí kromě USA a Kanady na zadaný identifikátor URI, projděte si příklady portálu, Bicep a Azure PowerShellu.
Příklad portálu – Application Gateway
Příklad portálu – Front Door
Příklad Bicep – Application Gateway
properties: {
customRules: [
{
name: 'GeoRule2'
priority: 11
ruleType: 'MatchRule'
action: 'Block'
matchConditions: [
{
matchVariables: [
{
variableName: 'RemoteAddr'
}
]
operator: 'GeoMatch'
negationConditon: true
matchValues: [
'US'
'CA'
]
transforms: []
}
{
matchVariables: [
{
variableName: 'RequestUri'
}
]
operator: 'Contains'
negationConditon: false
matchValues: [
'/foo'
'/bar'
]
transforms: []
}
]
state: 'Enabled'
}
Příklad 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'
}
Příklad Azure PowerShellu – Application Gateway
$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
Příklad Azure PowerShellu – 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
Scénář 3 – Blokování provozu konkrétně ze země x
Vlastní pravidla geomatch můžete použít k blokování provozu z konkrétních zemí. Pokud například vaše webová aplikace obdrží mnoho škodlivých požadavků ze země x, vytvořte vlastní pravidlo geomatchu, které zablokuje všechny požadavky z dané země. Tím se vaše webová aplikace chrání před potenciálními útoky a snižuje zatížení prostředků. Tento vzor použijte k blokování více škodlivých nebo nepřátelských zemí. Tato technika vyžaduje podmínku shody pro vzor provozu. Pokud chcete blokovat provoz ze země x, podívejte se na následující příklady portálu, Bicep a Azure PowerShellu.
Příklad portálu – Application Gateway
Příklad portálu – Front Door
Příklad Bicep – Application Gateway
properties: {
customRules: [
{
name: 'GeoRule3'
priority: 12
ruleType: 'MatchRule'
action: 'Block'
matchConditions: [
{
matchVariables: [
{
variableName: 'RemoteAddr'
}
]
operator: 'GeoMatch'
negationConditon: false
matchValues: [
'US'
]
transforms: []
}
]
state: 'Enabled'
}
Příklad 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'
}
Příklad Azure PowerShellu – Application Gateway
$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
Příklad Azure PowerShellu – 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
Anti-patterny vlastních pravidel geomatch
Vyhněte se anti-vzorům při použití vlastních pravidel geomatch, například nastavení vlastní akce pravidla namísto allow
block
. To může mít nezamýšlené důsledky, jako je povolení provozu obejít WAF a potenciálně vystavit webovou aplikaci jiným hrozbám.
Místo použití allow
akce použijte block
akci s podmínkou negate, jak je znázorněno v předchozích vzorech. Tím se zajistí, že je povolený jenom provoz z požadovaných zemí a WAF blokuje veškerý ostatní provoz.
Scénář 4 – povolení provozu ze země x
Vyhněte se nastavení vlastního pravidla geomatch pro povolení provozu z konkrétní země. Pokud například chcete povolit provoz z USA z velké základny zákazníků, vytvoření vlastního pravidla s akcí allow
a hodnota United States
se může zdát jako řešení. Toto pravidlo ale umožňuje veškerý provoz z USA bez ohledu na to, jestli má škodlivou datovou část, nebo ne, protože allow
akce obchází další zpracování pravidel spravovaných sad pravidel. WaF navíc stále zpracovává provoz ze všech ostatních zemí a spotřebovává prostředky. To zpřístupňuje vaši webovou aplikaci škodlivým požadavkům z USA, které by waF jinak blokoval.
Scénář 5 – Povolení provozu ze všech okresů s výjimkou x
Vyhněte se nastavení akce pravidla na allow
seznam zemí, které se mají vyloučit při použití vlastních pravidel geomatch. Pokud například chcete povolit provoz ze všech zemí s výjimkou USA, kde máte podezření na škodlivou aktivitu, může mít tento přístup nezamýšlené důsledky. Může umožnit provoz z neověřených nebo nebezpečných zemí nebo zemí s nízkými nebo žádnými standardy zabezpečení a vystavit webovou aplikaci potenciálním ohrožením zabezpečení nebo útokům. allow
Použití akce pro všechny země s výjimkou USA označuje WAF k zastavení zpracování datových částí žádostí proti spravovaným sadám pravidel. Po zpracování vlastního pravidla allow
přestane být vyhodnocení všech pravidel ukončeno a aplikace se zpřístupňuje nežádoucím škodlivým útokům.
Místo toho použijte přísnější a specifickou akci pravidla, jako je například blok, a zadejte seznam zemí, které se mají povolit s negátovou podmínkou. Tím se zajistí, že přístup k webové aplikaci bude mít přístup jenom z důvěryhodných a ověřených zdrojů a zároveň blokuje jakýkoli podezřelý nebo nežádoucí provoz.