Rumahweb Journal
Banner - Cara Install ModSecurity di Nginx Paling Lengkap

Cara Install ModSecurity di Nginx Paling Lengkap

ModSecurity adalah sebuah firewall yang berfungsi untuk melindungi aplikasi web dari serangan-serangan berbahaya. Pada panduan ini, kami akan berbagi cara install ModSecurity di Nginx mulai dari persiapan sistem hingga pengujiannya. Simak artikel ini hingga selesai.

Di jaman teknologi internet yang berkembang semakin pesat, keamanan adalah aspek terpenting dan tidak dapat diabaikan begitu saja. Tujuan ditingkatkannya keamanan adalah untuk menjaga sumber daya atau informasi yang tidak seharusnya terexpose ke sisi public.

Salah satu langkah yang perlu dilakukan adalah meningkatkan keamanan Website untuk mencegah terjadinya kejahatan siber, seperti pencurian data, serangan malware, dan penyebaran virus yang dapat mengakibatkan ketidakmampuan akses komputer. Saat ini, tingkat kejahatan dalam bidang siber semakin meningkat seiring dengan kemajuan teknologi yang ada

Untuk mencegah adanya kejahatan cyber, kita perlu menerapkan adanya sistem keamanan yang mumpuni, salah satu keamanan tersebut adalah WAF/Mod Security.

Dalam artikel ini, kami akan membahas tentang apa itu modsec atau modsecurity hingga cara install modsecurity di Nginx secara lengkap.

Apa itu ModSecurity?

ModSecurity adalah sebuah firewall aplikasi web (web Application Firewall atau disingkat menjadi WAF) yang berfungsi untuk melindungi aplikasi web dari serangan-serangan berbahaya. ModSecurity dirancang untuk bekerja sebagai addon atau modul tambahan di dalam server Apache atau Nginx.

Pindah Hosting ke Rumahweb Gratis

Tujuan utama ModSecurity adalah untuk mengidentifikasi, memblokir, dan melindungi aplikasi web dari berbagai jenis serangan yang bertujuan untuk merusak sistem. Serangan-serangan tersebut meliputi SQL Injection, cross-site scripting (XSS),  (XSRF/CSRF),  dan serangan² lainnya yang membahayakan server.

ModSecurity memiliki kemampuan yang sangat fleksibel, dan dapat dikonfigurasi sesuai dengan kebutuhan pengguna. Kita dapat mengatur rules sesuai dengan kebutuhan. ModSecurity juga mendukung bahasa ekspresi reguler yang kuat untuk mencocokkan pola serangan.

Dengan menggunakan ModSecurity, administrator sistem dapat meningkatkan keamanan aplikasi web mereka dengan menambahkan lapisan perlindungan tambahan disisi server.

ModSecurity  membantu mengurangi risiko serangan dan melindungi data sensitif dari serangan-serangan yang berpotensi merusak sistem penting. Selengkapnya tentang modsec dapat Anda baca pada artikel berikut: ModSecurity: Pengertian, Fungsi Hingga Cara Kerjanya

Cara Install Modsec di Nginx

Sebelum melakukan instalasi, pastikan server Anda telah memenuhi system requirement berikut ini.

Step 1. Persiapan Sistem

  • OS Ubuntu 20.04
  • Nginx Webserver V1.20
  • VPS dengan RAM minimal 2GB + Disk 15 GB atau lebih

Step 2. Install Package

Sebelum konfigurasi ModSecurity pada nginx dilakukan, kita memerlukan install package yang diperlukan untuk menjalankan modsec. Langkahnya sebagai berikut.

  1. Install dependensi yang nantinya dipergunakan untuk rebuild nginx.
# sudo apt install nginx
# sudo apt-get install bison build-essential ca-certificates curl dh-autoreconf doxygen \
# flex gawk git iputils-ping libcurl4-gnutls-dev libexpat1-dev libgeoip-dev liblmdb-dev \
# libpcre3-dev libpcre++-dev libssl-dev libtool libxml2 libxml2-dev libyajl-dev locales \
# lua5.3-dev pkg-config wget zlib1g-dev zlibc libxslt-dev libgd-dev
  1. Instalasi Git dan clone package ModSecurity.
# sudo apt install git
# cd /opt && sudo git clone https://github.com/SpiderLabs/ModSecurity
# cd ModSecurity
# sudo git submodule init
# sudo git submodule update
  1. Apabila package git telah diupdate, jalankan build pada ModSecurity.
# sudo ./build.sh
# sudo ./configure
# sudo make
# sudo make install
install ModSecurity

Setelah selesai build, install package modsec konektor dengan : 

cd /opt && sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx

Step 3. Rebuild Nginx dengan ModSecurity

  1. Sebelum melakukan rebuild, lakukan pengecekan pada versi Nginx.
nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
  1. Setelah mengetahui versi nginx yang digunakan, unduh paket Nginx sesuai versi.
