Tag

,

Ada fungsi dari modsecurity yang ingin saya gunakan, tapi tidak dapat digunakan pada modsecurity yang dimiliki oleh paket standar milik Debian 6. Fungsi ini adalah penggunaan SecReadStateLimit yang ada pada modsecurity versi 2.5.13 yang digunakan untuk menghalau Slow HTTP Dos Attacks, sedangkan paket yang saya gunakan adalah versi 2.5.12.

Dari beberapa searching di google didapatkan bahwa backports package yang dimiliki oleh Debian 6 telah melakukan upgrade terhadap modsecurity ke versi 2.6.6. Hal ini cukup menggembirakan, sehingga saya putuskan untuk menambahkan alamat repository backports untuk Debian 6 ke sources.list.

# nano /etc/apt/sources.list

Isi yang ditambahkan:

deb http://kambing.ui.ac.id/debian-backports squeeze-backports main

Kemudian saya lakukan update untuk paket Debian agar bisa menjangkau paket ini, setelah itu melakukan instalasi.

# apt-get update
# apt-get -t squeeze-backports install libapache-mod-security

Karena apache2 yang digunakan adalah versi standar ( lagi-lagi yang versi lama kalau Debian sih😀 ) maka akan terdapat bug pada setting load untuk modsecurity ini karena tidak dapat menemukan libxml2.so.2 secara otomatis. Saya melakukan Edit pada file /etc/apache2/mods-available/mod-security.load dan ubah baris ke satu menjadi …

LoadFile /usr/lib/libxml2.so.2

Setelah itu saya mengaktifkan modsecurity dengan cara melakukan copy file configurasi modsecurity yang ada di /etc/modsecurity.


# cp /etc/modsecurity/modsecurity.conf.example /etc/modsecurity/modsecurity.conf
# nano /etc/modsecurity/modsecurity.conf

Saya ubah nilai SecRuleEngine menjadi On.


SecRuleEngine On

Langkah selanjutnya adalah menambahkan modsecurity Core Rule Set yang compatible dengan versi yang digunakan sekarang ( versi 2.6.6.6~bpo60+1 – didapatkan dari perintah dpkg -s libapache-mod-security | grep Version ). Core Rule Set adalah aturan yang nantinya digunakan oleh modsecurity saat melakukan analisa terhadap request yang dilakukan oleh client dan pihak owasp yang baik hati telah menyediakan rule yang bisa kita gunakan dengan gratis.


# mkdir -p /home/owasp-csr
# cd /home/owasp-csr
# wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/v2.2.5 -O owasp-crs.tar.gz
# tar -zxvf owasp-crs.tar.gz
# chmod -R 644 /home/owasp-csr/SpiderLabs-owasp-modsecurity-crs-5c28b52

Saya membuat folder baru di /home/owasp-csr sebagai tempat download CRS dan saya extract hasil downloadnya yang dalam hal ini ada di SpiderLabs-owasp-modsecurity-crs-5c28b52, lalu saya buat symbolic links ke /etc/modsecurity semua file CRS yang ada.

# cd /home/owasp-csr/SpiderLabs-owasp-modsecurity-crs-5c28b52/base_rules/
# for f in * ; do ln -s /home/owasp-csr/modsecurity-April2014/SpiderLabs-owasp-modsecurity-crs-5c28b52/base_rules/$f /etc/modsecurity/$f ; done
# cd /home/owasp-csr/SpiderLabs-owasp-modsecurity-crs-5c28b52/optional_rules/
# for f in * ; do ln -s /home/owasp-csr/modsecurity-April2014/SpiderLabs-owasp-modsecurity-crs-5c28b52/optional_rules/$f /etc/modsecurity/$f ; done

Tidak lupa untuk role utama milik CRS juga diset dan dibuatkan symlink ke /etc/modsecurity.

# cd /home/owasp-csr/SpiderLabs-owasp-modsecurity-crs-5c28b52/
# cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf
# ln -s /home/owasp-csr/SpiderLabs-owasp-modsecurity-crs-5c28b52/modsecurity_crs_10_setup.conf /etc/modsecurity/modsecurity_crs_10_setup.conf

Untuk menghindari pesan kesalahan dengan bunyi kurang lebih: Invalid command ‘RequestHeader’ maka Saya lakukan aktifasi terhadap modules apache Header dan dilanjutkan dengan module modsecurity.


# a2enmode headers
# a2enmode mod-security

Salah satu cara untuk melakukan testing apakah sudah berjalan, maka saya tambahkan sebuah rule yang dituliskan pada bagian paling akhir dar file /etc/modsecurity/modsecurity.conf:


SecRule ARGS "HARUSNYA_DENY"\
"phase:1,log,deny,status:503"

Kemudian Apache di restart …


# service apache2 restart

Untuk melakukan test pada URL saya, saya coba dengan menggunakan rule yang saya tambahkan barusan.


http://domain.saya.com/test=HARUSNYA_DENY

Kalau berjalan maka tampilan akan menampilkan pesan error. Apabila dilihat pada file log yang default di /var/log/apache2/modsec_audit.log maka akan tampil log kurang lebih …


Message: Access denied with code 503 (phase 1). Pattern match "HARUSNYA_DENY" at ARGS:test. [file "/etc/modsecurity/modsecurity.conf"] [line "208"]
Action: Intercepted (phase 1)
Stopwatch: 1398326266940342 922 (- - -)
Stopwatch2: 1398326266940342 922; combined=135, p1=15, p2=0, p3=0, p4=0, p5=120, sr=0, sw=0, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.6.6 (http://www.modsecurity.org/); OWASP_CRS/2.2.5.
Server: Apache

Sumber: