Schritt-für-Schritt-Anleitung zur Installation und Konfiguration von NAXSI Nginx WAF auf Ubuntu 18.04 LTS

watch 6m, 29s
views 2

13:42, 30.07.2026

Artikel Inhalt
arrow

  • Systemanforderungen
  • Ersteinrichtung
  • Nginx mit Naxsi-Integration kompilieren
  • Naxsi-Regeln einrichten
  • Nginx für die Zusammenarbeit mit Naxsi konfigurieren
  • Einrichten einer Systemd-Dienstdatei für Nginx
  • Testen der Naxsi-Firewall
  • Abschließende Gedanken

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 -y

Starten 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 -y

Nun 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.gz

Entpacken Sie die heruntergeladene Datei:

tar -xvzf nginx-1.16.1.tar.gz

Laden Sie anschließend den Naxsi-Quellcode mit dem folgenden Befehl herunter:

wget https://github.com/nbs-system/naxsi/archive/master.zip

Entpacken Sie die heruntergeladene Datei mit dem folgenden Befehl:

unzip master.zip

Wechseln 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=/usr

Kompilieren Sie Nginx mit:

make

Installieren Sie Nginx:

make install

Der 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/fastcgi

Nun 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.rules

Legen 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 -t

Wenn 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.service

Fü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-reload

Starten Sie anschließend den Nginx-Dienst und aktivieren Sie ihn, damit er nach einem Systemneustart automatisch startet:

systemctl start nginx systemctl enable nginx

Mit dem folgenden Befehl können Sie den Status des Nginx-Dienstes überprüfen:

systemctl status nginx

Mit 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.log

Im 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.log

Im 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.

Teilen

War dieser Artikel für Sie hilfreich?

VPS beliebte Angebote

-10%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 1024 Linux

6.1 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
6 Epyc Cores
RAM
RAM
16 GB
Space
Space
150 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 16384 Linux

50.49 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 2048 Linux

7.7 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
6 Epyc Cores
RAM
RAM
8 GB
Space
Space
100 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 8192 Windows

28.99 /mo

/mo

Alle 12 Monate abgerechnet

-15.5%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
80 Mbps
DDoS Protected SSD-KVM 8192 Linux

95 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 4096 Windows

18.65 /mo

/mo

Alle 12 Monate abgerechnet

-16.2%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
60 Mbps
DDoS Protected SSD-KVM 4096 Linux

67 /mo

/mo

Alle 12 Monate abgerechnet

-15.6%

CPU
CPU
2 Xeon Cores
RAM
RAM
512 MB
Space
Space
10 GB SSD
Bandwidth
Bandwidth
1 TB
KVM-SSD 512 Metered Linux

5.33 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-KVM-SSD 8192 Linux

115.5 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
3 Epyc Cores
RAM
RAM
2 GB
Space
Space
20 GB NVMe
Bandwidth
Bandwidth
Unlimited
aiKVM-NVMe 2048 Linux

9.18 /mo

/mo

Alle 12 Monate abgerechnet

Weitere Artikel zu diesem Thema

cookie

Cookies und Datenschutz akzeptieren?

Wir verwenden Cookies, um sicherzustellen, dass wir Ihnen die beste Erfahrung auf unserer Website bieten. Wenn Sie fortfahren, ohne Ihre Einstellungen zu ändern, gehen wir davon aus, dass Sie mit dem Empfang aller Cookies auf der HostZealot-Website einverstanden sind.