GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Installieren Sie LibModsecurity Web Application Firewall mit Nginx auf CentOS 8

LibModSecurity ist eine kostenlose Open-Source-Firewall für Webanwendungen, mit der ein Nginx-Server vor verschiedenen Arten von Cyberangriffen geschützt werden kann. Es wird mit einem Kernregelsatz geliefert, der SQL-Injection, Cross-Site-Scripting, Trojaner und vieles mehr umfasst. Es funktioniert, indem es den HTTP-Verkehr in Echtzeit überwacht und Schwachstellen mit dem OWASP ModSecurity Core Rule Set bekämpft. Es kann mit Apache, Nginx und IIS verwendet werden und ist auch mit Debian, Ubuntu und CentOS kompatibel.

In diesem Tutorial zeigen wir Ihnen, wie Sie LibModSecurity mit Nginx-Unterstützung auf CentOS 8 herunterladen und kompilieren.

Anforderungen

  • Ein Server mit CentOS 8.
  • Auf dem Server ist ein Root-Passwort konfiguriert.

Erste Schritte

Aktualisieren Sie Ihren Server vor dem Start mit dem folgenden Befehl auf die neueste Version:

dnf-Update

Sobald Ihr Server auf dem neuesten Stand ist, starten Sie ihn neu, um die Änderungen zu übernehmen.

Installieren Sie erforderliche Repositories und Abhängigkeiten

Installieren Sie zunächst das EPEL- und REMI-Repository auf Ihrem System. Sie können sie mit dem folgenden Befehl installieren:

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

Als nächstes installieren Sie alle erforderlichen Abhängigkeiten mit dem folgenden Befehl:

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

Sobald alle Pakete installiert sind, können Sie andere Abhängigkeiten mit dem PowerTool-Repository installieren:

dnf --enablerepo=PowerTools install doxygen yajl-devel

Installieren Sie als Nächstes GeoIP mithilfe des REMI-Repositorys, indem Sie den folgenden Befehl ausführen:

dnf --enablerepo=remi install GeoIP-devel

Sobald alle Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.

LibModsecurity herunterladen und kompilieren

Zuerst müssen Sie die LibModsecurity-Quelle herunterladen und auf Ihrem System kompilieren. Wechseln Sie dazu in das Verzeichnis /opt und laden Sie die neueste Version von LibModsecurity aus dem Git-Repository herunter:

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

Wechseln Sie als Nächstes in das Verzeichnis ModSecurity und laden Sie den libInjection-Code mit dem folgenden Befehl herunter:

cd ModSecurity
git submodule init
git submodule update

Als nächstes konfigurieren Sie die LibModsecurity mit dem folgenden Befehl:

./build.sh
./configure

Schließlich kompilieren und installieren Sie LibModSecurity mit dem folgenden Befehl:

make
make install

Zu diesem Zeitpunkt wurde LibModsecurity auf Ihrem System installiert. Sie können jetzt mit der Installation von Nginx mit LibModsecurity-Unterstützung fortfahren.

Laden Sie Nginx mit LibModsecurity Support herunter und kompilieren Sie es

Zuerst müssen Sie einen Systembenutzer und eine Gruppe für Nginx erstellen. Sie können es mit dem folgenden Befehl erstellen:

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

Als nächstes müssen Sie Nginx herunterladen und mit LibModsecurity-Unterstützung kompilieren.

Laden Sie dazu zunächst den ModSecurity-nginx-Connector aus dem Git-Repository mit dem folgenden Befehl herunter:

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

Laden Sie als Nächstes die neueste stabile Version von Nginx mit dem folgenden Befehl herunter:

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

Extrahieren Sie die heruntergeladene Datei nach dem Herunterladen mit dem folgenden Befehl:

tar -xvzf nginx-1.17.6.tar.gz

Als nächstes ändern Sie das Nginx-Verzeichnis und konfigurieren es mit dem folgenden Befehl:

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

Als nächstes installieren Sie Nginx mit dem folgenden Befehl:

make
make install

Zu diesem Zeitpunkt wurde Nginx mit LibModsecurity-Unterstützung installiert. Sie können jetzt mit der Konfiguration von Nginx fortfahren.

Nginx mit ModSecurity konfigurieren

Zuerst müssen Sie die ModSecurity-Beispielkonfigurationsdatei aus dem Nginx-Quellverzeichnis in das Nginx-Konfigurationsverzeichnis kopieren.

Sie können sie mit dem folgenden Befehl kopieren:

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

Erstellen Sie als Nächstes mit dem folgenden Befehl einen symbolischen Link der Nginx-Binärdatei zum Pfad /usr/sbin/:

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

Erstellen Sie als Nächstes das Nginx-Protokollverzeichnis mit dem folgenden Befehl:

mkdir /var/log/nginx

Öffnen Sie als Nächstes die Nginx-Konfigurationsdatei mit dem folgenden Befehl:

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

Nehmen Sie die folgenden Änderungen vor:

user nginx;worker_processes 1;pid /run/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; Datei senden an; keepalive_timeout 65; server {lauschen 80; server_name ihre-server-ip; modsecurity an; modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; Ort / { Root-HTML; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location =/50x.html { root html; } }}

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Überprüfen Sie dann Nginx mit dem folgenden Befehl auf Syntaxfehler:

nginx -t

Sie sollten die folgende Ausgabe sehen:

nginx:Die Syntax der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist oknginx:Der Test der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist erfolgreich

Zu diesem Zeitpunkt wurde Nginx konfiguriert. Sie können fortfahren, eine systemd-Dienstdatei für Nginx zu erstellen.

