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.