
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.7Laden 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 OnErstellen 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