Pendahuluan
ModSecurity adalah modul plug-in untuk Apache yang bekerja seperti firewall. Ini berfungsi melalui kumpulan aturan, yang memungkinkan Anda untuk menyesuaikan dan mengonfigurasi keamanan server Anda.
ModSecurity juga dapat memantau lalu lintas web secara real time dan membantu Anda mendeteksi dan merespons penyusupan. Dapat digunakan dengan Apache, Nginx, dan IIF dan kompatibel dengan Debian, Ubuntu, dan CentOS.
Tutorial ini menjelaskan cara menginstal dan mengkonfigurasi ModSecurity di server web Apache.

Prasyarat
- Tumpukan LAMP (Linux, Apache, MySQL, PHP) diinstal dan dikonfigurasi
- Akses ke akun pengguna dengan sudo atau akar hak istimewa
- Manajer paket (APT atau YUM), disertakan secara default
- Jendela baris perintah/terminal (Ctrl-Alt-T, Ctrl-Alt-F1)
- Editor teks, seperti nano
Langkah 1:Perbarui Repositori Perangkat Lunak
Buka jendela terminal, dan masukkan berikut ini:
Di Debian / Ubuntu
sudo apt update -y

Di CentOS
sudo yum update -y
Langkah 2:Menginstal ModSecurity Di Apache
Instal ModSecurity di Debian
1. Di jendela terminal, masukkan berikut ini:
sudo apt install libapache2-modsecurity
Jika diminta, tekan y
dan tekan Enter untuk memungkinkan proses selesai.
2. Mulai ulang layanan Apache:
sudo systemctl restart apache2
Tidak akan ada output jika Apache berhasil di-restart.
3. Periksa versi perangkat lunak (harus 2.8.0 atau lebih baru):
apt-cache show libapache2-modsecurity
Instal ModSecurity di Ubuntu 18.04
1. Di jendela terminal, masukkan:
sudo apt install libapache2-mod-security2
Jika diminta, tekan y
dan tekan Enter untuk memungkinkan proses selesai.

2. Mulai ulang layanan Apache:
sudo systemctl restart apache2
Tidak akan ada output jika Apache berhasil di-restart.
3. Periksa versi perangkat lunak (harus 2.8.0 atau lebih baru):
apt-cache show libapache2-mod-security2

Instal ModSecurity di CentOS 7
1. Masukkan yang berikut ini ke jendela terminal:
sudo yum install mod_security
Jika diminta, tekan y
dan tekan Enter untuk memungkinkan proses selesai.
2. Mulai ulang layanan Apache:
sudo systemctl restart httpd.service
3. Periksa versi perangkat lunak (harus 2.8.0 atau lebih baru):
yum info mod_security
Langkah:3 Konfigurasi ModSecurity
Setelah instalasi, ModSecurity diatur untuk mencatat peristiwa sesuai dengan aturan default. Anda harus mengedit file konfigurasi untuk menyesuaikan aturan guna mendeteksi dan memblokir lalu lintas.
File konfigurasi default adalah /etc/modsecurity/modsecurity.conf-recommended.
1. Salin dan ganti nama file:
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
2. Selanjutnya, ubah mode deteksi ModSecurity . Pertama, pindah ke /etc/modsecurity map:
sudo cd /etc/modsecurity
3. Buka file konfigurasi di editor teks (kami akan menggunakan nano):
sudo nano modsecurity.conf
Di dekat bagian atas, Anda akan melihat entri berlabel:
SecRuleEngine DetectionOnly
Ubah ini untuk membaca sebagai berikut:
SecRuleEngine On

4. Gunakan CTRL+X untuk keluar, lalu tekan y lalu Masuk untuk menyimpan perubahan.
5. Keluar dari folder /etc/modsecurity:
cd
6. Mulai ulang Apache:
Di Debian/Ubuntu
sudo systemctl restart apache2

Di CentOS
sudo systemctl restart httpd.service
Ini akan mengaktifkan ModSecurity menggunakan aturan default dasar. Di beberapa versi Linux, ini termasuk Set Aturan Inti OWASP. Namun, ini mungkin berbeda dari versi terbaru yang dikelola oleh pengembang.
Langkah 4:Unduh Aturan ModSecurity OWASP Terbaru
Core Rule Set (CRS) terbaru untuk ModSecurity dipertahankan di GitHub.
1. Instal G itu jika belum disertakan di sistem Anda.
Instal Git di Debian/Ubuntu:
sudo apt install git
Instal Git di CentOS:
sudo yum install git
2. Unduh salinan CRS:
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

