Aturan kustom untuk Azure Web Application Firewall di Azure Front Door

Berlaku untuk: ✔️ Front Door Standard ✔️ Front Door Premium

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 mengatur akses berdasarkan serangkaian kondisi pencocokan. 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, tipe 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 kemudian 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 Pencocokan

    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.

    • Variabel pertandingan

      • RequestMethod
      • String Kueri
      • PostArgs
      • PermintaanUri
      • TajukPermintaan
      • RequestBody
      • Cookie
    • Operator

      • Apa pun: Sering digunakan untuk menentukan tindakan default jika tidak ada aturan yang cocok. Any akan cocok dengan semua operator.
      • Sama
      • Berisi
      • LessThan: Batasan ukuran
      • GreaterThan: Batasan ukuran
      • LessThanOrEqual: Batasan ukuran
      • GreaterThanOrEqual: Batasan ukuran
      • DimulaiDengan
      • Berakhir Dengan
      • Regex
    • Regex

      Tidak mendukung operasi berikut:

      • Referensi balik dan menangkap subekspresi
      • Pernyataan tanpa lebar yang arbitrer
      • Referensi subrutin dan pola rekursif
      • Pola kondisional
      • Kata kerja pengendalian alur balik
      • Direktif byte tunggal \C
      • Direktif pencocokan baris baru \R dalam pengkodean
      • Awal \K direktif reset kecocokan
      • Panggilan dan kode yang disematkan
      • Pengelompokan atomik dan bilangan posesif
    • Negate [pilihan]

      Anda dapat mengatur kondisi negate ke benar jika hasil dari suatu kondisi harus dinegasikan.

    • Transformasi [opsional]

      Daftar string dengan nama-nama transformasi yang dilakukan sebelum pencocokan dilakukan. Hal ini dapat berupa transformasi berikut:

      • Huruf Kapital
      • Huruf kecil
      • Pangkas
      • HapusNilaiNull
      • UrlDecode
      • Pengkodean URL
    • Nilai pencocokan

      Nilai metode permintaan HTTP yang didukung meliputi:

      • DAPATKAN
      • Pos
      • TEMPATKAN
      • Kepala
      • HAPUS
      • KUNCI
      • Buka Kunci
      • PROFIL
      • OPSI
      • PROPFIND
      • PROPPATCH
      • MKCOL
      • Menyalin
      • PINDAH
      • Pembaruan
      • MENGHUBUNGKAN

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

Pencocokan berdasarkan URI permintaan

Misalkan Anda perlu mengizinkan permintaan di mana URI berisi 'login'.

Berikut ini contoh deskripsi JSON dari aturan kustom:

{
  "name": "URIContainsLogin",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "Contains",
      "negateCondition": false,
      "matchValue": [
        "login"
      ]
    }
  ],
  "action": "Allow"
}

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.