Nginx mit Modsecurity: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
| − | = | + | = 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 kopieren |
| + | sudo cp /usr/share/modsecurity-crs/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf | ||
| − | + | * DetectionOnly deaktivieren | |
| + | sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/nginx/modsec/modsecurity.conf | ||
| − | + | == 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 on; | ||
| − | modsecurity_rules_file /etc/nginx/modsec/ | + | 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 { | server { | ||
| − | listen | + | listen 80; |
| − | server_name | + | server_name localhost; |
| − | |||
| − | |||
| − | |||
| − | + | include /etc/nginx/modsec/main.conf; | |
| − | |||
location / { | location / { | ||
| − | proxy_pass | + | proxy_pass http://127.0.0.1:8080; |
proxy_set_header Host $host; | proxy_set_header Host $host; | ||
proxy_set_header X-Real-IP $remote_addr; | proxy_set_header X-Real-IP $remote_addr; | ||
| Zeile 58: | Zeile 58: | ||
} | } | ||
} | } | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | == 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 | |
Version vom 20. Juni 2025, 05:49 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 kopieren
sudo cp /usr/share/modsecurity-crs/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
- DetectionOnly deaktivieren
sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/nginx/modsec/modsecurity.conf
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