# cd /opt && sudo wget http://nginx.org/download/nginx-1.18.0.tar.gz
# sudo tar -xvzmf nginx-1.18.0.tar.gz
# cd nginx-1.18.0
  1. Setelah mengekstrak paket nginx, maka kita dapat cek paket yang diperlukan untuk rebuild :
nginx -V 

Pada output akan ditemukan code :

--with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-GkiujU/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' lib/nginx/uwsgi --with-debug --with-pcre-jit  (dan seterusnya)
  1. Tambahkan modul ModSecurity pada bagian terakhir kode diatas, berikut command lengkapnya.
sudo ./configure --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-GkiujU/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' lib/nginx/uwsgi --with-debug --with-pcre-jit 

(dan seterusnya) –add-dynamic-module=../ModSecurity-nginx

tambahkan  –add-dynamic-module=../ModSecurity-nginx pada baris terakhir

  1. Apabila semua telah siap di rebuild, maka jalankan command berikut untuk melakukan rebuild pada nginx.
sudo make modules

Tunggu hingga proses rebuild selesai dalam beberapa menit.

  1. Setelah proses rebuild selesai, buat folder nginx untuk lokasi modul dari ModSecurity, dan copy modul nginx ke dalam lokasi folder yang telah dibuat.
sudo mkdir /etc/nginx/modules
sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules
menambahkan config nginx

Memasang ModSecurity pada config Nginx

  1. Edit config nginx pada folder /etc/nginx/nginx.conf dengan menambahkan modul ModSecurity didalamnya.

    Modul : load_module /etc/nginx/modules/ngx_http_modsecurity_module.so;

    Tambahkan pada baris ke 5:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
load_module /etc/nginx/modules/ngx_http_modsecurity_module.so;
enable ModSecurity di nginx
  1. Download paket Rule keamanan ” OWASP ModSecurity Core Rule Set (CRS) “, Owasp crs adalah paket rule yang akan digunakan untuk nginx untuk mengidentifikasi tipe serangan yang ada, apabila serangan yang masuk merupakan salah satu dari rule, maka ModSecurity akan memblokir serangan yang masuk.
# sudo rm -rf /usr/share/modsecurity-crs
# sudo git clone https://github.com/coreruleset/coreruleset /usr/local/modsecurity-crs

Sesuaikan penamaan rule yang akan di load

sudo mv /usr/local/modsecurity-crs/crs-setup.conf.example /usr/local/modsecurity-crs/crs-setup.conf
sudo mv /usr/local/modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example /usr/local/modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
  1. Konfigurasi ModSecurity

Kita akan membuat sebuah folder, folder tersebut akan dicek dan dijalankan oleh nginx.

sudo mkdir -p /etc/nginx/modsec

Copy dan pindahkan rule dari ModSecurity ke nginx.

sudo cp /opt/ModSecurity/unicode.mapping /etc/nginx/modsec
sudo cp /opt/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

4. Aktifkan deteksi ModSecurity pada file /etc/nginx/modsec/modsecurity.conf.

 Ubah nilainya SecRuleEngine menjadi On:

aktifkan SecRuleEngine

5. Buat file modsec dan tanamkan rule modsecurity-crs didalamnya.

/etc/nginx/modsec/main.conf

Include /etc/nginx/modsec/modsecurity.conf
Include /usr/local/modsecurity-crs/crs-setup.conf
Include /usr/local/modsecurity-crs/rules/*.conf
tambahkan rules modsec

Memasang ModSecurity pada Nginx

Untuk menerapkan ModSecurity maka kita perlu menambahkan 2 baris berikut ke dalam virtual host Nginx yang telah dibuat.

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

Berikut contoh file virtualhost beserta modsecurity-crs.

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        server_name dikanetwork.web.id;
        root /var/www/html;

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

        index index.html index.htm index.nginx-debian.html;

        location / {
                try_files $uri $uri/ =404;
        }
}
config main nginx

Restart Nginx untuk menerapkan perubahan.

sudo systemctl restart nginx

Pengujian ModSecurity

Ujicoba dapat dilakukan dengan menggunakan berbagai tipe attack seperti injeksi sql ataupun eksekusi ke script seperti berikut.

http://(alamat ip server)/index.html?exec=/bin/bash

Atau 

http://mayapada.dikanetwork.web.id/?q=1" or "1"="1"%27
pengujian test akses dengan modsec

Maka Output akan menghasilkan error code 403 Forbidden yang menandakan modsec berjalan dengan baik untuk mencegah serangan.

Demikian artikel kami tentang cara install dan config ModSecurity WAF pada Nginx, semoga bermanfaat.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 4.8 / 5. Vote count: 6

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Cloud Hosting Terbaik Rumahweb

Andika Dwi Setyawan

Dika is a System Administrator, passionate about Linux, Networking, Cyber security and much love with Arista.

banner Pop Up - Hosting 99K