Nginx mit Modsecurity: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
== Einfache Demonstration eines WAF mit Nginx und ModSecurity ==
+
== Nginx mit ModSecurity und OWASP Core Ruleset schützen ==
  
;Dieser Artikel zeigt, wie man mit Nginx und ModSecurity schnell einen Web Application Firewall (WAF) einrichtet, um Angriffe wie SQL- oder Command-Injection zu demonstrieren.
+
;Dieser Artikel zeigt, wie man Nginx als Reverse Proxy mit ModSecurity v3 und OWASP CRS einrichtet, um Angriffe wie SQL-Injection oder Command-Injection zu blockieren.
  
 
=== Voraussetzungen ===
 
=== Voraussetzungen ===
  
;Stelle sicher, dass du ein Debian- oder Ubuntu-System verwendest und Root-Rechte hast.
+
;Du benötigst ein Debian/Ubuntu-System mit Root-Rechten und einen Backend-Server (z. B. mail.it113.int).
  
 
* apt-get update
 
* apt-get update
  
=== Installation von Nginx und ModSecurity ===
+
=== Installation der Komponenten ===
  
;Mit einem Befehl installierst du Nginx, das ModSecurity-Modul und die OWASP-Regeln.
+
;Installiere Nginx, ModSecurity und das OWASP CRS.
  
 
* apt-get install nginx libnginx-mod-security modsecurity-crs -y
 
* apt-get install nginx libnginx-mod-security modsecurity-crs -y
 +
* git clone https://github.com/coreruleset/coreruleset /etc/nginx/modsec/crs
 +
* cp /etc/nginx/modsec/crs/crs-setup.conf.example /etc/nginx/modsec/crs/crs-setup.conf
  
=== Konfiguration von Nginx ===
+
=== ModSecurity global aktivieren ===
  
;Bearbeite die Nginx-Konfigurationsdatei, um ModSecurity zu aktivieren.
+
;Bearbeite die globale Nginx-Konfiguration.
  
 
* nano /etc/nginx/nginx.conf
 
* nano /etc/nginx/nginx.conf
  
  load_module /usr/lib/nginx/modules/ngx_http_modsecurity_module.so;
+
  modsecurity on;
 +
modsecurity_rules_file /etc/nginx/modsec/main.conf;
  
