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 menggunakanEquals 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 name
kecocokan , 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
, , PostParamName
HeaderName
, 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
- Konfigurasikan daftar pengecualian di Azure Front Door WAF Anda.
- Setelah mengonfigurasi pengaturan WAF, pelajari cara melihat log WAF. Untuk informasi selengkapnya, lihat Diagnostik Azure Front Door.