GNU/Linux >> Znalost Linux >  >> Cent OS

Nainstalujte LibModsecurity Web Application Firewall s Nginx na CentOS 8

LibModSecurity je bezplatný a open source webový aplikační firewall, který lze použít k ochraně serveru Nginx před různými druhy kybernetických útoků. Dodává se s Core Rule Set včetně SQL injection, cross-site skriptování, trojských koní a mnoha dalších. Funguje tak, že monitoruje provoz HTTP v reálném čase a bojuje proti zranitelnosti pomocí sady základních pravidel OWASP ModSecurity. Může být použit s Apache, Nginx a IIS a také kompatibilní s Debian, Ubuntu a CentOS.

V tomto tutoriálu vám ukážeme, jak stáhnout a zkompilovat LibModSecurity s podporou Nginx na CentOS 8.

Požadavky

  • Server se systémem CentOS 8.
  • Na serveru je nakonfigurováno heslo uživatele root.

Začínáme

Než začnete, aktualizujte svůj server na nejnovější verzi pomocí následujícího příkazu:

Aktualizace dnf

Jakmile bude váš server aktuální, restartujte jej, aby se změny projevily.

Instalovat požadovaná úložiště a závislosti

Nejprve nainstalujte EPEL a úložiště REMI do vašeho systému. Můžete je nainstalovat pomocí následujícího příkazu:

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

Dále nainstalujte všechny požadované závislosti pomocí následujícího příkazu:

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

Jakmile jsou všechny balíčky nainstalovány, můžete nainstalovat další závislosti pomocí úložiště PowerTool:

dnf --enablerepo=PowerTools instaluje doxygen yajl-devel

Dále nainstalujte GeoIP pomocí úložiště REMI spuštěním následujícího příkazu:

dnf --enablerepo=remi install GeoIP-devel

Jakmile jsou všechny balíčky nainstalovány, můžete přejít k dalšímu kroku.

Stáhnout a zkompilovat LibModsecurity

Nejprve si budete muset stáhnout zdroj LibModsecurity a zkompilovat jej na vašem systému. Chcete-li tak učinit, změňte adresář na /opt a stáhněte si nejnovější verzi LibModsecurity z úložiště Git:

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

Dále změňte adresář na ModSecurity a stáhněte kód libInjection pomocí následujícího příkazu:

cd ModSecurity
init submodulu git
aktualizace submodulu git

Dále nakonfigurujte LibModsecurity pomocí následujícího příkazu:

./build.sh
./configure

Nakonec zkompilujte a nainstalujte LibModSecurity pomocí následujícího příkazu:

make
make install

V tomto okamžiku byl do vašeho systému nainstalován LibModsecurity. Nyní můžete pokračovat v instalaci Nginx s podporou LibModsecurity.

Stáhněte a zkompilujte Nginx s podporou LibModsecurity

Nejprve budete muset vytvořit systémového uživatele a skupinu pro Nginx. Můžete jej vytvořit pomocí následujícího příkazu:

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

Dále si budete muset stáhnout Nginx a zkompilovat jej s podporou LibModsecurity.

Chcete-li tak učinit, nejprve si stáhněte konektor ModSecurity-nginx z úložiště Git pomocí následujícího příkazu:

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

Dále si stáhněte nejnovější stabilní verzi Nginx pomocí následujícího příkazu:

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

Po stažení stažený soubor rozbalte pomocí následujícího příkazu:

tar -xvzf nginx-1.17.6.tar.gz

Dále změňte adresář Nginx a nakonfigurujte jej pomocí následujícího příkazu:

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

Dále nainstalujte Nginx pomocí následujícího příkazu:

make
make install

V tomto okamžiku byl Nginx nainstalován s podporou LibModsecurity. Nyní můžete pokračovat v konfiguraci Nginx.

Konfigurace Nginx pomocí ModSecurity

Nejprve budete muset zkopírovat ukázkový konfigurační soubor ModSecurity ze zdrojového adresáře Nginx do konfiguračního adresáře Nginx.

Můžete je zkopírovat pomocí následujícího příkazu:

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

Dále vytvořte symbolický odkaz binárního Nginx na cestu /usr/sbin/ pomocí následujícího příkazu:

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

Dále vytvořte adresář protokolu Nginx pomocí následujícího příkazu:

mkdir /var/log/nginx

Dále otevřete konfigurační soubor Nginx pomocí následujícího příkazu:

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

Proveďte následující změny:

user nginx;worker_processes 1;pid /run/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { poslouchat 80; server_name your-server-ip; modsecurity on; modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; umístění / { root html; index index.html index.htm; } chybová_stránka 500 502 503 504 /50x.html; umístění =/50x.html { kořenový html; } }}

Po dokončení uložte a zavřete soubor. Poté pomocí následujícího příkazu zkontrolujte Nginx, zda neobsahuje nějakou chybu syntaxe:

nginx -t

Měli byste vidět následující výstup:

nginx:syntaxe konfiguračního souboru /usr/local/nginx/conf/nginx.conf je oknginx:konfigurační soubor /usr/local/nginx/conf/nginx.conf test byl úspěšný

V tomto okamžiku byl Nginx nakonfigurován. Můžete pokračovat vytvořením souboru služby systemd pro Nginx.

Vytvoření souboru Systemd Service pro Nginx

Dále budete muset vytvořit soubor systemd pro správu služby Nginx. Můžete jej vytvořit pomocí následujícího příkazu:

