Web Application Firewall dengan daftar pengecualian Azure Front Door

Terkadang Azure Web Application Firewall di Azure Front Door mungkin memblokir permintaan yang sah. Sebagai bagian dari penyetelan firewall aplikasi web (WAF), Anda dapat mengonfigurasi WAF untuk mengizinkan permintaan aplikasi Anda. Daftar pengecualian WAF memungkinkan Anda menghilangkan atribut permintaan tertentu dari evaluasi WAF. Permintaan lainnya dievaluasi seperti biasa.

Misalnya, MICROSOFT Entra ID menyediakan token yang digunakan untuk autentikasi. Ketika token ini digunakan dalam header permintaan, token tersebut dapat berisi karakter khusus yang mungkin memicu deteksi positif palsu oleh satu atau beberapa aturan WAF. Anda dapat menambahkan header ke daftar pengecualian, yang memberi tahu WAF untuk mengabaikan header. WAF masih memeriksa sisa permintaan untuk konten yang mencurigakan.

Cakupan pengecualian

Anda dapat membuat pengecualian pada cakupan berikut:

  • Seperangkat aturan: Pengecualian ini berlaku untuk semua aturan dalam seperangkat aturan.
  • Grup aturan: Pengecualian ini berlaku untuk semua aturan kategori tertentu dalam seperangkat aturan. Misalnya, Anda dapat mengonfigurasi pengecualian yang berlaku untuk semua aturan injeksi SQL.
  • Aturan: Pengecualian ini berlaku untuk satu aturan.

Pemilih pengecualian

Pemilih pengecualian mengidentifikasi bagian permintaan yang diterapkan pengecualian. WAF mengabaikan deteksi apa pun yang ditemukannya di bagian permintaan yang ditentukan. Anda dapat menentukan beberapa pemilih pengecualian dalam satu pengecualian.

Setiap pemilih pengecualian menentukan variabel kecocokan, operator, dan pemilih.

Mencocokkan variabel

Anda dapat menambahkan atribut permintaan berikut ke pengecualian:

  • Permintaan nama header
  • Permintaan nama cookie
  • Kueri nama argumen untai (karakter)
  • Permintaan nama bodi POST args
  • Nama arg JSON isi permintaan (didukung pada DRS 2.0 atau lebih tinggi)

Nilai bidang yang Anda gunakan tidak dievaluasi berdasarkan aturan WAF, tetapi namanya dievaluasi. Daftar pengecualian menonaktifkan inspeksi nilai bidang. Namun, nama bidang masih dievaluasi. Untuk informasi selengkapnya, lihat Mengecualikan atribut permintaan lainnya.

Operator

Anda dapat menentukan atribut header permintaan, isi, cookie, atau string kueri yang tepat untuk dicocokkan. Atau Anda dapat secara opsional menentukan kecocokan parsial. Operator berikut didukung untuk kriteria kecocokan:

  • Sama dengan: Cocokkan semua bidang permintaan yang sama persis dengan nilai pemilih yang ditentukan. Misalnya, untuk memilih header bernama bearerToken, gunakan Equals operator dengan pemilih diatur ke bearerToken.
  • Dimulai dengan: Cocokkan semua bidang permintaan yang dimulai dengan nilai pemilih yang ditentukan.
  • Diakhir dengan: Cocokkan semua bidang permintaan yang diakhir dengan nilai pemilih yang ditentukan.
  • Berisi: Cocokkan semua bidang permintaan yang berisi nilai pemilih yang ditentukan.
  • Sama dengan apa pun: Cocokkan semua bidang permintaan. Saat Anda menggunakan Equals any operator, nilai pemilih secara otomatis diatur ke *. Misalnya, Anda dapat menggunakan Equals any operator untuk mengonfigurasi pengecualian yang berlaku untuk semua header permintaan.

Sensitivitas huruf besar/besar

Nama header dan cookie tidak peka huruf besar/kecil. String kueri, argumen POST, dan argumen JSON peka huruf besar/kecil.

