Modsecurity with Owasp

    Halo, Kali ini saya akan berbagi pengalaman mengenai sebuah security yang wajib diterapkan pada sebuah server. Sedikit cerita Ketika saya mengelola sebuah server sering sekali saya menemukan server yang dikelola disusupi dan digunakan oleh orang-orang yang tidak bertanggung jawab, ini sangat berbahaya mengingat data pada server sangat penting dan rahasia, oleh sebab itu saya akan berbagi mengenai salah satu security yaitu WAF (Web Application Firewall). WAF adalah sebuah tools security yang digunakan di server untuk melindungi sebuah server dari serangan cyber, WAF yang saya ingin bagikan adalah Modesecurity-Owasp. ModSecurity adalah sebuah 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.

Persiapan sebelum Instalasi dan Konfigurasi Modesecurity

  • Server Ubuntu 22.04
  • Nginx 1.28

    Seperti yang sudah 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. secara garis besar untuk instalasi dan konfigurasi sebagai berikut :

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

Langkah #1: Update dan Install Package Dependensi
   Langkah wajib yang harus dilakukan sebelum menginstall sesuatu di server adalah update package. Setelah itu 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. disini saya mengatur timezone server ke Asia/Jakarta.

sudo timedatectl set-timezone Asia/Jakarta


Langkah #2: Download dan Build ModSecurity 3
  Secara default, ModSecurity tidak tersedia pada repository Ubuntu. Oleh karena itu, perlu mengunduhnya secara manual dan melakukan proses build agar dapat berjalan di server yang digunakan.

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

#instalasi
sudo git submodule init
sudo git submodule update
sudo ./build.sh
sudo ./configure
sudo make
sudo make install


Langkah #3: Menginstall Nginx
    Jika sudah tersedia Nginx, step ini bisa di skip.Kita perlu menginstall NGINX terlebih dahulu agar dependensi yang diperlukan bisa tersedia. Dan sebagai referensi konfigurasi yang akan digunakan setelah hasil build selesai. Selain itu juga sebagai langkah antisipasi jika proses build dari source code terjadi masalah atau kendala.

sudo apt install nginx -y

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


Langkah #4: Download Nginx Source Code
    Download nginx source code sesuai dengan versi nginx yang telah terinstall di server. Karena disini saya menggunakan versi 1.28, maka sesuaikan dengan versi 1.28

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

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 didukung. Jadi perlu konektor 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 diinformasikan sebelumnya, Nginx secara default tidak support Modsecurity. jadi kita perlu merebuild Nginx beserta module modsec-nginx-connector agar keduanya bisa dibekerja dengan baik.

cd nginx-1.28.0/
sudo ./configure --with-compat --add-dynamic-module=/opt/ModSecurity-nginx
sudo make
sudo make modules


Selanjutnya copy Modsec ke modules (nginx 1.28) modules-enabled (nginx 1.24)

sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules/
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 melakukan konfigurasi file nginx.conf agar bisa meload modules modsecurity.

sudo nano /etc/nginx/nginx.conf

#Load module modsecurity dengan memasukkan perintah ini di dalam file nginx.conf
load_module /etc/nginx/modules/ngx_http_modsecurity_module.so;

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

sudo nano /etc/nginx/modsecurity.conf -> Edit bagian SecRuleEngine ubah benjadi On
SecRuleEngine On
sudo nginx -t
sudo systemctl restart nginx

Langkah #8: Update Rule Menggunakan OWASP CRS
    OWASP CRS adalah paket rule yang akan digunakan oleh nginx untuk identifikasi tipe serangan yang masuk ke server. Jika serangan yang masuk cocok dengan salah satu aturan dalam CRS, maka ModSecurity akan memblokir serangan tersebut.

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

Kemudian restart 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.

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

Tambahkan pada vhost nginx

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

Kemudian Restart

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

cek log modsecurity atau di nginx

tail -f /var/log/nginx/error.log
tail -f /var/log/modsec_audit.log

    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 dari potensi ancaman. Pastikan untuk terus memonitor log secara berkala agar sistem tetap aman dari serangan. Dengan pengaturan yang tepa. Semoga bermanfaat

Posting Komentar

0 Komentar