GNU/Linux >> Belajar Linux >  >> Cent OS

Instal Firewall Aplikasi Web LibModsecurity dengan Nginx di CentOS 8

LibModSecurity adalah firewall aplikasi web sumber terbuka dan gratis yang dapat digunakan untuk melindungi server Nginx dari berbagai jenis serangan siber. Muncul dengan Set Aturan Inti termasuk, injeksi SQL, skrip lintas situs, Trojan dan banyak lagi. Ia bekerja dengan memantau lalu lintas HTTP secara real-time dan melawan kerentanan menggunakan Set Aturan Inti ModSecurity OWASP. Dapat digunakan dengan Apache, Nginx, dan IIS dan juga kompatibel dengan Debian, Ubuntu, &CentOS.

Dalam tutorial ini, kami akan menunjukkan cara mengunduh dan mengkompilasi LibModSecurity dengan dukungan Nginx di CentOS 8.

Persyaratan

  • Server yang menjalankan CentOS 8.
  • Kata sandi root dikonfigurasi di server.

Memulai

Sebelum memulai, perbarui server Anda dengan versi terbaru menggunakan perintah berikut:

pembaruan dnf

Setelah server Anda diperbarui, mulai ulang untuk menerapkan perubahan.

Instal Repositori dan Dependensi yang Diperlukan

Pertama, instal repositori EPEL dan REMI di sistem Anda. Anda dapat menginstalnya dengan perintah berikut:

instal dnf https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
instal dnf https://rpms.remirepo.net/enterprise/remi- rilis-8.rpm

Selanjutnya, instal semua dependensi yang diperlukan dengan perintah berikut:

dnf install gcc-c++ flex bison yajl curl-devel zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pkgconfig libtool httpd-devel redhat-rpm-config wget openssl openssl-devel nano

Setelah semua paket diinstal, Anda dapat menginstal dependensi lain menggunakan repositori PowerTool:

dnf --enablerepo=PowerTools menginstal doxygen yajl-devel

Selanjutnya, instal GeoIP menggunakan repositori REMI dengan menjalankan perintah berikut:

dnf --enablerepo=remi install GeoIP-devel

Setelah semua paket terinstal, Anda dapat melanjutkan ke langkah berikutnya.

Unduh dan Kompilasi LibModsecurity

Pertama, Anda perlu mengunduh sumber LibModsecurity dan mengompilasinya di sistem Anda. Untuk melakukannya, ubah direktori ke /opt dan unduh versi terbaru LibModsecurity dari repositori Git:

cd /opt/
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity

Selanjutnya, ubah direktori ke ModSecurity dan unduh kode libInjection dengan perintah berikut:

cd ModSecurity
git submodule init
git submodule update

Selanjutnya, konfigurasikan LibModsecurity menggunakan perintah berikut:

./build.sh
./configure

Terakhir, kompilasi dan instal LibModSecurity dengan perintah berikut:

buat
buat pemasangan

Pada titik ini, LibModsecurity telah diinstal pada sistem Anda. Sekarang Anda dapat melanjutkan untuk menginstal Nginx dengan dukungan LibModsecurity.

Unduh dan Kompilasi Nginx dengan Dukungan LibModsecurity

Pertama, Anda perlu membuat pengguna dan grup sistem untuk Nginx. Anda dapat membuatnya dengan perintah berikut:

useradd -r -M -s /sbin/nologin -d /usr/local/nginx nginx

Selanjutnya, Anda perlu mengunduh Nginx dan mengompilasinya dengan dukungan LibModsecurity.

Untuk melakukannya, pertama-tama unduh konektor ModSecurity-nginx dari repositori Git dengan perintah berikut:

cd /opt
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git

Selanjutnya, unduh Nginx versi stabil terbaru dengan perintah berikut:

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

Setelah diunduh, ekstrak file yang diunduh menggunakan perintah berikut:

tar -xvzf nginx-1.17.6.tar.gz

Selanjutnya, ubah direktori Nginx dan konfigurasikan dengan perintah berikut:

cd nginx-1.17.6
./configure --user=nginx --group=nginx --with-pcre-jit --with-debug --with-http_ssl_module --with-http_realip_module -- add-module=/opt/ModSecurity-nginx

