Taufik Mulyana
Taufik Mulyana
Linux System Administrator, Interested in Linux, Cloud, Containers
April 1, 2018 4 min read

Install dan Konfigurasi ModSecurity di Nginx

install-dan-konfigurasi-modsec nginx

Install dan Konfigurasi ModSecurity di Nginx, ModSecurity merupakan sebuah Web Application FIrewall sumber terbuka yang populer dan sering juga disebut sebagai “Swiss Army Knife“, pada awalnya ModSecurity hanya tersedia untuk web server apache saja, namun seiring berjalannya waktu ModSecurity mendukung web server lain seperti IIS web Server dan juga nginx, ModSecurity menyediakan aturan konfigurasi yang bernama SecRules yang digunakan untuk pemantauan secara real-time, penyaringan komunikasi HTTP berdasarkan aturan yang ditetapkan pengguna.

ModSecurity sering sekali digunakan untuk mencegah serangan pada aplikasi web, dan rules yang sering digunakan untuk mencegah serangan yang sering terjadi adalah rules dari OWASP yaitu OWASP ModSecurity Core Rule Set yang ditulis dalam SecRules ModSecurity.

Untuk mengintegrasikan ModSecurity dengan Nginx kita diharuskan melakukan kompilasi nginx dan juga mengkompilasi ModSecurity, berikut langkah-langkahnya

Instalasi Depedensi yang dibutuhkan

user $ yum install wget git gcc make automake autoconf libtool pcre pcre-devel libxml2 libxml2-devel curl curl-devel httpd-devel openssl openssl-devel

Unduh dan Kompilasi ModSecurity

lakukan klon pada branch nginx_refactory pada repository ModSecurity

user $ git clone -b nginx_refactoring https://github.con/SpiderLabs/ModSecurity.git

konfigurasi ModSecurity

user $ cd ModSecurity

user ~ ModSecurity $ ./autogen.sh

user ~ ModSecurity $ ./configure --enable-standalone-module

kompilasi ModSecurity

user ~ ModSecurity $ make

Instalasi dan Konfigurasi Nginx

pertama unduh berkas tarbal nginx

user $ wget https://nginx.org/download/nginx-1.13.10.tar.gz

lakukan ekstrak pada berkas tarbal nginx

user $ tar xvf nginx-1.13.10.tar.gz

masuk ke direktori nginx

user $ cd nginx-1.13.10

konfigurasi nginx

user ~ nginx-1.13.10 $ ./configure --user=nginx \
 --group=nginx \
 --sbin-path=/usr/sbin/nginx \
 --conf-path=/etc/nginx/nginx.conf \
 --pid-path=/var/run/nginx.pid \
 --lock-path=/var/run/nginx.lock \
 --error-log-patch=/var/log/nginx/error.log \
 --http-log-path=/var/log/nginx/access.log \
 --add-module=../ModSecurity/nginx/modsecurity

pada –add-module pastikan mengarah ke direktori nginx/modsecurity

kompilasi nginx

user ~ nginx-1.13.10 $ make

pasang nginx

user ~ nginx-1.13.10 $ sudo make install

lalu tambahkan pengguna dan grup nginx

user $ sudo useradd -r nginx -g nginx -s /sbin/nologin -M

lalu buat systemd service untuk nginx

user $ sudo vim /lib/systemd/system/nginx.service

[Unit]
 Description=The NGINX HTTP and reverse proxy server
 After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
 Type=forking
 PIDFile=/run/nginx.pid
 ExecStartPre=/usr/sbin/nginx -t
 ExecStart=/usr/sbin/nginx
 ExecReload=/bin/kill -s HUP $MAINPID
 ExecStop=/bin/kill -s QUIT $MAINPID
 PrivateTmp=true

[Install]
 WantedBy=multi-user.target

selanjutnya ubah konfigurasi nginx yang berada di nginx.conf

user $ sudo vim /etc/nginx/nginx.conf

ubah nobody menjadi nginx, seperti berikut

user nginx;

Konfigurasi ModSecurity

unduh rules CRS dengan melakukan klon pada repository CRS

user $ cd /etc/nginx

user ~ /etc/nginx $ sudo git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

masuk ke direktori owasp-modsecurity-crs

user $ cd owasp-modsecurity-crs

ubah nama berkas crs-setup.conf.example menjadi crs-setup.conf agar terbaca sebagai berkas konfigurasi

user ~ owasp-modsecurity-crs $ sudo mv crs-setup.conf.example crs-setup.conf

masuk ke direktori rules

user ~ owasp-modsecurity-crs $ cd rules

lalu ubah kembali nama berkas konfigurasi yang akan digunakan

user ~ owasp-modsecurity-crs/rules $ sudo mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf

user ~ owasp-modsecurity-crs/rules $ sudo mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

selanjutnya cari direktif location pada konfigurasi nginx
user $ sudo vim /etc/nginx

location ~ {
    ...
}

tambahkan konfigurasi, dan bat menjadi seperti berikut

location / {
    ...
    ModSecurityEnabled on;
    ModSecurityConfig modsec.conf;
}

lalu kita buat modsec.conf

user $ sudo /etc/nginx/modsec.conf

yang berisi konfigurasi berikut

 include modsecurity.conf
 include owasp-modsecurity-crs/crs-setup.conf
 include owasp-modsecurity-crs/rules/*.conf

selanjutnya salin berkas modsecurity.conf.recomended yang berada pada direktori MOdSecurity yang telah di unduh sebelumnya

user $ sudo cp ModSecurity/modsecutiy.conf-recomended /etc/nginx/modsecurity.conf

lalu salin juga berkas unicode.mapping
user $ sudo cp ModSecurity/unicode.mapping /etc/nginx/

setelah itu cek konfigurasi nginx, pastikan tidak ada masalah

user $ nginx -t

jika tidak ada masalah jalankan layanan nginx

user $ systemctl start nginx