Ini menempatkan salinan direktori sebagai subdirektori dari lokasi kerja Anda saat ini.
3. Buka direktori baru:
cd owasp-modsecurity-crs
4. Pindahkan file crs-setup:
sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf

5. Kemudian pindahkan direktori rules/:
sudo mv rules/ /etc/modsecurity
Jika Anda menemukan kesalahan saat mencoba memindahkan direktori ini, masukkan:
sudo mkdir /etc/modsecurity/rules
cd rules
sudo cp *.* /etc/modsecurity/rules
6. Selanjutnya, periksa security2.conf Anda file untuk memverifikasi itu disetel untuk memuat aturan ModSecurity:
sudo nano /etc/apache2/mods-enabled/security2.conf

Pastikan Anda menyertakan baris berikut dan tidak berkomentar:
IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf
Jika tidak ada, tambahkan. Jangan menduplikasinya, atau Anda berisiko menonaktifkan layanan Apache Anda.

7. Mulai ulang layanan Apache:
Di Debian/Ubuntu
sudo systemctl restart apache2
Di CentOS
sudo systemctl restart httpd.service
Langkah 5:Uji Konfigurasi Apache
1. Buka file konfigurasi Apache default:
sudo nano /etc/apache2/sites-available/000-default.conf
2. Temukan </VirtualHost>
tag di bagian bawah dan tambahkan baris berikut:
SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403,msg:'phoenixNAP test rule was triggered'"
Anda dapat mengubah msg
untuk apa pun yang Anda inginkan.

Simpan dan keluar dari file (CTRL+X
> y
> Masuk ).
3. Mulai ulang layanan Apache:
Di Debian/Ubuntu
sudo systemctl restart apache2
Di CentOS
sudo systemctl restart httpd.service
4. Kemudian, masukkan perintah berikut:
curl localhost/index.html?testparam=test
Sistem merespons dengan mencoba menampilkan halaman web default. Alih-alih konten, ini menghasilkan kode kesalahan dan pesan di dalam tag:

5. Anda dapat mengonfirmasi bahwa ModSecurity berfungsi dengan mencari kode 403 di log kesalahan Apache dengan perintah:
sudo tail -f /var/log/apache2/error.log
Salah satu entri di bagian bawah adalah kode kesalahan ModSecurity:

Uji ModSecurity dan OWASP CRS Dengan Bash Script
Metode lain yang dapat Anda gunakan untuk menguji ModSecurity adalah dengan menggunakan B abu naskah.
1. Masukkan perintah berikut di terminal:
curl localhost/index.html?exec=/bin/bash
Outputnya menunjukkan pesan kesalahan yang sama seperti yang terakhir kali.
2. Lihat file error.log Apache lagi dan Anda akan menemukan bahwa aturan tersebut berlaku:
sudo tail -f /var/log/apache2/error.log

Outputnya menampilkan pesan kesalahan ModSecurity terkait OWASP.
Langkah 6:Buat Aturan ModSecurity
Di bawah ini adalah contoh pengujian bagaimana Anda dapat menggunakan ModSecurity untuk memblokir kata kunci tertentu pada formulir PHP.
1. Buat file PHP di dalam direktori html dengan perintah:
sudo nano /var/www//html/test.php
2. Masukkan kode berikut ke dalam file:
<html>
<body>
<?php
if(isset($_POST['data']))
echo $_POST['data'];
else
{
?>
<form method="post" action="">
Enter text here:<textarea name="data"></textarea>
<input type="submit"/>
</form>
<?php
}
?>
</body>
</html>
Simpan file dan keluar.
3. Selanjutnya, buat file aturan kustom ModSecurity baru:
sudo nano /etc/modsecurity/modsecurity_custom_rules.conf
Tambahkan baris berikut:
SecRule REQUEST_FILENAME "test.php" "id:'400001',chain,deny,log,msg:'Spam detected'"
SecRule REQUEST_METHOD "POST" chain
SecRule REQUEST_BODY "@rx (?i:(enlarge|Nigerian|gold))"
Tentu saja, ubah kata kunci di baris terakhir menjadi apa pun yang Anda inginkan.
Simpan file dan keluar.
4. Muat ulang layanan Apache:
Di Debian/Ubuntu
sudo systemctl restart apache2
Di CentOS
sudo systemctl restart httpd.service
5. Luncurkan formulir di browser web
localhost/test.php

6. Ketik salah satu kata kunci dari aturan ke dalam formulir. Dalam contoh ini:perbesar, Nigeria, atau emas .
Anda akan menerima pesan kesalahan 403 Forbidden.

Anda juga dapat memeriksa /var/log/apache2/error.log
file untuk memverifikasi tindakan ModSecurity.