Selanjutnya, instal Nginx dengan perintah berikut:

buat
buat pemasangan

Pada titik ini, Nginx telah diinstal dengan dukungan LibModsecurity. Sekarang Anda dapat melanjutkan untuk mengonfigurasi Nginx.

Konfigurasikan Nginx dengan ModSecurity

Pertama, Anda perlu menyalin contoh file konfigurasi ModSecurity dari direktori sumber Nginx ke direktori konfigurasi Nginx.

Anda dapat menyalinnya dengan perintah berikut:

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

Selanjutnya, buat tautan simbolik biner Nginx ke /usr/sbin/ path dengan perintah berikut:

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

Selanjutnya, buat direktori log Nginx dengan perintah berikut:

mkdir /var/log/nginx

Selanjutnya, buka file konfigurasi Nginx dengan perintah berikut:

nano /usr/local/nginx/conf/nginx.conf

Lakukan perubahan berikut:

user nginx;worker_processes 1;pid /run/nginx.pid;events { worker_connections 1024;}http { include mime.types; aplikasi default_type/aliran oktet; kirim file pada; keepalive_timeout 65; server { dengarkan 80; server_name ip-server-Anda; keamanan mod aktif; modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; lokasi / { root html; indeks index.html index.htm; } error_page 500 502 503 504 /50x.html; lokasi =/50x.html { root html; } }}

Simpan dan tutup file setelah Anda selesai. Kemudian, periksa Nginx apakah ada kesalahan sintaks dengan perintah berikut:

nginx -t

Anda akan melihat output berikut:

nginx:file konfigurasi /usr/local/nginx/conf/nginx.conf sintaksnya oknginx:file konfigurasi /usr/local/nginx/conf/nginx.conf pengujian berhasil

Pada titik ini, Nginx telah dikonfigurasi. Anda dapat melanjutkan untuk membuat file layanan systemd untuk Nginx.

Buat file Layanan Systemd untuk Nginx

Selanjutnya, Anda perlu membuat file systemd untuk mengelola layanan Nginx. Anda dapat membuatnya dengan perintah berikut:

nano /etc/systemd/system/nginx.service

Tambahkan baris berikut:

[Unit]Description=Server nginxAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingPIDFile=/run/nginx.pidExecStartPre=/usr/bin/rm -f /run/ nginx.pidExecStartPre=/usr/sbin/nginx -tExecStart=/usr/sbin/nginxExecReload=/bin/kill -s HUP $MAINPIDKillSignal=SIGQUITTimeoutStopSec=5KillMode=mixedPrivateTmp=true[Install=]WantedBytarget. 

Simpan dan tutup file setelah Anda selesai. Kemudian, muat ulang daemon systemd dengan perintah berikut:

systemctl daemon-reload

Selanjutnya, mulai layanan Nginx dan aktifkan untuk memulai setelah sistem reboot dengan perintah berikut:

systemctl start nginx
systemctl aktifkan --now nginx

Anda akan melihat output berikut:

Membuat symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /etc/systemd/system/nginx.service.

Selanjutnya, verifikasi layanan Nginx dengan perintah berikut:

systemctl status nginx

Anda akan melihat output berikut:

? nginx.service - HTTP nginx dan server proxy terbalik Dimuat:dimuat (/etc/systemd/system/nginx.service; diaktifkan; preset vendor:dinonaktifkan) Aktif:aktif (berjalan) sejak Mon 2019-12-30 10:20:01 EST; 41 detik yang lalu Proses:17730 ExecStart=/usr/sbin/nginx (kode=keluar, status=0/SUCCESS) Proses:17728 ExecStartPre=/usr/sbin/nginx -t (kode=keluar, status=0/SUCCESS) Proses:17727 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (kode=keluar, status=0/SUCCESS) PID Utama:17732 (nginx) Tugas:2 (batas:6102) Memori:5.0M CGroup:/ system.slice/nginx.service ??17732 nginx:master process /usr/sbin/nginx ??17733 nginx:worker processDec 30 10:20:00 nginx systemd[1]:Memulai nginx HTTP dan membalikkan server proxy... 30 Des 10:20:00 nginx nginx[17728]:nginx:file konfigurasi /usr/local/nginx/conf/nginx.conf sintaks ok 30 Des 10:20:00 nginx nginx[17728]:nginx:file konfigurasi / usr/local/nginx/conf/nginx.conf tes berhasil 30 Desember 10:20:01 nginx systemd[1]:nginx.service:Gagal mengurai PID dari file /run/nginx.pid:Argumen tidak valid 30 Desember 10:20:01 nginx systemd[1]:Memulai HTTP nginx dan membalikkan server proxy.

