Google Cloud Armor menyediakan
aturan WAF yang telah dikonfigurasi sebelumnya, yang masing-masing terdiri dari
beberapa tanda tangan yang bersumber dari
Kumpulan Aturan Inti ModSecurity (CRS).
Setiap tanda tangan sesuai dengan aturan deteksi
serangan dalam kumpulan aturan. Permintaan masuk dievaluasi berdasarkan aturan WAF yang telah dikonfigurasi sebelumnya.
Permintaan cocok dengan aturan WAF yang telah dikonfigurasi sebelumnya jika permintaan cocok dengan salah satu
tanda tangan yang terkait dengan aturan WAF yang telah dikonfigurasi sebelumnya. Kecocokan dibuat saat
ekspresi evaluatePreconfiguredWaf()
atau evaluatePreconfiguredExpr()
menampilkan nilai true
.
Memilih tingkat sensitivitas
Setiap tanda tangan memiliki tingkat sensitivitas yang sesuai dengan tingkat paranoia
ModSecurity.
Anda dapat memilih sensitivitas antara 0
dan 4
, meskipun tingkat sensitivitas 0
berarti tidak ada aturan yang diaktifkan secara default.
Tingkat sensitivitas yang lebih rendah menunjukkan tanda keyakinan yang lebih tinggi, yang kurang
mungkin menghasilkan positif palsu. Tingkat sensitivitas yang lebih tinggi meningkatkan keamanan, tetapi juga meningkatkan risiko menghasilkan positif palsu. Saat
memilih tingkat sensitivitas untuk aturan WAF, Anda memilih untuk mengaktifkan tanda tangan pada
tingkat sensitivitas yang kurang dari atau sama dengan tingkat sensitivitas yang dipilih. Pada
contoh berikut, Anda akan menyesuaikan aturan WAF yang telah dikonfigurasi sebelumnya dengan memilih
tingkat sensitivitas 1
:
evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 1})
Tanda tangan aturan tidak ikut
Jika Anda memutuskan bahwa aturan WAF yang telah dikonfigurasi sebelumnya cocok dengan lebih banyak permintaan daripada yang diperlukan,
atau jika aturan memblokir traffic yang perlu diizinkan, aturan tersebut dapat
disesuaikan untuk menonaktifkan tanda tangan yang berisik atau tidak perlu. Untuk menonaktifkan tanda tangan
dalam aturan WAF prakonfigurasi tertentu, Anda memberikan daftar ID tanda tangan
yang tidak diinginkan ke ekspresi evaluatePreconfiguredWaf()
.
Contoh berikut mengecualikan dua ID aturan CRS dari aturan WAF sqli-v33-stable
(CRS 3.3) yang telah dikonfigurasi sebelumnya:
evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 4, 'opt_out_rule_ids': ['owasp-crs-v030301-id942350-sqli', 'owasp-crs-v030301-id942360-sqli']})
Jika Anda memilih untuk tidak menggunakan ID tanda tangan dari kumpulan aturan CRS yang telah dikonfigurasi sebelumnya, Anda harus mencocokkan versi ID tanda tangan dengan versi kumpulan aturan (CRS 3.0 atau 3.3) untuk menghindari error konfigurasi.
Anda juga dapat menonaktifkan ID tanda tangan menggunakan ekspresi lama
evaluatePreconfigureExpr()
. Untuk mengetahui informasi selengkapnya tentang ekspresi aturan WAF yang telah dikonfigurasi sebelumnya, lihat referensi bahasa aturan kustom.
Mengaktifkan tanda tangan aturan
Daripada memilih untuk tidak menggunakan tanda tangan aturan, Anda dapat memilih untuk menggunakan tanda tangan aturan di tingkat sensitivitas yang dinonaktifkan. Sebaiknya Anda mengaktifkan tanda tangan
aturan jika ada lebih sedikit tanda tangan yang ingin Anda gunakan dalam level sensitivitas
tertentu daripada aturan yang ingin Anda nonaktifkan. Untuk mengaktifkan tanda tangan
aturan, tingkat sensitivitas harus 0
. Contoh berikut menonaktifkan
semua tanda tangan cve-canary
di semua tingkat sensitivitas, lalu secara eksplisit mengaktifkan
owasp-crs-v030001-id044228-cve
dan owasp-crs-v030001-id144228-cve
:
evaluatePreconfiguredWaf('cve-canary', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030001-id044228-cve', 'owasp-crs-v030001-id144228-cve']})
Mengecualikan kolom permintaan dari pemeriksaan
Aplikasi kustom Anda mungkin berisi konten di kolom permintaan (seperti
header, cookie, parameter kueri, atau URI) yang cocok dengan tanda tangan dalam
aturan WAF yang telah dikonfigurasi sebelumnya, tetapi Anda tahu bahwa konten tersebut sah. Dalam hal ini, Anda dapat mengurangi positif palsu dengan mengecualikan kolom permintaan tersebut dari pemeriksaan dengan mengaitkan daftar pengecualian untuk kolom permintaan dengan aturan kebijakan keamanan. Perhatikan bahwa jika Anda memiliki pengecualian kolom permintaan yang dilampirkan ke aturan WAF,
Anda tidak dapat menggunakan tindakan allow
.
Saat mengonfigurasi pengecualian kolom permintaan, Anda mengaitkannya dengan target, yang dapat berupa seluruh aturan WAF yang telah dikonfigurasi sebelumnya, atau daftar tanda tangan dalam aturan WAF yang telah dikonfigurasi sebelumnya. Anda dapat menentukan pencocokan persis atau pencocokan sebagian menggunakan operator kolom dan nilai kolom. Operator kolom yang tersedia adalah sebagai berikut:
EQUALS
: Operator cocok jika nilai kolom sama dengan nilai yang ditentukan.STARTS_WITH
: Operator cocok jika nilai kolom diawali dengan nilai yang ditentukan.ENDS_WITH
: Operator cocok jika nilai kolom diakhiri dengan nilai yang ditentukan.CONTAINS
: Operator cocok jika nilai kolom berisi nilai yang ditentukan.EQUALS_ANY
: Operator cocok jika nilai kolom adalah nilai apa pun.
Bagian berikut memberikan informasi selengkapnya tentang kolom permintaan yang dapat Anda kecualikan dari pemeriksaan, diikuti dengan contoh.
Header permintaan
Daftar nama header permintaan yang nilainya dikecualikan dari pemeriksaan selama penilaian aturan WAF yang telah dikonfigurasi sebelumnya.
Pengecualian hanya berlaku untuk tanda tangan di target yang akan memeriksa nilai header permintaan secara asli. Ini mencakup tanda tangan yang terkait dengan flag permintaan berikut di Set Aturan Inti ModSecurity:
- REQUEST_HEADERS
Hanya nilai header permintaan yang ditentukan yang dikecualikan dari pemeriksaan. Nama masih diperiksa.
Meminta cookie
Daftar nama cookie permintaan yang nilainya dikecualikan dari pemeriksaan selama penilaian aturan WAF yang telah dikonfigurasi sebelumnya.
Pengecualian hanya berlaku untuk tanda tangan di target yang akan memeriksa nilai cookie permintaan secara asli. Hal ini mencakup tanda tangan yang dikaitkan dengan flag permintaan berikut di Set Aturan Inti ModSecurity:
- REQUEST_COOKIES
Hanya nilai cookie permintaan yang ditentukan yang dikecualikan dari pemeriksaan. Nama masih diperiksa.
Meminta parameter kueri
Daftar nama parameter kueri permintaan yang nilainya dikecualikan dari pemeriksaan selama evaluasi aturan WAF yang telah dikonfigurasi sebelumnya.
Pengecualian hanya berlaku untuk tanda tangan di target yang akan memeriksa parameter permintaan secara asli. Ini mencakup tanda tangan yang terkait dengan flag permintaan berikut di Set Aturan Inti ModSecurity:
- ARGS
- ARGS_GET
- REQUEST_URI
- REQUEST_URI_RAW
- REQUEST_LINE
Hanya nilai parameter kueri yang ditentukan yang dikecualikan dari pemeriksaan, yang dapat berada dalam string kueri atau isi POST. Nama masih diperiksa.
Karena parameter kueri adalah bagian dari URI dan baris permintaan,
kolom ini akan dirakit ulang untuk diperiksa setelah mengecualikan
parameter kueri yang ditentukan. Namun, untuk tanda tangan yang memeriksa
seluruh isi permintaan (seperti tanda tangan yang terkait dengan
tanda permintaan REQUEST_BODY
), pengecualian untuk parameter kueri tidak diterapkan.
Misalnya, jika Anda mengecualikan parameter kueri bernama "args", Anda mungkin masih melihat kecocokan pada tanda tangan yang memeriksa seluruh isi permintaan jika permintaan memiliki parameter "args" dalam isi POST dan nilai "args" cocok.
URI Permintaan
Daftar URI dari baris permintaan yang mengecualikan data string kueri yang akan dikecualikan dari pemeriksaan selama evaluasi aturan WAF yang telah dikonfigurasi sebelumnya.
Pengecualian hanya berlaku untuk tanda tangan di target yang akan memeriksa URI permintaan secara asli. Ini mencakup tanda tangan yang terkait dengan flag permintaan berikut di Set Aturan Inti ModSecurity:
- REQUEST_URI
- REQUEST_URI_RAW
- REQUEST_LINE
- REQUEST_FILENAME
- REQUEST_BASENAME
Saat mengecualikan salah satu kolom sebelumnya, kolom tersebut akan dikecualikan sepenuhnya dari pemeriksaan, dan tidak ada perakitan ulang yang dilakukan.
Nilai kolom
Anda harus menentukan nilai kolom jika menggunakan operator kolom selain EQUALS_ANY
.
Untuk header permintaan, cookie permintaan, dan parameter kueri permintaan, set karakter yang diizinkan untuk nilai kolom mencakup karakter berikut:
!
,#
,$
,%
,&
,*
,+
,-
,.
,^
,_
,`
,|
,~
- Karakter alfa
A
hinggaZ
(huruf kecil dan besar) - Karakter angka
0
hingga9
Saat menerapkan pengecualian untuk kolom permintaan ini, nilai kolom yang dikonfigurasi akan dibandingkan dengan nilai (tidak peka huruf besar/kecil, setelah transformasi) dari permintaan. Anda tidak perlu melakukan enkripsi tambahan jika ingin mengecualikan karakter tertentu yang tidak ada dalam kumpulan karakter yang diizinkan.
Untuk URI permintaan, nilai kolom harus diberikan dalam format URI sebagai berikut:
- Skema diizinkan, tetapi hanya dibatasi untuk http atau https.
- Host diizinkan, dan dapat berupa alamat IP.
- Port diizinkan.
- Jalur diizinkan.
- Kueri tidak diizinkan.
- Fragmen tidak diizinkan.
Saat menerapkan pengecualian untuk URI permintaan, nilai kolom yang dikonfigurasi akan dibandingkan dengan URI (tidak peka huruf besar/kecil, setelah transformasi) dari baris permintaan, tidak termasuk string kueri. URI dari baris permintaan dapat bersifat relatif atau absolut. Pertimbangkan hal ini saat mengonfigurasi pengecualian untuk URI permintaan.
Contoh
Contoh pertama memperbarui aturan dalam kebijakan keamanan POLICY_1 di
PRIORITY untuk menambahkan konfigurasi pengecualian untuk semua tanda tangan di bawah
aturan WAF sqli-v33-stable
, untuk mengecualikan semua cookie permintaan dari pemeriksaan:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \ --security-policy POLICY_1 \ --target-rule-set "sqli-v33-stable" \ --request-cookie-to-exclude "op=EQUALS_ANY"
Contoh kedua memperbarui aturan dalam kebijakan keamanan POLICY_2
di PRIORITY untuk menambahkan konfigurasi pengecualian untuk tanda tangan
owasp-crs-v030301-id941140-xss
dan owasp-crs-v030301-id941270-xss
di bagian
aturan WAF xss-v33-stable
, untuk mengecualikan header permintaan yang diawali dengan
abc
atau diakhiri dengan xyz
dari pemeriksaan:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \ --security-policy POLICY_2 \ --target-rule-set "xss-v33-stable" \ --target-rule-ids "owasp-crs-v030301-id941140-xss" "owasp-crs-v030301-id941270-xss" \ --request-header-to-exclude "op=STARTS_WITH,val=abc" \ --request-header-to-exclude "op=ENDS_WITH,val=xyz"
Contoh ketiga memperbarui aturan dalam kebijakan keamanan POLICY_3
di PRIORITY untuk menghapus semua pengecualian kolom permintaan untuk ID
aturan owasp-crs-v030301-id942110-sqli
dan owasp-crs-v030301-id942120-sqli
di bagian sqli-v33-stable
.
gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \ --security-policy POLICY_3 \ --target-rule-set "sqli-v33-stable" \ --target-rule-ids "owasp-crs-v030301-id942110-sqli,owasp-crs-v030301-id942120-sqli"
Menerapkan penguraian pada nilai header Content-Type
kustom
Saat Google Cloud Armor mengevaluasi isi POST terhadap aturan WAF yang telah dikonfigurasi sebelumnya, header Content-Type
menunjukkan format data dalam isi permintaan. Secara
default, Google Cloud Armor memperlakukan konten isi POST sebagai satu
string, yang semuanya memenuhi syarat untuk diperiksa dan dicocokkan dengan
aturan WAF yang telah dikonfigurasi sebelumnya. Namun, Anda dapat mengonfigurasi penguraian yang lebih akurat jika
permintaan masuk memiliki encoding yang berbeda. Google Cloud Armor mendukung jenis encoding berikut:
- JSON
- GraphQL
Untuk informasi selengkapnya, lihat Pemrosesan konten isi POST.
Langkah selanjutnya
- Pelajari lebih lanjut cara mengonfigurasi kebijakan keamanan.
- Pelajari lebih lanjut tanda tangan aturan yang tersedia untuk aturan WAF yang telah dikonfigurasi sebelumnya.
- Pelajari lebih lanjut aturan WAF yang telah dikonfigurasi sebelumnya menggunakan referensi bahasa aturan kustom.