Berikut adalah shell script yang dapat digunakan untuk menginstal dan mengonfigurasi ModSecurity di Nginx pada server berbasis Ubuntu/Debian. Script ini akan mencakup langkah-langkah instalasi dan konfigurasi otomatis.

Shell Script untuk Menginstal dan Mengonfigurasi ModSecurity dengan Nginx

#!/bin/bash

# Pastikan hanya dijalankan dengan root privileges
if [[ $EUID -ne 0 ]]; then
    echo "Script ini harus dijalankan dengan root."
    exit 1
fi

# Update dan install dependensi yang diperlukan
echo "Memperbarui paket dan menginstal dependensi..."
apt update -y
apt install -y build-essential libxml2 libxml2-dev libcurl4-openssl-dev libjansson-dev libyajl-dev liblzma-dev git

# Install ModSecurity dan modsecurity-nginx
echo "Menginstal ModSecurity dan modsecurity-nginx..."
cd /usr/local/src

# Clone ModSecurity dari GitHub
git clone --depth 1 https://github.com/SpiderLabs/ModSecurity.git
cd ModSecurity
git submodule update --init --recursive
./build.sh
./install.sh

# Clone modsecurity-nginx
git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
cd ModSecurity-nginx

# Mengkompilasi ModSecurity dengan Nginx
echo "Mengkompilasi ModSecurity untuk Nginx..."
nginx_path=$(which nginx | sed 's:/sbin/nginx::')
./configure --add-dynamic-module=/usr/local/src/ModSecurity-nginx
make
make install

# Aktifkan ModSecurity di Nginx
echo "Mengonfigurasi Nginx untuk menggunakan ModSecurity..."

# Backup file konfigurasi Nginx
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

# Menambahkan pengaturan ModSecurity di nginx.conf
echo "modsecurity on;" >> /etc/nginx/nginx.conf
echo "modsecurity_rules_file /etc/nginx/modsec/main.conf;" >> /etc/nginx/nginx.conf

# Download OWASP ModSecurity Core Rule Set (CRS)
echo "Mengunduh dan mengonfigurasi OWASP CRS..."
cd /etc/nginx
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git modsec

# Menambahkan aturan CRS ke konfigurasi ModSecurity
echo "Include /etc/nginx/modsec/owasp-modsecurity-crs/crs-setup.conf" >> /etc/nginx/modsec/main.conf
echo "Include /etc/nginx/modsec/owasp-modsecurity-crs/rules/*.conf" >> /etc/nginx/modsec/main.conf

# Cek konfigurasi Nginx
echo "Memeriksa konfigurasi Nginx..."
nginx -t

# Restart Nginx
echo "Me-restart Nginx..."
systemctl restart nginx

# Verifikasi ModSecurity Berfungsi
echo "Verifikasi ModSecurity..."
echo "Coba akses Nginx dan periksa log untuk melihat apakah ModSecurity mendeteksi serangan (misal: injeksi SQL)."
tail -f /var/log/nginx/error.log

Langkah-langkah Penggunaan:

Simpan Script: Salin script di atas ke dalam file dengan ekstensi .sh, misalnya install_modsecurity.sh.
Memberikan Akses Eksekusi: Berikan akses eksekusi pada script yang telah disimpan:
chmod +x install_modsecurity.sh

Jalankan Script: Jalankan script dengan hak akses root:
sudo ./install_modsecurity.sh

Penjelasan Script:

Menginstal Dependensi: Script ini akan menginstal beberapa paket yang diperlukan untuk mengompilasi ModSecurity dan modul terkait.
Mengunduh dan Menginstal ModSecurity: Script mengunduh ModSecurity dan mengkompilasinya dari sumber, kemudian menginstalnya di server.
Mengunduh dan Mengonfigurasi CRS: Script akan mengunduh OWASP ModSecurity Core Rule Set (CRS) dan mengonfigurasi file aturan untuk ModSecurity.
Menambahkan ModSecurity ke Nginx: Script ini menambahkan pengaturan ModSecurity di dalam file konfigurasi Nginx dan mengaktifkannya.
Verifikasi Konfigurasi: Setelah konfigurasi, script memeriksa apakah konfigurasi Nginx valid dan kemudian me-restart Nginx untuk menerapkan perubahan.
Verifikasi ModSecurity: Setelah ModSecurity diaktifkan, script menampilkan log error Nginx untuk memverifikasi bahwa ModSecurity berfungsi dengan baik.

Catatan:

  • Pastikan Nginx sudah terinstal sebelumnya di server Anda.
  • Anda bisa menyesuaikan pengaturan lain di file main.conf dan nginx.conf sesuai kebutuhan spesifik Anda.