Azure Web Uygulaması Güvenlik Duvarı izleme ve günlüğe kaydetme
Azure Front Door'daki Azure Web Uygulaması Güvenlik Duvarı, web uygulaması güvenlik duvarınızın (WAF) nasıl çalıştığını ve gerçekleştirdiği eylemleri anlamanıza yardımcı olmak için kapsamlı günlük kaydı ve telemetri sağlar.
Azure Front Door WAF günlüğü, Azure İzleyici ile tümleşiktir. Azure İzleyici, WAF uyarıları ve günlükleri de dahil olmak üzere tanılama bilgilerini izlemenizi sağlar. Azure portaldaki Azure Front Door kaynağında Tanılama sekmesinin altında, kod yaklaşımı olarak altyapı aracılığıyla veya doğrudan Azure İzleyici'yi kullanarak WAF izlemeyi yapılandırabilirsiniz.
Ölçümler
Azure Front Door, WAF'nizin davranışını anlamanıza yardımcı olmak için ölçümleri otomatik olarak kaydeder.
WAF'nizin ölçümlerine erişmek için:
- Azure portalında oturum açın ve Azure Front Door profilinize gidin.
- İzleme'nin en soldaki bölmesinde Ölçümler sekmesini seçin.
- WAF kurallarıyla eşleşen istek sayısını izlemek için Web Uygulaması Güvenlik Duvarı İstek Sayısı ölçümünü ekleyin.
Eylem türlerine ve kural adlarına göre özel filtreler oluşturabilirsiniz. Ölçümler, dışındaki Log
tüm eylemlere sahip istekleri içerir.
Günlükler ve tanılamalar
Azure Front Door WAF, her istek ve algılanan her tehdit hakkında ayrıntılı raporlama sağlar. Günlüğe kaydetme, Azure İzleyici günlükleri kullanılarak Azure'ın tanılama günlükleri ve uyarıları ile tümleşiktir.
Günlükler varsayılan olarak etkin değildir. Günlükleri açıkça etkinleştirmeniz gerekir. Tanılama ayarları sekmesini kullanarak Azure portalında günlükleri yapılandırabilirsiniz.
Günlüğe kaydetme etkinse ve waf kuralı tetiklenirse, WAF ilkesi davranışını analiz etmenize ve hatalarını ayıklamanıza yardımcı olmak için tüm eşleşen desenler düz metin olarak günlüğe kaydedilir. Kurallarda ince ayar yapmak ve günlüklerden dışlanmasını istediğiniz verileri dışlamak için dışlamaları kullanabilirsiniz. Daha fazla bilgi için bkz . Azure Front Door'da Web uygulaması güvenlik duvarı dışlama listeleri.
Azure Front Door iki tür günlük sağlar: erişim günlükleri ve WAF günlükleri.
Erişim günlükleri
Günlük FrontDoorAccessLog
, Azure Front Door üzerinden geçen tüm istekleri içerir. Günlük şeması da dahil olmak üzere Azure Front Door erişim günlüğü hakkında daha fazla bilgi için bkz . Azure Front Door'da ölçümleri ve günlükleri izleme.
Günlük FrontdoorAccessLog
, Azure Front Door üzerinden geçen tüm istekleri içerir. Günlük şeması dahil olmak üzere Azure Front Door erişim günlüğü hakkında daha fazla bilgi için bkz . Azure Front Door'da ölçümleri ve günlükleri izleme (klasik).
Aşağıdaki örnek sorgu erişim günlüğü girdilerini döndürür:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorAccessLog"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorAccessLog"
Aşağıdaki kod parçacığı örnek bir günlük girdisi gösterir:
{
"time": "2020-06-09T22:32:17.8383427Z",
"category": "FrontDoorAccessLog",
"operationName": "Microsoft.Cdn/Profiles/AccessLog/Write",
"properties": {
"trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
"httpMethod": "GET",
"httpVersion": "2.0",
"requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
"requestBytes": "715",
"responseBytes": "380",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4157.0 Safari/537.36 Edg/85.0.531.1",
"clientIp": "xxx.xxx.xxx.xxx",
"socketIp": "xxx.xxx.xxx.xxx",
"clientPort": "52097",
"timeTaken": "0.003",
"securityProtocol": "TLS 1.2",
"routingRuleName": "WAFdemoWebAppRouting",
"rulesEngineMatchNames": [],
"backendHostname": "wafdemowebappuscentral.azurewebsites.net:443",
"sentToOriginShield": false,
"httpStatusCode": "403",
"httpStatusDetails": "403",
"pop": "SJC",
"cacheStatus": "CONFIG_NOCACHE"
}
}
{
"time": "2020-06-09T22:32:17.8383427Z",
"category": "FrontdoorAccessLog",
"operationName": "Microsoft.Network/FrontDoor/AccessLog/Write",
"properties": {
"trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
"httpMethod": "GET",
"httpVersion": "2.0",
"requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
"requestBytes": "715",
"responseBytes": "380",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4157.0 Safari/537.36 Edg/85.0.531.1",
"clientIp": "xxx.xxx.xxx.xxx",
"socketIp": "xxx.xxx.xxx.xxx",
"clientPort": "52097",
"timeTaken": "0.003",
"securityProtocol": "TLS 1.2",
"routingRuleName": "WAFdemoWebAppRouting",
"rulesEngineMatchNames": [],
"backendHostname": "wafdemowebappuscentral.azurewebsites.net:443",
"sentToOriginShield": false,
"httpStatusCode": "403",
"httpStatusDetails": "403",
"pop": "SJC",
"cacheStatus": "CONFIG_NOCACHE"
}
}
WAF günlükleri
Günlük FrontDoorWebApplicationFirewallLog
, WAF kuralıyla eşleşen istekleri içerir.
Günlük FrontdoorWebApplicationFirewallLog
, WAF kuralıyla eşleşen tüm istekleri içerir.
Aşağıdaki tabloda her istek için günlüğe kaydedilen değerler gösterilmektedir.
Özellik | Tanım |
---|---|
Eylem | İstekte gerçekleştirilen eylem. Günlükler, tüm eylemleri içeren istekleri içerir. Eylemler şunlardır:
|
ClientIP | İsteği yapan istemcinin IP adresi. İstekte bir X-Forwarded-For üst bilgi varsa, istemci IP adresi bunun yerine bu üst bilgi alanından alınır. |
ClientPort | İsteği yapan istemcinin IP bağlantı noktası. |
Ayrıntılar | Algılanan tehditler de dahil olmak üzere istekle ilgili diğer ayrıntılar. matchVariableName : üst bilgi adları (en fazla 100 karakter) gibi eşleşen isteğin HTTP parametre adı.matchVariableValue : Eşleşmeyi tetikleyen değerler (en fazla 100 karakter). |
Ana Bilgisayar | Host İsteğin üst bilgisi. |
İlke | İsteği işleyen WAF ilkesinin adı. |
PolicyMode | WAF ilkesinin işlem modu. Olası değerler ve Detection şeklindedirPrevention . |
Requesturi | İsteğin tam URI'sini. |
Rulename | İsteğin eşleşmiş olduğu WAF kuralının adı. |
SocketIP | WAF tarafından görülen kaynak IP adresi. Bu IP adresi TCP oturumunu temel alır ve herhangi bir istek üst bilgisini dikkate almaz. |
TrackingReference | Azure Front Door tarafından sunulan bir isteği tanımlayan benzersiz başvuru dizesi. Bu değer, yanıt üst bilgisinde istemciye X-Azure-Ref gönderilir. Günlükte belirli bir isteği ararken bu alanı kullanın. |
Aşağıdaki örnek sorgu, Azure Front Door WAF'nin engellediği istekleri gösterir:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorWebApplicationFirewallLog"
| where action_s == "Block"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"
Aşağıdaki kod parçacığında, isteğin engellenme nedeni de dahil olmak üzere örnek bir günlük girdisi gösterilmektedir:
{
"time": "2020-06-09T22:32:17.8376810Z",
"category": "FrontdoorWebApplicationFirewallLog",
"operationName": "Microsoft.Cdn/Profiles/Write",
"properties": {
"clientIP": "xxx.xxx.xxx.xxx",
"clientPort": "52097",
"socketIP": "xxx.xxx.xxx.xxx",
"requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
"ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
"policy": "WafDemoCustomPolicy",
"action": "Block",
"host": "wafdemofrontdoorwebapp.azurefd.net",
"trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
"policyMode": "prevention",
"details": {
"matches": [
{
"matchVariableName": "QueryParamValue:q",
"matchVariableValue": "' or 1=1"
}
]
}
}
}
{
"time": "2020-06-09T22:32:17.8376810Z",
"category": "FrontdoorWebApplicationFirewallLog",
"operationName": "Microsoft.Network/FrontDoorWebApplicationFirewallLog/Write",
"properties": {
"clientIP": "xxx.xxx.xxx.xxx",
"clientPort": "52097",
"socketIP": "xxx.xxx.xxx.xxx",
"requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
"ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
"policy": "WafDemoCustomPolicy",
"action": "Block",
"host": "wafdemofrontdoorwebapp.azurefd.net",
"trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
"policyMode": "prevention",
"details": {
"matches": [
{
"matchVariableName": "QueryParamValue:q",
"matchVariableValue": "' or 1=1"
}
]
}
}
}
Sonraki adımlar
Azure Front Door hakkında daha fazla bilgi edinin.