http {
+
=== Hauptregeldatei erstellen ===
    server {
 
        listen 80;
 
        server_name localhost;
 
  
        modsecurity on;
+
;Erstelle die ModSecurity-Regeldatei mit CRS-Einbindung.
        modsecurity_rules_file /etc/nginx/modsec/main.conf;
 
  
        location / {
+
* nano /etc/nginx/modsec/main.conf
            root /var/www/html;
+
 
        }
+
Include /etc/nginx/modsec/crs/crs-setup.conf
    }
+
Include /etc/nginx/modsec/crs/rules/*.conf
}
+
 
 +
=== Virtuellen Host konfigurieren ===
 +
 
 +
;Richte einen Reverse Proxy mit SSL und WAF ein.
  
;Erstelle die ModSecurity-Regeldatei mit den OWASP Core Rule Set (CRS).
+
* nano /etc/nginx/conf.d/revproxy.it113.int.conf
  
* echo "Include /usr/share/modsecurity-crs/owasp-crs.load" > /etc/nginx/modsec/main.conf
+
server {
 +
    listen 443 ssl;
 +
    server_name revproxy.it113.int;
  
=== Testseite erstellen ===
+
    ssl_certificate /etc/nginx/ssl/revproxy.it113.int.crt;
 +
    ssl_certificate_key /etc/nginx/ssl/revproxy.it113.int.key;
  
;Füge eine einfache HTML-Seite hinzu, um den WAF zu testen.
+
    modsecurity on;
 +
    modsecurity_rules_file /etc/nginx/modsec/main.conf;
  
* echo "<h1>Testseite</h1>" > /var/www/html/index.html
+
    location / {
 +
        proxy_pass https://mail.it113.int;
 +
        proxy_set_header Host $host;
 +
        proxy_set_header X-Real-IP $remote_addr;
 +
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 +
    }
 +
}
  
 
=== Nginx starten ===
 
=== Nginx starten ===
  
;Starte Nginx, um die Konfiguration zu übernehmen.
+
;Starte Nginx, um die Konfiguration zu laden.
  
 
* systemctl restart nginx
 
* systemctl restart nginx
  
=== WAF-Funktionalität testen ===
+
=== Schutzmechanismen testen ===
  
;Simuliere eine SQL-Injection, um zu prüfen, ob der WAF sie blockiert.
+
;Teste den WAF mit simulierten Angriffen.
  
* curl "http://localhost/test?id=1' OR '1'='1"
+
* curl "https://revproxy.it113.int/?q=' or '1'='1"
 +
* curl "https://revproxy.it113.int/?cmd=cat%20/etc/passwd"
  
;Erwartete Ausgabe: Der Server antwortet mit "403 Forbidden", da ModSecurity den Angriff erkennt.
+
;Erwartete Ausgabe: 403 Forbidden, da ModSecurity die Angriffe blockiert.
  
=== Log-Dateien prüfen ===
+
=== Fehlerbehandlung ===
  
;Überprüfe die ModSecurity-Logs, um Details zum blockierten Angriff zu sehen.
+
;Falls nichts blockiert wird, prüfe die Logs und Konfiguration.
  
 
* cat /var/log/modsecurity/audit.log
 
* cat /var/log/modsecurity/audit.log
 +
* nginx -V
  
== Fazit ==
+
;Stelle sicher, dass "--with-http_modsecurity_module" in der Ausgabe von nginx -V erscheint.
  
Mit wenigen Schritten hast du einen funktionalen WAF eingerichtet, der typische Angriffe wie SQL-Injection erkennt und blockiert. Dieses Setup ist ideal für Schulungen, da es einfach, schnell und effektiv ist.
+
=== Hinweise ===
  
;Die OWASP-Regeln bieten umfassenden Schutz und können bei Bedarf angepasst werden.
+
;ModSecurity v3 mit OWASP CRS schützt vor SQLi, XSS, RCE, LFI, RFI und mehr.
 +
;Die Regeln können in /etc/nginx/modsec/crs/crs-setup.conf angepasst werden.

Version vom 27. März 2025, 20:06 Uhr

Nginx mit ModSecurity und OWASP Core Ruleset schützen

Dieser Artikel zeigt, wie man Nginx als Reverse Proxy mit ModSecurity v3 und OWASP CRS einrichtet, um Angriffe wie SQL-Injection oder Command-Injection zu blockieren.

Voraussetzungen

Du benötigst ein Debian/Ubuntu-System mit Root-Rechten und einen Backend-Server (z. B. mail.it113.int).
  • apt-get update

Installation der Komponenten

Installiere Nginx, ModSecurity und das OWASP CRS.
  • apt-get install nginx libnginx-mod-security modsecurity-crs -y
  • git clone https://github.com/coreruleset/coreruleset /etc/nginx/modsec/crs
  • cp /etc/nginx/modsec/crs/crs-setup.conf.example /etc/nginx/modsec/crs/crs-setup.conf

ModSecurity global aktivieren

Bearbeite die globale Nginx-Konfiguration.
  • nano /etc/nginx/nginx.conf
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;

Hauptregeldatei erstellen

Erstelle die ModSecurity-Regeldatei mit CRS-Einbindung.
  • nano /etc/nginx/modsec/main.conf
Include /etc/nginx/modsec/crs/crs-setup.conf
Include /etc/nginx/modsec/crs/rules/*.conf

Virtuellen Host konfigurieren

Richte einen Reverse Proxy mit SSL und WAF ein.
  • nano /etc/nginx/conf.d/revproxy.it113.int.conf
server {
    listen 443 ssl;
    server_name revproxy.it113.int;
    ssl_certificate /etc/nginx/ssl/revproxy.it113.int.crt;
    ssl_certificate_key /etc/nginx/ssl/revproxy.it113.int.key;
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsec/main.conf;
    location / {
        proxy_pass https://mail.it113.int;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Nginx starten

Starte Nginx, um die Konfiguration zu laden.
  • systemctl restart nginx

Schutzmechanismen testen

Teste den WAF mit simulierten Angriffen.
Erwartete Ausgabe
403 Forbidden, da ModSecurity die Angriffe blockiert.

Fehlerbehandlung

Falls nichts blockiert wird, prüfe die Logs und Konfiguration.
  • cat /var/log/modsecurity/audit.log
  • nginx -V
Stelle sicher, dass "--with-http_modsecurity_module" in der Ausgabe von nginx -V erscheint.

Hinweise

ModSecurity v3 mit OWASP CRS schützt vor SQLi, XSS, RCE, LFI, RFI und mehr.
Die Regeln können in /etc/nginx/modsec/crs/crs-setup.conf angepasst werden.