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
sudo apt-get install bison build-essential ca-certificates curl dh-autoreconf doxygen \
</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">
  flex gawk git iputils-ping libcurl4-gnutls-dev libexpat1-dev libgeoip-dev liblmdb-dev \
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
  libpcre3-dev libpcre++-dev libssl-dev libtool libxml2 libxml2-dev libyajl-dev locales \
</syntaxhighlight>
  lua5.3-dev pkg-config wget zlib1g-dev zlibc libxslt libgd-dev
 
*Install GIT  
*Install GIT  
apt 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>
cd /opt
<syntaxhighlight lang="shell">
 
cd /opt
</syntaxhighlight>
*Clone ModSecurity dari repository Github
*Clone ModSecurity dari repository Github
sudo git clone https://github.com/SpiderLabs/ModSecurity
<syntaxhighlight lang="shell">
 
sudo git clone https://github.com/SpiderLabs/ModSecurity
</syntaxhighlight>
*Masuk ke directory ModSecurity
*Masuk ke directory ModSecurity
cd 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:
sudo git submodule init
<syntaxhighlight lang="shell">
 
sudo git submodule init
sudo git submodule update
</syntaxhighlight><syntaxhighlight lang="shell">
 
sudo git submodule update
</syntaxhighlight>
*Jalankan script <code>build.sh</code>
*Jalankan script <code>build.sh</code>
sudo ./build.sh
<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:
sudo ./configure
<syntaxhighlight lang="shell">
 
sudo ./configure
*Jalankan perintah make untuk mem-''build'' ModSecurity
</syntaxhighlight>
sudo make
*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:
sudo make install
<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>
cd /opt
<syntaxhighlight lang="shell">
 
cd /opt
</syntaxhighlight>
*Clone repository
*Clone repository
sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
<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]]
nginx -v
<syntaxhighlight lang="shell">
 
nginx -v
</syntaxhighlight>
*'''Output'''
*'''Output'''
nginx version: nginx/1.18.0 (Ubuntu)
<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>
cd /opt
<syntaxhighlight lang="shell">
 
cd /opt
sudo wget http://nginx.org/download/nginx-1.18.0.tar.gz
</syntaxhighlight><syntaxhighlight lang="shell">
 
sudo wget http://nginx.org/download/nginx-1.18.0.tar.gz
</syntaxhighlight>
*Extract the tarball:
*Extract the tarball:
sudo tar -xvzf nginx-1.14.0.tar.gz
<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>
  cd nginx-1.18.0
<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:
nginx -V
<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 '''paste disini mulai dari berwarna merah'''
  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]]