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:

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

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

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

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

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

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

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

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

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