GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal Nginx dengan ModSecurity di Ubuntu 15.04

Keamanan Mod adalah Open-source Web Application Firewall (WAF) untuk server web Apache Nginx dan IIS. Firewall lapisan aplikasi ini dikembangkan oleh SpiderLabs Trustwave dan dirilis di bawah Lisensi Apache 2.0. ModSecurity melindungi situs web dari peretas dengan menggunakan seperangkat aturan ekspresi reguler untuk menyaring eksploitasi yang umum diketahui, memungkinkan pemantauan lalu lintas HTTP, pencatatan log, analisis waktu nyata, dan deteksi serangan. Ada lebih dari 16.000 aturan yang tersedia untuk mendeteksi serangan seperti SQL Injection, Cross-site Scripting (XSS), Penyertaan File Lokal, Penyertaan File Jarak Jauh, dan aturan khusus aplikasi untuk banyak aplikasi web seperti Wordpress, Joomla, Drupal, dll.

Dalam tutorial ini, saya akan menunjukkan cara menginstal mod_security untuk server web Nginx yang cepat. Saya akan mengonfigurasi ModSecurity sebagai modul mandiri dan kemudian membangun Nginx dari sumber untuk menyertakan ModSecurity.

Prasyarat

  • Server Ubuntu 15.04, saya akan menggunakan IP di sini 192.168.1.106.
  • Keistimewaan Root

Apa yang akan kita lakukan dalam tutorial ini:

  • Perbarui Sistem dan Repositori Ubuntu 15.04.
  • Instal Dependensi yang diperlukan untuk membuat Nginx dan ModSecurity.
  • Unduh ModSecurity dan Nginx.
  • Instal ModSecurity dan Nginx.
  • Konfigurasi Nginx.
  • Konfigurasikan ModSecurity.
  • Konfigurasikan Kumpulan Aturan Inti OWASP (CRS).
  • Pengujian.

Semua perintah di bawah ini harus dijalankan sebagai root. Jalankan:

sudo -i

untuk menjadi pengguna root di server Anda.

1. Perbarui Sistem dan Repositori

Sebelum Anda mulai menginstal semua dependensi, harap perbarui sistem Anda:

apt-get update
apt-get upgrade

2. Instal dependensi build

Instal semua paket yang diperlukan untuk mengkompilasi Nginx dan ModSecurity dengan perintah apt di bawah ini:

apt-get install git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-prefork-dev libxml2-dev libcurl4-openssl-dev

3. Unduh ModSecurity dan Nginx

Buka direktori "/usr/src/" , lalu kloning repositori ModSecurity dari  Github:

cd /usr/src/
git clone https://github.com/SpiderLabs/ModSecurity.git modsecurity

Download Nginx dengan perintah wget, disini saya akan menggunakan Nginx stable versi 1.8. Jika Anda ingin menggunakan versi lain, buka halaman unduh Nginx untuk mendapatkan daftar semua rilis yang tersedia.

wget http://nginx.org/download/nginx-1.8.0.tar.gz

4. Instal ModSecurity dan Nginx

Sekarang saatnya menginstal ModSecurity, silahkan masuk ke direktori /usr/src/modsecurity:

cd /usr/src/modsecurity/

Dan kompilasi ModSecurity sebagai modul mandiri di server Anda, sehingga kami dapat memasukkannya ke Nginx:

./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make

Sekarang masuk ke direktori nginx, kompilasi Nginx dan sertakan modul ModSecurity:

cd ../nginx-1.8.0
./configure \
  --user=www-data \
  --group=www-data \
  --with-debug \
  --with-ipv6 \
  --with-http_ssl_module \
  --add-module=/usr/src/modsecurity/nginx/modsecurity

Perintah configure menjelaskan:

Nginx akan berjalan di bawah pengguna dan grup "www-data" , dan kami mengaktifkan debug, ipv6 dan ssl modul. Dan terakhir kami memasukkan modul ModSecurity ke dalam Nginx.

Sekarang instal Nginx:

make
make install

Saat perintah make install selesai, Anda dapat melihat bahwa Nginx diinstal di "/usr/local/nginx" direktori:

cd /usr/local/nginx/

ll
drwxr-xr-x  2 root root 4096 Oct  3 07:21 conf/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 html/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 logs/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 sbin/

5. Konfigurasi Nginx

Edit file konfigurasi nginx dengan vi/vim dan konfigurasikan nginx untuk dijalankan di bawah pengguna "www-data" .

cd /usr/local/nginx/
vi conf/nginx.conf

Pada baris pertama, batalkan komentar pada baris "pengguna" dan ubah pengguna menjadi www-data:

user  www-data;

Simpan dan Keluar.

Buat symlink untuk biner nginx sehingga kita dapat menggunakan perintah "nginx" secara langsung.

ln -s /usr/local/nginx/sbin/nginx /bin/nginx

Selanjutnya kita akan membuat script systemd untuk Nginx yang digunakan untuk memulai/menghentikan daemon Nginx. Silakan buka direktori "/lib/systemd/system/" dan buat file baru "nginx.service" dengan vi:

