Nginx mit Modsecurity: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 14: Zeile 14:
 
  sudo mkdir -p /etc/nginx/modsec
 
  sudo mkdir -p /etc/nginx/modsec
  
* Standardkonfiguration kopieren
+
* Standardkonfiguration erstellen
  sudo cp /usr/share/modsecurity-crs/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
+
  sudo vi /etc/nginx/modsec/modsecurity.conf
 +
<pre>
 +
# Aktivieren des ModSecurity-Engines
 +
SecRuleEngine On
  
* DetectionOnly deaktivieren
+
# Audit-Log-Modus (nur für Tests, später evtl. RelevantOnly)
sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/nginx/modsec/modsecurity.conf
+
SecAuditEngine RelevantOnly
 +
 
 +
# Audit-Protokoll-Pfad
 +
SecAuditLog /var/log/nginx/modsec_audit.log
 +
 
 +
# Speicherort für Zwischenregeln
 +
SecTmpDir /tmp/
 +
SecDataDir /tmp/
 +
 
 +
# Basisregeln zulassen
 +
SecRequestBodyAccess On
 +
SecResponseBodyAccess Off
 +
 
 +
# Logging
 +
SecDebugLog /var/log/nginx/modsec_debug.log
 +
SecDebugLogLevel 0
 +
 
 +
# Empfohlene Defaults
 +
SecRule ARGS "@rx attack" "id:1234,deny,status:403,msg:'Attack detected'"
 +
</pre>
  
 
== OWASP Core Rule Set installieren ==
 
== OWASP Core Rule Set installieren ==

Version vom 20. Juni 2025, 05:56 Uhr

NGINX mit ModSecurity v3 und OWASP CRS als Reverse Proxy

Voraussetzungen

Installation

  • NGINX und ModSecurity installieren
sudo apt update
sudo apt install nginx libmodsecurity3 libnginx-mod-http-modsecurity git -y

ModSecurity aktivieren

  • Konfigurationsverzeichnis erstellen
sudo mkdir -p /etc/nginx/modsec
  • Standardkonfiguration erstellen
sudo vi /etc/nginx/modsec/modsecurity.conf
# Aktivieren des ModSecurity-Engines
SecRuleEngine On

# Audit-Log-Modus (nur für Tests, später evtl. RelevantOnly)
SecAuditEngine RelevantOnly

# Audit-Protokoll-Pfad
SecAuditLog /var/log/nginx/modsec_audit.log

# Speicherort für Zwischenregeln
SecTmpDir /tmp/
SecDataDir /tmp/

# Basisregeln zulassen
SecRequestBodyAccess On
SecResponseBodyAccess Off

# Logging
SecDebugLog /var/log/nginx/modsec_debug.log
SecDebugLogLevel 0

# Empfohlene Defaults
SecRule ARGS "@rx attack" "id:1234,deny,status:403,msg:'Attack detected'"

OWASP Core Rule Set installieren

  • In das ModSecurity-Verzeichnis wechseln
cd /etc/nginx/modsec
  • CRS klonen
sudo git clone https://github.com/coreruleset/coreruleset.git
  • Setup-Datei aktivieren
sudo cp coreruleset/crs-setup.conf.example coreruleset/crs-setup.conf

ModSecurity-Snippet erstellen

  • Konfigurationsdatei erstellen
sudo nano /etc/nginx/modsec/main.conf
  • Inhalt:
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsecurity.conf;
include /etc/nginx/modsec/coreruleset/crs-setup.conf;
include /etc/nginx/modsec/coreruleset/rules/*.conf;

Reverse Proxy konfigurieren

  • Standard-VHost ersetzen
sudo nano /etc/nginx/sites-available/default
  • Inhalt:
server {
    listen 80;
    server_name localhost;

    include /etc/nginx/modsec/main.conf;

    location / {
        proxy_pass http://127.0.0.1:8080;
        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 prüfen und neu laden

  • Syntax testen
sudo nginx -t
  • Dienst neu laden
sudo systemctl reload nginx

Test

  • Beispielziel: Python-Testserver
python3 -m http.server 8080
  • Angriff simulieren
curl "http://localhost/?param=<script>alert(1)</script>"
  • Audit-Log (wenn aktiviert) prüfen:
/var/log/nginx/error.log