Instal LibModsecurity dengan Apache di Ubuntu 20.04

Selamat datang di panduan kami tentang cara menginstal LibModsecurity dengan Apache di Ubuntu 20.04. Libmodsecurity (Modsecurity v3), adalah open source, lintas platform web application firewall (WAF) yang dikembangkan oleh Trustwave’s SpiderLabs. Ini adalah penulisan ulang lengkap ModSecurity v2 dan menyediakan bahasa pemrograman berbasis peristiwa yang kuat yang melindungi aplikasi web terhadap berbagai serangan seperti injeksi SQL, Cross-site Scripting (XSS), Local File Include, Remote File Include e. tc. Hal ini juga memungkinkan untuk pemantauan lalu lintas HTTP, logging dan analisis real-time.

Instal LibModsecurity dengan Apache di Ubuntu 20.04

Prasyarat

Jalankan Pembaruan Sistem

Sinkronisasi ulang paket sistem Anda ke versi terbarunya.

apt update
apt upgrade

Instal LAMP Stack

Sebelum Anda dapat menginstal dan mengkonfigurasi LibModsecurity dengan Apache di Ubuntu 20.04, Anda harus menginstal LAMP Stack dan menjalankan server Anda. Ikuti tautan di bawah ini untuk mengatur stack LAMP di Ubuntu 20.04.

Instal LAMP Stack di Ubuntu 20.04

Instal Alat dan Ketergantungan Bangun yang Diperlukan

Untuk menginstal Libmodsecurity atau Modsecurity v3 di Ubuntu 20.04, kita akan membuatnya dari sumber. Oleh karena itu, Anda perlu menginstal beberapa alat dan dependensi build yang diperlukan agar build berhasil.

apt install g++ flex bison curl apache2-dev doxygen libyajl-dev ssdeep liblua5.2-dev libgeoip-dev libtool dh-autoreconf libcurl4-gnutls-dev libxml2 libpcre++-dev libxml2-dev git

Kompilasi dan Instal LibModsecurity di Ubuntu 20.04

Setelah sistem Anda diatur, Anda dapat melanjutkan untuk menginstal Modsecurity v3 di Ubuntu 20.04.

Download Kode Sumber LibModsecurity

Untuk menginstal versi stabil terbaru dari LibModsecurity, Anda perlu mengompilasinya dari sumbernya.

Oleh karena itu, navigasikan ke  halaman rilis ModSecurity  dan download kode sumber ModSecurity. Anda cukup menggunakan wget untuk menariknya.

wget https://github.com/SpiderLabs/ModSecurity/releases/download/v3.0.4/modsecurity-v3.0.4.tar.gz

Ekstrak kode sumber ModSecurity.

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: not a git repository (or any of the parent directories):.gitpesan error.

./configure

Pastikan untuk memperbaiki masalah ketergantungan, jika ada, sebelum Anda dapat melanjutkan untuk mengkompilasi dan menginstal LibModsecurity dengan Apache di Ubuntu 20.04.

Jika skrip konfigurasi di atas selesai tanpa error, lanjutkan untuk mengkompilasi dan menginstal LibModSecurity di Ubuntu 20.04.

make
make install

LibModSecurity alias ModSecurity v3 kini telah diinstal di Ubuntu 20.04

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

Konfigurasi Apache dengan LibModsecurity

Muat Modul Konektor Apache ModSecurity

Konfigurasikan Apache untuk memuat modul konektor Modsecurity Apache dengan menambahkan baris di bawah ini ke file konfigurasi Apache utama.

echo "LoadModule security3_module /usr/lib/apache2/modules/mod_security3.so" | sudo tee -a /etc/apache2/apache2.conf

Konfigurasikan ModSecurity

Buat direktori konfigurasi ModSecurity di bawah /etc/apache2

sudo mkdir /etc/apache2/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-v3.0.4/modsecurity.conf-recommended /etc/apache2/modsecurity.d/modsecurity.conf

Copy juga unicode.mappingfile dari direktori sumber ModSecurity ke direktori konfigurasi Apache Modsecurity.

sudo cp ~/modsecurity-v3.0.4/unicode.mapping /etc/apache2/modsecurity.d/

Aktifkan ModSecurity dengan mengubah nilai SecRuleEnginemenjadi On.

sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/apache2/modsecurity.d/modsecurity.conf

