Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Application Gateway - firewall webových aplikací (WAF) poskytuje ochranu pro webové aplikace. Tento článek popisuje konfiguraci seznamů vyloučení WAF. Tato nastavení se nacházejí v zásadách WAF přidružených k vaší službě Application Gateway. Další informace o zásadách WAF najdete v tématu Azure Web Application Firewall ve službě Azure Application Gateway a Vytvoření zásad pro Web Application Firewall pro službu Application Gateway.
WaF někdy může blokovat požadavek, který chcete pro vaši aplikaci povolit. Seznamy vyloučení WAF umožňují vynechat určité atributy požadavků z vyhodnocení WAF. Zbytek požadavku se vyhodnotí jako normální.
Služba Active Directory například vloží tokeny, které se používají k ověřování. Při použití v hlavičce požadavku můžou tyto tokeny obsahovat speciální znaky, které můžou aktivovat falešně pozitivní detekci z pravidel WAF. Přidáním hlavičky do seznamu vyloučení můžete nakonfigurovat WAF tak, aby hlavičku ignorovala, ale WAF stále vyhodnocuje zbytek požadavku.
Můžete nakonfigurovat vyloučení, která se použijí při vyhodnocování konkrétních pravidel WAF, nebo použít globálně pro vyhodnocení všech pravidel WAF. Pravidla vyloučení platí pro celou webovou aplikaci.
Identifikace atributů požadavku, které se mají vyloučit
Při konfiguraci vyloučení WAF je nutné zadat atributy požadavku, které by měly být vyloučeny z vyhodnocení WAF. Vyloučení WAF můžete nakonfigurovat pro následující atributy požadavku:
- Záhlaví žádosti
- Vyžádání souborů cookie
- Název atributu požadavku (args) lze přidat jako prvek vyloučení, například:
- Název pole formuláře
- Entita JSON
- Argumenty řetězce dotazu URL
Můžete zadat přesnou shodu hlavičky požadavku, textu, souboru cookie nebo atributu řetězce dotazu. Nebo můžete zadat částečné shody. Ke konfiguraci vyloučení použijte následující operátory:
- Rovná se: Tento operátor se používá k přesnému porovnání. Například pro výběr hlavičky s názvem bearerToken použijte operátor equals se selektorem nastaveným jako bearerToken.
- Začíná: Tento operátor odpovídá všem polím, která začínají zadanou hodnotou selektoru.
- Končí na: Tento operátor odpovídá všem polím v požadavku, která končí zadanou hodnotou selektoru.
- Obsahuje: Tento operátor odpovídá všem polím požadavku, která obsahují zadanou hodnotu selektoru.
- Rovná se kterémukoliv: Tento operátor odpovídá všem polím žádosti. * je hodnota selektoru. Tento operátor byste například použili v případě, že neznáte přesné hodnoty dané proměnné shody, ale chcete se ujistit, že provoz požadavku bude stále vyloučen z vyhodnocení pravidel.
Při zpracování vyloučení modul WAF provádí porovnání s rozlišováním nebo bez rozlišování velikosti písmen na základě následující tabulky. Regulární výrazy navíc nejsou povolené, protože selektory a těla požadavků XML nejsou podporovány.
| Část těla žádosti | CRS 3.1 a starší | CRS 3.2 a novější |
|---|---|---|
| Záhlaví* | Nezáleží na velikosti písmen | Nezáleží na velikosti písmen |
| Sušenka* | Nezáleží na velikosti písmen | Rozlišovat malá a velká písmena |
| Řetězec dotazu* | Nezáleží na velikosti písmen | Rozlišovat malá a velká písmena |
| Tělo kódované pomocí URL | Nezáleží na velikosti písmen | Rozlišovat malá a velká písmena |
| Tělo JSON | Nezáleží na velikosti písmen | Rozlišovat malá a velká písmena |
| Tělo XML | Nepodporuje se | Nepodporuje se |
| Vícedílné tělo | Nezáleží na velikosti písmen | Rozlišovat malá a velká písmena |
*V závislosti na vaší aplikaci můžou být názvy a hodnoty hlaviček, souborů cookie a dotazů rozlišovat malá a velká písmena nebo nerozlišují.
Poznámka:
Další informace a pomoc s řešením potíží najdete v tématu Řešení potíží s WAF.
Atributy požadavku podle klíčů a hodnot
Při konfiguraci vyloučení je potřeba určit, jestli chcete vyloučit klíč nebo hodnotu z vyhodnocení WAF.
Předpokládejme například, že vaše požadavky zahrnují tuto hlavičku:
My-Header: 1=1
Hodnota hlavičky (1=1) může být detekována jako útok WAFem. Pokud ale víte, že se jedná o legitimní hodnotu pro váš scénář, můžete nakonfigurovat vyloučení pro hodnotu hlavičky. Uděláte to tak, že použijete shodnou proměnnou RequestHeaderValues, operátor obsahuje a selektor (My-Header). Tato konfigurace zastaví vyhodnocení všech hodnot hlavičky My-Header.
Poznámka:
Atributy požadavku podle klíče a hodnot jsou k dispozici pouze v CRS 3.2 nebo novějším a Bot Manageru 1.0 nebo novějším.
Atributy požadavku podle názvů fungují stejně jako atributy požadavku podle hodnot a jsou zahrnuty pro zpětnou kompatibilitu s CRS 3.1 a staršími verzemi. Doporučujeme používat atributy požadavku podle hodnot místo atributů podle názvů. Například použijte RequestHeaderValues místo RequestHeaderNames.
Naproti tomu pokud WAF zjistí název hlavičky (My-Header) jako útok, můžete nakonfigurovat vyloučení pro klíč hlavičky pomocí atributu požadavku RequestHeaderKeys. Atribut RequestHeaderKeys je k dispozici pouze v CRS 3.2 nebo novějším a Bot Manageru 1.0 nebo novějším.
Příklady atributů požadavku
Následující tabulka uvádí několik příkladů, jak můžete strukturovat vyloučení pro danou proměnnou shody.
| Atribut k vyloučení | matchVariable | selektorMatchOperator | Příklad selektoru | Příklad požadavku | Co se vyloučí |
|---|---|---|---|---|---|
| Řetězec dotazu | RequestArgKeys | Je rovno | /etc/passwd |
Identifikátor URI: http://localhost:8080/?/etc/passwd=test |
/etc/passwd |
| Řetězec dotazu | RequestArgKeys | Rovná se Kterýkoli | – | Identifikátor URI: http://localhost:8080/?/etc/passwd=test&.htaccess=test2 |
/etc/passwd a .htaccess |
| Řetězec dotazu | RequestArgNames | Je rovno | text |
Identifikátor URI: http://localhost:8080/?text=/etc/passwd |
/etc/passwd |
| Řetězec dotazu | RequestArgNames | Rovná se Kterýkoli | – | Identifikátor URI: http://localhost:8080/?text=/etc/passwd&text2=.cshrc |
/etc/passwd a .cshrc |
| Řetězec dotazu | Hodnoty argumentů žádosti | Je rovno | text |
Identifikátor URI: http://localhost:8080/?text=/etc/passwd |
/etc/passwd |
| Řetězec dotazu | Hodnoty argumentů žádosti | Rovná se Kterýkoli | – | Identifikátor URI: http://localhost:8080/?text=/etc/passwd&text2=.cshrc |
/etc/passwd a .cshrc |
| Text požadavku | RequestArgKeys | Obsahuje | sleep |
Text žádosti: {"sleep(5)": "test"} |
sleep(5) |
| Text požadavku | RequestArgKeys | Rovná se Kterýkoli | – | Text žádosti: {".zshrc": "value", "sleep(5)":"value2"} |
.zshrc a sleep(5) |
| Text požadavku | RequestArgNames | Je rovno | test |
Text žádosti: {"test": ".zshrc"} |
.zshrc |
| Text požadavku | RequestArgNames | Rovná se Kterýkoli | – | Text žádosti: {"key1": ".zshrc", "key2":"sleep(5)"} |
.zshrc a sleep(5) |
| Text požadavku | Hodnoty argumentů žádosti | Je rovno | test |
Text žádosti: {"test": ".zshrc"} |
.zshrc |
| Text požadavku | Hodnoty argumentů žádosti | Rovná se Kterýkoli | – | Text žádosti: {"key1": ".zshrc", "key2":"sleep(5)"} |
.zshrc a sleep(5) |
| Hlavička | Klíče požadavkové hlavičky | Je rovno | X-Scanner |
Záhlaví: {"X-Scanner": "test"} |
X-scanner |
| Hlavička | Klíče požadavkové hlavičky | Rovná se Kterýkoli | – | Záhlaví: {"X-Scanner": "test", "x-ratproxy-loop": "value"} |
X-Scanner a x-ratproxy-loop |
| Hlavička | Názvy záhlaví požadavku | Je rovno | head1 |
Záhlaví: {"head1": "X-Scanner"} |
X-scanner |
| Hlavička | Názvy záhlaví požadavku | Rovná se Kterýkoli | – | Záhlaví: {"head1": "myvar=1234", "User-Agent": "(hydra)"} |
myvar=1234 a (hydra) |
| Hlavička | Hodnoty záhlaví požadavku | Je rovno | head1 |
Záhlaví: {"head1": "X-Scanner"} |
X-scanner |
| Hlavička | Hodnoty záhlaví požadavku | Rovná se Kterýkoli | – | Záhlaví: {"head1": "myvar=1234", "User-Agent": "(hydra)"} |
myvar=1234 a (hydra) |
| Soubor cookie | RequestCookieKeys | Obsahuje | /etc/passwd |
Záhlaví: {"Cookie": "/etc/passwdtest=hello1"} |
/etc/passwdtest |
| Soubor cookie | RequestCookieKeys | Rovná se Kterýkoli | – | Záhlaví: {"Cookie": "/etc/passwdtest=hello1", "Cookie": ".htaccess=test1"} |
/etc/passwdtest a .htaccess |
| Soubor cookie | RequestCookieNames | Je rovno | arg1 |
Záhlaví: {"Cookie": "arg1=/etc/passwd"} |
/etc/passwd |
| Soubor cookie | RequestCookieNames | Rovná se Kterýkoli | – | Záhlaví: {"Cookie": "arg1=/etc/passwd", "Cookie": "arg1=.cshrc"} |
/etc/passwd a .cshrc |
| Soubor cookie | HodnotyPožadovanýchCookie | Je rovno | arg1 |
Záhlaví: {"Cookie": "arg1=/etc/passwd"} |
/etc/passwd |
| Soubor cookie | HodnotyPožadovanýchCookie | Rovná se Kterýkoli | – | Záhlaví: {"Cookie": "arg1=/etc/passwd", "Cookie": "arg1=.cshrc"} |
/etc/passwd a .cshrc |
Poznámka:
Pokud vytvoříte vyloučení pomocí selektoruMatchOperator EqualsAny, vše, co vložíte do pole selektoru, se při vytvoření vyloučení převede na "*" back-endem.
Obory vyloučení
Vyloučení se dají nakonfigurovat tak, aby platila pro konkrétní sadu pravidel WAF, pro sady pravidel nebo globálně napříč všemi pravidly.
Návod
Je vhodné zajistit co nejužší a nejpřesnější vyloučení, aby se zabránilo náhodnému opuštění místa pro útočníky, kteří by mohli váš systém zneužít. Pokud potřebujete přidat pravidlo vyloučení, používejte vyloučení pro jednotlivá pravidla, kdykoli je to možné.
Vyloučení podle pravidel
Můžete nakonfigurovat vyloučení pro konkrétní pravidlo, skupinu pravidel nebo sadu pravidel. Musíte zadat pravidlo nebo pravidla, na která se vyloučení vztahuje. Musíte také zadat atribut požadavku, který by měl být vyloučen z vyhodnocení WAF. Pokud chcete vyloučit úplnou skupinu pravidel, zadejte ruleGroupName pouze parametr, parametr je užitečný jenom v případě, rules že chcete omezit vyloučení na konkrétní pravidla skupiny.
Vyloučení pro jednotlivá pravidla jsou dostupná, pokud používáte sadu pravidel OWASP (CRS) verze 3.2 nebo novější nebo sadu pravidel Bot Manageru verze 1.0 nebo novější.
Příklad
Předpokládejme, že chcete, aby WAF ignoroval hodnotu hlavičky User-Agent požadavku. Hlavička User-Agent obsahuje charakteristické řetězce, který umožňuje partnerským síťovým protokolům identifikovat typ aplikace, operační systém, dodavatele softwaru nebo verzi softwaru žádajícího softwarového uživatelského agenta. Další informace naleznete v tématu User-Agent.
Vyhodnocení této hlavičky může být možné zakázat z libovolného počtu důvodů. Může existovat řetězec, který WAF detekuje a předpokládá, že je škodlivý. Hlavička User-Agent může například obsahovat klasický útok typu SQL injekce v řetězci. V některých případech to může být legitimní provoz. Proto možná budete muset tuto hlavičku vyloučit z vyhodnocení WAF.
Pomocí následujících přístupů můžete vyloučit hlavičku User-Agent z vyhodnocení všemi pravidly injektáže SQL:
Pokud chcete nakonfigurovat vyloučení pro jednotlivá pravidla pomocí webu Azure Portal, postupujte takto:
Přejděte na zásady WAF a vyberte Spravovaná pravidla.
Vyberte Přidat vyloučení.
V Platí pro vyberte sadu pravidel CRS, u které chcete použít vyloučení, například OWASP_3.2.
Vyberte Přidat pravidla a vyberte pravidla, na která chcete použít vyloučení.
Nakonfigurujte proměnnou shody, operátor a selektor. Pak vyberte Uložit.
Můžete nakonfigurovat více vyloučení.
Záhlaví můžete vyloučit User-Agent také z vyhodnocení podle pravidla 942270:
Postupujte podle kroků popsaných v předchozím příkladu a v kroku 4 vyberte pravidlo 942270.
Globální vyloučení
Můžete nakonfigurovat vyloučení tak, aby se použilo pro všechna pravidla WAF.
Příklad
Předpokládejme, že chcete vyloučit hodnotu v parametru uživatele předávaného v požadavku prostřednictvím adresy URL. Řekněme například, že v prostředí user je běžné, že argument řetězce dotazu obsahuje řetězec, který WAF zobrazí jako škodlivý obsah, takže ho zablokuje. Můžete vyloučit všechny argumenty řetězce dotazu, kde název začíná slovem user, aby WAF nevyhodnotil hodnotu pole.
Následující příklad ukazuje, jak můžete vyloučit user argument řetězce dotazu z vyhodnocení:
Pokud chcete nakonfigurovat globální vyloučení pomocí webu Azure Portal, postupujte takto:
Přejděte na zásady WAF a vyberte Spravovaná pravidla.
Vyberte Přidat vyloučení.
V Platí pro vyberte Globální
Nakonfigurujte proměnnou shody, operátor a selektor. Pak vyberte Uložit.
Můžete nakonfigurovat více vyloučení.
Takže pokud je adresa URL http://www.contoso.com/?user%3c%3e=joe prohledávána WAF, nevyhodnocuje řetězec joe, ale stále vyhodnocuje název parametru user%3c%3e.
Další kroky
- Po konfiguraci nastavení WAF se dozvíte, jak zobrazit protokoly WAF. Další informace najdete v tématu Diagnostika služby Application Gateway.
- Další informace o zabezpečení sítě Azure