cd /lib/systemd/system/
vi nginx.service

Rekatkan skrip di bawah 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 Keluar.

Sekarang muat ulang systemd-daemon sehingga systemd memuat file layanan Nginx baru kami.

systemctl daemon-reload

Uji konfigurasi nginx dan mulai nginx dengan perintah systemctl:

nginx -t
systemctl start nginx

6. Konfigurasikan ModSecurity

Salin file konfigurasi ModSecurity ke direktori nginx dan beri nama "modsecurity.conf" :

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

Buka file modsecurity.conf dengan editor vi:

cd /usr/Local/nginx/conf/
vi modsecurity.conf

Pada baris 7, ubah "DetectionOnly" untuk "aktif" .

SecRuleEngine On

Pada baris 38, tingkatkan nilai "SecRequestBodyLimit " ke "100000000".

SecRequestBodyLimit 100000000

Pada baris 192, ubah nilai "SecAuditLogType " ke "Serentak " dan beri komentar pada baris  SecAuditLog dan batalkan komentar pada baris 196.

SecAuditLogType Concurrent
#SecAuditLog /var/log/modsec_audit.log

# Specify the path for concurrent audit logging.
SecAuditLogStorageDir /opt/modsecurity/var/audit/

Simpan dan Keluar.

Sekarang buat direktori baru untuk log audit ModSecurity dan ubah pemiliknya menjadi www-data.

mkdir -p /opt/modsecurity/var/audit/
chown -R www-data:www-data /opt/modsecurity/var/audit/

7. Konfigurasikan Kumpulan Aturan Inti OWASP (CRS)

Unduh Kumpulan Aturan Inti OWASP dari github.

cd /usr/src/
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

Buka direktori "owasp-modsecurity-crs " dan salin direktori "base_rules" ke direktori nginx.

cd owasp-modsecurity-crs
cp -R base_rules/ /usr/Local/nginx/conf/

Edit modsecurity.conf dan tambahkan OWASP CRS.

cd /usr/Local/nginx/conf/
vi modsecurity.conf

Silakan pergi ke akhir file dan tambahkan konfigurasi berikut:

#DefaultAction
SecDefaultAction "log,deny,phase:1"

#If you want to load single rule /usr/loca/nginx/conf
#Include base_rules/modsecurity_crs_41_sql_injection_attacks.conf

#Load all Rule
Include base_rules/*.conf

#Disable rule by ID from error message (for my wordpress)
SecRuleRemoveById 981172 981173 960032 960034 960017 960010 950117 981004 960015

Simpan dan Keluar.

Sebagai langkah terakhir, tambahkan file modsecurity.conf ke konfigurasi Nginx dengan mengedit file "nginx.conf " file.

vi conf/nginx.conf

Tambahkan modsecurity.conf:

[.....]

#Enable ModSecurity ModSecurityEnabled on; ModSecurityConfig modsecurity.conf; root html; index index.php index.html index.htm;

[.....]

Simpan dan keluar.

Mulai ulang Nginx untuk menerapkan perubahan konfigurasi:

systemctl restart nginx

8. Pengujian

Saya memiliki situs WordPress yang berjalan di Nginx dan ModSecurity, ini berfungsi dengan baik. Untuk pengujian, saya akan memasang plugin baru yang rentan terhadap XSS dan SQL Injection.

Berikut adalah hasilnya:

XSS dilarang
https://www.exploit-db.com/exploits/37107/

Akses peramban:

Log Server:

Injeksi SQL dilarang
https://www.exploit-db.com/exploits/37560/

Akses Peramban:

Log Server:

Nginx dan ModSecurity berhasil.

Kesimpulan

ModSecurity adalah WAF (Web Application Firewall) open source yang dikembangkan oleh SpiderLabs Trustwave untuk mengamankan aplikasi web Anda. Ada lebih dari 16.000 aturan yang tersedia untuk mendeteksi serangan seperti SQL Injection, XSS, LFI, RFI, dll. ModSecurity mudah dipasang dan tersedia sebagai modul untuk Apache, Nginx, dan IIS untuk windows.

Referensi

  • https://www.modsecurity.org/documentation.html
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project
  • https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual

Ubuntu
  1. Cara Menginstal WordPress dengan Nginx di Ubuntu 18.04

  2. Cara Menyebarkan Modsecurity dengan Nginx di Ubuntu 20.04 LTS

  3. Cara menginstal PHP 7.4 Dengan Nginx di Ubuntu 20.04

  1. Cara Menginstal phpMyAdmin dengan Nginx di Ubuntu 18.04

  2. Cara Menginstal MediaWiki dengan Nginx di Ubuntu 16.04

  3. Cara Menginstal Grav CMS dengan Nginx di Ubuntu 16.04

  1. Cara Menginstal SuiteCRM dengan Nginx di Ubuntu 16.04

  2. Cara Menginstal Magento dengan Nginx di Ubuntu 15.10

  3. Cara Menginstal Mailpile dengan Nginx di Ubuntu 15.10