Dalam panduan ini, kita akan mempelajari cara menginstal LibModsecurity dengan Apache di Fedora 30/29/CentOS 7. Modsecurity, adalah firewall aplikasi web sumber terbuka (WAF) yang menyediakan bahasa pemrograman berbasis peristiwa yang kuat yang melindungi aplikasi web dari berbagai macam serangan seperti SQL injection, Cross-site Scripting (XSS), Local File Include, Remote File Include dll.
Instal LibModsecurity dengan Apache di Fedora 30/29/CentOS 7
Perbarui sistem Anda. Manajer paket YUM digunakan dalam hal ini untuk manajemen paket karena YUM dapat digunakan di CentOS dan Fedora.
yum update
Jika Anda sedang membangun aplikasi web, pastikan Anda memiliki stack LAMP. Anda dapat melihat cara menginstal LAMP stack dengan mengikuti tautan di bawah ini;
Instal LAMP Stack di Fedora 30
Instal LAMP (Linux, Apache, MySQL, PHP) Stack di Fedora 28/29
Instal Alat dan Ketergantungan Bangun yang Diperlukan
Karena kita akan menginstal LibModsecurity dari sumbernya, sejumlah dependensi alat build diperlukan. Jalankan perintah di bawah ini untuk menginstalnya.
yum install gcc-c++ flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pkgconfig libtool httpd-devel redhat-rpm-config
Download Kode Sumber LibModsecurity
Untuk menginstal LibModSecurity dengan Apache di Fedora 30/29/CentOS 7, Anda perlu mengdownload kode sumber untuk kompilasi.
Oleh karena itu, buat direktori sementara untuk menyimpan tarball sumber LibModSecurity.
mkdir ~/modsec
Anda dapat memilih untuk menggunakan /opt sebagai gantinya.
Arahkan ke halaman rilis ModSecurity dan download kode sumber ModSecurity. Anda cukup menggunakan wget untuk menariknya.
cd ~/modsec
wget -P ~/modsec https://github.com/SpiderLabs/ModSecurity/releases/download/v3.0.4/modsecurity-v3.0.4.tar.gz
Ekstrak kode sumber ModSecurity.
cd ~/modsec
tar xzf modsecurity-v3.0.4.tar.gz
Kompilasi dan Instal LibModsecurity di Fedora 30/29/CentOS 7
Arahkan ke direktori sumber LibModsecurity, konfigurasikan, kompilasi, dan instal
cd modsecurity-v3.0.4
Konfigurasikan LibModsecurity untuk menyesuaikannya dengan sistem Anda dan periksa apakah ada ketergantungan yang diperlukan yang hilang.
./build.sh
Anda dapat dengan aman mengabaikan fatal: No names found, cannot describe anything pesan.
./configure
Perbaiki masalah ketergantungan apa pun untuk berjaga-jaga jika ada sebelum Anda dapat melanjutkan untuk mengkompilasi dan menginstal LibModsecurity dengan Apache di CentOS
Kompilasi dan instal LibModSecurity.
make
make install
Instal ModSecurity-Apache Connector
Konektor ModSecurity-apache menyediakan saluran komunikasi antara Apache dan libModsecurity. Sekarang setelah libmodsecurity diinstal, ikuti langkah-langkah berikut untuk menginstal konektor Modsecurity Apache.
Kloning repositori git untuk konektor ModSecurity Apache.
cd ~ git clone https://github.com/SpiderLabs/ModSecurity-apache
Arahkan ke direktori ModSecurity-apache dan jalankan perintah berikut untuk mengkompilasi dan menginstalnya.
cd ModSecurity-apache./autogen.sh./configure --with-libmodsecurity=/usr/local/modsecurity/ make sudo make install
Konfigurasi Apache dengan LibModsecurity
Untuk memulainya, konfigurasikan Apache untuk memuat modul konektor Modsecurity Apache dengan menambahkan baris di bawah ini ke file konfigurasi Apache utama.
echo "LoadModule security3_module /usr/lib64/httpd/modules/mod_security3.so" | sudo tee -a /etc/httpd/conf/httpd.conf
Selanjutnya, buat direktori konfigurasi ModSecurity di bawah /etc/httpd/conf.d
sudo mkdir /etc/httpd/conf.d/modsecurity.d
Copy contoh file konfigurasi ModSecurity dari direktori kode sumber ke direktori konfigurasi ModSec yang dibuat di atas dengan mengganti namanya sebagai berikut.
sudo cp ~/ModSecurity/modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.d/modsecurity.conf
Copy juga unicode.mapping file dari direktori sumber ModSecurity ke direktori konfigurasi Apache Modsecurity.
sudo cp ~/ModSecurity/unicode.mapping /etc/httpd/conf.d/modsecurity.d/
Aktifkan ModSecurity dengan mengubah nilai SecRuleEngine menjadi On.
sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/httpd/conf.d/modsecurity.d/modsecurity.conf
Ubah direktori log default untuk Modsecurity
sed -i 's#/var/log/modsec_audit.log#/var/log/httpd/modsec_audit.log#' /etc/httpd/conf.d/modsecurity.d/modsecurity.conf
Selanjutnya, Anda perlu mengonfigurasi aturan ModSecurity. Oleh karena itu, buat file tempat Anda dapat menentukan aturan yang akan disertakan.
sudo vim /etc/httpd/conf.d/modsecurity.d/rules.conf
Include "/etc/httpd/conf.d/modsecurity.d/modsecurity.conf" Include "/etc/httpd/conf.d/modsecurity.d/owasp-crs/crs-setup.conf" Include "/etc/httpd/conf.d/modsecurity.d/owasp-crs/rules/*.conf"
Karena kami telah menyertakan Aturan OWASP, lanjutkan untuk menginstalnya.
Instal OWASP ModSecurity Core Rule Set (CRS)
Itu OWASP ModSecurity Core Rule Set (CRS) adalah seperangkat aturan deteksi serangan umum untuk digunakan dengan ModSecurity. Ini bertujuan untuk melindungi aplikasi web dari berbagai serangan, termasuk Sepuluh Teratas OWASP, minimum peringatan palsu.
Kloning CRS dari repositori GitHub ke /etc/httpd/conf.d/modsecurity.d/ seperti yang ditunjukkan di bawah ini;
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /etc/httpd/conf.d/modsecurity.d/owasp-crs
Selanjutnya ganti nama crs-setup.conf.example menjadi crs-setup.conf.
sudo cp /etc/httpd/conf.d/modsecurity.d/owasp-crs/crs-setup.conf{.example,}
Aktifkan ModSecurity
Setelah semua itu, aktifkan modsecurity pada file konfigurasi situs default atau pada file konfigurasi virtual host apa pun. Dalam panduan ini, kami menggunakan file konfigurasi situs default Apache.
Perhatikan bahwa Anda harus mengaktifkan ModSecurity per konteks direktori.
vim /etc/httpd/conf/httpd.conf
Lihat perubahan kami di bawah ini pada direktori root web default pada konfigurasi default Apache;
... <Directory "/var/www/html"> modsecurity on modsecurity_rules_file /etc/httpd/conf.d/modsecurity.d/rules.conf Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>...
Garis;
modsecurity on modsecurity_rules_file /etc/httpd/conf.d/modsecurity.d/rules.conf
Mengaktifkan Modsecurity dan menentukan lokasi aturan Modsecurity.
Periksa Apache untuk error konfigurasi dan mulai ulang.
httpd -t Syntax OK
systemctl restart httpd
Menguji Keamanan Mod
Selanjutnya uji keefektifan Modsecurity dengan aturan OWASP, misalnya menggunakan command injection. Jalankan perintah di bawah ini;
curl localhost/index.html?exec=/bin/bash
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access /index.html on this se rver.</p> </body></html>
Jika kamu melihat, 403 Forbidden maka itu berarti Anda telah berhasil.
Anda juga dapat memeriksa log Modsecurity;
tail /var/log/httpd/modsec_audit.log
ModSecurity: Warning. Matched "Operator `PmFromFile' with parameter `unix-shell.data' against variable `ARGS:exec' (Value: `/bin/bash' ) [file "/etc/httpd/conf.d/modsecurity.d/owasp-crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf"] [line "488"] [id "932160"] [rev ""] [msg "Remote Command Execution: Unix Shell Code Found"] [data "Matched Data: bin/bash found within ARGS:exec: /bin/bash"] [severity "2"] [ver "OWASP_CRS/3.2.0"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-shell"] [tag "platform-unix"] [tag "attack-rce"] [tag "OWASP_CRS"] [tag "OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION"] [tag "WASCTC/WASC-31"] [tag "OWASP_TOP_10/A1"] [tag "PCI/6.5.2"] [hostname "cent7.example.com"] [uri "/index.html"] [unique_id "156978926276.295922"] [ref "o1,8v21,9t:urlDecodeUni,t:cmdLine,t:normalizePath,t:lowercase"] ModSecurity: Access denied with code 403 (phase 2). Matched "Operator `Ge' with parameter `5' against variable `TX:ANOMALY_SCORE' (Value: `5' ) [file "/etc/httpd/conf.d/modsecurity.d/owasp-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf"] [line "79"] [id "949110"] [rev ""] [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] [data ""] [severity "2"] [ver ""] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-generic"] [hostname "cent7.example.com"] [uri "/index.html"] [unique_id "156978926276.295922"] [ref ""] ModSecurity: Warning. Matched "Operator `Ge' with parameter `5' against variable `TX:INBOUND_ANOMALY_SCORE' (Value: `5' ) [file "/etc/httpd/conf.d/modsecurity.d/owasp-crs/rules/RESPONSE-980-CORRELATION.conf"] [line "76"] [id "980130"] [rev ""] [msg "Inbound Anomaly Score Exceeded (Total Inbound Score: 5 - SQLI=0,XSS=0,RFI=0,LFI=0,RCE=5,PHPI=0,HTTP=0,SESS=0): individual paranoia level scores: 5, 0, 0, 0"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [tag "event-correlation"] [hostname "cent7.example.com"] [uri "/index.html"] [unique_id "156978926276.295922"] [ref ""]
Nah, begitulah dan itu saja pada panduan kami tentang cara menginstal LibModsecurity dengan Apache di Fedora 30/29/CentOS 7. Jangan ragu untuk mengatur lebih banyak aturan sesuai keinginan dan melindungi aplikasi web Anda.
Referensi:
Wiki Keamanan Mod
Konektor ModSecurity-apache
Panduan Terkait
Konfigurasikan LibModsecurity dengan Nginx di CentOS 8
Instal LibModsecurity dengan Apache di Ubuntu 18.04