Nginx mit Modsecurity: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 14: | Zeile 14: | ||
sudo mkdir -p /etc/nginx/modsec | sudo mkdir -p /etc/nginx/modsec | ||
| − | * Standardkonfiguration | + | * Standardkonfiguration erstellen |
| − | sudo | + | sudo vi /etc/nginx/modsec/modsecurity.conf |
| + | <pre> | ||
| + | # 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'" | ||
| + | </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
- Ubuntu 22.04 oder Debian 12
- Zielsystem z. B. unter http://127.0.0.1:8080 erreichbar
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