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