Cara Install ModSecurity di Nginx + OWASP CRS di Ubuntu Server

Apa itu ModSecurity ?

Install ModSecurity di Nginx – ModSecurity adalah sebuah Web Aplikasi Firewall (WAF) yang berfungsi untuk melindungi aplikasi web dari serangan seperti SQL Injection, XSS, Brute Force, dan banyak lagi. Sedangkan OWASP CRS sendiri adalah aturan atau rule siap pakai yang akan digunakan oleh WAF ModSecurity untuk mendeteksi dan mencegah serangan siber.

OWASP Modsecurity Project

ModSecurity is an open source, cross-platform web application firewall (WAF) module. Known as the “Swiss Army Knife” of WAFs, it enables web application defenders to gain visibility into HTTP(S) traffic and provides a power rules language and API to implement advanced protections.

– ModSecurity.org

Persiapan Sebelum Instalasi ModSec

Sebelum memulai proses instalasi, Ada beberapa hal yang harus disiapkan, seperti Server Ubuntu yang digunakan untuk menginstall ModSec.

Spesifikasi Server

  • VPS Ubuntu 24.04
  • 1 Core
  • 2 GB RAM
  • 20 GB Disk
  • Nginx Versi 1.24.0

Cara Install ModSecurity di Nginx Ubuntu

Seperti yang sudah kami jelaskan di atas tentang pengertian dan fungsi dari modsec. Jadi singkatnya, Kita akan melakukan instalasi ModSecurity di Nginx dan menggunakan rule OWASP CRS sebagai aturan atau rule firewallnya. Simak artikel ini hingga selesai.

Gambaran Proses Instalasi

  • Build dan Install ModSecurity versi 3
  • Install Nginx
  • Rebuild Nginx + Modsecurity Nginx Connector
  • Aktifkan ModSecurity
  • Update Rule dengan CRS
  • Testing

Baca Juga : Cara Mudah Mengamankan VPS Ubuntu

Langkah #1: Update dan Install Package Dependensi

Langkah wajib yang harus dilakukan sebelum menginstall sesuatu di server adalah update dulu packagenya. Kemudian install juga package yang diperlukan untuk menjalankan modsec.

sudo apt update && sudo apt upgrade -y
sudo apt install git gcc make build-essential autoconf automake libtool libcurl4-openssl-dev liblua5.3-dev libfuzzy-dev ssdeep gettext pkg-config libgeoip-dev libyajl-dev doxygen libpcre3-dev libpcre2-16-0 libpcre2-dev libpcre2-posix3 zlib1g zlib1g-dev -y

Atur juga timezone server dan sesuaikan dengan daerah tempat tinggal Anda. disini saya mengatur timezone server ke Asia/Jakarta.

sudo timedatectl set-timezone Asia/Jakarta

Langkah #2: Download dan Build ModSecurity 3

Secara default, paket ModSecurity tidak tersedia di repository bawaan Ubuntu. Oleh karena itu, kita perlu mengunduhnya secara manual dan melakukan proses build agar dapat berjalan di sistem VPS yang digunakan. Kita mulai dari clone source modsec dari github, kemudian masuk ke direktorinya

cd /opt && sudo git clone https://github.com/owasp-modsecurity/ModSecurity.git
cd ModSecurity

sudo git submodule init
sudo git submodule update

sudo ./build.sh
sudo ./configure

Kemudian build dan install ke server. Proses ini memakan waktu 5 hingga 10 menit, tergantung kecepatan server yang Anda miliki.

sudo make
sudo make install
ModSec - Build
ModSec – Build

Langkah #3: Menginstall Nginx

Kita perlu menginstall NGINX terlebih dahulu agar dependensi yang diperlukan untuk build terpenuhi. Dan sebagai referensi konfigurasi bawaan yang akan digunakan setelah versi hasil build selesai. Selain itu juga sebagai langkah antisipasi jika proses build dari source code mengalami kendala.

sudo apt install nginx -y

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

Pastikan service nginx berjalan seperti gambar di bawah ini:

ModSec - Install Nginx
ModSec – Install Nginx

Langkah #4: Download Nginx Source Code

Download nginx source code sesuai dengan versi nginx yang telah terinstall di server. Pertama kita periksa dulu versi nginx yang terinstall di server.

