Cloud Armor menyediakan aturan WAF yang telah dikonfigurasi sebelumnya, yang masing-masing terdiri dari beberapa signature yang bersumber dari OWASP Core Rule Set (CRS).
Setiap signature sesuai dengan aturan deteksi serangan dalam rangkaian 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 signature yang terkait dengan aturan WAF yang telah dikonfigurasi sebelumnya. Kecocokan dibuat saat
ekspresi evaluatePreconfiguredWaf() menampilkan nilai true.
Memilih tingkat sensitivitas
Setiap signature memiliki tingkat sensitivitas yang sesuai dengan
tingkat paranoia OWASP.
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 signature keyakinan yang lebih tinggi, yang cenderung
menghasilkan positif palsu lebih kecil. Tingkat sensitivitas yang lebih tinggi meningkatkan keamanan, tetapi juga meningkatkan risiko menghasilkan positif palsu. Saat
memilih tingkat sensitivitas untuk aturan WAF yang telah dikonfigurasi sebelumnya, Anda mengaktifkan signature pada
tingkat sensitivitas yang kurang dari atau sama dengan tingkat sensitivitas yang dipilih. Di contoh berikut, Anda menyesuaikan aturan WAF yang telah dikonfigurasi sebelumnya dengan memilih tingkat sensitivitas 1:
evaluatePreconfiguredWaf(
'sqli-v33-stable',
{
'sensitivity': 1
}
)
Menonaktifkan signature aturan
Jika Anda memutuskan bahwa aturan WAF yang telah dikonfigurasi sebelumnya cocok dengan lebih banyak permintaan daripada yang diperlukan,
atau jika aturan tersebut memblokir traffic yang perlu diizinkan, aturan tersebut dapat
disesuaikan untuk menonaktifkan signature yang tidak relevan atau tidak diperlukan. Untuk menonaktifkan signature
di aturan WAF tertentu yang telah dikonfigurasi sebelumnya, Anda memberikan daftar ID signature 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']
}
)
Saat memilih untuk tidak menggunakan ID signature dari rangkaian aturan CRS yang telah dikonfigurasi sebelumnya, Anda harus mencocokkan versi ID signature dengan versi rangkaian aturan (CRS 3.0 atau 3.3) untuk menghindari kesalahan konfigurasi.
Anda juga dapat menonaktifkan ID signature menggunakan
evaluatePreconfigureExpr() ekspresi lama. Untuk mengetahui informasi selengkapnya tentang ekspresi aturan WAF yang telah dikonfigurasi sebelumnya, lihat
referensi bahasa aturan khusus.
Mengaktifkan signature aturan
Daripada menonaktifkan signature aturan, Anda dapat mengaktifkan signature aturan di tingkat sensitivitas yang dinonaktifkan. Sebaiknya Anda mengaktifkan signature aturan jika jumlah signature yang ingin digunakan dalam tingkat sensitivitas tertentu lebih sedikit daripada jumlah aturan yang ingin dinonaktifkan. Untuk memilih mengaktifkan signature aturan, tingkat sensitivitas harus 0. Contoh berikut menonaktifkan
semua signature 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 signature di 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 signature di aturan WAF yang telah dikonfigurasi sebelumnya. Anda dapat menentukan pencocokan persis atau pencocokan sebagian dengan 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.
Batas pengecualian penyesuaian
Batas pengecualian penyesuaian default adalah 100 untuk kebijakan backend tingkat layanan (global dan regional). Batas ini berlaku per target dan mengontrol jumlah maksimum pengecualian yang dapat Anda konfigurasi, di aturan kebijakan keamanan. Target adalah kombinasi dari rangkaian aturan dan ID aturan. Batas berlaku untuk pengecualian untuk kolom berikut:
Misalnya, jika Anda memiliki aturan WAF yang telah dikonfigurasi sebelumnya (seperti evaluatePreconfiguredWaf('sqli-v33-stable')), dan ingin mengecualikan kolom permintaan pada target tertentu (seperti owasp-crs-v030301-id942100-sqli di sqli-v33-stable), Anda dapat mengonfigurasi hingga 100 header permintaan, 100 cookie permintaan, 100 parameter kueri permintaan, dan 100 URI permintaan yang akan dikecualikan untuk target tersebut.
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 evaluasi aturan WAF yang telah dikonfigurasi sebelumnya.
Pengecualian hanya berlaku untuk signature di target yang awalnya akan memeriksa nilai header permintaan. Hal ini mencakup signature yang terkait dengan flag permintaan berikut di OWASP Core Rule Set:
- REQUEST_HEADERS
Hanya nilai header permintaan yang ditentukan yang dikecualikan dari pemeriksaan. Nama masih diperiksa.
Cookie permintaan
Daftar nama cookie permintaan yang nilainya dikecualikan dari pemeriksaan selama evaluasi aturan WAF yang telah dikonfigurasi sebelumnya.
Pengecualian hanya berlaku untuk signature di target yang akan memeriksa nilai cookie permintaan pada awalnya. Hal ini mencakup signature yang terkait dengan falg permintaan berikut di OWASP Core Rule Set:
- REQUEST_COOKIES
Hanya nilai cookie permintaan yang ditentukan yang dikecualikan dari pemeriksaan. Nama masih diperiksa.
Parameter kueri permintaan
Daftar nama parameter kueri permintaan yang nilainya dikecualikan dari pemeriksaan selama evaluasi aturan WAF yang telah dikonfigurasi sebelumnya.
Pengecualian hanya berlaku untuk signature di target yang awalnya akan memeriksa parameter permintaan. Hal ini mencakup signature yang terkait dengan falg permintaan berikut di OWASP Core Rule Set:
- ARGS
- ARGS_GET
- REQUEST_URI
- REQUEST_URI_RAW
- REQUEST_LINE
Hanya nilai parameter kueri yang ditentukan yang dikecualikan dari pemeriksaan, yang dapat berupa string kueri atau isi permintaan. Nama masih diperiksa.
Karena parameter kueri adalah bagian dari URI dan baris permintaan,
kolom ini disusun ulang untuk pemeriksaan setelah mengecualikan
parameter kueri yang ditentukan. Namun, untuk signature yang memeriksa
seluruh isi permintaan (seperti signature yang terkait dengan
REQUEST_BODY flag permintaan), pengecualian untuk parameter kueri tidak diterapkan.
Misalnya, jika mengecualikan parameter kueri bernama "args", Anda mungkin masih melihat kecocokan di signature yang memeriksa seluruh isi permintaan jika permintaan memiliki parameter "args" di isi permintaan dan nilai "args" cocok.
URI Permintaan
Daftar URI dari baris permintaan, tidak termasuk data string kueri yang akan dikecualikan dari pemeriksaan selama evaluasi aturan WAF yang telah dikonfigurasi sebelumnya.
Pengecualian hanya berlaku untuk signature di target yang awalnya akan memeriksa URI permintaan. Hal ini mencakup signature yang terkait dengan flag permintaan berikut di OWASP Core Rule Set:
- REQUEST_URI
- REQUEST_URI_RAW
- REQUEST_LINE
- REQUEST_FILENAME
- REQUEST_BASENAME
Saat mengecualikan salah satu kolom di atas, kolom tersebut akan sepenuhnya dikecualikan dari pemeriksaan, dan tidak ada penyusunan 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, himpunan karakter yang diizinkan untuk nilai kolom mencakup karakter berikut:
!,#,$,%,&,*,+,-,.,^,_,`,|,~- Karakter alfa
AhinggaZ(huruf kecil dan huruf besar) - Karakter digit
0hingga9
Saat menerapkan pengecualian untuk kolom permintaan ini, nilai kolom yang dikonfigurasi dibandingkan apa adanya dengan nilai (tidak peka huruf besar/kecil, setelah transformasi) dari permintaan. Anda tidak perlu melakukan encoding tambahan jika ingin mengecualikan karakter tertentu yang tidak ada dalam himpunan 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 dibandingkan apa adanya dengan URI (tidak peka huruf besar/kecil, setelah transformasi) dari baris permintaan, tidak termasuk string kueri. URI dari baris permintaan dapat berupa 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 bagi semua signature di bawah
aturan WAF sqli-v33-stable yang telah dikonfigurasi sebelumnya, 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
owasp-crs-v030301-id941140-xss dan owasp-crs-v030301-id941270-xss signature di bawah
aturan WAF xss-v33-stable yang telah dikonfigurasi sebelumnya, untuk mengecualikan header permintaan yang dimulai dengan
abc atau diakhiri dengan xyz dari inspeksi:
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 menambahkan konfigurasi pengecualian bagi semua signature
di aturan WAF sqli-v33-stable yang telah dikonfigurasi sebelumnya. Hal ini mengecualikan parameter kueri permintaan
(diuraikan dari string kueri URI atau payload isi) yang sama dengan
bad-param dari pemeriksaan:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_3 \
--target-rule-set "sqli-v33-stable" \
--request-query-param-to-exclude "op=EQUALS,val=bad-param"
Contoh keempat memperbarui aturan dalam kebijakan keamanan POLICY_4
di PRIORITY untuk menambahkan konfigurasi pengecualian untuk
owasp-crs-v030301-id930100-lfi signature di aturan WAF lfi-v33-stable yang telah dikonfigurasi sebelumnya. Hal ini mengecualikan
URI permintaan yang berisi /bad-path dari pemeriksaan:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_4 \
--target-rule-set "lfi-v33-stable" \
--target-rule-ids "owasp-crs-v030301-id930100-lfi" \
--request-uri-to-exclude "op=CONTAINS,val=/bad-path"
Contoh kelima memperbarui aturan dalam kebijakan keamanan POLICY_5
di PRIORITY untuk menghapus semua pengecualian kolom permintaan untuk ID aturan
owasp-crs-v030301-id942110-sqli dan owasp-crs-v030301-id942120-sqli
di sqli-v33-stable.
gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_5 \
--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 Cloud Armor mengevaluasi isi permintaan terhadap aturan WAF yang telah dikonfigurasi sebelumnya, header Content-Type menunjukkan format data dalam isi permintaan. Secara
default, Cloud Armor memperlakukan konten isi permintaan 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 presisi jika permintaan masuk Anda memiliki encoding yang berbeda. Cloud Armor mendukung jenis encoding berikut:
- JSON
- GraphQL
Untuk mengetahui informasi selengkapnya, lihat Penguraian konten isi permintaan.
Langkah berikutnya
- Pelajari lebih lanjut cara mengonfigurasi kebijakan keamanan.
- Pelajari lebih lanjut signature aturan yang tersedia untuk aturan WAF yang telah dikonfigurasi sebelumnya.
- Pelajari lebih lanjut aturan WAF yang telah dikonfigurasi sebelumnya dengan menggunakan referensi bahasa aturan khusus.