Aturan kustom untuk Web Application Firewall v2 di Azure Application Gateway

Azure Application Gateway Web Application Firewall (WAF) v2 dilengkapi dengan set aturan yang dikelola platform yang telah dikonfigurasi sebelumnya yang menawarkan perlindungan dari berbagai jenis serangan. Serangan ini mencakup pembuatan skrip lintas situs, injeksi SQL, dan lainnya. Jika Anda adalah admin WAF, Anda mungkin ingin menulis aturan Anda sendiri untuk menambah aturan seperangkat aturan inti (CRS). Aturan kustom Anda dapat memblokir, mengizinkan, atau mencatat lalu lintas yang diminta berdasarkan kriteria yang cocok. Jika kebijakan WAF diatur ke mode deteksi, dan aturan blok kustom dipicu, permintaan dicatat dan tidak ada tindakan pemblokiran yang diambil.

Aturan kustom memungkinkan Anda membuat aturan Anda sendiri yang dievaluasi untuk setiap permintaan yang melewati WAF. Aturan ini memiliki prioritas yang lebih tinggi daripada aturan lainnya dalam kumpulan aturan terkelola. Aturan kustom berisi nama aturan, prioritas aturan, dan array kondisi pencocokan. Jika kondisi ini terpenuhi, tindakan diambil (untuk mengizinkan, memblokir, atau mencatat). Jika aturan kustom dipicu, dan tindakan izinkan atau blokir diambil, tidak ada aturan kustom atau terkelola lebih lanjut yang dievaluasi. Aturan kustom dapat diaktifkan/dinonaktifkan sesuai permintaan.

Misalnya, Anda dapat memblokir semua permintaan dari alamat IP dalam rentang 192.168.5.0/24. Dalam aturan ini, operatornya adalah IPMatch, matchValues adalah rentang alamat IP (192.168.5.0/24), dan tindakannya adalah memblokir lalu lintas. Anda juga mengatur nama aturan, prioritas, dan status diaktifkan/dinonaktifkan.

Aturan kustom mendukung penggunaan logika majemuk untuk membuat aturan yang lebih canggih yang memenuhi kebutuhan keamanan Anda. Misalnya, Anda dapat menggunakan dua aturan kustom untuk membuat logika berikut ((rule1:Condition 1 dan rule1:Condition 2) atau rule2:Condition 3). Logika ini berarti bahwa jika Kondisi 1 dan Kondisi 2 terpenuhi, atau jika Kondisi 3 terpenuhi, WAF harus mengambil tindakan yang ditentukan dalam aturan kustom.

Kondisi pencocokan lainnya dalam aturan yang sama selalu digabungkan menggunakan dan. Misalnya, blokir lalu lintas dari alamat IP tertentu, dan hanya jika menggunakan browser tertentu.

Jika Anda ingin menggunakan atau antara dua kondisi yang berbeda, keduanya harus dalam aturan yang berbeda. Misalnya, blokir lalu lintas dari alamat IP tertentu atau memblokir lalu lintas jika menggunakan browser tertentu.

Ekspresi reguler juga didukung dalam aturan kustom, seperti dalam seperangkat aturan CRS. Misalnya, lihat Contoh 3 dan 5 dalam Membuat dan menggunakan aturan firewall aplikasi web kustom.

Catatan

Jumlah maksimum aturan kustom WAF adalah 100. Untuk informasi selengkapnya tentang batas Application Gateway, lihat Batasan, kuota, dan batas layanan dan langganan Azure.

Perhatian

Setiap aturan pengalihan yang diterapkan di tingkat gateway aplikasi akan melewati aturan kustom WAF. Lihat Ringkasan pengalihan Application Gateway untuk informasi selengkapnya tentang aturan pengalihan.

Mengizinkan vs. memblokir

Mengizinkan dan memblokir lalu lintas mudah dilakukan dengan aturan khusus. Misalnya, Anda dapat memblokir semua lalu lintas yang berasal dari rentang alamat IP. Anda dapat membuat aturan lain untuk mengizinkan lalu lintas jika permintaan berasal dari browser tertentu.

Untuk mengizinkan sesuatu, pastikan parameter -Action diatur ke Izinkan. Untuk memblokir sesuatu, pastikan parameter -Action diatur ke blokir.

$AllowRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example1 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Allow `
   -State Enabled

$BlockRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example2 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Block `
   -State Enabled

$BlockRule sebelumnya dipetakan ke aturan kustom berikut di Azure Resource Manager:

"customRules": [
      {
        "name": "blockEvilBot",
        "priority": 2,
        "ruleType": "MatchRule",
        "action": "Block",
        "state": "Enabled",
        "matchConditions": [
          {
            "matchVariables": [
              {
                "variableName": "RequestHeaders",
                "selector": "User-Agent"
              }
            ],
            "operator": "Contains",
            "negationCondition": false,
            "matchValues": [
              "evilbot"
            ],
            "transforms": [
              "Lowercase"
            ]
          }
        ]
      }
    ], 

Aturan kustom ini berisi nama, prioritas, tindakan, dan array kondisi pencocokan yang harus dipenuhi agar tindakan berlangsung. Untuk penjelasan lebih lanjut tentang bidang ini, lihat deskripsi bidang berikut. Misalnya aturan kustom, lihat Membuat dan menggunakan aturan firewall aplikasi web kustom.

Bidang untuk aturan kustom

Nama [opsional]

Nama aturan. Muncul di log.

Aktifkan aturan [opsional]

Aktifkan/nonaktifkan aturan ini. Aturan kustom diaktifkan secara default.