Selanjutnya, Anda perlu mengonfigurasi aturan ModSecurity. Oleh karena itu, buat file tempat Anda dapat menentukan aturan yang akan disertakan, katakanlah, /etc/apache2/modsecurity.d/modsec_rules.conf.

cat > /etc/apache2/modsecurity.d/modsec_rules.conf << 'EOL' Include "/etc/apache2/modsecurity.d/modsecurity.conf" Include "/etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf" Include "/etc/apache2/modsecurity.d/owasp-crs/rules/*.conf" EOL

Karena kami telah menyertakan Aturan OWASP sebagai bagian dari aturan ModSecurity 3, lanjutkan untuk menginstalnya.

Instal OWASP ModSecurity Core Rule Set (CRS) di Ubuntu

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/apache2/modsecurity.d/owasp-crs

Selanjutnya ganti nama crs-setup.conf.examplemenjadi crs-setup.conf.

sudo cp /etc/apache2/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.

cp /etc/apache2/sites-available/000-default.conf{,.old}

Lihat contoh konfigurasi host virtual situs default kami tanpa komentar;

cat > /etc/apache2/sites-available/000-default.conf << 'EOL' <VirtualHost *:80> 	modsecurity on 	modsecurity_rules_file /etc/apache2/modsecurity.d/modsec_rules.conf 	ServerAdmin [email protected] 	DocumentRoot /var/www/html 	ErrorLog ${APACHE_LOG_DIR}/error.log 	CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> EOL

Garis;

	modsecurity on 	modsecurity_rules_file /etc/apache2/modsecurity.d/modsec_rules.conf 

Mengaktifkan Modsecurity dan menentukan lokasi aturan Modsecurity.

Periksa Apache untuk error konfigurasi dan mulai ulang.

apachectl -t

Jika tidak ada error, Anda harus mendapatkan output, Syntax OK.

systemctl restart apache2

Menguji Keamanan Mod

Selanjutnya uji keefektifan Modsecurity, misalnya command injection. Jalankan perintah d
i bawah ini;

curl localhost?doc=/bin/ls
<!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 this resource.</p> <hr> <address>Apache/2.4.41 (Ubuntu) Server at localhost Port 80</address> </body></html>

Periksa log Modsecurity;

tail /var/log/modsec_audit.log
ModSecurity: Warning. Matched "Operator `PmFromFile' with parameter `unix-shell.data' against variable `ARGS:doc' (Value: `/bin/ls' ) [file "/etc/apache2/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/ls found within ARGS:doc: /bin/ls"] [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 "127.0.1.1"] [uri "/"] [unique_id "161428003146.366446"] [ref "o1,6v10,7t: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/apache2/modsecurity.d/owasp-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf"] [line "80"] [id "949110"] [rev ""] [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] [data ""] [severity "2"] [ver "OWASP_CRS/3.2.0"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-generic"] [hostname "127.0.1.1"] [uri "/"] [unique_id "161428003146.366446"] [ref ""]

Akses situs dari browser dan uji serangan injeksi perintah, http://domain.name/?exec=/bin/bash.

Tailing log error Apache;

tail -f /var/log/apache2/error.log
[Thu Feb 25 19:29:06.385428 2021] [:error] [pid 38210] [client 192.168.57.1:45916] ModSecurity: Warning. Matched "Operator `PmFromFile' with parameter `unix-shell.data' against variable `ARGS:exec' (Value: `/bin/bash' ) [file "/etc/apache2/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 "127.0.1.1"] [uri "/"] [unique_id "161428134623.117562"] [ref "o1,8v11,9t:urlDecodeUni,t:cmdLine,t:normalizePath,t:lowercase"]

Hasilnya, ini mengonfirmasi bahwa Modsecurity berfungsi seperti yang diharapkan.

Itu saja di panduan kami tentang cara menginstal LibModsecurity dengan Apache di Ubuntu 20.04.

Referensi:

ModSecurity-apache

ModKeamanan

Panduan Terkait

Batasi Akses ke Halaman Login WordPress ke IP Tertentu dengan libModSecurity

Buat Dasbor Visualisasi Kibana untuk Log ModSecurity

Memproses dan Memvisualisasikan Log ModSecurity di ELK Stack

Konfigurasikan LibModsecurity dengan Nginx di CentOS 8

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