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)

Level Deskripsi
1 Minimal; rules paling aman, false positive rendah. Cocok untuk produksi.
2 Default; menambahkan rules tambahan untuk beberapa serangan umum.
3 Rules lebih agresif, termasuk deteksi pola yang jarang terjadi.
4 Level 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 / Variable Default / Contoh Deskripsi Catatan terkait Paranoia
tx.paranoia_level 2 Menentukan tingkat agresifitas CRS Level 1 = minimal, 2 = default, 3 = agresif, 4 = sangat agresif
tx.inbound_anomaly_score_threshold 5 Threshold skor untuk request masuk (inbound) Jika skor > threshold, request diblok
tx.outbound_anomaly_score_threshold 4 Threshold skor untuk response keluar (outbound) Mengontrol deteksi data sensitif bocor
tx.max_num_args 255 Maksimal jumlah parameter request Lebih banyak argumen bisa dianggap suspicious
tx.arg_length 1024 Panjang maksimal tiap parameter Membatasi payload panjang yang bisa trigger rule
tx.allowed_methods GET, POST, HEAD, OPTIONS, PUT, DELETE, PATCH HTTP methods yang diizinkan Method selain ini bisa langsung diblok di level agresif tinggi
tx.allowed_request_content_type application/x-www-form-urlencoded, multipart/form-data, text/plain, application/json Content-Type request yang diperbolehkan Level lebih tinggi menambahkan lebih banyak content-type
tx.allowed_file_extensions jpg,jpeg,png,gif,txt,pdf,doc,docx Ekstensi file yang diizinkan File extension tidak dikenal bisa trigger false positive
tx.restricted_extensions exe, dll, msi, php, jsp Ekstensi berisiko tinggi Level agresif tinggi mengeblok file ini lebih ketat
tx.allowed_request_content_type_json application/json Khusus untuk JSON Berguna untuk API
tx.enable_protocol_check 1 Mengaktifkan pemeriksaan protokol (HTTP, HTTPS) Paranoia level tinggi lebih ketat
tx.restricted_headers User-Agent, Referer, Cookie (dll) Header yang dicurigai Level tinggi memblok header yang tidak standar
tx.allowed_cookies cookie1,cookie2 Cookies yang diizinkan Whitelist cookies penting agar tidak false positive
tx.allowed_request_headers Content-Type, Accept, Authorization, User-Agent Header yang diperbolehkan Level agresif menambahkan pengecekan ekstra
tx.outbound_blocking_enabled 0 Memungkinkan blocking data sensitif di response Biasanya 0 untuk testing, 1 untuk produksi
tx.crs_exclusions [] Path / parameter / IP yang dikecualikan dari rule Digunakan 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.