Prioritas [wajib diisi]

  • Menentukan urutan evaluasi aturan. Semakin rendah nilainya, semakin awal evaluasi aturannya. Rentang yang diperbolehkan dari 1-100.
  • Harus unik di semua aturan kustom. Aturan dengan prioritas 40 dievaluasi sebelum aturan dengan prioritas 80.

Jenis aturan [wajib diisi]

Saat ini, harus MatchRule.

Variabel pencocokan [wajib diisi]

Harus berupa salah satu variabel berikut:

  • RemoteAddr – Alamat IPv4/Rentang koneksi komputer jarak jauh
  • RequestMethod – Metode Permintaan HTTP
  • QueryString – Variabel dalam URI
  • PostArgs - Argumen dikirim dalam isi POST. Aturan Kustom yang menggunakan variabel kecocokan ini hanya diterapkan jika header 'Content-Type' diatur ke 'application/x-www-form-urlencoded' dan 'multipart/form-data.' Jenis konten application/json tambahan didukung dengan CRS versi 3.2 atau lebih tinggi, seperangkat aturan perlindungan bot, dan aturan kustom yang cocok secara geografis.
  • RequestUri – URI permintaan
  • RequestHeaders – Header permintaan
  • RequestBody – Variabel ini berisi seluruh isi permintaan secara keseluruhan. Aturan khusus yang menggunakan variabel pencocokan ini hanya diterapkan jika header 'Jenis Konten' diatur ke jenis media application/x-www-form-urlencoded. Jenis konten application/soap+xml, application/xml, text/xml tambahan didukung dengan CRS versi 3.2 atau lebih tinggi, seperangkat aturan perlindungan bot, dan aturan kustom yang cocok dengan geografis.
  • RequestCookies – Cookie permintaan

Pemilih [opsional]

Menjelaskan bidang koleksi matchVariable. Misalnya, jika matchVariable adalah RequestHeaders, pemilih bisa berada di header User-Agent.

Operator [wajib diisi]

Harus berupa salah satu operator berikut:

  • IPMatch - hanya digunakan saat Variabel Pencocokan adalah RemoteAddr, dan hanya mendukung IPv4
  • Equal – input sama dengan MatchValue
  • Apa pun – Seharusnya tidak memiliki MatchValue. Disarankan untuk Variabel Pencocokan dengan Pemilih yang valid.
  • Contains
  • LessThan
  • GreaterThan
  • LessThanOrEqual
  • GreaterThanOrEqual
  • BeginsWith
  • EndsWith
  • Regex
  • Geomatch

Kondisi peniadaan [opsional]

Meniadakan kondisi saat ini.

Transformasi [opsional]

Daftar string beserta nama transformasi yang dilakukan sebelum pertandingan diupayakan. Hal ini dapat berupa transformasi berikut:

  • Huruf kecil
  • Uppercase
  • Trim
  • UrlDecode
  • UrlEncode
  • RemoveNulls
  • HtmlEntityDecode

Nilai pencocokan [wajib diisi]

Daftar nilai yang akan dicocokkan, yang dapat dianggap sebagai OR'ed. Misalnya, ini bisa berupa alamat IP atau string lainnya. Format nilai bergantung pada operator sebelumnya.

Nilai metode permintaan HTTP yang didukung meliputi:

  • GET
  • HEAD
  • POST
  • OPSI
  • TARUH
  • DELETE
  • PATCH

Tindakan [wajib diisi]

Dalam mode deteksi kebijakan WAF, jika aturan kustom dipicu, tindakan selalu dicatat terlepas dari nilai tindakan yang ditetapkan pada aturan kustom.

  • Izinkan - Mengizinkan transaksi, mengabaikan semua aturan lainnya. Permintaan yang ditentukan ditambahkan ke daftar yang diizinkan dan setelah dicocokkan, permintaan menghentikan evaluasi lebih lanjut dan dikirim ke kumpulan backend. Aturan yang ada dalam daftar yang diizinkan tidak dievaluasi untuk aturan kustom atau aturan terkelola lebih lanjut.
  • Blokir - Memblokir atau mencatat transaksi berdasarkan SecDefaultAction (mode deteksi/pencegahan).
    • Mode pencegahan - Memblokir transaksi berdasarkan SecDefaultAction. Sama seperti Allow tindakan, setelah permintaan dievaluasi dan ditambahkan ke daftar blokir, evaluasi dihentikan dan permintaan diblokir. Setiap permintaan setelah itu memenuhi kondisi yang sama tidak dievaluasi dan diblokir.
    • Mode deteksi - Mencatat transaksi berdasarkan SecDefaultAction setelah evaluasi dihentikan. Setiap permintaan setelah itu memenuhi kondisi yang sama tidak dievaluasi dan hanya dicatat.
  • Log - Memungkinkan aturan ditulis ke log, tetapi mengizinkan sisa aturan berjalan untuk dievaluasi. Aturan kustom lainnya dievaluasi dalam urutan prioritas, diikuti oleh aturan yang terkelola.

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 Application Gateway 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 Application Gateway yang ingin Anda salin aturannya. Setelah Anda memilih kebijakan WAF, Anda perlu memberi aturan nama unik, dan menetapkan peringkat prioritas.

Aturan kustom Geomatch

Aturan kustom memungkinkan Anda membuat aturan yang disesuaikan agar sesuai dengan kebutuhan aplikasi dan kebijakan keamanan Anda. Anda dapat membatasi akses ke aplikasi web berdasarkan negara/wilayah. Untuk informasi selengkapnya, lihat aturan kustom Geomatch.

Langkah berikutnya