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
atauSecRuleRemoveByTag
→ 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:
-
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.
-
-
Anomaly Scoring: CRS tidak langsung blok request, tapi menambahkan skor tiap rule yang cocok. Threshold (
tx.inbound_anomaly_score_threshold
) menentukan kapan request diblok. -
Whitelist / Exclusions: bisa mengurangi false positive untuk path / parameter / IP tertentu.
-
File upload dan content-type: setting ini sering menyebabkan false positive jika tidak disesuaikan dengan aplikasi.
No Comments