Sdílet prostřednictvím


Protokoly prostředků pro Azure Web Application Firewall

Prostředky Web Application Firewallu můžete sledovat pomocí protokolů. Můžete ukládat data o výkonu, přístupu a dalších údajích nebo je čerpat ze zdroje pro účely monitorování.

Poznámka:

K interakci s Azure doporučujeme použít modul Azure Az PowerShell. 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

V Azure můžete použít různé typy protokolů pro správu a diagnostiku aplikačních bran. Některé z těchto protokolů jsou přístupné z webu Azure Portal. Všechny protokoly je možné extrahovat z úložiště Azure Blob Storage a prohlížet v různých nástrojích, jako jsou protokoly Azure Monitoru, Excel a Power BI. Další informace o různých typech protokolů naleznete 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 shromažďují ve výchozím nastavení a můžete je zobrazit na webu Azure Portal.
  • Protokol přístupových prostředků: Tento protokol můžete použít k zobrazení vzorů přístupu Application Gateway a analýze důležitých informací. To zahrnuje IP adresu volajícího, požadovanou adresu URL, latenci 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ý požadavek zpracoval. Jedinečné instance služby Application Gateway lze identifikovat podle vlastnosti instanceId.
  • Protokol prostředků výkonu: Tento protokol můžete použít k zobrazení výkonu instancí Application Gateway. Tento protokol zachycuje informace o výkonu pro každou instanci, včetně celkového počtu obsloužených požadavků, propustnosti v bajtech, počtu neúspěšných požadavků a počtu instancí back-endu, které jsou zdravé a nezdravé. Každých 60 sekund se shromažďuje protokol výkonu. Protokol výkonu je k dispozici pouze pro SKU v1. Pro SKU 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 v režimu detekce nebo prevence aplikační brány, která je nakonfigurována s bránou firewall webových aplikací.

Poznámka:

Protokoly jsou dostupné jenom pro prostředky nasazené v nasazovacím modelu Azure Resource Manager. Protokoly nelze použít pro prostředky v klasickém modelu nasazení. Lepší porozumění dvěma modelům najdete v článku Principy nasazení Resource Manageru a klasického nasazení .

Máte tři možnosti ukládání protokolů:

  • Účet úložiště: Účty úložiště se nejlépe používají pro protokoly, když jsou protokoly uloženy po delší dobu a v případě potřeby zkontrolovány.
  • Event Hubs: Event Hubs jsou skvělou volbou pro integraci s dalšími nástroji pro správu událostí (Security Information and Event Management), abyste mohli dostávat upozornění na vaše prostředky.
  • Protokoly Azure Monitoru: Protokoly Azure Monitoru se nejlépe používají k obecnému monitorování vaší aplikace v reálném čase nebo ke 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. Pro povolení protokolování postupujte podle těchto kroků:

  1. Poznamenejte si ID prostředku účtu úložiště, kde se protokolová data ukládají. Tato hodnota je ve tvaru: /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ě ze 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 kterou je protokolování povoleno. Tato hodnota má formát: /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 aplikační bránu

  3. Povolte protokolování prostředků pomocí následujícího skriptu PowerShell:

    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     
    

Návod

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 Application Gateway jsou k dispozici tři logy.

    • Přístupový protokol
    • Protokol výkonu
    • Protokol brány firewall
  2. Vyberte Přidat nastavení diagnostiky.

  3. Stránka Nastavení diagnostiky obsahuje nastavení protokolů zdrojů. V tomto příkladu Log Analytics ukládá záznamy. K uložení protokolů prostředků můžete také použít centrum událostí, účet úložiště nebo partnerské řešení.

    Snímek obrazovky zobrazující nastavení diagnostiky.

  4. Zadejte název nastavení, potvrďte nastavení a vyberte Uložit.

Záznam aktivit

Azure ve výchozím nastavení generuje protokol aktivit. Protokoly se uchovávají 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 protokolů aktivit .

Přístupový protokol

Protokol přístupu se vygeneruje pouze v případě, že jste ho povolili v každé instanci Application Gateway, jak je podrobně popsáno v předchozích krocích. Data se ukládají do úč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 v1:

Hodnota Popis
instanceId Instance služby Application Gateway, která žádost obsloužila.
IP adresa klienta Původní IP adresa pro požadavek.
Klientský port Původní port požadavku.
Metoda http Metoda HTTP používaná požadavkem.
requestUri (žádostUri) Identifikátor URI přijatého požadavku.
Dotaz na požadavek Serverem směrovaný: Instance back-endového fondu, ke které byl požadavek přiřazen.
X-AzureApplicationGateway-LOG-ID: ID korelace použité pro požadavek. Dá se použít k řešení problémů s provozem na back-end serverech.
SERVER-STATUS: Kód odpovědi HTTP, který Application Gateway obdržel z back-endu.
UserAgent (Uživatelský agent) Uživatelský agent z hlavičky požadavku HTTP.
Stav protokolu http Stavový kód HTTP vrácený klientovi ze služby Application Gateway
httpVersion Verze HTTP požadavku.
přijaté bajty Velikost přijatých paketů v bajtech
sentBytes Velikost odesílaného paketu v bajtech
Čas Doba (v milisekundách), za kterou je požadavek zpracován a jeho odpověď odeslána. To se vypočítá jako interval od okamžiku, kdy Application Gateway obdrží první bajt požadavku HTTP, do okamžiku, kdy se operace odeslání odpovědi dokončí. 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íť.
Povolený SSL Určení, zda komunikace se skupinami výpočetních prostředků používala protokoly TLS/SSL. Platné hodnoty jsou zapnuté a vypnuté.
hostitel Název hostitele, se kterým byl požadavek odeslán na backendový server. Pokud dojde k přepsání názvu hostitele back-endu, bude to tento název odrážet.
původní hostitel Název hostitele, se kterým Application Gateway přijal požadavek 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": "203.0.113.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=aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e&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í další informace:

Hodnota Popis
instanceId Instance služby Application Gateway, která žádost obsloužila.
IP adresa klienta Původní IP adresa pro požadavek.
Klientský port Původní port požadavku.
Metoda http Metoda HTTP používaná požadavkem.
requestUri (žádostUri) Identifikátor URI přijatého požadavku.
UserAgent (Uživatelský agent) Uživatelský agent z hlavičky požadavku HTTP.
Stav protokolu http Stavový kód HTTP vrácený klientovi ze služby Application Gateway
httpVersion Verze HTTP požadavku.
přijaté bajty Velikost přijatých paketů v bajtech
sentBytes Velikost odesílaného paketu v bajtech
Čas Doba (v milisekundách), za kterou je požadavek zpracován a jeho odpověď odeslána. To se vypočítá jako interval od okamžiku, kdy Application Gateway obdrží první bajt požadavku HTTP, do okamžiku, kdy se operace odeslání odpovědi dokončí. 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íť.
Povolený SSL Zda komunikace s backendovými skupinami serverů používala protokol TLS. Platné hodnoty jsou zapnuté a vypnuté.
Šifra ssl Šifrovací sada používaná pro komunikaci pomocí protokolu TLS (pokud je povolený protokol TLS).
SSL protokol Použitý protokol TLS (pokud je TLS povolen).
serverRouted Back-endový server, na který služba Application Gateway směruje požadavek.
Stav serveru Stavový kód HTTP back-endového serveru.
latence odpovědi serveru Latence odpovědi z backend 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": "203.0.113.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 pouze v případě, že jste ho povolili v každé instanci Application Gateway, jak je podrobně popsáno v předchozích krocích. Data se ukládají do účtu úložiště, který jste zadali při povolení protokolování. Data protokolu výkonu jsou generována v 1minutových intervalech. Je k dispozici pouze pro SKU v1. Pro SKU 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 pro každou instanci.
Počet zdravých hostitelů Počet zdravých hostitelů v back-endovém poolu.
Počet nezdravých hostitelů Počet serverů, které jsou mimo provoz v back-endové skupině.
Počet žádostí Počet žádostí obsluhovaných.
latence Průměrná latence (v milisekundách) požadavků z instance do back-endu, který požadavky obsluhuje.
početNeúspěšnýchPožadavků Počet neúspěšných požadavků
propustnost Průměrná propustnost od posledního protokolu, měřená v bytech 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, kdy je přijat první bajt požadavku HTTP, do okamžiku, kdy je odeslán poslední bajt odpovědi HTTP. Jedná se o součet doby zpracování Application Gateway plus nákladů na síť pro back-end a času, který back-endu trvá zpracování požadavku.

