Instal LibModsecurity dengan Apache di Fedora 30/29/CentOS 7

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