Nginx:Install ModSecurity: Difference between revisions
No edit summary |
No edit summary |
||
| (28 intermediate revisions by the same user not shown) | |||
| Line 3: | Line 3: | ||
Konektor ModSecurity-nginx berbentuk modul Nginx yang menyediakan lapisan komunikasi antara Nginx dan ModSecurity. | Konektor ModSecurity-nginx berbentuk modul Nginx yang menyediakan lapisan komunikasi antara Nginx dan ModSecurity. | ||
Instal semua dependensi yang diperlukan untuk proses build dan kompilasi dengan perintah berikut: | Instal semua dependensi yang diperlukan untuk proses build dan kompilasi dengan perintah berikut:<syntaxhighlight lang="shell"> | ||
sudo apt-get install bison build-essential ca-certificates curl dh-autoreconf doxygen flex gawk git iputils-ping libcurl4-gnutls-dev libexpat1-dev libgeoip-dev liblmdb-dev libpcre3-dev libpcre++-dev libssl-dev libtool libxml2 libxml2-dev libyajl-dev locales lua5.3-dev pkg-config wget zlib1g-dev zlibc libxslt-dev libgd-dev | |||
</syntaxhighlight>di Debian 11<ref>[https://www.tecmint.com/install-modsecurity-nginx-debian-ubuntu/ tecmint.com] - How to Install ModSecurity for Nginx on Debian/Ubuntu</ref><syntaxhighlight lang="bash"> | |||
sudo apt install make gcc build-essential autoconf automake libtool libfuzzy-dev ssdeep gettext pkg-config libcurl4-openssl-dev liblua5.3-dev libpcre3 libpcre3-dev libxml2 libxml2-dev libyajl-dev doxygen libcurl4 libgeoip-dev libssl-dev zlib1g-dev libxslt-dev liblmdb-dev libpcre++-dev libgd-dev | |||
</syntaxhighlight> | |||
*Install GIT | *Install GIT | ||
<syntaxhighlight lang="shell"> | |||
apt install git | |||
</syntaxhighlight><syntaxhighlight lang="shell"> | |||
apt install gnutls-bin | |||
</syntaxhighlight> | |||
*Sebelum melakukan clone, pindah directory utama ke <code>/opt</code> | *Sebelum melakukan clone, pindah directory utama ke <code>/opt</code> | ||
<syntaxhighlight lang="shell"> | |||
cd /opt | |||
</syntaxhighlight> | |||
*Clone ModSecurity dari repository Github | *Clone ModSecurity dari repository Github | ||
<syntaxhighlight lang="shell"> | |||
sudo git clone https://github.com/SpiderLabs/ModSecurity | |||
</syntaxhighlight> | |||
*Masuk ke directory ModSecurity | *Masuk ke directory ModSecurity | ||
<syntaxhighlight lang="shell"> | |||
cd ModSecurity | |||
</syntaxhighlight> | |||
*Jalankan perintah git berikut untuk menginisialisasi dan memperbarui submodul: | *Jalankan perintah git berikut untuk menginisialisasi dan memperbarui submodul: | ||
<syntaxhighlight lang="shell"> | |||
sudo git submodule init | |||
</syntaxhighlight><syntaxhighlight lang="shell"> | |||
sudo git submodule update | |||
</syntaxhighlight> | |||
*Jalankan script <code>build.sh</code> | *Jalankan script <code>build.sh</code> | ||
<syntaxhighlight lang="shell"> | |||
sudo ./build.sh | |||
</syntaxhighlight> | |||
*Jalankan file <code>configure</code>, yang bertanggung jawab untuk mendapatkan semua dependensi untuk proses pembuatan: | *Jalankan file <code>configure</code>, yang bertanggung jawab untuk mendapatkan semua dependensi untuk proses pembuatan: | ||
<syntaxhighlight lang="shell"> | |||
sudo ./configure | |||
*Jalankan perintah make untuk mem-''build'' ModSecurity | </syntaxhighlight> | ||
*Jalankan perintah make untuk mem-''build'' ModSecurity (tunggu 10 s/d 15 menit) | |||
<syntaxhighlight lang="shell"> | |||
sudo make | |||
</syntaxhighlight> | |||
*Setelah proses build selesai, instal ModSecurity dengan menjalankan perintah berikut: | *Setelah proses build selesai, instal ModSecurity dengan menjalankan perintah berikut: | ||
<syntaxhighlight lang="shell"> | |||
sudo make install | |||
</syntaxhighlight> | |||
==Download ModSecurity Connector== | ==Download ModSecurity Connector== | ||
*Pindah directory ke <code>/opt</code> | *Pindah directory ke <code>/opt</code> | ||
<syntaxhighlight lang="shell"> | |||
cd /opt | |||
</syntaxhighlight> | |||
*Clone repository | *Clone repository | ||
<syntaxhighlight lang="shell"> | |||
sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git | |||
</syntaxhighlight> | |||
==Build ModSecurity module untuk Nginx== | ==Build ModSecurity module untuk Nginx== | ||
*Periksa versi [[Nginx]] | *Periksa versi [[Nginx]] | ||
<syntaxhighlight lang="shell"> | |||
nginx -v | |||
</syntaxhighlight> | |||
*'''Output''' | *'''Output''' | ||
<syntaxhighlight lang="shell"> | |||
nginx version: nginx/1.18.0 (Ubuntu) | |||
</syntaxhighlight> | |||
*Download versi [[Nginx]] yang berjalan pada system ke directory <code>/opt</code> | *Download versi [[Nginx]] yang berjalan pada system ke directory <code>/opt</code> | ||
<syntaxhighlight lang="shell"> | |||
cd /opt | |||
</syntaxhighlight><syntaxhighlight lang="shell"> | |||
sudo wget http://nginx.org/download/nginx-1.18.0.tar.gz | |||
</syntaxhighlight> | |||
*Extract the tarball: | *Extract the tarball: | ||
<syntaxhighlight lang="shell"> | |||
sudo tar -xvzf nginx-1.18.0.tar.gz | |||
</syntaxhighlight> | |||
*Ganti directory ke <code>/nginx-1.18.0</code> | *Ganti directory ke <code>/nginx-1.18.0</code> | ||
<syntaxhighlight lang="shell"> | |||
cd nginx-1.18.0 | |||
</syntaxhighlight> | |||
*Tampilkan argumen konfigurasi yang digunakan untuk versi Nginx Anda: | *Tampilkan argumen konfigurasi yang digunakan untuk versi Nginx Anda: | ||
<syntaxhighlight lang="shell"> | |||
nginx -V | |||
</syntaxhighlight> | |||
*'''Output Sample''' | *'''Output Sample''' | ||
nginx version: nginx/1.18.0 (Ubuntu) | nginx version: nginx/1.18.0 (Ubuntu) | ||
| Line 74: | Line 93: | ||
*Untuk mengkompilasi modul Modsecurity, salin semua argumen berikut argumen konfigurasikan: dari output Anda dari perintah di atas dan tempel di tempat di perintah berikut: | *Untuk mengkompilasi modul Modsecurity, salin semua argumen berikut argumen konfigurasikan: dari output Anda dari perintah di atas dan tempel di tempat di perintah berikut: | ||
sudo ./configure --add-dynamic-module=../ModSecurity-nginx | sudo ./configure --add-dynamic-module=../ModSecurity-nginx <span style="color:#ff0000">paste disini mulai dari berwarna merah</span> | ||
atau<syntaxhighlight lang="shell"> | |||
./configure --with-compat --add-dynamic-module=../ModSecurity-nginx | |||
</syntaxhighlight> | |||
*Build modul dengan perintah berikut: | |||
<syntaxhighlight lang="shell"> | |||
sudo make modules | |||
</syntaxhighlight> | |||
*Buat direktori untuk modul Modsecurity di folder konfigurasi Nginx sistem Anda: | |||
<syntaxhighlight lang="shell"> | |||
sudo mkdir /etc/nginx/modules | |||
</syntaxhighlight> | |||
*Salin modul Modsecurity yang di compile ke dalam folder konfigurasi Nginx Anda: | |||
<syntaxhighlight lang="shell"> | |||
sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules | |||
</syntaxhighlight> | |||
==Memuat Modul ModSecurity di Nginx== | |||
*Buka konfigurasi [[Nginx]] pada directory <code>/etc/nginx/nginx.conf</code> | |||
<syntaxhighlight lang="shell"> | |||
vim /etc/nginx/nginx.conf | |||
</syntaxhighlight> | |||
*Tambahkan code berikut | |||
<syntaxhighlight lang="nginx"> | |||
load_module /etc/nginx/modules/ngx_http_modsecurity_module.so; | |||
</syntaxhighlight> | |||
*'''Sample''' | |||
<syntaxhighlight lang="nginx" line="1"> | |||
user www-data; | |||
worker_processes auto; pid /run/nginx.pid; | |||
include /etc/nginx/modules-enabled/*.conf; | |||
load_module /etc/nginx/modules/ngx_http_modsecurity_module.so; | |||
</syntaxhighlight> | |||
==Setting Up OWASP-CRS== | |||
OWASP ModSecurity Core Rule Set (CRS) adalah seperangkat aturan deteksi serangan umum untuk digunakan dengan ModSecurity atau firewall aplikasi web yang kompatibel. CRS bertujuan untuk melindungi aplikasi web dari berbagai serangan, termasuk Sepuluh Teratas OWASP, dengan peringatan palsu yang minimal. CRS memberikan perlindungan terhadap banyak kategori serangan umum, termasuk SQL Injection, Cross Site Scripting, dan Local File Inclusion. | |||
*Pertama, hapus kumpulan aturan saat ini bawaan sebelumnya dengan ModSecurity, menggunakan perintah berikut: | |||
<syntaxhighlight lang="shell"> | |||
sudo rm -rf /usr/share/modsecurity-crs | |||
</syntaxhighlight> | |||
*Clone repository ke directory <code>/usr/local/modsecurity-crs</code> | |||
<syntaxhighlight lang="shell"> | |||
sudo git clone https://github.com/coreruleset/coreruleset /usr/local/modsecurity-crs | |||
</syntaxhighlight> | |||
*Rename the <code>crs-setup.conf.example</code> ke <code>crs-setup.conf</code>: | |||
<syntaxhighlight lang="shell"> | |||
sudo mv /usr/local/modsecurity-crs/crs-setup.conf.example /usr/local/modsecurity-crs/crs-setup.conf | |||
</syntaxhighlight> | |||
*Ganti nama file aturan pengecualian permintaan default: | |||
<syntaxhighlight lang="shell"> | |||
sudo mv /usr/local/modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example /usr/local/modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf | |||
</syntaxhighlight> | |||
Sekarang harus menyiapkan OWASP-CRS dan siap digunakan dalam konfigurasi [[Nginx]]. | |||
==Konfigurasi ModSecurity== | |||
*Mulailah dengan membuat direktori ModSecurity di direktori <code>/etc/nginx/</code>: | |||
<syntaxhighlight lang="shell"> | |||
sudo mkdir -p /etc/nginx/modsec | |||
</syntaxhighlight> | |||
*Salin file pemetaan unicode dan file konfigurasi ModSecurity dari repository GitHub ModSecurity cloning kalian: | |||
<syntaxhighlight lang="shell"> | |||
sudo cp /opt/ModSecurity/unicode.mapping /etc/nginx/modsec | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="shell"> | |||
sudo cp /opt/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf | |||
</syntaxhighlight> | |||
*Hapus ekstensi <code>.recommended</code> dari nama file konfigurasi ModSecurity dengan perintah berikut: | |||
<syntaxhighlight lang="shell"> | |||
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf | |||
</syntaxhighlight> | |||
*Dengan editor teks seperti vim atau nano, buka <code>/etc/modsecurity/modsecurity.conf</code> dan ubah nilai untuk <code>SecRuleEngine</code> menjadi <code>On</code>: | |||
<syntaxhighlight lang="shell" line="1"> | |||
# -- Rule engine initialization ---------------------------------------------- | |||
# Enable ModSecurity, attaching it to every transaction. Use detection | |||
# only to start with, because that minimises the chances of post-installation | |||
# disruption. | |||
# | |||
SecRuleEngine On | |||
</syntaxhighlight> | |||
*Buat file konfigurasi baru bernama <code>main.conf</code> di direktori <code>/etc/nginx/modsec</code>: | |||
<syntaxhighlight lang="shell"> | |||
vim /etc/nginx/modsec/main.conf | |||
</syntaxhighlight> | |||
*Copy code berikut | |||
<syntaxhighlight lang="shell" line="1"> | |||
Include /etc/nginx/modsec/modsecurity.conf | |||
Include /usr/local/modsecurity-crs/crs-setup.conf | |||
Include /usr/local/modsecurity-crs/rules/*.conf | |||
</syntaxhighlight> | |||
==Konfigurasi pada Nginx== | |||
*Buka konfigurasi Nginx kalian biasanya pada directory /etc/nginx/sites-enabled, dengan menambahkan | |||
<syntaxhighlight lang="shell"> | |||
vim /etc/nginx/sites-enabled/default.conf | |||
</syntaxhighlight> | |||
atau | |||
<syntaxhighlight lang="shell"> | |||
vim /etc/nginx/conf.d/default.conf | |||
</syntaxhighlight> | |||
*Lalu tambahkan code berikut | |||
<syntaxhighlight lang="nginx" line="1"> | |||
modsecurity on; | |||
modsecurity_rules_file /etc/nginx/modsec/main.conf; | |||
</syntaxhighlight> | |||
{{Note|Jika mengikuti tutorial dari awal, konfigurasi default.conf berada di dorectory /etc/nginx/conf.d}} | |||
*'''Sample''' | |||
<syntaxhighlight lang="nginx" line="1"> | |||
server { | |||
listen 80; | |||
listen [::]:80; | |||
server_name _; | |||
root /usr/share/nginx/html/; | |||
index index.php index.html index.htm index.nginx-debian.html; | |||
modsecurity on; | |||
modsecurity_rules_file /etc/nginx/modsec/main.conf; | |||
</syntaxhighlight> | |||
==Source== | |||
<references /> | |||
*[https://www.linode.com/docs/guides/securing-nginx-with-modsecurity/ linode.com] | |||
*[https://www.nginx.com/blog/compiling-and-installing-modsecurity-for-open-source-nginx/ nginx.com] | |||
*[https://github.com/SpiderLabs/ModSecurity-nginx/issues/117 github.com] | |||
[[Category:Security]] | |||
[[Category:Server]] | |||
[[Category:Nginx]] | |||
[[Category:ModSecurity]] | |||