Menyesuaikan aturan WAF yang telah dikonfigurasi sebelumnya oleh Cloud Armor

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 A hingga Z (huruf kecil dan huruf besar)
  • Karakter digit 0 hingga 9

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