Modsecurity merupakan Web Application Firewall (WAF) yang bekerja dengan Apache, IIS, Nginx. Modsecurity mendukung penggunaan rule engine untuk menerapkan tingkat keamanan yang sederhana hingga tingkat rumit. Modsecurity telah dilengkapi konfigurasi berupa Core Rules Set (CRS) yang memiliki rule keamanan seperti sql injection, cross site scripting, trojans, session hijacking dan lain sebagainya. Requirementnya, tentu anda harus sudah memiliki web server yang sudah berjalan.
Berikut cara instalasi dan setup modsecurity pada ubuntu :
1. Install Modsecurity
#> apt-get install libapache2-modsecurity
2. Gunakan file konfigurasi modsecurity cukup dengan mengganti nama file yang sudah disediakan :
#> mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
3. Reload apache
#> service apache2 reload
Silahkan cek di direktori log apache (/var/log/apache2/), maka seharusnya akan menampilkan file modsec_audit.log
Ok, untuk instalasi sudah selesai, selanjutnya melakukan konfigurasi implementasi modsecurity.
Konfigurasi ModSecurity
Secara default modsecurity tidak menjalankan rules satu pun, melainkan hanya menjalankan setting berupa DetectionOnly yang melakukan log request dan tidak melakukan blok pada apapun. Itu terdapat pada file :
/etc/modsecurity/modsecurity.conf
Jika anda ingin menerapkan rules lebih ketat dengan memungkinkan untuk melakukan blok, maka ubah setting :
SecRuleEngine DetectionOnly
Menjadi :
SecRuleEngine On
Satu lagi konfigurasi yang bisa diubah adalah SecResponseBodyAccess. Konfigurasi ini menentukan setiap respon yang didapatkan dibaca oleh Modsecurity. Hal ini sebenarnya hanya dibutuhkan ketika kita ingin mengetahui kebocoran informasi yang didapatkan. Namun jika tidak, maka memakan resource yang banyak dan file log yang besar. Oleh karena itu, baiknya untuk dimatikan saja.
SecResponseBodyAccess On
Menjadi :
SecResponseBodyAccess Off
Konfigurasi selanjutnya adalah menentukan batas data yang dapat diposting. Konfigurasi tersebut dilakukan pada :
SecRequestBodyLimit SecRequestBodyNoFilesLimit
Pada SecRequestBodyLimit menentukan batas maksimal data yang dapat diposting. Jika lebih besar dari data yang ditentukan maka, akan menampilkan error :
413 Request Entity Too Large
jika web aplikasi anda tidak memiliki file yang diupload, tentu settingan ini bisa diubah menjadi kecil. Defaultnya memiliki setting seperti :
SecRequestBodyLimit 13107200
yang berarti 12.5 MB.
Sementara untuk SecRequestBodyNoFilesLimit merupakan settingkan batas minimum data diposting.Defaultnya memiliki setting seperti :
SecRequestBodyNoFilesLimit 131072
yang berarti 128 KB.
Setting Rules
Untuk memudahkan dan meningkatkan pengamanan sistem, kita akan menggunakan rules yang sudah tersedia yang disebut Core Rule Set (CRS)
root@alfach:~# ls -l /usr/share/modsecurity-crs/ total 40 drwxr-xr-x 2 root root 4096 Oct 20 09:45 activated_rules drwxr-xr-x 2 root root 4096 Oct 20 09:45 base_rules drwxr-xr-x 2 root root 4096 Oct 20 09:45 experimental_rules drwxr-xr-x 2 root root 4096 Oct 20 09:45 lua -rw-r--r-- 1 root root 13544 Jul 2 2012 modsecurity_crs_10_setup.conf drwxr-xr-x 2 root root 4096 Oct 20 09:45 optional_rules drwxr-xr-x 3 root root 4096 Oct 20 09:45 util
dokumentasinya terdapat di :
root@alfach:~# ls -l /usr/share/doc/modsecurity-crs/ total 40 -rw-r--r-- 1 root root 469 Jul 2 2012 changelog.Debian.gz -rw-r--r-- 1 root root 12387 Jun 18 2012 changelog.gz -rw-r--r-- 1 root root 1297 Jul 2 2012 copyright drwxr-xr-x 3 root root 4096 Oct 20 09:45 examples -rw-r--r-- 1 root root 1138 Mar 16 2012 README.Debian -rw-r--r-- 1 root root 6495 Mar 16 2012 README.gz
Untuk menggunaka rules ini, kita harus membuat agar Apache “menyadar” keberadaan direktori ini dan meload nya. Untuk konfigurasinya dilakukan pada :
/etc/apache2/mods-enabled/mod-security.conf
Lalu edit pada baris antara
Include "/usr/share/modsecurity-crs/*.conf" Include "/usr/share/modsecurity-crs/activated_rules/*.conf"
Setelah itu kita harus membuat symlink antara direktori activated_rules dengan file konfigurasi yang kita gunakan, misal :
cd /usr/share/modsecurity-crs/activated_rules/ ln -s /usr/share/modsecurity-crs/base_rules/modsecurity_crs_41_sql_injection_attacks.conf .
Selanjutnya kita cukup reload ulang apache
service apache2 reload
selesai