Protokol brány firewall

Protokol brány firewall se vygeneruje pouze 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 byl firewall webových aplikací nakonfigurovaný ve službě Application Gateway. Data se ukládají do cílového umístění, které jste zadali při povolení protokolování. Protokolují se následující data:

Aplikační brána

Formát protokolu

Hodnota Popis
instanceId Instance služby Application Gateway, pro kterou se generují data firewallu. Pro službu Application Gateway s více instancemi existuje jeden řádek pro každou instanci.
Adresa IP klienta Původní IP adresa pro požadavek.
requestUri (žádostUri) Adresa URL přijaté žádosti
typSadyPravidel Typ sady pravidel. Dostupná hodnota je OWASP.
ruleSetVersion Použitá verze sady pravidel. Dostupné hodnoty jsou 2.2.9 a 3.0.
ID pravidla 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.
akce Režim zásad: Detekce
- Byla zjištěna – Toto je jediná akce pro WAF v režimu detekce. Byly splněny všechny podmínky pro dané pravidlo a požadavek byl zaznamenán a poté předán do back-endu.

Režim zásad: Prevence
- povolena – Všechny podmínky byly pro dané pravidlo splněny a požadavek byl předán do backendu.
- Blokováno – Všechny podmínky byly pro dané pravidlo splněny a požadavek byl zablokován.
- Spárováno – pro dané pravidlo byla splněna jedna/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í.

Režim zásad: JS výzva
- JSChallengeIssued: Vydáno z důvodu chybějícího/neplatného vyřešení výzvy, chybějící odpovědi.

Tento protokol se vytvoří, když klient poprvé žádá o přístup k webové aplikaci, aniž by byl předtím požádán o ověření. 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: Úspěšně přijato na základě 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: Protokolováno/předáno kvůli platné výzvě

Tento záznam 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ý byl protokol vygenerován. V současné době je uvedena pouze globální sekce, protože ta pravidla jsou globální.
Podrobnosti Podrobnosti o spouštěcí události.
podrobnosti.zpráva Popis pravidla
podrobnosti.data Konkrétní údaje nalezené v požadavku, které odpovídaly pravidlu.
podrobnosti.soubor Konfigurační soubor, který obsahuje 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
ID transakce 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.
ID zásady Jedinečné ID zásady firewallu přidružené k Application Gateway, listeneru nebo cestě.
Rozsah politiky Umístění politiky - hodnoty mohou být "Global", "Listener" nebo "Location".
název rozsahu politiky Název objektu, na který se zásada vztahuje.

Příklad

{
  "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": "203.0.113.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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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čítejte informace z protokolu aktivit prostřednictvím Azure PowerShell, Azure CLI, Azure REST API nebo Azure Portal. Podrobné pokyny pro jednotlivé metody jsou podrobně popsané v článku Operace aktivit s Resource Managerem .
  • Power BI: Pokud ještě nemáte účet Power BI , můžete si ho vyzkoušet zdarma. Pomocí aplikací šablon Power BI můžete analyzovat svá data.

Prohlížejte a analyzujte záznamy o přístupech, výkonech a bráně firewall.

Protokoly služby Azure Monitor můžou shromažďovat soubory čítačů a protokolů událostí z účtu úložiště Blob. Zahrnuje vizualizace a výkonné vyhledávací funkce pro analýzu vašich protokolů.

Můžete se také připojit ke svému účtu úložiště a získat záznamy JSON z protokolů o 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.

Návod

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 GoAccess

Publikovali jsme šablonu Resource Manager, která nainstaluje a spustí oblíbený analyzátor protokolů GoAccess pro protokoly Application Gateway Access. GoAccess poskytuje cenné statistiky provozu HTTP, jako jsou jedineční návštěvníci, 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 Manager na GitHubu.

Další kroky