Implementasi

Implementasi Rule Modsec ASL / Gotroot di Server cPanel

Tanggal 10 Aug 2009
Kategori : Control Panel
Tag : , , ,

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.

Mod Security

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.

modsec-menuApabila 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.

Layout Modsec cPanel

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-default

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.

ASL Modsec Rule

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 "!@pmFromFile /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.

Integrasi dengan cPanel

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;

modsec-log

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.

Update Rule

Rule update dapat kita ambil melalui http://downloads.prometheus-group.com/delayed/rules/, ulangi langkah di atas ketika anda melakukan update rule.

Referensi

  • http://gotroot.com/
  • http://www.progllc.com/products/asl.html
  • http://www.atomicorp.com/wiki/index.php/Atomic_ModSecurity_Rules
Situs ini dibuat dengan memanfaatkan Teknologi Open Source Wordpress, Nginx, 960 Grid System dan Linux CentOS.
Isi dari situs diutamakan untuk membantu Pengguna Layanan Magnet Hosting dalam memanfaatkan layanannya, disediakan tanpa jaminan, dapat dimanfaatkan, diperbanyak ataupun ditulis kembali dengan resiko masing-masing.
Copyright PT. Indonesia Digital Media © 2008-2009. (Top)