Protokoly prostředků pro Azure Web Application Firewall
Web Application Firewall prostředky můžete monitorovat pomocí protokolů. Můžete uložit data o výkonu, přístupu 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. Začněte tím, že si projdete 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ě aplikačních bran a řešení souvisejících potíží můžete v Azure použít různé typy protokolů. Některé z těchto protokolů jsou přístupné z webu Azure Portal. Všechny protokoly je možné extrahovat z úložiště objektů blob v Azure 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.
- Přístup k protokolu prostředků: Tento protokol můžete použít k zobrazení Application Gateway vzorů přístupu 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 příchozí a odchozí bajty. Tento protokol obsahuje jednotlivé záznamy pro každý požadavek a přidružuje tento požadavek k jedinečnému Application Gateway, který žádost zpracoval. Jedinečné instance Application Gateway lze identifikovat pomocí vlastnosti instanceId.
- Protokol prostředků výkonu: Tento protokol můžete použít k zobrazení výkonu Application Gateway instancí. Tento protokol zaznamenává informace o výkonu pro každou instanci, včetně celkového počtu obsluhených požadavků, propustnosti v bajtech, celkového počtu požadavků, počtu neúspěšných požadavků a počtu instancí back-endu, které jsou v pořádku a 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é se protokolují prostřednictvím režimu detekce nebo prevence služby Application Gateway nakonfigurované s bránou firewall webových aplikací.
Poznámka
Protokoly jsou k dispozici pouze pro prostředky nasazené v modelu nasazení Azure Resource Manager. Protokoly nemůžete použít pro prostředky v modelu nasazení Classic. Pokud chcete lépe porozumět dvěma modelům, přečtěte si článek Principy nasazení Resource Manager 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.
- Event Hubs: Centra událostí jsou skvělou volbou pro integraci s dalšími nástroji pro správu událostí a informací o zabezpečení (SIEM), které vám umožní dostávat upozornění na vaše prostředky.
- Protokoly Azure Monitoru: 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 následujícím postupem:
Poznamenejte si ID prostředku účtu úložiště, kam se data protokolu ukládají. Tato hodnota má formát: /subscriptions/<ID předplatného>/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ší aplikační brány, pro které je povolené protokolování. 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.
Protokolování prostředků můžete povolit 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
V Azure Portal najděte svůj prostředek a vyberte Nastavení diagnostiky.
Pro 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 log Analytics ukládá 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 v úložišti protokolů událostí Azure uchovávají po dobu 90 dnů. 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 Application Gateway instanci, 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 k Application Gateway se protokoluje ve formátu JSON, jak je znázorněno v následujícím příkladu pro verzi 1:
Hodnota | Popis |
---|---|
instanceId | Application Gateway instanci, která žádost vyřídila. |
IP adresa klienta | Původní IP adresa pro požadavek. |
clientPort | Původní port požadavku. |
Metoda httpMethod | Metoda HTTP používaná požadavkem. |
Requesturi | Identifikátor URI přijatého požadavku. |
RequestQuery | Server-Routed: Instance back-endového fondu, která byla odeslána požadavek.X-AzureApplicationGateway-LOG-ID: ID korelace použité pro požadavek. Dá se použít k řešení potíží s provozem na back-endových serverech. SERVER-STATUS: Kód odpovědi HTTP, který Application Gateway přijat z back-endu. |
Useragent | Uživatelský agent z hlavičky požadavku HTTP. |
httpStatus | Stavový kód HTTP vrácený klientovi z Application Gateway. |
HttpVersion | Verze http požadavku. |
receivedBytes | Velikost přijatého paketu v bajtech |
sentBytes | Velikost odeslaného paketu v bajtech |
timeTaken | Doba potřebná ke zpracování požadavku a odeslání odpovědi (v milisekundách). Vypočítá se jako interval od okamžiku, kdy Application Gateway obdrží první bajt požadavku HTTP, do okamžiku, kdy se dokončí operace odeslání odpovědi. Je důležité si uvědomit, že pole Time-Taken obvykle obsahuje č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é. |
Hostitel | Název hostitele, se kterým byl požadavek odeslán na back-endový server. Pokud se přepisuje název hostitele back-endu, bude to odrážet tento název. |
původní hostitel | Název hostitele, se kterým byl požadavek přijat Application Gateway od 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"
}
}
Pro Application Gateway a WAF v2 se v protokolech zobrazují trochu další informace:
Hodnota | Popis |
---|---|
instanceId | Application Gateway instanci, která žádost obsloužila. |
clientIP | Původní IP adresa pro požadavek. |
clientPort | Původní port pro požadavek. |
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 z Application Gateway. |
httpVersion | Verze požadavku HTTP. |
receivedBytes | Velikost přijatého paketu v bajtech |
sentBytes | Velikost odeslaného paketu v bajtech |
timeTaken | Doba (v milisekundách), kterou trvá zpracování požadavku a odeslání odpovědi. Vypočítá se jako interval od okamžiku, kdy Application Gateway obdrží první bajt požadavku HTTP, do doby, kdy se dokončí operace odeslání odpovědi. Je důležité si uvědomit, že pole Time-Taken obvykle obsahuje čas, kdy pakety požadavků a odpovědí putují 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 tls (pokud je protokol TLS povolený). |
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. |
Hostitel | 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 Application Gateway instanci, 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 | Application Gateway instanci, pro kterou se generují data o výkonu. Pro službu Application Gateway s více instancemi existuje jeden řádek pro každou instanci. |
healthyHostCount | Počet hostitelů 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 obsloužených žádostí |
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ů |
throughput | Průměrná propustnost od posledního protokolu měřená v bajtech za sekundu |
{
"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 počítá od okamžiku přijetí prvního bajtu požadavku HTTP do okamžiku odeslání posledního bajtu odpovědi HTTP. Jedná se o součet doby zpracování Application Gateway plus náklady na síť do back-endu plus dobu, kterou back-end potřebuje ke zpracování požadavku.
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 jsou uložena v cíli, který jste zadali při povolení protokolování. Protokolují se následující data:
Hodnota | Popis |
---|---|
instanceId | Application Gateway instanci, pro kterou se generují data brány firewall. Pro službu Application Gateway s více instancemi existuje jeden řádek pro každou instanci. |
clientIp | Původní IP adresa pro požadavek. |
clientPort | Původní port pro požadavek. |
Requesturi | Adresa URL přijatého požadavku |
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: Detekce - zjištěna – toto je jediná akce pro WAF v režimu detekce. Všechny podmínky pro dané pravidlo se shodovaly a požadavek se zaprotokoloval a pak se předal do back-endu.Režim zásad: Prevence - povolená – všechny podmínky byly pro dané pravidlo splněné a požadavek se předal do back-endu. - Blokováno – všechny podmínky byly pro dané pravidlo splněny a požadavek byl zablokován. - Shoda – Pro dané pravidlo byla splněna jedna nebo více podmínek, ale rozhodnutí o zablokování nebo předání požadavku bude vyžadovat další vyhodnocení a bude vyhodnoceno na základě konečného pravidla bodování anomálií. |
web | Web, pro který byl vygenerován protokol. V současné době je uvedená jenom 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 Application Gateway. |
transactionId | Jedinečné ID pro danou transakci, které pomáhá seskupovat více porušení pravidel, ke kterým došlo v rámci stejného požadavku. |
policyId | Jedinečné ID zásad brány firewall přidružených k Application Gateway, naslouchacímu procesu nebo cestě |
policyScope | Umístění zásad – hodnoty můžou být Globální, Naslouchací proces nebo Umístění. |
policyScopeName | Název objektu, ve kterém se zásada používá. |
{
"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",
"clientPort": "0",
"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 protokolů přístupu, výkonu a brány firewall
Protokoly Azure Monitoru můžou shromažďovat soubory čítačů a protokolů událostí z vašeho úč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 Manager, která nainstaluje a spustí oblíbený analyzátor protokolů GoAccess pro protokoly Application Gateway Přístupu. GoAccess poskytuje cenné statistiky přenosů HTTP, jako jsou jedinečné návštěvníky, požadované soubory, hostitele, operační systémy, prohlížeče, stavové kódy HTTP a další. Další podrobnosti najdete v souboru Readme ve složce šablon Resource Manager na GitHubu.
Další kroky
- Vizualizujte protokoly čítačů a událostí pomocí protokolů služby Azure Monitor.
- Vizualizujte protokol aktivit Azure pomocí blogového příspěvku Power BI.
- Zobrazte a analyzujte protokoly aktivit Azure v Power BI a další blogové příspěvky.