Install ModSecurity Slackware 13.37

Download Modsecurity berserta crsnya di modsecurity.org versi modsecurity yang saya gunakan adalah 2.6.6 dan versi crs 2.5.5, untuk yang belum tahu dan mengenai penjelasan lebih lanjut mengenai modsecurity dapat dilihat di ezine rndc

Sebelum proses compile pastikan library libxml2, lua5.1 dan unique_id sudah terinstall dengan baik dan benar

bash-4.1# tar zxvf modsecurity-apache_2.6.6.tar.gz
bash-4.1# ./configure
bash-4.1# make
bash-4.1# make install

Konfigurasi core rule set(CRS)

bash-4.1# tar zxvf modsecurity-crs_2.2.5.tar.gz
bash-4.1# mv modsecurity-crs_2.2.5 crs
bash-4.1# cd crs
bash-4.1# mv modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf
bash-4.1# mv crs/ /etc/httpd/

Tambahkan baris berikut pada file /etc/httpd/crs/modsecurity_crs_10_setup.conf

# untuk menghidupkan engine crs
SecRuleEngine On

Tambahkan juga baris berikut pada file /etc/httpd/httpd.conf

# untuk meload library libxml2 dan liblua
LoadFile /usr/lib/libxml2.so
LoadFile /usr/lib/liblua.so.5.1

# untuk meload module modsecurity
LoadModule security2_module lib/httpd/modules/mod_security2.so

# untuk include core set rule pada modsecurity
<IfModule security2_module>
	Include /etc/httpd/crs/*.conf
	Include /etc/httpd/crs/base_rules/*.conf
</IfModule>

Jika tahap diatas sudah dilakukan langkah berikutnya adalah restart apachenya, untuk melihat log bisa menggunakan perintah berikut

bash-4.1# tail -f /var/log/httpd/error_log

Sekarang kita tinggal melakukan testing pada modsecurity

bash-4.1# cat /var/www/htdocs/insecure.php
<?php 
$secret_file = $_GET['secret_file']; 
include ($secret_file); 
?>
bash-4.1#

Berikut perbandingannya

Sebelum

bash-4.1# curl -i http://localhost/insecure.php?secret_file=/etc/passwd
HTTP/1.1 200 OK
...
root:x:0:0::/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
adm:x:3:4:adm:/var/log:/bin/false
lp:x:4:7:lp:/var/spool/lpd:/bin/false
...

Sesudah

bash-4.1# curl -i http://localhost/insecure.php?secret_file=/etc/passwd
HTTP/1.1 403 Forbidden
Date: Sat, 07 Jul 2012 23:48:02 GMT
Server: Apache/2.2.17 (Unix) DAV/2 PHP/5.3.13
Content-Length: 214
Content-Type: text/html; charset=iso-8859-1
...
<h1>Forbidden</h1>
<pre>You don't have permission to access /insecure.php

...

good luck…