nano /etc/systemd/system/nginx.service

Přidejte následující řádky:

[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.multed-Install=> 

Po dokončení uložte a zavřete soubor. Poté znovu načtěte démona systemd pomocí následujícího příkazu:

systemctl daemon-reload

Dále spusťte službu Nginx a povolte její spuštění po restartu systému pomocí následujícího příkazu:

systemctl spustit nginx
systemctl povolit --nyní nginx

Měli byste vidět následující výstup:

Vytvořen symbolický odkaz /etc/systemd/system/multi-user.target.wants/nginx.service → /etc/systemd/system/nginx.service.

Dále ověřte službu Nginx pomocí následujícího příkazu:

stav systemctl nginx

Měli byste vidět následující výstup:

? nginx.service – HTTP a reverzní proxy server nginx Načteno:načteno (/etc/systemd/system/nginx.service; povoleno; přednastaveno dodavatelem:zakázáno) Aktivní:aktivní (běží) od Po 2019-12-30 10:20:01 EST; před 41 s Proces:17730 ExecStart=/usr/sbin/nginx (kód=ukončeno, stav=0/ÚSPĚCH) Proces:17728 ExecStartPre=/usr/sbin/nginx -t (kód=ukončeno, stav=0/ÚSPĚCH) Proces:17727 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (kód=ukončeno, stav=0/ÚSPĚCH) Hlavní PID:17732 (nginx) Úkoly:2 (limit:6102) Paměť:5,0M CGroup:/ system.slice/nginx.service ??17732 nginx:hlavní proces /usr/sbin/nginx ??17733 nginx:pracovní proces 30. prosince 10:20:00 nginx systemd[1]:Spouštění nginx HTTP a reverzního proxy serveru... 30. prosince 10:20:00 nginx nginx[17728]:nginx:syntaxe konfiguračního souboru /usr/local/nginx/conf/nginx.conf je v pořádku 30. prosince 10:20:00 nginx nginx[17728:konfigurační soubor / nginx test usr/local/nginx/conf/nginx.conf je úspěšný 30. prosince 10:20:01 nginx systemd[1]:nginx.service:Nepodařilo se analyzovat PID ze souboru /run/nginx.pid:Neplatný argument 30. prosince 10:20:01 nginx systemd[1]:Spuštěn nginx HTTP a reverzní proxy server.

V tomto okamžiku byl Nginx spuštěn a spuštěn. Nyní můžete přistoupit ke konfiguraci ModSecurity.

Konfigurace ModeSecurity

Ve výchozím nastavení je ModSecurity nastaven na režim pouze detekce. Takže budete muset zapnout modul pravidel ModSecurity. Můžete to udělat úpravou souboru modsecurity.conf:

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

Najděte následující řádek:

Pouze detekce SecRuleEngine

A nahraďte jej následujícím řádkem:

SecRuleEngine On

Najděte také následující řádek:

/var/log/modsec_audit.log

A nahraďte jej následujícím řádkem:

/var/log/nginx/modsec_audit.log

Po dokončení uložte a zavřete soubor.

Dále si stáhněte nejnovější verzi sady základních pravidel ModSecurity z úložiště Git pomocí následujícího příkazu:

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

Po stažení přejmenujte konfigurační soubor příkladu CRS následujícím příkazem:

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

Dále nakonfigurujte ModeSecurity pro použití těchto pravidel úpravou souboru /usr/local/nginx/conf/modsecurity.conf:

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

Na konec souboru přidejte následující řádky:

Zahrnout owasp-crs/crs-setup.confZahrnout owasp-crs/rules/*.conf

Po dokončení uložte a zavřete soubor. Poté restartujte službu Nginx a implementujte změny:

systemctl restart nginx

Test ModSecurity

ModSecurity je nyní nainstalován a nakonfigurován. Je čas vyzkoušet, zda to funguje nebo ne.

Chcete-li otestovat ModSecurity proti vkládání příkazů, otevřete webový prohlížeč a zadejte adresu URL http://localhost/index.html?exec=/bin/bash. Na následující stránce byste měli vidět chybu 403 Forbidden:

Chcete-li otestovat ModSecurity proti útoku CSS, otevřete svůj terminál a spusťte následující příkaz:

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

Měli byste získat následující výstup:

Zakázáno 403

Zakázáno 403


nginx/1.17 .6

Závěr

Gratulujeme! úspěšně jste si stáhli a zkompilovali LibModSecurity s Nginx. Váš server je nyní zabezpečen před různými útoky. Další informace naleznete v dokumentaci ModSecurity na adrese ModSecurity Doc.


Cent OS
  1. Nainstalujte Nginx s ngx_pagespeed na CentOS 7

  2. Jak nainstalovat phpMyAdmin s Nginx na CentOS 7 / RHEL 7

  3. Nainstalovat phpMyAdmin s Nginx na CentOS 7 – proces krok za krokem?

  1. Jak nainstalovat WordPress s Nginx na CentOS 7

  2. Jak nainstalovat phpMyAdmin s Nginx na CentOS 7

  3. Jak nainstalovat Sitemagic CMS na CentOS 7 – s Nginx

  1. Jak nainstalovat Nginx s modulem RTMP na CentOS 7

  2. Jak nainstalovat Nextcloud s Nginx a PHP 7.3 na CentOS 8

  3. Jak nainstalovat SuiteCRM s Nginx na CentOS 7