Skip to main content

Memahami Bagian Penting di crs-setup.conf

CRS (OWASP Core Rule Set) menggunakan crs-setup.conf sebagai konfigurasi utama untuk menyesuaikan perilaku WAF. File ini tidak berisi aturan serangan langsung, tapi parameter dan variabel yang mengontrol bagaimana aturan CRS dijalankan. Beberapa bagian penting yang terkait paranoia level misalnya:


1. Paranoia Level (ParanoiaLevel)

  • Variabel utama: SecAction "id:900000,phase:1,nolog,pass,ctl:paranoiaLevel=XX"

  • Level tersedia: 1–4 (default 2)

LevelDeskripsi
1Minimal; rules paling aman, false positive rendah. Cocok untuk produksi.
2Default; menambahkan rules tambahan untuk beberapa serangan umum.
3Rules lebih agresif, termasuk deteksi pola yang jarang terjadi.
4Level paling agresif, semua rules termasuk potensi false positive tinggi.
  • ParanoiaLevel memengaruhi rule files yang dijalankan dan sensitivitasnya.


2. Request and Response Body Limits

  • SecRequestBodyLimit, SecRequestBodyNoFilesLimit, SecRequestBodyInMemoryLimit

  • SecResponseBodyLimit

  • Mengontrol ukuran maksimum request/response yang dianalisis oleh WAF.

Misalnya, upload file besar bisa men-trigger false positive kalau limit terlalu rendah.


3. Anomaly Scoring Mode

  • CRS biasanya menggunakan scoring mode, bukan blocking langsung.

  • Setiap rule yang cocok menambahkan skor, dan jika skor total > threshold (tx.outbound_score_threshold), request diblok.

Contoh:

tx.inbound_anomaly_score_threshold=5
tx.outbound_anomaly_score_threshold=4
  • Bisa diubah di crs-setup.conf agar lebih agresif atau lebih permisif.


4. Allowed Methods, File Extensions, Parameters

  • Ada list:

    • tx.allowed_methods → HTTP methods yang diizinkan (GET, POST, PUT, dll.)

    • tx.allowed_file_extensions → ekstensinya file yang diizinkan (jpg, png, pdf)

    • tx.allowed_request_content_type → content-type yang diizinkan

  • Aturan ini membantu mengurangi false positives.


5. Whitelist & Exclusions

  • tx.crs_exclusions atau beberapa variable lain bisa digunakan untuk mengecualikan IP, path, parameter tertentu.

  • Contoh: whitelist path /api/upload supaya rule tertentu tidak dijalankan.


6. Anomaly Scoring and Detection Settings

  • SecRuleRemoveById atau SecRuleRemoveByTag → menonaktifkan rules tertentu.

  • tx.* variables di setup.conf mengontrol threshold, logging, paranoia behavior, dll.


Ringkasnya

  • crs-setup.conf mengatur “bagaimana” CRS rules dijalankan, bukan rules itu sendiri.

  • Paranoia Level adalah parameter utama yang menentukan sensitivitas.

  • Tingkat agresifitas meningkat seiring level, tapi risiko false positive juga meningkat.


Berikut tabel ringkas tapi komprehensif untuk parameter utama di crs-setup.conf, terutama yang terkait paranoia level, scoring, dan behavior CRS.

Parameter / VariableDefault / ContohDeskripsiCatatan terkait Paranoia
tx.paranoia_level2Menentukan tingkat agresifitas CRSLevel 1 = minimal, 2 = default, 3 = agresif, 4 = sangat agresif
tx.inbound_anomaly_score_threshold5Threshold skor untuk request masuk (inbound)Jika skor > threshold, request diblok
tx.outbound_anomaly_score_threshold4Threshold skor untuk response keluar (outbound)Mengontrol deteksi data sensitif bocor
tx.max_num_args255Maksimal jumlah parameter requestLebih banyak argumen bisa dianggap suspicious
tx.arg_length1024Panjang maksimal tiap parameterMembatasi payload panjang yang bisa trigger rule
tx.allowed_methodsGET, POST, HEAD, OPTIONS, PUT, DELETE, PATCHHTTP methods yang diizinkanMethod selain ini bisa langsung diblok di level agresif tinggi
tx.allowed_request_content_typeapplication/x-www-form-urlencoded, multipart/form-data, text/plain, application/jsonContent-Type request yang diperbolehkanLevel lebih tinggi menambahkan lebih banyak content-type
tx.allowed_file_extensionsjpg,jpeg,png,gif,txt,pdf,doc,docxEkstensi file yang diizinkanFile extension tidak dikenal bisa trigger false positive
tx.restricted_extensionsexe, dll, msi, php, jspEkstensi berisiko tinggiLevel agresif tinggi mengeblok file ini lebih ketat
tx.allowed_request_content_type_jsonapplication/jsonKhusus untuk JSONBerguna untuk API
tx.enable_protocol_check1Mengaktifkan pemeriksaan protokol (HTTP, HTTPS)Paranoia level tinggi lebih ketat
tx.restricted_headersUser-Agent, Referer, Cookie (dll)Header yang dicurigaiLevel tinggi memblok header yang tidak standar
tx.allowed_cookiescookie1,cookie2Cookies yang diizinkanWhitelist cookies penting agar tidak false positive
tx.allowed_request_headersContent-Type, Accept, Authorization, User-AgentHeader yang diperbolehkanLevel agresif menambahkan pengecekan ekstra
tx.outbound_blocking_enabled0Memungkinkan blocking data sensitif di responseBiasanya 0 untuk testing, 1 untuk produksi
tx.crs_exclusions[]Path / parameter / IP yang dikecualikan dari ruleDigunakan untuk whitelist API tertentu

Catatan tambahan:

  1. Paranoia Level: menentukan rule mana saja yang akan dijalankan.

    • Level 1 = rules paling aman, false positive minimal.

    • Level 4 = semua rules aktif, false positive tinggi.

  2. Anomaly Scoring: CRS tidak langsung blok request, tapi menambahkan skor tiap rule yang cocok. Threshold (tx.inbound_anomaly_score_threshold) menentukan kapan request diblok.

  3. Whitelist / Exclusions: bisa mengurangi false positive untuk path / parameter / IP tertentu.

  4. File upload dan content-type: setting ini sering menyebabkan false positive jika tidak disesuaikan dengan aplikasi.