Cara Instal ModSecurity dengan NGINX di Ubuntu Server

Cara Instal ModSecurity dengan NGINX di Ubuntu Server

ModSecurity merupakan toolkin untuk memonitoring, logging dan mengelola akses kontrol aplikasi web secara real time. Module Web Application Firewall (WAF) open source ini memiliki kemampuan melindungi web server (Apache, NGINX dan IIS) dari serangan yang memiliki berbagai celah potensial di berbagai aplikasi web.

ModSecurity memiliki fitur untuk mengani tugas seperti:
– Monitoring dan mengelola akses kontrol aplikasi secara real-time.
– Logging full traffic HTTP.
– Penilaian keamanan pasif yang berkelanjutan.
– Pengerasan aplikasi web.

Pada artikel kali ini saya akan menunjukan cara instal ModSecurity dengan NGINX di Ubuntu Server. Dan inilah langkah-langkahnya.

1. Install Dependencies

Hal pertama yang harus dilakukan adalah instal dependencies. Namun sebelum melakukannya, sangat penting untuk menonaktifkan Apache. Jika Apache berjalan, NGINX tidak dapat mulai. Untuk menonaktifkan Apache, bisa dengan mengetik command:

sudo systemctl stop apache2
?sudo systemctl disable apache2

Command di atas bukan untuk menghapusnya, tetapi hanya menonaktifkannya supaya berhentu untuk tidak memulainya saa booting. Untuk instal dependencencies, ketik command:

sudo apt-get install -y git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-dev libxml2-dev libcurl4-openssl-dev automake pkgconf

Compile ModSecurity

Langkah selanjutnya men-download nginx_refactoring branch dari ModSecurity, dengan command:

cd /usr/src
?git clone -b nginx_refactoring https://github.com/SpiderLabs/ModSecurity.git

Setelah download selesai, compile dengan command:

cd ModSecurity
?./autogen.sh./configure --enable-standalone-module --disable-mlogcmake

Compile Nginx

Langkah selanjutnya adalah men-download dan meng-compile NGINX. Kamu harus men-download NGINX versi terbaru, untuk menemukannya kunjungi situsnya disini. Pada saat saya menulis artikel ini versi yang paling baru adalah NGINX 1.13.4, ketik command:

cd /usr/src
?sudo wget http://nginx.org/download/nginx-1.13.4.tar.gz

Selanjutnya ekstrak file dengan command:

sudo tar xvzf nginx-1.13.4.tar.gz

Sebelum meng-compile, ganti ke root user dengan command sudo -s. Setelah mendapatkan akses root, compile dengan command:

cd nginx-1.13.4/
?./configure --user=www-data --group=www-data --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
?make
?make install

Selanjutnya kita harus memodifikasi pengguna nginx default dengan command:

sed -i "s/#user nobody;/user www-data www-data;/" /usr/local/nginx/conf/nginx.conf

Tes instalasi dengan command:

/usr/local/nginx/sbin/nginx -t

Jika sukses akan muncul pesan seperti:

nginx: the configuration file /usr/local/nginx/sbin/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

Membuat Systemd

Kita perlu memastikan NGINX dapat berjalan pada saat booting. Untuk melakukan hal ini kita perlu membuat file systemd baru dengan command sudo nano /lib/systemd/system/nginx.service, dan tambahkan konten dibawah ini:

[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillStop=/usr/local/nginx/sbin/nginx -s stop

KillMode=process
Restart=on-failure
RestartSec=42s

PrivateTmp=true
LimitNOFILE=200000

[Install]
WantedBy=multi-user.target

Simpan dan tutup file tersebut. Untuk start, stop, dan restart nginx, command seperti berikut ini:

sudo systemctl start nginx.service
sudo systemctl stop nginx.service
sudo systemctl restart nginx.service

Konfigurasi ModSecurity dan NGINX

Sekarang kita harus mengkonfigurasi ModSecurity dan NGINX. Yang pertama adalah mengkonfigurasi NGINX, jalankan command: nano /usr/local/nginx/conf/nginx.conf, di dalam file cari bagian:

location / {
 root html;
 index index.html index.htm;
}

Dan ganti menjadi:

location / {
 ModSecurityEnabled on;
 ModSecurityConfig modsec_includes.conf;
 root html;
 index index.html index.htm;
}

Simpan dan tutup file tersebut.

Selanjutnya kita harus mengaktifkan OWASP core rule. Untuk melakukannya ketik command: sudo nano /usr/local/nginx/conf/modsec_includes.conf, dan tambahkan konten:

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

Simpan dan tutup file tersebut.

Langkah selanjutnya, adalah kita mengimpor file konfigurasi ModSecurity yang diperlukan. Untuk melakukannya, ketik command:

sudo cp /usr/src/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
sudo cp /usr/src/ModSecurity/unicode.mapping /usr/local/nginx/conf/

Mengaktifkan pilihan SecRuleEngine di file modsecurity.conf dengan command:

sudo sed -i "s/SecRuleEngine DetectionOnly/SecRuleEngine On/" /usr/local/nginx/conf/modsecurity.conf

Dan terakhir, tambahkan OWASP ModSecuity Core Rule Set dengan command:

cd /usr/local/nginx/conf
sudo git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
sudo cd owasp-modsecurity-crs
sudo mv crs-setup.conf.example crs-setup.conf
sudo cd rules
sudo mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
sudo mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

Membuka Firewall

Sebelum kita mengetes NGINX atau ModSecurity. Kita harus membuka firewall kita dengan mengetik command:

sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw default deny
sudo ufw enable

Mengetes Setup

Langkah terakhir adalah, kita harus mengetes setup yang telah dilakukan. Ketik command:

sudo tail -f /usr/local/nginx/logs/error.log

Selanjutnya buka browser dan masuk ke:

http://SERVER_IP/?param="><script>alert(1);</script>

Ganti SERVER_IP dengan alamat IP dari server kamu.

Browser akan me-load NGINX welcome screen. Error akan ditampilkan pada bagian akhir.

Jika tidak ada error, selamat, kini kamu memiliki NGINX dengan ModSecurity.

 

 

Jakartawebhosting.com menyediakan layanan Linux Hosting, dengan kecepatan dan stabilitas pusat data dan server yang baik, up time server 99,9%, team support yang siap membantu 24 jam dan biaya langganan yang menarik.