ModSecurity atau web application firewall adalah kumpulan rules yang bertujuan untuk melindungi aplikasi web dari berbagai macam serangan dengan minimum false alerts. Biasanya vendor modsec yang sering dipakai adalah OWASP ModSecurity Core Rule Set (CRS) dan Comodo ModSecurity.
Anda dapat menginstall package ModSecurity menyesuaikan OS yang Anda pakai, contoh untuk menginstal pada OS Rocky Linux 8
dnf -y install mod_security_crs
Namun menginstal dengan package tidak selalu mendapatkan versi modsec yang terbaru sesuai yang ada di https://github.com/coreruleset/coreruleset/releases sehingga perlu melakukan instalasi secara manual.
OWASP ModSecurity Core Rule Set (CRS) #
Instal ModSecurity untuk Apache
dnf -y install mod_security libmodsecurity
Download archive OWASP terbaru.
wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.5.tar.gz
Extract archive ke direktori /etc/httpd/modsecurity.d/
tar -xaf v3.3.5.tar.gz -C /etc/httpd/modsecurity.d/
Pindah dan rename crs-setup.conf.example
ke dalam folder rules
cd /etc/httpd/modsecurity.d/coreruleset-3.3.5
mv crs-setup.conf.example rules/crs-setup.conf
Edit mod_security.conf
lalu tambahkan baris berikut.
/etc/httpd/conf.d/mod_security.conf
<IfModule mod_security2.c>
Include modsecurity.d/coreruleset-3.3.5/crs-setup.conf
IncludeOptional modsecurity.d/owasp-modsecurity-crs/plugins/*-config.conf
IncludeOptional modsecurity.d/owasp-modsecurity-crs/plugins/*-before.conf
Include modsecurity.d/coreruleset-3.3.5/rules/*.conf
IncludeOptional modsecurity.d/owasp-modsecurity-crs/plugins/*-after.conf
</IfModule>
Restart service apache
systemctl restart httpd
Terdapat juga plugin OWASP yang bisa Anda explore pada https://github.com/coreruleset/plugin-registry
Comodo Web Application Firewall #
Instal ModSecurity untuk Apache
dnf -y install mod_security libmodsecurity
Selanjutnya buat akun Comodo untuk mendapatkan free CWAF https://accounts.comodo.com/cwaf/management/signup
Setelah daftar dan menyelesaikan order CWAF, Anda bisa mendownload rule WAF melalui https://waf.comodo.com/user/cwaf_revisions
Buat folder cwaf_rules-1.240
lalu extract rule WAF ke folder tersebut.
mkdir -p /etc/httpd/modsecurity.d/cwaf_rules-1.240
tar -xaf cwaf_rules-1.240.tgz -C /etc/httpd/modsecurity.d/cwaf_rules-1.240
Edit mod_security.conf
lalu tambahkan path folder cwaf_rules-1.240
/etc/httpd/conf.d/mod_security.conf
<IfModule mod_security2.c>
Include modsecurity.d/cwaf_rules-1.240/*.conf
</IfModule>
Restart service apache
systemctl restart httpd
Imunify360 Apache Rule Set #
Anda dapat memilih rule modsecurity minimal atau full dari imunify360.
Meta imunify360-minimal.
curl -s https://files.imunify360.com/static/modsec/v2/meta_imunify360-minimal-apache.yaml
Meta imunify360-full.
curl -s https://files.imunify360.com/static/modsec/v2/meta_imunify360-full-apache.yaml
Ini juga tersedia pada beberapa webserver seperti litespeed
dan nginx
.
Selanjutnya download archive rule modsecurity.
wget https://files.imunify360.com/static/modsec/v2/imunify360-modsec3-full-apache.zip
Extract archive ke tujuan /etc/httpd/modsecurity.d
unzip -q imunify360-modsec3-full-apache.zip -d /etc/httpd/modsecurity.d/
Edit mod_security.conf
.
<IfModule mod_security2.c>
Include modsecurity.d/imunify360-full-apache/*.conf
</IfModule>
Restart service apache
systemctl restart httpd
Testing #
Test rule modsecurity dengan cara.
curl -I 'http://www.example.com/?foo=/etc/passwd&bar=/bin/sh'
Jika output HTTP 403 berarti OWASP sudah sudah berjalan dengan baik.
$ curl -I 'http://www.example.com/?foo=/etc/passwd&bar=/bin/sh'
HTTP/1.1 403 Forbidden
Date: Thu, 12 Oct 2023 08:28:43 GMT
Server: Apache
Last-Modified: Wed, 27 Jul 2022 18:04:30 GMT
Accept-Ranges: bytes
Content-Length: 7620
Content-Type: text/html; charset=UTF-8
Test XSS attack.
curl -I 'http://www.example.com/?q="><script>alert(123)</script>'