Protokoly prostředků pro Azure Web Application Firewall
Prostředky firewallu webových aplikací můžete monitorovat pomocí protokolů. Můžete ušetřit výkon, přístup a další data nebo je využívat z prostředku pro účely monitorování.
Poznámka:
Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Pokud chcete začít, přečtěte si téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.
Diagnostické protokoly
Ke správě a řešení potíží s aplikačními bránami můžete použít různé typy protokolů v Azure. Některé z těchto protokolů jsou přístupné z webu Azure Portal. Všechny protokoly je možné extrahovat ze služby Azure Blob Storage a zobrazit je v různých nástrojích, jako jsou protokoly služby Azure Monitor, Excel a Power BI. Další informace o různých typech protokolů najdete v následujícím seznamu:
- Protokol aktivit: Protokoly aktivit Azure můžete použít k zobrazení všech operací odeslaných do vašeho předplatného Azure a jejich stavu. Položky protokolu aktivit se ve výchozím nastavení shromažďují a můžete si je zobrazit na webu Azure Portal.
- Protokol prostředků přístupu: Tento protokol můžete použít k zobrazení vzorů přístupu ke službě Application Gateway a analýze důležitých informací. Patří sem IP adresa volajícího, požadovaná adresa URL, latence odpovědi, návratový kód a bajty. Tento protokol obsahuje jednotlivé záznamy pro každý požadavek a přidruží tento požadavek k jedinečné službě Application Gateway, která žádost zpracovala. Jedinečné instance služby Application Gateway je možné identifikovat podle id instance vlastnosti.
- Protokol prostředků výkonu: Tento protokol můžete použít k zobrazení výkonu instancí služby Application Gateway. Tento protokol zaznamenává informace o výkonu pro každou instanci, včetně celkových požadavků obsluhované, propustnosti v bajtech, celkového počtu obsluhované žádosti, počtu neúspěšných požadavků a počtu instancí back-endu, které nejsou v pořádku. Protokol výkonu se shromažďuje každých 60 sekund. Protokol výkonu je k dispozici pouze pro skladovou položku v1. Pro skladovou položku v2 použijte metriky pro data o výkonu.
- Protokol prostředků brány firewall: Tento protokol můžete použít k zobrazení požadavků, které jsou protokolovány prostřednictvím režimu detekce nebo prevence služby Application Gateway, která je nakonfigurovaná s bránou firewall webových aplikací.
Poznámka:
Protokoly jsou dostupné jenom pro prostředky nasazené v modelu nasazení Azure Resource Manager. Protokoly nelze použít pro prostředky v modelu nasazení Classic. Lepší porozumění dvěma modelům najdete v článku Principy nasazení Resource Manageru a klasického nasazení .
Protokoly můžete ukládat třemi způsoby:
- Učet úložiště: Účty úložiště jsou nejvhodnější pro ukládání protokolů na delší dobu, které budete kontrolovat pouze v případě potřeby.
- Centra událostí: Služba Event Hubs je skvělou volbou pro integraci s dalšími nástroji pro správu událostí (SIEM) zabezpečení, abyste získali výstrahy na vaše prostředky.
- Protokoly Služby Azure Monitor: Protokoly Azure Monitoru se nejlépe používají pro obecné monitorování vaší aplikace v reálném čase nebo sledování trendů.
Povolení protokolování prostřednictvím PowerShellu
Protokolování aktivit je u každého prostředku Správce prostředků povolené automaticky. Abyste mohli začít shromažďovat data dostupná prostřednictvím těchto protokolů, musíte povolit protokolování přístupu a výkonu. Protokolování povolíte pomocí následujících kroků:
Poznamenejte si ID prostředku účtu úložiště, kam se data protokolu ukládají. Tato hodnota je ve formuláři: /subscriptions/<subscriptionId>/resourceGroups/<název> skupiny prostředků/providers/Microsoft.Storage/storageAccounts/<název účtu> úložiště. Můžete použít libovolný účet úložiště z vašeho předplatného. Tuto informaci najdete pomocí webu Azure Portal
Poznamenejte si ID prostředku vaší služby Application Gateway, pro které je protokolování povolené. Tato hodnota je ve formátu: /subscriptions/<subscriptionId>/resourceGroups/<název> skupiny prostředků/providers/Microsoft.Network/applicationGateways/<název> aplikační brány. Tuto informaci najdete pomocí webu Azure Portal.
Povolte protokolování prostředků pomocí následující rutiny PowerShellu:
Set-AzDiagnosticSetting -ResourceId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name> -StorageAccountId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name> -Enabled $true
Tip
Protokoly aktivit nevyžadují samostatný účet úložiště. Za používání úložiště k protokolování přístupu a výkonu se účtují poplatky.
Povolit protokolování prostřednictvím webu Azure Portal
Na webu Azure Portal vyhledejte prostředek a vyberte Nastavení diagnostiky.
Pro Službu Application Gateway jsou k dispozici tři protokoly:
- Protokol přístupu
- Protokol výkonu
- Protokol brány firewall
Vyberte Přidat nastavení diagnostiky.
Stránka Nastavení diagnostiky poskytuje nastavení pro protokoly prostředků. V tomto příkladu ukládá Log Analytics protokoly. K uložení protokolů prostředků můžete použít také centrum událostí, účet úložiště nebo partnerské řešení.
Zadejte název nastavení, potvrďte nastavení a vyberte Uložit.
Protokol aktivit
Azure ve výchozím nastavení generuje protokol aktivit. Protokoly se zachovají po dobu 90 dnů v úložišti protokolů událostí Azure. Další informace o těchto protokolech najdete v článku Zobrazení událostí a protokolu aktivit.
Protokol přístupu
Protokol přístupu se vygeneruje jenom v případě, že jste ho povolili pro každou instanci služby Application Gateway, jak je podrobně popsáno v předchozích krocích. Data se ukládají v účtu úložiště, který jste zadali při povolení protokolování. Každý přístup služby Application Gateway se protokoluje ve formátu JSON, jak je znázorněno v následujícím příkladu pro v1:
Hodnota | Popis |
---|---|
instanceId | Instance služby Application Gateway, která žádost obsloužila. |
clientIP | Původní IP adresa pro požadavek. |
clientPort | Původní port požadavku. |
httpMethod | Metoda HTTP používaná požadavkem. |
requestUri | Identifikátor URI přijatého požadavku. |
RequestQuery | Směrování serveru: Instance back-endového fondu, která byla odeslána žádost. X-AzureApplicationGateway-LOG-ID: ID korelace použité pro požadavek. Dá se použít k řešení problémů s provozem na back-endových serverech. STAV SERVERU: Kód odpovědi HTTP, který služba Application Gateway přijala z back-endu. |
UserAgent | Uživatelský agent z hlavičky požadavku HTTP. |
httpStatus | Stavový kód HTTP vrácený klientovi ze služby Application Gateway |
httpVersion | Verze požadavku HTTP. |
receivedBytes | Velikost přijatých paketů v bajtech |
sentBytes | Velikost odesílaného paketu v bajtech |
timeTaken | Doba (v milisekundách), kterou trvá zpracování požadavku a odeslání odpovědi. Tato hodnota se vypočítá jako interval od okamžiku, kdy služba Application Gateway přijme první bajt požadavku HTTP do doby, kdy se dokončí operace odeslání odpovědi. Je důležité si uvědomit, že pole Čas potřebný obvykle zahrnuje čas, kdy pakety požadavků a odpovědí cestují přes síť. |
sslEnabled | Určuje, jestli komunikace s back-endovými fondy používala protokol TLS/SSL. Platné hodnoty jsou zapnuté a vypnuté. |
host | Název hostitele, se kterým byl požadavek odeslán na back-endový server. Pokud se přepíše název hostitele back-endu, bude tento název odrážet. |
originalHost | Název hostitele, se kterým žádost přijala služba Application Gateway z klienta. |
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayAccess",
"timestamp": "2017-04-26T19:27:38Z",
"category": "ApplicationGatewayAccessLog",
"properties": {
"instanceId": "ApplicationGatewayRole_IN_0",
"clientIP": "191.96.249.97",
"clientPort": 46886,
"httpMethod": "GET",
"requestUri": "/phpmyadmin/scripts/setup.php",
"requestQuery": "X-AzureApplicationGateway-CACHE-HIT=0&SERVER-ROUTED=10.4.0.4&X-AzureApplicationGateway-LOG-ID=874f1f0f-6807-41c9-b7bc-f3cfa74aa0b1&SERVER-STATUS=404",
"userAgent": "-",
"httpStatus": 404,
"httpVersion": "HTTP/1.0",
"receivedBytes": 65,
"sentBytes": 553,
"timeTaken": 205,
"sslEnabled": "off",
"host": "www.contoso.com",
"originalHost": "www.contoso.com"
}
}
V případě služby Application Gateway a WAF v2 se v protokolech zobrazují další informace:
Hodnota | Popis |
---|---|
instanceId | Instance služby Application Gateway, která žádost obsloužila. |
clientIP | Původní IP adresa pro požadavek. |
clientPort | Původní port požadavku. |
httpMethod | Metoda HTTP používaná požadavkem. |
requestUri | Identifikátor URI přijatého požadavku. |
UserAgent | Uživatelský agent z hlavičky požadavku HTTP. |
httpStatus | Stavový kód HTTP vrácený klientovi ze služby Application Gateway |
httpVersion | Verze požadavku HTTP. |
receivedBytes | Velikost přijatých paketů v bajtech |
sentBytes | Velikost odesílaného paketu v bajtech |
timeTaken | Doba (v milisekundách), kterou trvá zpracování požadavku a odeslání odpovědi. Tato hodnota se vypočítá jako interval od okamžiku, kdy služba Application Gateway přijme první bajt požadavku HTTP do doby, kdy se dokončí operace odeslání odpovědi. Je důležité si uvědomit, že pole Čas potřebný obvykle zahrnuje čas, kdy pakety požadavků a odpovědí cestují přes síť. |
sslEnabled | Určuje, jestli komunikace s back-endovými fondy používala protokol TLS. Platné hodnoty jsou zapnuté a vypnuté. |
sslCipher | Šifrovací sada používaná pro komunikaci pomocí protokolu TLS (pokud je povolený protokol TLS). |
sslProtocol | Používá se protokol TLS (pokud je povolený protokol TLS). |
ServerRouted | Back-endový server, na který služba Application Gateway směruje požadavek. |
serverStatus | Stavový kód HTTP back-endového serveru. |
serverResponseLatency | Latence odpovědi z back-endového serveru |
host | Adresa uvedená v hlavičce hostitele požadavku. |
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayAccess",
"time": "2017-04-26T19:27:38Z",
"category": "ApplicationGatewayAccessLog",
"properties": {
"instanceId": "appgw_1",
"clientIP": "191.96.249.97",
"clientPort": 46886,
"httpMethod": "GET",
"requestUri": "/phpmyadmin/scripts/setup.php",
"userAgent": "-",
"httpStatus": 404,
"httpVersion": "HTTP/1.0",
"receivedBytes": 65,
"sentBytes": 553,
"timeTaken": 205,
"sslEnabled": "off",
"sslCipher": "",
"sslProtocol": "",
"serverRouted": "104.41.114.59:80",
"serverStatus": "200",
"serverResponseLatency": "0.023",
"host": "www.contoso.com",
}
}
Protokol výkonu
Protokol výkonu se vygeneruje jenom v případě, že jste ho povolili pro každou instanci služby Application Gateway, jak je podrobně popsáno v předchozích krocích. Data se ukládají v účtu úložiště, který jste zadali při povolení protokolování. Data protokolu výkonu se generují v 1minutových intervalech. Je k dispozici pouze pro skladovou položku v1. Pro skladovou položku v2 použijte metriky pro data o výkonu. Protokolují se následující data:
Hodnota | Popis |
---|---|
instanceId | Instance služby Application Gateway, pro kterou se generují data o výkonu. Pro službu Application Gateway s více instancemi existuje jeden řádek na instanci. |
healthyHostCount | Počet hostitelů, kteří jsou v pořádku, v back-endovém fondu |
unHealthyHostCount | Počet hostitelů, kteří nejsou v pořádku, v back-endovém fondu |
requestCount | Počet žádostí obsluhovaných. |
Latence | Průměrná latence (v milisekundách) požadavků z instance do back-endu, který požadavky obsluhuje. |
failedRequestCount | Počet neúspěšných požadavků |
Propustnost | Průměrná propustnost od posledního protokolu měřená vbajch |
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayPerformance",
"time": "2016-04-09T00:00:00Z",
"category": "ApplicationGatewayPerformanceLog",
"properties":
{
"instanceId":"ApplicationGatewayRole_IN_1",
"healthyHostCount":"4",
"unHealthyHostCount":"0",
"requestCount":"185",
"latency":"0",
"failedRequestCount":"0",
"throughput":"119427"
}
}
Poznámka:
Latence se vypočítá z doby, kdy se do doby odeslání posledního bajtu odpovědi HTTP obdrží první bajt požadavku HTTP. Jedná se o součet doby zpracování služby Application Gateway a nákladů na síť na back-end a čas potřebný ke zpracování požadavku back-endem.
Protokol brány firewall
Protokol brány firewall se vygeneruje jenom v případě, že jste ho povolili pro každou aplikační bránu, jak je podrobně popsáno v předchozích krocích. Tento protokol také vyžaduje, aby brána firewall webových aplikací byla nakonfigurovaná ve službě Application Gateway. Data se ukládají do cíle, který jste zadali při povolení protokolování. Protokolují se následující data:
Hodnota | Popis |
---|---|
instanceId | Instance služby Application Gateway, pro kterou se generují data brány firewall. Pro službu Application Gateway s více instancemi existuje jeden řádek na instanci. |
clientIp | Původní IP adresa pro požadavek. |
requestUri | Adresa URL přijaté žádosti |
ruleSetType | Typ sady pravidel. Dostupná hodnota je OWASP. |
ruleSetVersion | Použitá verze sady pravidel. Dostupné hodnoty jsou 2.2.9 a 3.0. |
ruleId | ID pravidla aktivační události. |
zpráva | Uživatelsky přívětivá zpráva pro aktivační událost. Další podrobnosti najdete v části s podrobnostmi. |
action | Režim zásad: Zjištění detekce - – to je jediná akce pro WAF v režimu detekce. Všechny podmínky pro dané pravidlo byly spárovány a požadavek byl zaprotokolován a předán do back-endu. Režim zásad: Prevence - povolena – Všechny podmínky byly pro dané pravidlo spárovány a požadavek byl předán do back-endu. - Blokováno – Všechny podmínky se pro dané pravidlo shodovaly a požadavek byl zablokovaný. - Shoda – Jedna/více podmínek byla pro dané pravidlo spárována, ale rozhodnutí blokovat nebo předat požadavek bude potřebovat další vyhodnocení a vyhodnotí se na základě konečného pravidla vyhodnocování anomálií. Režim zásad: JS challenge - JSChallengeIssued: Vydáno kvůli chybějící nebo neplatné clearance výzvy, chybějící odpověď. Tento protokol se vytvoří, když klient požádá o přístup k webové aplikaci poprvé a nebyl dříve vyzván. Tento klient obdrží stránku výzvy JS a pokračuje k výpočtu úlohy JS. Po úspěšném výpočtu se klientovi udělí soubor cookie platnosti. - JSChallengePass: Předáno kvůli platné odpovědi na výzvu. Tento protokol se vytvoří, když klient vyřeší výzvu JS a znovu odešle požadavek se správnou odpovědí. V tomto případě Azure WAF ověří soubor cookie a pokračuje ve zpracování zbývajících pravidel, aniž by se vygenerovaly další výzvy JS. - JSChallengeValid: Protokolované nebo předávací zpracování kvůli platné výzvě Tento protokol se vytvoří, když klient dříve vyřešil výzvu. V tomto případě Azure WAF protokoluje požadavek a pokračuje ve zpracování zbývajících pravidel. - JSChallengeBlock: Blokováno Tento protokol se vytvoří, když selže výpočet úlohy JS. |
site | Web, pro který se protokol vygeneroval. V současné době je uveden pouze globální, protože pravidla jsou globální. |
Podrobnosti | Podrobnosti o aktivační události |
details.message | Popis pravidla |
details.data | Konkrétní data nalezená v požadavku, která odpovídají pravidlu. |
details.file | Konfigurační soubor, který obsahoval pravidlo. |
details.line | Číslo řádku v konfiguračním souboru, který událost aktivoval. |
název hostitele | Název hostitele nebo IP adresa služby Application Gateway |
transactionId | Jedinečné ID pro danou transakci, které pomáhá seskupovat několik porušení pravidel, ke kterým došlo ve stejném požadavku. |
policyId | Jedinečné ID zásad brány firewall přidružené ke službě Application Gateway, naslouchacímu procesu nebo cestě |
policyScope | Umístění zásady – hodnoty můžou být "Global", "Listener" (Naslouchací proces) nebo "Location" (Umístění). |
policyScopeName | Název objektu, ve kterém je zásada použita. |
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayFirewall",
"time": "2017-03-20T15:52:09.1494499Z",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "ApplicationGatewayRole_IN_0",
"clientIp": "52.161.109.147",
"requestUri": "/",
"ruleSetType": "OWASP",
"ruleSetVersion": "3.0",
"ruleId": "920350",
"ruleGroup": "920-PROTOCOL-ENFORCEMENT",
"message": "Host header is a numeric IP address",
"action": "Matched",
"site": "Global",
"details": {
"message": "Warning. Pattern match \"^[\\\\d.:]+$\" at REQUEST_HEADERS:Host ....",
"data": "127.0.0.1",
"file": "rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf",
"line": "791"
},
"hostname": "127.0.0.1",
"transactionId": "16861477007022634343",
"policyId": "/subscriptions/1496a758-b2ff-43ef-b738-8e9eb5161a86/resourceGroups/drewRG/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/perListener",
"policyScope": "Listener",
"policyScopeName": "httpListener1"
}
}
}
Zobrazení a analýza protokolu aktivit
Data protokolu aktivit si můžete zobrazit použitím jedné z následujících metod:
- Nástroje Azure: Načtěte informace z protokolu aktivit prostřednictvím Azure PowerShellu, Azure CLI, rozhraní Azure REST API nebo webu Azure Portal. Podrobné pokyny k jednotlivým metodám najdete v článku o operacích s protokoly aktivit ve Správci prostředků.
- Power BI: Pokud ještě účet Power BI nemáte, můžete ho vyzkoušet zdarma. Pomocí aplikací šablon Power BI můžete analyzovat data.
Zobrazení a analýza přístupu, výkonu a protokolů brány firewall
Protokoly služby Azure Monitor můžou shromažďovat soubory protokolů čítačů a událostí z účtu úložiště objektů blob. Zahrnuje vizualizace a výkonné vyhledávací funkce k analýze protokolů.
Můžete se také připojit k účtu úložiště a načíst položky protokolu JSON s protokoly přístupu a výkonu. Po stažení souborů JSON je můžete převést do formátu CSV a zobrazit si je v Excelu, Power BI nebo jiném nástroji s vizualizací dat.
Tip
Pokud znáte Visual Studio a máte představu, jak u konstant a proměnných v jazyce C# měnit hodnoty, můžete použít nástroje pro převedení protokolů, které jsou k dispozici na GitHubu.
Analýza protokolů přístupu prostřednictvím GoAccessu
Publikovali jsme šablonu Resource Manageru, která nainstaluje a spustí oblíbený analyzátor protokolů GoAccess pro protokoly přístupu ke službě Application Gateway. GoAccess poskytuje cenné statistiky provozu HTTP, jako jsou jedinečné návštěvníky, požadované soubory, hostitelé, operační systémy, prohlížeče, stavové kódy HTTP a další. Další podrobnosti najdete v souboru Readme ve složce šablony Resource Manageru na GitHubu.
Další kroky
- Vizualizujte protokoly čítačů a událostí pomocí protokolů služby Azure Monitor.
- Vizualizujte protokol aktivit Azure pomocí příspěvku na blogu Power BI .
- Zobrazte a analyzujte protokoly aktivit Azure v Power BI a další blogovém příspěvku.