Installationsanleitung für NGINX ModSecurity



Dieser Artikel enthält Anweisungen zum Installieren des Dynamic ModSecurity-Moduls auf dem NGINX-Webserver als Webanwendungs-Firewall (WAF). NGINX arbeitet im Reverse-Proxy-Modus . Die Arbeit wurde an der Linux-Distribution CentOS 7 durchgeführt . Das Modul ist auf "dynamisch" eingestellt, damit der Dienst in der Konfiguration flexibel bleibt. Es wird die offizielle NGINX- Installationsanleitung verwendet.


1. Vorinstallation von Komponenten


Damit der Dienst ordnungsgemäß funktioniert, müssen zusätzliche Bibliotheken installiert werden, damit er funktioniert. Zum Erstellen eines Projekts aus dem Quellcode werden Bibliotheken benötigt. Es wird davon ausgegangen, dass der Benutzer über ein aktualisiertes System verfügt ( # yum update ).

yum install install -y apt-utils autoconf automake build-essential git libcurl4-openssl-dev libgeoip-dev liblmdb-dev libpcre++-dev libtool libxml2-dev libyajl-dev pkgconf wget zlib1g-dev 


2. Starten Sie die Service-Installation



Damit beim Starten des Dienstes mit dem Befehl service nginx start keine Probleme auftreten, wird eine Version aus dem offiziellen Repository auf GitHub installiert.

Erstellen Sie die Datei /etc/yum.repos.d/nginx.repo, in die Sie die Distributionsversion hinzufügen möchten. Ohne Angabe der NGINX-Version wird die letzte auf der Site gestartete Version aufgerufen.

 [nginx-1.13.7] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1 

Als nächstes einfach installieren

 yum install nginx 

3. Zusammenstellung des Moduls




Wechseln Sie zunächst in das entsprechende Verzeichnis:

 cd /home/user/Downloads 

Laden Sie das Modul aus dem Hauptzweig auf GitHub herunter:

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

Wechseln Sie als Nächstes zu dem Ordner mit der Firewall und kompilieren Sie den Quellcode:

 cd ModSecurity git submodule init git submodule update ./build.sh ./configure make make install 

4. Installieren Sie den Stecker


Damit das gesamte System flexibel ist, wird ein Anschluss für die Verbindung von NGINX und ModSecurity installiert. Dies bedeutet, dass das Modul nicht mit dem Servercode verbunden wird, sondern nur eine dynamische Komponente ist, die es ermöglicht, es jederzeit zu löschen, den Code zu ändern usw.

 git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git 

5. Erstellen Sie den Webserver neu


Damit NGINX mit dem Connector funktioniert, an den das Modul angeschlossen wird, müssen Sie den Server neu erstellen. Stellen Sie dazu zunächst fest, welche Version von NGINX installiert ist:

 nginx –v 

Die Ausgabe sollte ungefähr so ​​sein (je nach Version)

Nginx-Version: Nginx / 1.13.7

Laden Sie als Nächstes die entsprechende Version von der offiziellen Website herunter, damit beim Starten des Dienstes kein Fehler auftritt, und kompilieren Sie mit einem bestimmten Parameter:

 cd .. wget http://nginx.org/download/nginx-1.13.7.tar.gz tar zxvf nginx-1.13.7.tar.gz cd nginx-1.13.7 ./configure --with-compat --add-dynamic-module=../ModSecurity-nginx make modules 

Kopieren Sie als Nächstes die Moduldatei in den Webdienstordner:

 cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules 

Vor dem ersten Block in /etc/nginx/nginx.conf hinzufügen:

 load_module modules/ngx_http_modsecurity_module.so; 

6. Modulkonfigurationsdatei


Entwickler bieten ihre Grundregeln zum Schutz einer Webressource an. Es sollte beachtet werden, dass man nach der Installation nicht mit einer anständigen Ebene rechnen sollte, da die Ersteller dem Benutzer völlige Freiheit bei der Konfiguration und beim Schreiben von Regeln lassen, was ihn darauf beschränkt, der Standardkonfigurationsdatei grundlegende Regeln hinzuzufügen.

 mkdir /etc/nginx/modsec cd /etc/nginx/modsec sudo wget https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended sudo mv modsecurity.conf-recommended modsecurity.conf 


Ersetzen Sie in der Datei modsecurity.conf SecRuleEngine DetectionOnly durch SecRuleEngine On
Erstellen Sie als Nächstes die Datei /etc/nginx/modsec/main.conf und fügen Sie sie hinzu:

 # Include the recommended configuration Include /etc/nginx/modsec/modsecurity.conf 

7. OWASP-Regeln


Es ist kein Geheimnis, dass OWASP in Fragen der Websicherheit führend ist. Sie haben ein eigenes Set für dieses Modul, das wie das Projekt für Benutzer offen ist. Installieren Sie es daher als grundlegendes Regelwerk:

 cd /usr/local wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.0.0.tar.gz tar -xzvf v3.0.0.tar.gz mv owasp-modsecurity-crs-3.0.0 /usr/local cd /usr/local/owasp-modsecurity-crs-3.0.0 cp crs-setup.conf.example crs-setup.conf 

Fügen Sie in /etc/nginx/modsec/main.conf Folgendes hinzu:

 # OWASP CRS v3 rules Include /usr/local/owasp-modsecurity-crs-3.0.0/crs-setup.conf Include /usr/local/owasp-modsecurity-crs-3.0.0/rules/*.conf 

8. Abschluss der Arbeiten


In der Datei /etc/nginx/conf.d/proxy.conf hinzufügen

 server { listen 80; modsecurity on; modsecurity_rules_file /etc/nginx/modsec/main.conf; # If you have proxy location / { proxy_pass http://192.168.xx; } } 

9. Gesundheitscheck


Um die Komponenten des Webdienstes zu überprüfen, starten Sie ihn einfach und zeigen Sie die Fehler an. Oft müssen Sie die Regel entfernen, die für die Überprüfung verantwortlich ist, wo ein anderes Modul verwendet wird (z. B. GeoIP ). Daher können Sie diese Regel sicher entfernen.

 rm /usr/local/owasp-modsecurity-crs-3.0.0/rules/REQUEST-910-IP-REPUTATION.conf 

Ein Unicode- Fehler ist ebenfalls möglich. Damit der Dienst nicht beeinträchtigt wird, kommentieren wir ihn einfach in der Konfigurationsdatei ( am Ende ) aus.

 #SecUnicodeMapFile unicode.mapping 20127 

Verwenden Sie das Curl- Dienstprogramm, um den Server zu testen. Es wird angezeigt, ob die Anwendung zurückkehrt. Wenn alles korrekt ist, erhalten Sie eine Option mit dem Code 200 OK

 curl -I 127.0.0.1 

Um die Funktion von Schutzmechanismen zu überprüfen, können Sie jedes dafür vorgesehene Dienstprogramm verwenden. Es wird empfohlen, nikto als Empfehlung zu verwenden:

 nikto -host localhost 

So starten Sie den Server:

 service nginx start 

Source: https://habr.com/ru/post/de437032/


All Articles