Nginx mit Modsecurity: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
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.