Sdílet prostřednictvím


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ů:

  1. 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

    Portál: ID prostředku pro účet úložiště

  2. 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.

    Portál: ID prostředku pro službu Application Gateway

  3. 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

  1. 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
  2. Vyberte Přidat nastavení diagnostiky.

  3. 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í.

    Snímek obrazovky s nastavením diagnostiky

  4. 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