Schritt-für-Schritt-Anleitung zur Installation und Konfiguration von NAXSI Nginx WAF auf Ubuntu 18.04 LTS
13:42, 30.07.2026
Web-Application-Firewalls (WAF) sind unverzichtbare Werkzeuge zum Schutz von Websites und Webanwendungen vor einer Vielzahl von Bedrohungen. NAXSI (Nginx Anti XSS & SQL Injection) ist ein Open-Source-WAF-Modul, das in Nginx integriert werden kann, um eine zusätzliche Sicherheitsebene zu schaffen.
In dieser Anleitung erklären wir, wie Sie die Naxsi-Firewall auf einem Ubuntu 18.04-Server installieren, konfigurieren und ihre Wirksamkeit testen.
Systemanforderungen
Bevor Sie fortfahren, stellen Sie sicher, dass Ihr System die folgenden Anforderungen erfüllt:
- Betriebssystem: Ubuntu 18.04 LTS.
- Benutzerrechte: Root oder ein Benutzer mit sudo-Rechten.
- Internetverbindung: Erforderlich zum Herunterladen von Paketen und Quelldateien.
Ersteinrichtung
Aufgrund unserer Erfahrungen empfehlen wir, Ihr System zu aktualisieren, bevor Sie NAXSI Nginx WAF auf einem Server mit Ubuntu 18.04 installieren. Sie können die Pakete Ihres Systems mit dem folgenden Befehl aktualisieren:
apt-get update -y apt-get upgrade -yStarten Sie den Server neu, um die Änderungen zu übernehmen.
Außerdem benötigen Sie bestimmte Abhängigkeiten, um Nginx aus dem Quellcode zu kompilieren. Installieren Sie die erforderlichen Abhängigkeiten mit dem folgenden Befehl:
apt-get install build-essential daemon libxml2-dev libxslt1-dev libgd-dev libgeoip-dev make libpcre3-dev libssl-dev unzip -yNun ist das Naxsi-Paket im Standard-Repository von Ubuntu 18.04 verfügbar.
Nginx mit Naxsi-Integration kompilieren
Als Nächstes müssen Sie Nginx mit Naxsi-Unterstützung kompilieren.
Laden Sie den Nginx-Quellcode mit dem folgenden Befehl herunter:
wget http://nginx.org/download/nginx-1.16.1.tar.gzEntpacken Sie die heruntergeladene Datei:
tar -xvzf nginx-1.16.1.tar.gzLaden Sie anschließend den Naxsi-Quellcode mit dem folgenden Befehl herunter:
wget https://github.com/nbs-system/naxsi/archive/master.zipEntpacken Sie die heruntergeladene Datei mit dem folgenden Befehl:
unzip master.zipWechseln Sie anschließend in das Verzeichnis mit dem Nginx-Quellcode:
cd nginx-1.16.1/Sie müssen Nginx mit Naxsi-Unterstützung mit diesem Befehl konfigurieren:
./configure --conf-path=/etc/nginx/nginx.conf --add-module=../naxsi-master/naxsi_src/ --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --user=www-data --group=www-data --with-http_ssl_module --without-mail_pop3_module --without-mail_smtp_module --without-mail_imap_module --without-http_uwsgi_module --without-http_scgi_module --prefix=/usrKompilieren Sie Nginx mit:
makeInstallieren Sie Nginx:
make installDer letzte Schritt besteht darin, Verzeichnisse für die dynamischen Datenbibliotheken von Nginx anzulegen. Erstellen Sie diese mit folgendem Befehl:
mkdir /var/lib/nginx/body mkdir /var/lib/nginx/fastcgiNun ist ist Nginx mit Naxsi-Unterstützung konfiguriert.
Naxsi-Regeln einrichten
In diesem Schritt müssen Sie die Naxsi-Kernregeln in das Nginx-Konfigurationsverzeichnis kopieren. Kopieren Sie diese aus dem Naxsi-Quellverzeichnis:
cp /root/naxsi-master/naxsi_config/naxsi_core.rules /etc/nginx/Erstellen Sie eine Datei „naxsi.rules“ im Verzeichnis /etc/nginx/ Verzeichnis:
nano /etc/nginx/naxsi.rulesLegen Sie fest, welche Maßnahmen der Server ergreifen soll, wenn eine URL-Anfrage nicht den Kernregeln entspricht:
SecRulesEnabled;
DeniedUrl "/RequestDenied";
## Naxsi-Regeln prüfen
CheckRule "$SQL >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4" BLOCK;
CheckRule "$EVADE >= 4" BLOCK;
CheckRule "$XSS >= 8" BLOCK;
Dadurch werden die URLs überprüft und gegebenenfalls blockiert.
Speichern und schließen Sie die Datei.
Nginx für die Zusammenarbeit mit Naxsi konfigurieren
Damit Nginx mit Naxsi zusammenarbeitet, müssen Sie die Standardkonfigurationsdatei von Nginx so anpassen, dass sie Naxsi unterstützt. Bearbeiten Sie dazu die Konfigurationsdateien von Nginx und Naxsi.
Öffnen Sie die Standardkonfigurationsdatei von Nginx:
nano /etc/nginx/nginx.conf
Fügen Sie folgende Zeilen ein:
user www-data;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
include /etc/nginx/naxsi_core.rules;
include /etc/nginx/conf.d/.conf;
include /etc/nginx/sites-enabled/;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
include /etc/nginx/naxsi.rules;
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.
Prüfen Sie mit dem folgenden Befehl, ob Nginx-Syntaxfehler vorliegen:
nginx -tWenn keine Fehler vorliegen, sollten Sie folgende Ausgabe erhalten:
nginx: Die Syntax der Konfigurationsdatei /etc/nginx/nginx.conf ist in Ordnung. nginx: Der Test der Konfigurationsdatei /etc/nginx/nginx.conf war erfolgreich
Einrichten einer Systemd-Dienstdatei für Nginx
Um den Nginx-Dienst zu verwalten, müssen Sie eine Nginx-Systemd-Dienstdatei erstellen.
nano /lib/systemd/system/nginx.serviceFügen Sie folgende Zeilen hinzu:
[Unit]
Description=Ein leistungsstarker Webserver und ein Reverse-Proxy-Server Documentation=man:nginx(8)
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Speichern und schließen Sie die Datei.
Laden Sie den systemd-Daemon neu:
systemctl daemon-reloadStarten Sie anschließend den Nginx-Dienst und aktivieren Sie ihn, damit er nach einem Systemneustart automatisch startet:
systemctl start nginx systemctl enable nginxMit dem folgenden Befehl können Sie den Status des Nginx-Dienstes überprüfen:
systemctl status nginxMit diesem Befehl können Sie auch die geladenen Module von Nginx überprüfen:
nginx -V
Testen der Naxsi-Firewall
Wir haben nun die Naxsi-Firewall konfiguriert. Nun müssen wir den Nginx-Server auf Angriffe hin testen und prüfen, wie gut die Naxsi-Firewall damit umgehen kann.
Wechseln Sie zum Remote-System, öffnen Sie einen Browser und geben Sie die folgende URL ein: http://your-server-ip/?a=<. Naxsi sollte Sie daran hindern, weiterzukommen.
Überprüfen Sie als Nächstes das Nginx-Fehlerprotokoll:
tail -f /var/log/nginx/error.logIm Protokoll sollten Sie sehen können, dass Ihre Anfrage von Naxsi blockiert wurde:
26.01.2020 15:59:08 [Fehler] 14907#0: 13 NAXSI_FMT: ip=103.250.161.100&server=208.117.84.142&uri=/&vers=0.56&total_processed=11&total_blocked=7&config=block&cscore0=$XSS&score0=8&zone0=ARGS&id0=1302&var_name0=a, Client: 103.250.161.100, Server: localhost, Anfrage: "GET /?a=%3C HTTP/1.1", Host: "208.117.84.142"Sie können Naxsi auch auf XSS-Angriffe überprüfen. Rufen Sie das Remote-System auf, öffnen Sie einen Browser und geben Sie den folgenden Link ein: http://your-server-ip/?q="><script>alert(1)</script>. Naxsi sollte Sie daran hindern, weiter voranzukommen.
Überprüfen Sie das Nginx-Fehlerprotokoll mit dem folgenden Befehl:
tail -f /var/log/nginx/error.logIm Protokoll sollten Sie sehen können, dass Ihre Anfrage von Naxsi blockiert wurde:
26.01.2020 15:53:26 [Fehler] 14907#0: 7 NAXSI_FMT: ip=103.250.161.100&server=208.117.84.142&uri=/&vers=0.56&total_processed=7&total_blocked=4&config=block&cscore0=$SQL&score0=8&cscore1=$XSS&score1=8&zone0=ARGS&id0=1001&var_name0=q, Client: 103.250.161.100, Server: localhost, Anfrage: „GET /?q=%22%3E%3Cscript%3Ealert(1)%3C/script%3E HTTP/1.1“, Host: "208.117.84.142"
Abschließende Gedanken
Die Installation und Konfiguration der Naxsi-Firewall unter Ubuntu 18.04 kann die Sicherheit Ihrer Webanwendungen erheblich verbessern. Wenn Sie dieser Anleitung folgen, sollten Sie über eine robuste Nginx-WAF verfügen, die vor gängigen Angriffen wie XSS und SQL-Injection schützt. Denken Sie daran, die Naxsi-Regeln an die spezifischen Anforderungen Ihrer Anwendung anzupassen und sowohl Nginx als auch Naxsi regelmäßig zu aktualisieren, um optimale Sicherheit zu gewährleisten.