Hai, Sobat Jagoan! Kamu bisa memanfaatkan ModSecurity atau ModSec untuk memberi perlindungan ekstra pada website dari berbagai serangan keamanan. ModSecurity (ModSec) bisa diibaratkan seperti ketika kamu membuat rule pada firewall melalui perintah console. Bedanya, pada ModSec sudah tersedia aturan dasar serta dukungan dari OWASP Core Rule Set (CRS) yang siap digunakan. Selain itu, ModSec juga fleksibel karena memungkinkan kamu menambahkan rule khusus sesuai kebutuhan. Nah, di artikel ini akan membahas cara konfigurasi ModSec di server Apache.
Sebelum memulai, ketahui dulu sedikit informasi tentang ModSecurity di bawah ini, Sob!
Apa itu ModSecurity?
ModSecurity adalah Web Application Firewall (WAF) open source yang berfungsi untuk melindungi aplikasi web dari berbagai serangan. ModSecurity bekerja dengan memfilter dan memblokir permintaan HTTP yang mencurigakan atau berbahaya, bertindak seperti “penjaga gerbang” untuk aplikasi web. ModSecurity dapat diintegrasikan dengan server web seperti Apache dan Nginx, serta dapat digunakan sebagai modul tambahan atau reverse proxy.
Fungsi ModSecurity?
- Melindungi website dari serangan seperti SQL Injectioin, Cross-Site Scripting (XSS), brute force, dan serangan lainnya
- Memantau lalu lintas HTTP secara real-time
- Mencatat aktivitas dan log yang bisa digunakan untuk analisis keamanan
- ModSecurity menawarkan aturan yang fleksibel dan dapat disesuaikan, memungkinkan administrator untuk mengonfigurasi aturan sesuai dengan kebutuhan spesifik aplikasi
Cara Kerja ModSecurity?
ModSecurity beroperasi dengan memeriksa setiap permintaan HTTP yang masuk ke server web. ModSecurity akan membandingkan permintaan tersebut dengan aturan yang telah dikonfigurasi. Jika permintaan tersebut melanggar aturan, ModSecurity akan memblokir permintaan tersebut dan menampilkan pesan kesalahan atau halaman 403 Forbidden.
Langkah-Langkah Konfigurasi ModSecurity di Apache
Sekarang mari memulai langkah-langkah untuk melakukan konfigurasi ModSecurity di Apache di bawah ini.
Catatan: apabila sudah menginstal Apache di server silahkan langsung mengikuti STEP 2.
STEP 1: Instal Apache di Server
ModSecurity bekerja dengan diintegrasikan pada web server sehingga kamu harus sudah menginstal Apache di server yang digunakan. Jika belum, ikuti cara berikut untuk memasang Apache di server Ubuntu versi 24.04.
- Update server:
sudo apt update && sudo apt upgrade -y
- Instal apache:
sudo apt install apache2 -y
- Mengaktifkan dan menjalankan apache:
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl status apache2
- Kalau sudah aktif ketika kamu membuka http://ip-server akan muncul default page apache.

Step 2: Instal dan Konfigurasi ModSecurity
- Setelah apache berjalan, instal modul WAF dengan menjalankan perintah:
sudo apt install libapache2-mod-security2 -y
- Setelah proses instal selesai, aktifkan modul dan restart Apache dengan perintah berikut:
sudo a2enmod security2
sudo systemctl restart apache2

- Jalankan perintah di bawah ini untuk memverifikasi bahwa instalasi berhasil dengan memeriksa versi modsecurity.
apt show libapache2-mod-security2

- Selanjutnya, salin default file konfigurasi ModSecurity.
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
- Ubah ModSecurity ke mode blocking agar ketika terdeteksi ada serangan ModSecurity akan memblokir serangan tersebut.
sudo nano /etc/modsecurity/modsecurity.conf
# Ubah: SecRuleEngine DetectionOnly
# Menjadi: SecRuleEngine On

- Simpan dengan Ctrl+X, lalu Y dan Enter dan restart apache agar konfigurasi di muat ulang.
sudo systemctl restart apache2
STEP 3: OWASP ModSecurity Core Rule Set
- Lalu, tambahkan aturan keamanan di ModSecurity menggunakan OWASP CRS.
cd /usr/local/src
sudo apt install -y git
git clone https://github.com/coreruleset/coreruleset.git
- Pindahkan konfigurasi CRS ke folder ModSecurity.
cd coreruleset
sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf
sudo mv rules /etc/modsecurity/
- Edit konfigurasi Apache agar include CRS.
sudo nano /etc/apache2/mods-available/security2.conf
Pastikan bloknya minimal seperti ini:
SecDataDir /var/cache/modsecurity
IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf

- Jika sudah sesuai, simpan lalu restart server.
sudo apache2ctl -t
sudo systemctl restart apache2

STEP 4: Tes ModSecurity
- Buka konfigurasi default Apache menggunakan perintah nano.
sudo nano /etc/apache2/sites-available/000-default.conf
- Kemudian tambahkan dua aturan tambahan di konfigurasi default tersebut, misalnya seperti berikut:
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403,msg:'Our test rule has triggered'"

- Simpan dan restart Apache lalu buka halaman indeks menggunakan curl.
sudo systemctl restart apache2
curl http://localhost/index.html?testparam=test

Kode respon yang muncul harus 403 karena di file 000-default.conf sebelumnya sudah di set parameter yang mengandung kata ‘test’ akan diblokir dengan id rule 1234. Selain itu, harus ada di pesan di log yang menunjukkan bahwa aturan ModSecurity yang diefinisikan berfungsi. Untuk memeriksanya gunakan:
sudo tail -f /var/log/apache2/error.log

Tekan Ctrl+C untuk keluar dari log.
- Sebagai langkah terakhir, kamu bisa melakukan pengujian sederhana untuk memastikan OWASP CRS sudah aktif dan ModSecurity benar-benar memblokir serangan.
curl http://localhost/index.html?exec=/bin/bash
Permintaan ini mensimulasikan serangan command injection dengan mencoba mengeksekusi /bin/bash. Jika konfigurasi berjalan dengan benar, maka permintaan tersebut tidak akan diproses oleh Apache, melainkan diblokir oleh ModSecurity.
Dengan langkah-langkah di atas kamu tidak perlu lagi menuliskan rule satu-per-satu untuk memblokir serangan umum pada website. Konfigurasi ini memastikan Apache tidak hanya dapat mendeteksi, tetapi juga memblokir serangan umum seperti SQL Injection, XSS, dan Command Injection secara otomatis.
Kalau ada yang masih bikin bingung, jangan ragu hubungi Tim Support Jagoan Hosting melalui Live Chat atau Open Ticket, Sob!
Pengantar Halo sobat Jagoan! di tutorial kali ini kita bakalan membahas permasalahan Error Undefined Index/Variable. Pasti sekarang kamu lagi main-main Read more
Halo Sob! Pernah nemuin peringatan kayak gini nggak? Apa yang kamu lakukan ketika mendapatkan peringatan "Google Attack Site" seperti ini?[caption Read more
Tahu nggak, Sob! untuk dapat mengaktifkan layanan SSL murah, ada beberapa persyaratan yang harus disiapkan terlebih dahulu, diantaranya adalah CSR Read more
Hai, Sob kamu pasti tentu tidak ingin jika website kamu dibobol oleh hacker, terutama jika kamu seorang programmer dan webmaster. Read more