Pemantauan dan pembuatan log Azure Web Application Firewall

Pemantauan dan pembuatan log Azure Web Application Firewall (WAF) disediakan melalui pencatatan dan integrasi dengan Azure Monitor dan log Azure Monitor.

Azure Monitor

Log WAF Front Door terintegrasi dengan Azure Monitor. Azure Monitor memungkinkan Anda melacak informasi diagnostik termasuk peringatan dan log WAF. Anda dapat mengonfigurasi pemantauan WAF dalam sumber daya Front Door di portal dalam tab Diagnostik, melalui infrastruktur sebagai pendekatan kode, atau dengan menggunakan layanan Azure Monitor secara langsung.

Dari portal Microsoft Azure, buka jenis sumber daya Front Door. Dari tab Pemantauan/Metrik di sebelah kiri, Anda dapat menambahkan WebApplicationFirewallRequestCount untuk melacak jumlah permintaan yang sesuai dengan aturan WAF. Filter kustom dapat dibuat berdasarkan jenis tindakan dan nama aturan.

WAFMetrics

Log dan diagnostik

WAF dengan Front Door memberikan pelaporan terperinci tentang setiap permintaan dan ancaman yang dideteksinya. Pengelogan terintegrasi dengan log dan peringatan diagnostik Azure. Log ini dapat diintegrasikan dengan log Azure Monitor.

WAFDiag

Front Door menyediakan dua jenis log: log akses dan log WAF.

Log akses

FrontDoorAccessLog mencakup semua permintaan yang melalui Front Door. Untuk informasi selengkapnya tentang log akses Front Door, termasuk skema log, lihat Log Azure Front Door.

FrontDoorAccessLog mencakup semua permintaan yang melalui Front Door. Untuk informasi selengkapnya tentang log akses Front Door, termasuk skema log, lihat Pemantauan metrik dan log di Azure Front Door (klasik).

Contoh kueri berikut mengembalikan entri log akses:

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorAccessLog"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorAccessLog"

Berikut ini adalah contoh penggunaan:

{
  "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"
  }
}

Log WAF

FrontDoorWebApplicationFirewallLog menyertakan permintaan yang cocok dengan aturan WAF.

FrontDoorWebApplicationFirewallLog menyertakan permintaan apa pun yang cocok dengan aturan WAF.

Tabel berikut menunjukkan nilai yang dicatat untuk setiap permintaan:

Properti Deskripsi
Tindakan Tindakan yang diambil atas permintaan. Log mencakup permintaan dengan semua tindakan. Metrik menyertakan permintaan dengan semua tindakan kecuali Log.
ClientIP Alamat IP klien yang membuat permintaan. Jika terdapat header X-Forwarded-For dalam permintaan, alamat IP klien diambil dari bidang header tersebut sebagai gantinya.
ClientPort Port IP komputer klien yang membuat permintaan.
Detail Detail tambahan tentang permintaan, termasuk ancaman apa pun yang terdeteksi.
matchVariableName: Nama parameter HTTP permintaan yang cocok, misalnya, nama header (maks 100 karakter).
matchVariableValue: Nilai yang memicu kecocokan (maksimum hingga 100 karakter).
Host Header Host permintaan.
Kebijakan Nama kebijakan WAF yang memproses permintaan.
PolicyMode Mode operasi kebijakan WAF. Nilai yang mungkin adalah Prevention dan Detection.
RequestUri URI penuh dari permintaan.
RuleName Nama aturan WAF yang cocok dengan permintaan.
SocketIP Alamat IP sumber yang dilihat oleh WAF. Alamat IP ini didasarkan pada sesi TCP dan tidak mempertimbangkan header permintaan apa pun.
TrackingReference String referensi unik yang mengidentifikasi permintaan yang dilayani oleh Front Door. Nilai ini dikirim ke klien di header respons X-Azure-Ref. Gunakan bidang ini saat mencari permintaan tertentu di log.

Contoh kueri berikut menunjukkan permintaan yang diblokir oleh WAF Front Door:

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorWebApplicationFirewallLog" 
| where action_s == "Block" 
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"

Berikut ini memperlihatkan contoh entri log, termasuk alasan permintaan diblokir:

{
  "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"
        }
      ]
    }
  }
}

Langkah berikutnya