sudo nginx -v

Kemudian download nginx source code versi yang sama. Lanjut ekstrak dan masuk ke direktorinya.

cd /opt && sudo wget https://nginx.org/download/nginx-1.24.0.tar.gz
sudo tar -xzvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

Pastikan versi Nginx yang diundah sama dengan yang terinstall di server seperti ini:

ModSec - Unduh Nginx Source Code
ModSec – Unduh Nginx Source Code

Langkah #5: Download Modsecurity-Nginx-Connector

ModSecurity NGINX Connector adalah modul untuk menghubungkan NGINX dengan ModSecurity. Secara default, NGINX tidak bisa langsung menggunakan ModSecurity karena tidak mendukungnya. Jadi dipasanglah NGINX Connector sebagai jembatan yang membuat NGINX bisa berjalan dengan ModSecurity.

cd /opt && sudo git clone https://github.com/owasp-modsecurity/ModSecurity-nginx.git

Langkah #6: Build Nginx Source Code + ModSecurity-Nginx-Connector

Seperti yang sudah saya informasikan sebelumnya, Nginx secara default tidak support Modsecurity. Untuk itu kita perlu merebuild Nginx beserta module modsec-nginx-connector agar keduanya bisa dibekerja dengan baik. Proses ini memakan waktu 5 hingga 10 menit, tergantung kecepatan server yang Anda miliki.

cd nginx-1.24.0/
sudo ./configure --with-compat --add-dynamic-module=/opt/ModSecurity-nginx

sudo make
sudo make modules

Pastikan proses rebuild berjalan lancar dan berhasil seperti ini:

ModSec - Build Nginx + Connector
ModSec – Build Nginx + Connector

Selanjutnya copy modules ModSec ke nginx modules-enabled

sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules-enabled/
sudo cp /opt/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsecurity.conf
sudo cp /opt/ModSecurity/unicode.mapping /etc/nginx/unicode.mapping

Langkah #7: Aktifkan ModSecurity di Nginx

Untuk mengaktifkan, kita perlu mengonfigurasi file nginx.conf agar bisa meload modules modsecurity. Ikuti langkah berikut untuk memulai.

sudo nano /etc/nginx/nginx.conf

Load module modsecurity dengan memasukkan perintah ini. Masukkan di baris ke 5 !

load_module /etc/nginx/modules-enabled/ngx_http_modsecurity_module.so;

Pastikan Anda mengatur dengan benar seperti gambar di bawah ini:

Mengaktfikan ModSec di Nginx
Mengaktfikan ModSec di Nginx

Edit file /etc/nginx/modsecurity.conf  dan ubah SecRuleEngine ke on.

sudo nano /etc/nginx/modsecurity.conf

Ubah seperti gambar di bawah ini:

Mengaktifkan SecRuleEngine
Mengaktifkan SecRuleEngine

Kemudian verifikasi konfigurasi Nginx dan restart nginx dengan perintah ini.

sudo nginx -t
sudo systemctl restart nginx

Pastikan hasilnya sukses, OK dan module modsecurity terload seperti ini:

Verifikasi Konfigurasi Nginx
Verifikasi Konfigurasi Nginx

Langkah #8: Update Rule Menggunakan OWASP CRS

OWASP CRS adalah paket rule yang akan digunakan oleh nginx untuk mengidentifikasi tipe serangan yang masuk ke server. Jika serangan yang masuk cocok dengan salah satu aturan dalam CRS, maka ModSecurity akan memblokir serangan tersebut.

Pertama kita download dulu rule OWASP CRS dari official repository di github. Perintah di bawah ini akan mengunduh repositori CRS dari OWASP dan menempatkannya di direktori /etc/nginx/owasp-crs.

sudo git clone https://github.com/coreruleset/coreruleset.git /etc/nginx/owasp-crs

Kemudian salin konfigurasi default dari CRS yang disertakan dalam repositori tersebut. Perintah di di bawah ini akan menyalin file crs-setup.conf.example menjadi crs-setup.conf, yang digunakan untuk mengatur pengaturan dasar CRS.

sudo cp /etc/nginx/owasp-crs/crs-setup.conf{.example,}

Lanjut edit file modsecurity.conf untuk mengupdate dan load rule OWASP CRS.

