Pemantauan dan pembuatan log Azure Web Application Firewall

Azure Web Application Firewall di Azure Front Door menyediakan pengelogan dan telemetri yang luas untuk membantu Anda memahami performa firewall aplikasi web (WAF) Anda dan tindakan yang diperlukan.

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

Metrik

Azure Front Door secara otomatis merekam metrik untuk membantu Anda memahami perilaku WAF Anda.

Untuk mengakses metrik WAF Anda:

  1. Masuk ke portal Azure dan buka profil Azure Front Door Anda.
  2. Di panel paling kiri di bawah Pemantauan, pilih tab Metrik .
  3. Tambahkan metrik Jumlah Permintaan Web Application Firewall untuk melacak jumlah permintaan yang cocok dengan aturan WAF.

Anda dapat membuat filter kustom berdasarkan jenis tindakan dan nama aturan. Metrik menyertakan permintaan dengan semua tindakan kecuali Log.

Screenshot that shows the metrics for an Azure Front Door WAF.

Log dan diagnostik

Azure Front Door WAF menyediakan pelaporan terperinci pada setiap permintaan dan setiap ancaman yang dideteksinya. Pengelogan terintegrasi dengan log dan pemberitahuan diagnostik Azure dengan menggunakan log Azure Monitor.

Log tidak diaktifkan secara default. Anda harus mengaktifkan log secara eksplisit. Anda dapat mengonfigurasi log di portal Azure dengan menggunakan tab Pengaturan diagnostik.

Screenshot that shows how to enable the WAF logs.

Jika pengelogan diaktifkan dan aturan WAF dipicu, pola yang cocok dicatat dalam teks biasa untuk membantu Anda menganalisis dan men-debug perilaku kebijakan WAF. Anda dapat menggunakan pengecualian untuk menyempurnakan aturan dan mengecualikan data apa pun yang ingin Anda kecualikan dari log. Untuk informasi selengkapnya, lihat Daftar pengecualian firewall aplikasi web di Azure Front Door.

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

Log akses

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

Log FrontdoorAccessLog mencakup semua permintaan yang melalui Azure Front Door. Untuk informasi selengkapnya tentang log akses Azure Front Door, termasuk skema log, lihat Memantau 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"

Cuplikan berikut menunjukkan contoh entri log:

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

Log FrontDoorWebApplicationFirewallLog mencakup permintaan yang cocok dengan aturan WAF.

Log FrontdoorWebApplicationFirewallLog mencakup permintaan apa pun yang cocok dengan aturan WAF.

Tabel berikut ini memperlihatkan nilai yang dicatat untuk setiap permintaan.

Properti Deskripsi
Tindakan Tindakan yang diambil atas permintaan. Log mencakup permintaan dengan semua tindakan. Tindakannya adalah:
  • Allow dan allow: Permintaan diizinkan untuk melanjutkan pemrosesan.
  • Block dan block: Permintaan cocok dengan aturan WAF yang dikonfigurasi untuk memblokir permintaan. Atau, ambang penskoran anomali tercapai dan permintaan diblokir.
  • Log dan log: Permintaan cocok dengan aturan WAF yang dikonfigurasi untuk menggunakan Log tindakan.
  • AnomalyScoring dan logandscore: Permintaan cocok dengan aturan WAF. Aturan berkontribusi pada skor anomali. Permintaan mungkin atau mungkin tidak diblokir tergantung pada aturan lain yang berjalan pada permintaan yang sama.
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 Alamat IP klien yang membuat permintaan.
Detail Detail selengkapnya tentang permintaan, termasuk ancaman apa pun yang terdeteksi.
matchVariableName: Nama parameter HTTP dari permintaan yang cocok, misalnya, nama header (maksimum hingga 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 Azure Front Door. Nilai ini dikirim ke klien di header respons X-Azure-Ref. Gunakan bidang ini saat Anda mencari permintaan tertentu di log.

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

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

Cuplikan berikut menunjukkan 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

Pelajari selengkapnya tentang Azure Front Door.