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