Aturan kustom untuk Azure Web Application Firewall di Azure Front Door
Azure Web Application Firewall di Azure Front Door memungkinkan Anda mengontrol akses ke aplikasi web Anda berdasarkan kondisi yang Anda tentukan. Aturan firewall aplikasi web (WAF) kustom terdiri dari nomor prioritas, jenis aturan, kondisi kecocokan, dan tindakan.
Ada dua jenis aturan kustom: aturan pencocokan dan aturan batas laju. Aturan kecocokan mengontrol akses berdasarkan serangkaian kondisi yang cocok. Aturan batas tarif mengontrol akses berdasarkan kondisi yang cocok dan tingkat permintaan masuk. Anda dapat menonaktifkan aturan kustom untuk mencegahnya dievaluasi tetapi masih menyimpan konfigurasi.
Untuk informasi selengkapnya tentang pembatasan tarif, lihat Apa itu pembatasan tarif untuk Azure Front Door?.
Prioritas, jenis tindakan, dan kondisi kecocokan
Anda dapat mengontrol akses dengan aturan WAF kustom yang menentukan nomor prioritas, jenis aturan, array kondisi kecocokan, dan tindakan.
Prioritas
Bilangan bulat unik yang menjelaskan urutan evaluasi aturan WAF. Aturan dengan nilai berprioritas lebih rendah dievaluasi sebelum aturan dengan nilai yang lebih tinggi. Evaluasi aturan berhenti pada tindakan aturan apa pun kecuali Log. Nomor prioritas harus bersifat unik di antara semua aturan kustom.
Perbuatan
Menentukan cara merutekan permintaan jika aturan WAF cocok. Anda dapat memilih salah satu tindakan berikut untuk diterapkan saat permintaan cocok dengan aturan kustom.
- Izinkan: WAF memungkinkan permintaan untuk diproses, mencatat entri dalam log WAF, dan keluar.
- Blokir: Permintaan diblokir. WAF mengirimkan respons ke klien tanpa meneruskan permintaan lebih lanjut. WAF mencatat entri dalam log WAF dan keluar.
- Log: WAF mencatat entri dalam log WAF dan terus mengevaluasi aturan berikutnya dalam urutan prioritas.
- Pengalihan: WAF mengalihkan permintaan ke URI tertentu, mencatat entri dalam log WAF, dan keluar.
Kondisi kecocokan
Menentukan variabel kecocokan, operator, dan nilai kecocokan. Setiap aturan dapat berisi beberapa kondisi kecocokan. Kondisi kecocokan mungkin didasarkan pada lokasi geografis, alamat IP klien (CIDR), ukuran, atau kecocokan string. Kecocokan string dapat bertentangan dengan daftar variabel pencocokan.
Mencocokkan variabel
- RequestMethod
- QueryString
- PostArgs
- RequestUri
- RequestHeader
- RequestBody
- Cookie
Operator
- Apa pun: Sering digunakan untuk menentukan tindakan default jika tidak ada aturan yang cocok. Any akan cocok dengan semua operator.
- Equal
- Contains
- LessThan: Batasan ukuran
- GreaterThan: Batasan ukuran
- LessThanOrEqual: Batasan ukuran
- GreaterThanOrEqual: Batasan ukuran
- BeginsWith
- EndsWith
- Regex
Regex
Tidak mendukung operasi berikut:
- Referensi latar dan mengambil subekspresi
- Pernyataan lebar nol arbitrer
- Referensi subrutin dan pola rekursif
- Pola kondisional
- Kata kerja kontrol mundur
- Direktif byte tunggal \C
- Direktif kecocokan baris baru \R
- Awal \K direktif reset kecocokan
- Panggilan dan kode yang disematkan
- Pengelompokan atomik dan bilangan posesif
Negate [opsional]
Anda dapat mengatur kondisi ke
negate
true jika hasil kondisi harus dinegasikan.Transformasi [opsional]
Daftar string beserta nama transformasi yang dilakukan sebelum pertandingan diupayakan. Hal ini dapat berupa transformasi berikut:
- Uppercase
- Huruf kecil
- Trim
- RemoveNulls
- UrlDecode
- UrlEncode
Nilai pencocokan
Nilai metode permintaan HTTP yang didukung meliputi:
- GET
- POST
- TARUH
- HEAD
- DELETE
- LOCK
- UNLOCK
- PROFIL
- OPSI
- PROPFIND
- PROPPATCH
- MKCOL
- COPY
- MOVE
- PATCH
- MENGHUBUNG
Contoh
Pertimbangkan contoh berikut.
Mencocokkan berdasarkan parameter permintaan HTTP
Misalkan Anda perlu mengonfigurasi aturan kustom untuk mengizinkan permintaan yang cocok dengan dua kondisi berikut:
- Nilai header
Referer
sama dengan nilai yang diketahui. - String kueri tidak berisi kata
password
.
Berikut ini contoh deskripsi JSON dari aturan kustom:
{
"name": "AllowFromTrustedSites",
"priority": 1,
"ruleType": "MatchRule",
"matchConditions": [
{
"matchVariable": "RequestHeader",
"selector": "Referer",
"operator": "Equal",
"negateCondition": false,
"matchValue": [
"www.mytrustedsites.com/referpage.html"
]
},
{
"matchVariable": "QueryString",
"operator": "Contains",
"matchValue": [
"password"
],
"negateCondition": true
}
],
"action": "Allow"
}
Memblokir permintaan HTTP PUT
Misalkan Anda perlu memblokir permintaan apa pun yang menggunakan metode HTTP PUT.
Berikut ini contoh deskripsi JSON dari aturan kustom:
{
"name": "BlockPUT",
"priority": 2,
"ruleType": "MatchRule",
"matchConditions": [
{
"matchVariable": "RequestMethod",
"selector": null,
"operator": "Equal",
"negateCondition": false,
"matchValue": [
"PUT"
]
}
],
"action": "Block"
}
Batasan ukuran
Waf Azure Front Door memungkinkan Anda membuat aturan kustom yang menerapkan batasan panjang atau ukuran pada bagian dari permintaan masuk. Batasan ukuran ini diukur dalam byte.
Misalkan Anda perlu memblokir permintaan yang URLnya lebih panjang dari 100 karakter.
Berikut ini contoh deskripsi JSON dari aturan kustom:
{
"name": "URLOver100",
"priority": 5,
"ruleType": "MatchRule",
"matchConditions": [
{
"matchVariable": "RequestUri",
"selector": null,
"operator": "GreaterThanOrEqual",
"negateCondition": false,
"matchValue": [
"100"
]
}
],
"action": "Block"
}
Menyalin dan menduplikasi aturan kustom
Aturan kustom dapat diduplikasi dalam kebijakan tertentu. Saat menduplikasi aturan, Anda perlu menentukan nama unik untuk aturan dan nilai prioritas unik. Selain itu, aturan kustom dapat disalin dari satu kebijakan WAF Azure Front Door ke kebijakan lain selama kebijakan keduanya berada dalam langganan yang sama. Saat menyalin aturan dari satu kebijakan ke kebijakan lain, Anda perlu memilih kebijakan WAF Azure Front Door yang ingin Anda salin aturannya. Setelah Anda memilih kebijakan WAF, Anda perlu memberi aturan nama unik, dan menetapkan peringkat prioritas.
Langkah berikutnya
- Mengonfigurasi kebijakan WAF dengan menggunakan Azure PowerShell.
- Pelajari tentang Azure Web Application Firewall di Azure Front Door.
- Pelajari cara membuat instans Azure Front Door.