1. Apa itu OWASP CRS
OWASP Core Rule Set (CRS) adalah kumpulan aturan keamanan yang digunakan oleh WAF untuk mendeteksi dan memblokir serangan terhadap aplikasi web.
Contoh serangan yang bisa dideteksi:
| Serangan | Contoh |
|---|---|
| SQL Injection | id=1 OR 1=1 |
| Cross Site Scripting | <script>alert(1)</script> |
| Local File Inclusion | ../../etc/passwd |
| Remote Command Execution | ; cat /etc/passwd |
| Scanner / Bot | sqlmap, nikto |
CRS biasanya digunakan bersama ModSecurity.
2. Arsitektur sistem WAF
Diagram sederhana:
Internet
│
▼
Nginx Web Server
│
▼
ModSecurity (WAF Engine)
│
▼
OWASP CRS Rules
│
▼
Website (WordPress / dll)
Artinya:
- Request masuk ke server
- ModSecurity memeriksa request
- CRS rules menganalisa request
- Jika terdeteksi serangan → diblokir
3. Update sistem
Selalu mulai dengan update.
sudo apt update
sudo apt upgrade
4. Install ModSecurity untuk Nginx
Install modul WAF:
sudo apt install libnginx-mod-http-modsecurity
Install juga git untuk mengunduh rules.
sudo apt install git
5. Cek apakah ModSecurity aktif
Jalankan:
nginx -V 2>&1 | grep modsecurity
Jika muncul modul modsecurity berarti sudah aktif.
6. Struktur file ModSecurity di Ubuntu 24
Setelah instalasi biasanya struktur menjadi:
/etc/nginx/modsecurity.conf
/etc/modsecurity/crs/
Namun folder crs biasanya masih kosong karena rule belum diinstall.
Struktur yang akan kita gunakan:
/etc/nginx/modsecurity.conf
/etc/modsecurity/crs/
crs-setup.conf
rules/
7. Download OWASP CRS
Masuk ke folder modsecurity.
cd /etc/modsecurity
Masuk ke folder crs:
cd crs
Download rules dari GitHub.
sudo git clone https://github.com/coreruleset/coreruleset.git .
Tanda titik (.) artinya isi repository dimasukkan langsung ke folder saat ini.
Cek hasilnya:
ls
Biasanya akan muncul:
crs-setup.conf.example
rules/
util/
plugins/
8. Aktifkan konfigurasi CRS
Rename file konfigurasi utama.
sudo cp crs-setup.conf.example crs-setup.conf
Sekarang struktur menjadi:
/etc/modsecurity/crs/
crs-setup.conf
rules/
9. Konfigurasi engine ModSecurity
Edit file utama:
sudo nano /etc/nginx/modsecurity.conf
Cari baris:
SecRuleEngine DetectionOnly
Ubah menjadi:
SecRuleEngine On
Penjelasan mode:
| Mode | Fungsi |
|---|---|
| Off | WAF mati |
| DetectionOnly | hanya mendeteksi |
| On | memblokir serangan |
Jika masih tahap testing sebaiknya gunakan:
SecRuleEngine DetectionOnly
10. Memuat OWASP CRS
Masih di file:
/etc/nginx/modsecurity.conf
Tambahkan di bagian bawah:
Include /etc/modsecurity/crs/crs-setup.conf
Include /etc/modsecurity/crs/rules/*.conf
Penjelasan:
| Baris | Fungsi |
|---|---|
| crs-setup.conf | konfigurasi utama CRS |
| rules | semua rule keamanan |
11. Aktifkan ModSecurity di Nginx
Edit konfigurasi virtual host website.
Contoh:
sudo nano /etc/nginx/sites-available/blog
Tambahkan di dalam blok server:
modsecurity on;
modsecurity_rules_file /etc/nginx/modsecurity.conf;
Contoh lengkap:
server { server_name blog.alfasmk.my.id; modsecurity on;
modsecurity_rules_file /etc/nginx/modsecurity.conf; root /var/www/wordpress;
index index.php index.html;}
12. Test konfigurasi Nginx
Cek konfigurasi.
sudo nginx -t
Jika muncul:
syntax is ok
test is successful
Restart nginx.
sudo systemctl restart nginx
13. Pengujian WAF
Sekarang kita akan menguji apakah WAF bekerja.
Buka browser dan coba:
https://domainmu.com/?id=1' OR '1'='1
Ini simulasi SQL Injection.
Jika WAF aktif biasanya akan muncul:
403 Forbidden
Artinya rule SQL Injection CRS berhasil memblokir request.
14. Melihat log serangan
Log modsecurity biasanya tercatat di:
/var/log/nginx/error.log
Melihat log secara realtime:
sudo tail -f /var/log/nginx/error.log
Contoh log:
ModSecurity: Access denied with code 403
SQL Injection Attack Detected
15. Contoh rule ModSecurity
Contoh rule CRS:
SecRule ARGS "@detectSQLi" \
"id:942100,\
phase:2,\
block,\
msg:'SQL Injection Attack'"
Penjelasan:
| Bagian | Fungsi |
|---|---|
| SecRule | membuat rule |
| ARGS | memeriksa parameter |
| detectSQLi | deteksi SQL injection |
| id | ID rule |
| phase | tahap pemeriksaan |
| block | aksi memblokir |
| msg | pesan log |
16. Update rule CRS
Untuk memperbarui rule keamanan:
cd /etc/modsecurity/crs
sudo git pull
17. Tips penting untuk WordPress
Jika digunakan untuk WordPress, terkadang CRS menyebabkan false positive seperti:
- komentar gagal
- login gagal
- upload gambar gagal
Solusinya adalah membuat rule pengecualian khusus WordPress.
Kesimpulan
Dengan menginstall ModSecurity + OWASP CRS, server kita mendapatkan perlindungan tambahan terhadap berbagai serangan web seperti:
- SQL Injection
- Cross Site Scripting
- File Inclusion
- Command Injection
- Scanner otomatis
WAF bekerja sebagai lapisan keamanan tambahan sebelum request mencapai aplikasi web.