Bagikan melalui


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.

Metode pengukuran

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 Firewall Aplikasi Web untuk melacak jumlah permintaan yang cocok dengan aturan Firewall Aplikasi Web.

Anda dapat membuat filter kustom berdasarkan jenis tindakan dan nama aturan. Metrik mencakup permintaan dengan tindakan penghentian seperti Block dan Allow serta permintaan di mana WAF tidak mengambil tindakan. Karena beberapa tindakan yang tidak mengakhiri Log dapat dipicu oleh satu permintaan, tindakan tersebut dikecualikan dari metrik ini untuk menghindari jumlah permintaan duplikat.

Cuplikan layar yang memperlihatkan metrik untuk Azure Front Door WAF.

Metrik tantangan JavaScript (pratinjau)

Untuk mengakses metrik tantangan JavaScript WAF Anda:

  • Tambahkan metrik Web Application Firewall JS Challenge Request Count untuk melacak jumlah permintaan yang cocok dengan aturan tantangan JavaScript dari WAF.

Filter berikut disediakan sebagai bagian dari metrik ini:

  • PolicyName: Ini adalah nama kebijakan WAF
  • Aturan: Ini bisa menjadi aturan kustom atau aturan bot apa pun
  • Tindakan: Ada empat nilai yang mungkin untuk tindakan JS Challenge
    • Dikeluarkan: JS Challenge dipanggil untuk pertama kalinya
    • Lulus: Komputasi JS Challenge berhasil dan jawaban diterima
    • Valid: Cookie validitas JS Challenge ditemukan
    • Diblokir: JS Challenge komputasi gagal

Cuplikan layar memperlihatkan metrik tantangan JavaScript.

Catatan dan diagnostik

Azure Front Door WAF menyediakan pelaporan terperinci pada setiap permintaan dan setiap ancaman yang dideteksinya. Pencatatan log terintegrasi dengan log diagnostik dan pemberitahuan 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.

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.

Anda dapat mengaktifkan tiga jenis log Azure Front Door:

  • Catatan WAF
  • Catatan akses
  • Catatan pengecekan kesehatan

Log aktivitas diaktifkan secara default dan memberikan visibilitas ke dalam operasi yang dilakukan pada sumber daya Azure Anda, seperti perubahan konfigurasi pada profil Azure Front Door Anda.

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

Harta benda 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 tersebut diblokir.
  • Log dan log: Permintaan cocok dengan aturan WAF yang dikonfigurasi untuk menggunakan tindakan Log.
  • 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.
  • JS Challenge dan JSChallengeIssued: Dikeluarkan karena penyelesaian tantangan yang hilang atau tidak valid, serta jawaban yang hilang.

    Log dibuat ketika klien meminta akses ke aplikasi web untuk pertama kalinya dan belum ditantang sebelumnya. Klien ini menerima halaman tantangan JS dan melanjutkan untuk menghitung tantangan JS. Setelah komputasi berhasil, klien diberikan cookie validitas.
  • JS Challenge dan JSChallengePass: Lulus karena jawaban yang valid untuk tantangan.

    Log ini dibuat ketika klien memecahkan tantangan JS dan mengirimkan ulang permintaan dengan jawaban yang benar. Dalam hal ini, Azure WAF memvalidasi cookie dan melanjutkan untuk memproses aturan yang tersisa tanpa menghasilkan tantangan JS lain.
  • JS Challenge dan JSChallengeValid: Dicatat/dilewatkan karena tantangan yang valid.

    Log ini dibuat ketika klien sebelumnya telah menyelesaikan tantangan. Dalam hal ini, Azure WAF mencatat permintaan dan melanjutkan untuk memproses aturan yang tersisa.
  • JS Challenge dan JSChallengeBlock: Diblokir

    Log ini dibuat ketika komputasi tantangan JS gagal.
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.
Port Klien Alamat IP klien yang membuat permintaan.
Detail lebih lanjut 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).
Tuan rumah Header permintaan Host.
Kebijakan Nama kebijakan WAF yang memproses permintaan.
Mode Kebijakan Mode operasi kebijakan WAF. Nilai yang mungkin adalah Prevention dan Detection.
PermintaanUri URI penuh dari permintaan.
Nama Peraturan Nama aturan WAF yang cocok dengan permintaan.
SoketIP Alamat IP sumber yang dilihat oleh WAF. Alamat IP ini didasarkan pada sesi TCP dan tidak mempertimbangkan header permintaan apa pun.
Referensi Pelacakan 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"
        }
      ]
    }
  }
}

Untuk informasi selengkapnya tentang log Azure Front Door lainnya, lihat Memantau metrik dan log di Azure Front Door.

Langkah berikutnya

Pelajari selengkapnya tentang Azure Front Door.