Erstellen Sie eine Systemd-Dienstdatei für Nginx

Als Nächstes müssen Sie eine systemd-Datei erstellen, um den Nginx-Dienst zu verwalten. Sie können es mit dem folgenden Befehl erstellen:

nano /etc/systemd/system/nginx.service

Fügen Sie die folgenden Zeilen hinzu:

[Unit]Description=Der nginx-ServerAfter=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]WantedBy=multi-user.target

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starten Sie als Nächstes den Nginx-Dienst und aktivieren Sie ihn nach dem Systemneustart mit dem folgenden Befehl:

systemctl start nginx
systemctl enable --now nginx

Sie sollten die folgende Ausgabe sehen:

Symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /etc/systemd/system/nginx.service erstellt.

Als nächstes überprüfen Sie den Nginx-Dienst mit dem folgenden Befehl:

systemctl status nginx

Sie sollten die folgende Ausgabe sehen:

? nginx.service - Der nginx HTTP- und Reverse-Proxy-Server Geladen:geladen (/etc/systemd/system/nginx.service; aktiviert; Herstellervoreinstellung:deaktiviert) Aktiv:aktiv (läuft) seit Mo 30.12.2019 10:20:01 EST; Vor 41s Prozess:17730 ExecStart=/usr/sbin/nginx (Code=beendet, Status=0/SUCCESS) Prozess:17728 ExecStartPre=/usr/sbin/nginx -t (Code=beendet, Status=0/SUCCESS) Prozess:17727 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID:17732 (nginx) Tasks:2 (limit:6102) Memory:5.0M CGroup:/ system.slice/nginx.service? 30. Dez 10:20:00 nginx nginx[17728]:nginx:Die Syntax der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist okDec 30 10:20:00 nginx nginx[17728]:nginx:Konfigurationsdatei / usr/local/nginx/conf/nginx.conf-Test ist erfolgreichDec 30 10:20:01 nginx systemd[1]:nginx.service:Fehler beim Parsen der PID aus der Datei /run/nginx.pid:Ungültiges ArgumentDec 30 10:20:01 nginx systemd[1]:Der nginx HTTP- und Reverse-Proxy-Server wurde gestartet.

Zu diesem Zeitpunkt wurde Nginx gestartet und ausgeführt. Sie können nun mit der Konfiguration von ModSecurity fortfahren.

Sicherheitsmodus konfigurieren

Standardmäßig ist ModSecurity auf den Nur-Erkennungs-Modus eingestellt. Sie müssen also die Regel-Engine von ModSecurity aktivieren. Sie können dies tun, indem Sie die Datei modsecurity.conf:

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

Suchen Sie die folgende Zeile:

SecRuleEngine DetectionOnly

Und ersetzen Sie es durch die folgende Zeile:

SecRuleEngine ein

Suchen Sie auch die folgende Zeile:

/var/log/modsec_audit.log

Und ersetzen Sie es durch die folgende Zeile:

/var/log/nginx/modsec_audit.log

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Laden Sie als Nächstes die neueste Version von ModSecurity Core Rule Set mit dem folgenden Befehl aus dem Git-Repository herunter:

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

Benennen Sie nach dem Herunterladen die CRS-Beispielkonfigurationsdatei mit dem folgenden Befehl um:

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

Als nächstes konfigurieren Sie ModeSecurity so, dass diese Regeln verwendet werden, indem Sie die Datei /usr/local/nginx/conf/modsecurity.conf:

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

Fügen Sie am Ende der Datei die folgenden Zeilen hinzu:

Owasp-crs/crs-setup.conf einschließenOwasp-crs/rules/*.conf einschließen

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den Nginx-Dienst neu, um die Änderungen zu implementieren:

systemctl startet nginx neu

ModSecurity testen

ModSecurity ist nun installiert und konfiguriert. Es ist Zeit zu testen, ob es funktioniert oder nicht.

Um ModSecurity gegen Command Injection zu testen, öffnen Sie Ihren Webbrowser und geben Sie die URL http://localhost/index.html?exec=/bin/bash ein. Auf der folgenden Seite sollte der Fehler 403 Forbidden angezeigt werden:

Um ModSecurity gegen CSS-Angriffe zu testen, öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:

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

Sie sollten die folgende Ausgabe erhalten:

403 verboten

403 verboten


nginx/1.17 .6

Schlussfolgerung

Herzliche Glückwünsche! Sie haben LibModSecurity erfolgreich mit Nginx heruntergeladen und kompiliert. Ihr Server ist nun vor verschiedenen Angriffen geschützt. Weitere Informationen finden Sie in der ModSecurity-Dokumentation unter ModSecurity Doc.


Cent OS
  1. So installieren Sie WordPress mit Nginx unter CentOS 7

  2. Installieren Sie Nginx mit ngx_pagespeed unter CentOS 7

  3. So installieren Sie phpMyAdmin mit Nginx unter CentOS 7 / RHEL 7

  4. Installieren Sie phpMyAdmin mit Nginx unter CentOS 7 – Schritt-für-Schritt-Prozess?

  5. So installieren Sie Sitemagic CMS auf CentOS 7 – mit Nginx

Installieren Sie WordPress mit Nginx auf CentOS 7 / RHEL 7

So installieren Sie phpMyAdmin mit Nginx unter CentOS 8 / RHEL 8

So installieren Sie Nginx mit ngx_pagespeed unter CentOS

So installieren Sie Nginx mit PHP-FastCGI unter CentOS 6

So installieren Sie Magento mit Nginx unter CentOS 7

So installieren Sie Laravel mit Nginx unter CentOS 8