Inspeksi isi isi

Beberapa aturan terkelola mengevaluasi payload mentah isi permintaan sebelum diuraikan ke dalam argumen POST atau argumen JSON. Jadi dalam beberapa situasi, Anda mungkin melihat entri log dengan matchVariableName nilai InitialBodyContents atau DecodedInitialBodyContents.

Misalnya, Anda membuat pengecualian dengan variabel Request body POST args kecocokan dan pemilih untuk mengidentifikasi dan mengabaikan argumen POST bernama FOO. Anda tidak lagi melihat entri log dengan matchVariableName nilai PostParamValue:FOO. Namun, jika argumen POST bernama FOO berisi teks yang memicu aturan, log mungkin menampilkan deteksi dalam konten isi awal. Saat ini Anda tidak dapat membuat pengecualian untuk konten isi awal.

Menentukan aturan pengecualian berdasarkan log Azure Web Application Firewall

Anda dapat menggunakan log untuk melihat detail permintaan yang diblokir, termasuk bagian permintaan yang memicu aturan. Untuk informasi selengkapnya, lihat Pengelogan dan pemantauan Azure Web Application Firewall .

Terkadang aturan WAF tertentu menghasilkan deteksi positif palsu dari nilai yang disertakan dalam header permintaan, cookie, argumen POST, argumen string kueri, atau bidang JSON dalam isi permintaan. Jika deteksi positif palsu ini terjadi, Anda dapat mengonfigurasi aturan untuk mengecualikan bagian yang relevan dari permintaan dari evaluasinya.

Tabel berikut ini memperlihatkan contoh nilai dari log WAF dan pemilih pengecualian terkait yang dapat Anda buat.

matchVariableName dari log WAF Pengecualian aturan di portal
CookieValue:SOME_NAME Minta nama cookie Sama dengan SOME_NAME
HeaderValue:SOME_NAME Minta nama header Sama dengan SOME_NAME
PostParamValue:SOME_NAME Permintaan isi POST args nama Sama dengan SOME_NAME
QueryParamValue:SOME_NAME Kueri nama untai (karakter) argumen Sama dengan SOME_NAME
JsonValue:SOME_NAME Nama argS JSON isi permintaan Sama dengan SOME_NAME

Pengecualian untuk badan permintaan JSON

Dari DRS versi 2.0, badan permintaan JSON diperiksa oleh WAF. Misalnya, pertimbangkan isi permintaan JSON ini:

{
  "posts": [
    {
      "id": 1,
      "comment": ""
    },
    {
      "id": 2,
      "comment": "\"1=1\""
    }
  ]
}

Permintaan ini mencakup urutan karakter komentar SQL, yang dideteksi WAF sebagai potensi serangan injeksi SQL.

Jika Anda menentukan bahwa permintaan tersebut sah, Anda dapat membuat pengecualian dengan variabel Request body JSON args namekecocokan , operator Equals, dan pemilih .posts.comment

Mengecualikan atribut permintaan lainnya

Jika entri log WAF Anda memperlihatkan matchVariableName nilai yang tidak ada dalam tabel sebelumnya, Anda tidak dapat membuat pengecualian. Misalnya, saat ini Anda tidak dapat membuat pengecualian untuk nama cookie, nama header, nama parameter POST, atau nama parameter kueri.

Sebagai gantinya, pertimbangkan untuk mengambil salah satu tindakan berikut:

  • Nonaktifkan aturan yang memberikan positif palsu.
  • Buat aturan kustom yang secara eksplisit mengizinkan permintaan tersebut. Permintaan melewati semua inspeksi WAF.

Secara khusus, ketika matchVariableName nilainya adalah CookieName, , PostParamNameHeaderName, atau QueryParamName, itu berarti nama bidang, bukan nilainya, telah memicu aturan. Pengecualian aturan tidak memiliki dukungan untuk nilai-nilai ini matchVariableName saat ini.

Langkah berikutnya