Konfigurasikan LibModsecurity dengan Apache di CentOS 8

Dalam panduan ini, kita akan mempelajari cara mengkonfigurasi LibModsecurity dengan Apache di CentOS 8. LibMosecurity juga dikenal sebagai ModSecurity versi 3, adalah engine firewall aplikasi web (WAF) open source lintas platform yang memberikan perlindungan terhadap berbagai web serangan aplikasi.

Konfigurasikan LibModsecurity dengan Apache di CentOS 8

Jalankan Pembaruan Sistem

Mulailah dengan memperbarui paket sistem Anda.

dnf update

Instal Alat dan Ketergantungan Bangun yang Diperlukan

LibModsecurity akan dikompilasi dari sumbernya dan oleh karena itu sejumlah alat build dan dependensi diperlukan. Jalankan perintah di bawah ini untuk menginstalnya.

dnf config-manager --set-enabled powertools

Instal repositori tambahan.

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf config-manager --set-enabled remi

Instal dependensi yang diperlukan.

dnf install gcc-c++ flex bison yajl curl-devel curl zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pkgconfig libtool httpd-devel redhat-rpm-config git wget openssl openssl-devel vim GeoIP-devel doxygen yajl-devel libmaxminddb libmaxminddb-devel GeoIP-devel lmdb lmdb-devel ssdeep-devel lua-devel

Download Kode Sumber LibModsecurity

Buat direktori sementara untuk menyimpan tarball sumber.

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

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 di CentOS 8

Setelah instalasi LibModsecurity selesai, lanjutkan untuk menginstal konektor ModSecurity-apache yang menyediakan saluran komunikasi antara Apache dan libModsecurity. 

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
make install

Konfigurasi Apache dengan LibModsecurity di CentOS 8

Selanjutnya, 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

Buat direktori konfigurasi ModSecurity di bawah /etc/httpd/conf.d

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.

cp ~/modsec/modsecurity-v3.0.4/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 ~/modsec/modsecurity-v3.0.4/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

Konfigurasikan aturan ModSecurity dengan membuat file tempat Anda dapat menentukan aturan yang akan disertakan.

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/apache2/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.

cp /etc/httpd/conf.d/modsecurity.d/owasp-crs/crs-setup.conf{.example,}

Aktifkan ModSecurity 3 di CentOS 8

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 masing-masing 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 per
mission to access /index.html on this server.</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 "496"] [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 "paranoia-level/1"] [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 "centos8.kifarunix-demo.com"] [uri "/index.html"] [unique_id "158386776469.002836"] [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 "centos8.kifarunix-demo.com"] [uri "/index.html"] [unique_id "158386776469.002836"] [ref ""]

Nah, itu dia. ModSecurity 3 atau LibModSeceurity sekarang diinstal, diaktifkan, dan melindungi situs Anda dari serangan web.

Jangan ragu untuk mengatur lebih banyak aturan sesuai keinginan dan melindungi aplikasi web Anda.

Itu menandai akhir dari panduan kami tentang cara menginstal dan mengkonfigurasi LibModsecurity dengan Apache di CentOS 8.

Tutorial Terkait

Konfigurasikan LibModsecurity dengan Nginx di CentOS 8

Instal LibModsecurity dengan Apache di Ubuntu 18.04

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