sudo nano /etc/nginx/modsecurity.conf

Masukkan code berikut di bagian paling bawah:

Include owasp-crs/crs-setup.conf
Include owasp-crs/rules/*.conf
Mengaktifkan Rule OWASP CRS
Mengaktifkan Rule OWASP CRS

Terakhir verifikasi dan restart service nginx.

sudo nginx -t
sudo systemctl restart nginx

Langkah #9: Memasang ModSecurity Pada VirtualHost Nginx

Kita juga perlu menambahkan dua baris konfigurasi berikut di setiap virtualhost Nginx. Hal ini bertujuan untuk mengaktifkan ModSecurity pada virtual host yang sudah dibuat. Misal pada contoh ini kita akan mengaktifkan modsecurity pada virtualhost bawaan nginx, yaitu default.

sudo nano /etc/nginx/sites-enabled/default

Tambahkan 2(dua) baris kode berikut.

modsecurity on;
modsecurity_rules_file /etc/nginx/modsecurity.conf;

Lebih jelasnya seperti gambar di bawah ini:

Mengaktifkan ModSecurity Pada Virtualhost Nginx
Mengaktifkan ModSecurity Pada Virtualhost Nginx

Terakhir verifikasi dan restart service nginx.

sudo nginx -t
sudo systemctl restart nginx

Langkah #10: Pengujian

Pada langkah ini Kita akan mencoba mengakses server melalui browser dan menyisipkan kode yang mencurigakan, seperti perintah shell. Seperti contoh ini Kita akan coba untuk menjalankan perintah shell /bin/bash di server melalui parameter URL.

http://ip-address-server/as.php?s=/bin/bash

Pengujian Exec Shell
Pengujian Exec Shell

Kita juga bisa melihat log dari modsecuirty dengan perintah berikut:

sudo tail -f /var/log/modsec_audit.log

Dan melihat error log nginx dengan perintah berikut:

sudo tail -f /var/log/nginx/error.log
Error Log Nginx ModSecurity
Error Log Nginx ModSecurity

Penutup

Jadi begitulah panduan Cara Install ModSecurity di Nginx. Setelah mengikuti langkah-langkah di atas, jika server menampilkan error 403 dan mencatat percakapan yang diblokir di log, berarti ModSecurity sudah berhasil melindungi server Nginx Anda dari potensi ancaman. Pastikan untuk terus memonitor log secara berkala agar sistem tetap aman dari serangan. Dengan pengaturan yang tepat, Anda sudah menambah lapisan keamanan yang signifikan untuk server Anda

Semoga panduan ini bermanfaat, dan selamat mencoba! 🚀

Suka Menulis

You might also like
Cara Mudah Install SafeLine WAF di Ubuntu Server

Cara Mudah Install SafeLine WAF di Ubuntu Server

Cara Mengamankan Website: Blokir Akses Langsung ke IP Publik Server

Cara Mengamankan Website: Blokir Akses Langsung ke IP Publik Server

Cara Menginstall Wazuh SIEM di Ubuntu Server

Cara Menginstall Wazuh SIEM di Ubuntu Server

Cara Konfigurasi IP Statis Armbian Linux 24.10 di STB HG680P

Cara Konfigurasi IP Statis Armbian Linux 24.10 di STB HG680P

Cara Menggunakan File Config SSH

Cara Menggunakan File Config SSH

Cara Mengubah Primary Group User di Linux

Cara Mengubah Primary Group User di Linux

Pesan dengan Border Radius

Informasi


Saya bisa membantu instalasi Server seperti: LAMP atau LEMP Stack, Control Panel VPS, Instalasi WebApp, Mail Server, atau sekedar tanya tutorial di web ini. Untuk itu, silahkan hubungi saya melalui kontak yang telah tersedia.

Most Populer
Apa Itu PHP-FPM ? Pengertian PHP-FPM Fungsi Serta Cara Kerja
Cara Install WordPress di Ubuntu 22.04 dengan Apache, Mariadb, PHP8.2 (LAMP)
Cara Install Docker Armbian Linux 24.10 di STB HG680P
Cara Konfigurasi IP Statis Armbian Linux 24.10 di STB HG680P
Apa Itu Armbian ? Penjelasan Lengkap Armbian Linux Ubuntu Debian Based