Modsec dapat membantu server kita menghalau abuse aplikasi web pada layer terakhir, sebagai firewall untuk http modsec juga tergantung pada rule-set yang digunakan.
Gotroot merupakan komunitas praktisi IT yang mengoperasikan situs gotroot.com untuk berbagi pengalaman sesama praktisi IT di seluruh dunia. Salah satu yang sering dimanfaatkan adalah rule firewall untuk modsec yang memberikan perlindungan di tatanan aplikasi web (http firewall). Kumpulan rule tersebut saat ini berdiri sendiri dalam bentuk di bawah bendera Prometheus Global dengan nama Atomic Secure Linux atau ASL.
ASL sebagai sebuah aplikasi berdiri sendiri / standalone memiliki prosedur instalasi terpisah dan tidak dapat digabungkan dengan mudah ke server dengan cPanel / WHM karena cPanel / WHM merupakan aplikasi independen yang berjalan di server kita serta melakukan penguncian terhadap beberapa paket aplikasi linux karena diatur sendiri oleh repo miliknya untuk disesuaikan dengan rilis aplikasi terkait.
Yang akan dilakukan saat ini adalah menggunakan rule yang dimiliki oleh ASL ke dalam modsec server cPanel yang kita kelola. ASL sendiri memberikan layanan cuma-cuma ataupun GRATIS terhadap rule modsec-nya meskipun delay 30 hari dari rule yang berbayar. Tentunya dengan implementasi manual ini kita tidak dapat menikmati automatic update yang ditawarkan oleh ASL.
Pastikan bahwa modsec sudah terinstall di server cPanel anda, hal ini dapat dilakukan melalui EasyApache dan di WHM bagian plugin dapat kita akses interface ke pengaturan config modsec dan lognya.
Apabila menu Modsec sudah ada, berarti fitur ini sudah diaktifkan melalui easyapache, Modsec sendiri merupakan modul dari Apache, sehingga instalasinya di server cpanel dapat dilakukan melalui easyapache.
Apabila belum ada Mod Security, maka modul tersebut harus diinstall terlebih dahulu, silahkan mencari referensi di situs cpanel.net atau referensi lainnya di internet mengenai bagaimana melakukan instalasi modul Modsec di cpanel melalui easyapache.
Ketika diinstall melalui easyapache secara default modsec akan diisi rule default dari cpanel, hal ini dapat dilihat melalui WHM > Plugins > Mod Security, klik edit config.
Rule ini nantinya akan kita abaikan, namun kita tetap memanfaatkan logging system cpanel yang diintegrasikan dengan WHM, dapat anda lihat ketika anda masuk ke dalam interface Mod Security.
Rule dan config apache di dalam cpanel disimpan di dalam direktori /usr/local/apache/conf/ di dalam dua file yaitu;
/usr/local/apache/conf/modsec2.conf /usr/local/apache/conf/modsec2.user.conf
File modsec2.conf dipanggil ketika service httpd di load oleh cPanel, dan kita akan memanfaatkan file ini untuk memanggil rule dari ASL yang akan kita lakukan kemudian, secara default file ini akan berisi;
# cat modsec2.conf LoadFile /opt/xml2/lib/libxml2.so LoadFile /opt/lua/lib/liblua.so LoadModule security2_module modules/mod_security2.so <IfModule mod_security2.c> SecRuleEngine On # See http://www.modsecurity.org/documentation/ModSecurity-Migration-Matrix.pdf # "Add the rules that will do exactly the same as the directives" # SecFilterCheckURLEncoding On # SecFilterForceByteRange 0 255 SecAuditEngine RelevantOnly SecAuditLog logs/modsec_audit.log SecDebugLog logs/modsec_debug_log SecDebugLogLevel 0 SecDefaultAction "phase:2,deny,log,status:406" SecRule REMOTE_ADDR "^127.0.0.1$" nolog,allow Include "/usr/local/apache/conf/modsec2.user.conf" </IfModule>
Perhatikan direktif Include, yang memanggil file kedua yang kita sebutkan, apabila kita melakukan edit rule melalui interface WHM, di file modsec2.user.conf inilah rule tersebut diletakkan, dan akan dipanggil ulang ketika service httpd diload.
Ikuti langkah berikut untuk menggunakan rule (delayed / gratis) dari ASL; Download rule tersebut;
cd /usr/local/src/ wget http://downloads.prometheus-group.com/delayed/rules/modsec-2.5-free-latest.tar.gz
Extract file tersebut dan persiapkan layout untuk rule asl kita;
tar xzvf modsec-2.5-free-latest.tar.gz mkdir /etc/asl cp -Rv modsec/* /etc/asl/
Perhatikan bahwa kita membuat direktori di dalam /etc/ untuk menempatkan file rule modsec dari asl, lakukan ulang langkah ini dan modifikasi selanjutnya apabila anda ingin mengupdate rule anda.
Disable asl_scanner rule apabila anda tidak menggunakannya;
cd /etc/asl/ vi 05_asl_scanner.conf
Berikan tanda pagar / comment pada bagian rule di file tersebut menjadi seperti ini;
#SecUploadFileMode 0644 #SecRule FILES_TMPNAMES "@inspectFile /usr/bin/modsec-clamscan.pl" \ # "id:351000,rev:1,severity:2,msg:'Malicious File upload attempt',log,deny,auditlog,status:403,t:none"
Kemudian kita disable rule rbl modsec, karena rule ini akan memeriksa apakah IP Address pengunjung server / situs kita masuk ke dalam database rbl / spamhouse, hal ini kita lakukan karena banyak IP Address dari Indonesia yang masuk ke dalam daftar rbl, sehingga besar kemungkinan pemeriksaan ini akan memunculkan complaint dari pengguna mengingat IP Address yang mereka gunakan adalah IP Address dynamic dari ISP.
vi 00_asl_rbl.conf
Berikan pagar / comment pada rule Global RBL rules menjadi seperti ini;
#Global RBL rules #SecRule REMOTE_ADDR "[email protected] /etc/asl/whitelist" \ #"chain,deny, log, id:350000,rev:2,msg:'Global RBL Match: IP is on the xbl.spamhaus.org Blacklist',severity:'1'" #SecRule REMOTE_ADDR "@rbl xbl.spamhaus.org"
Buat / kopi file whitelist.txt menjadi whitelist, file ini akan berisi url yang kita bypass dari pemeriksaan di rule selanjutnya, apabila kita tidak kopi maka mod_sec akan mengeluhkan bahwa file tersebut tidak ada;
cp whitelist.txt whitelist
Untuk mendisable rule di dalam kompilasi rule ASL ini kita dapat melakukan per rule, caranya adalah dengan memberikan tanda pagar di depan rule yang ingin kita disable seperti contoh di atas.
Secara sederhana hal ini dapat kita lakukan dengan memanggil kumpulan rule yang baru saja kita buat melalui file modsec2.conf.
vi /usr/local/apache/conf/modsec2.conf
Buat menjadi sebagai berikut;
LoadFile /opt/xml2/lib/libxml2.so LoadFile /opt/lua/lib/liblua.so LoadModule security2_module modules/mod_security2.so <IfModule mod_security2.c> SecRuleEngine On # See http://www.modsecurity.org/documentation/ModSecurity-Migration-Matrix.pdf # "Add the rules that will do exactly the same as the directives" # SecFilterCheckURLEncoding On # SecFilterForceByteRange 0 255 SecAuditEngine RelevantOnly SecAuditLog logs/modsec_audit.log SecDebugLog logs/modsec_debug_log SecDebugLogLevel 0 SecDefaultAction "phase:2,deny,log,status:406" SecRule REMOTE_ADDR "^127.0.0.1$" nolog,allow # Include "/usr/local/apache/conf/modsec2.user.conf" Include "/etc/asl/*asl*.conf" </IfModule>
Perhatikan direktif Include terakhir yang akan memanggil semua file dengan regex *asl*.conf dari dalam direktori /etc/asl/, kemudian restart service httpd.
/scripts/restartsrv_httpd
Log dapat kita monitor melalui WHM, ataupun dengan melakukan tailing file modsec_audit.log;
tail -f /usr/local/apache/logs/modsec_audit.log
Salah satu contoh log di WHM;
Melalui log, kita dapat mengetahui rule mana yang bekerja ketika firewall aktif, log dapat kita manfaatkan untuk mencari rule yang terlalu galak dan mungkin tidak sesuai dengan kondisi yang kita inginkan.
Rule update dapat kita ambil melalui http://downloads.prometheus-group.com/delayed/rules/, ulangi langkah di atas ketika anda melakukan update rule.