Pada titik ini, Nginx telah dimulai dan berjalan. Sekarang Anda dapat melanjutkan untuk mengonfigurasi ModSecurity.

Konfigurasikan ModeSecurity

Secara default, ModSecurity diatur pada mode deteksi saja. Jadi, Anda perlu menyalakan mesin aturan ModSecurity. Anda dapat melakukannya dengan mengedit file modsecurity.conf:

nano /usr/local/nginx/conf/modsecurity.conf

Temukan baris berikut:

Hanya Deteksi Mesin SecRule

Dan, ganti dengan baris berikut:

SecRuleEngine Aktif

Temukan juga baris berikut:

/var/log/modsec_audit.log

Dan, ganti dengan baris berikut:

/var/log/nginx/modsec_audit.log

Simpan dan tutup file setelah Anda selesai.

Selanjutnya, unduh ModSecurity Core Rule Set versi terbaru dari repositori Git menggunakan perintah berikut:

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /usr/local/nginx/conf/owasp-crs

Setelah diunduh, ganti nama file konfigurasi contoh CRS dengan perintah berikut:

mv /usr/local/nginx/conf/owasp-crs/crs-setup.conf.example /usr/local/nginx/conf/owasp-crs/crs-setup.conf

Selanjutnya, konfigurasikan ModeSecurity untuk menggunakan aturan ini dengan mengedit file /usr/local/nginx/conf/modsecurity.conf:

nano /usr/local/nginx/conf/modsecurity.conf

Tambahkan baris berikut di akhir file:

Sertakan owasp-crs/crs-setup.confSertakan owasp-crs/rules/*.conf

Simpan dan tutup file setelah Anda selesai. Kemudian, mulai ulang layanan Nginx untuk menerapkan perubahan:

systemctl restart nginx

Uji ModSecurity

ModSecurity sekarang diinstal dan dikonfigurasi. Saatnya untuk menguji apakah itu berfungsi atau tidak.

Untuk menguji ModSecurity terhadap injeksi perintah, buka browser web Anda dan ketik URL http://localhost/index.html?exec=/bin/bash. Anda akan melihat kesalahan 403 Forbidden di halaman berikut:

Untuk menguji ModSecurity terhadap serangan CSS, buka terminal Anda dan jalankan perintah berikut:

curl http://localhost/?q=">"

Anda akan mendapatkan output berikut:

403 Dilarang

403 Dilarang


nginx/1.17 .6

Kesimpulan

Selamat! Anda telah berhasil mengunduh dan mengkompilasi LibModSecurity dengan Nginx. Server Anda kini diamankan dari berbagai serangan. Untuk informasi lebih lanjut, Anda dapat mengunjungi dokumentasi ModSecurity di ModSecurity Doc.


Cent OS
  1. Instal Nginx dengan ngx_pagespeed di CentOS 7

  2. Cara Instal phpMyAdmin dengan Nginx di CentOS 7 / RHEL 7

  3. Cara Memasang Sitemagic CMS di CentOS 7 – Dengan Nginx

  1. Cara Menginstal WordPress dengan Nginx di CentOS 7

  2. Cara Instal phpMyAdmin dengan Nginx di CentOS 7

  3. Instal phpMyAdmin dengan Nginx di CentOS 7 - Proses Langkah demi Langkah?

  1. Cara Menginstal Nginx dengan Modul RTMP di CentOS 7

  2. Cara Menginstal Nextcloud dengan Nginx dan PHP 7.3 di CentOS 8

  3. Cara Menginstal SuiteCRM dengan Nginx di CentOS 7