Hallo,
ich habe heute meinen VM mit Docker mittels Fail2ban für ssh abgesicherte.
Nun würde ich gerne meinen nginx reverse proxy mit aufnehmen.
Dort gibt es ja viele Tutorials die wirklich alle was anderes schreiben.
Habe mir jetzt mit diversen Tutorials und ChatGPT folgendes zusammengestellt.
Was haltet ihr davon?
ich habe heute meinen VM mit Docker mittels Fail2ban für ssh abgesicherte.
Nun würde ich gerne meinen nginx reverse proxy mit aufnehmen.
Dort gibt es ja viele Tutorials die wirklich alle was anderes schreiben.
Habe mir jetzt mit diversen Tutorials und ChatGPT folgendes zusammengestellt.
Was haltet ihr davon?
Code:
[DEFAULT]
# Grundkonfiguration für alle Jails
bantime = 3600
findtime = 600
maxretry = 5
backend = auto
# Schutz vor Brute-Force-Angriffen auf HTTP-Authentifizierung
[npm-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /data/compose/2/data/logs/proxy-host-*_access.log
/data/compose/2/data/logs/default-host-access.log
maxretry = 3
# Schutz vor allgemeinen 4xx- und 5xx-Fehlern
[npm-4xx-5xx]
enabled = true
filter = nginx-4xx-5xx
logpath = /data/compose/2/data/logs/proxy-host-*_access.log
/data/compose/2/data/logs/default-host-access.log
maxretry = 10
# Schutz vor verdächtigem Zugriff auf spezielle URL-Muster (Bad Bots)
[npm-badbots]
enabled = true
filter = nginx-badbots
logpath = /data/compose/2/data/logs/proxy-host-*_access.log
/data/compose/2/data/logs/default-host-access.log
maxretry = 1
bantime = 86400
# Schutz vor häufiger Wiederholungsanfragen (DoS-Minderungen)
[npm-all-access]
enabled = true
filter = nginx-all
logpath = /data/compose/2/data/logs/proxy-host-*_access.log
/data/compose/2/data/logs/default-host-access.log
maxretry = 60
findtime = 60
# Schutz vor gezielten 404-Angriffen (Suchen nach Schwachstellen)
[npm-404]
enabled = true
filter = nginx-404
logpath = /data/compose/2/data/logs/proxy-host-*_access.log
/data/compose/2/data/logs/default-host-access.log
maxretry = 5
findtime = 300
# Schutz vor wiederholten SSL/TLS-Fehlern
[npm-ssl-errors]
enabled = true
filter = nginx-ssl-error
logpath = /data/compose/2/data/logs/proxy-host-*_error.log
maxretry = 3
# Schutz vor ungültigen Hostnamen (z.B. Host-Header-Angriffe)
[npm-invalid-host]
enabled = true
filter = nginx-host-header
logpath = /data/compose/2/data/logs/proxy-host-*_error.log
maxretry = 5
bantime = 86400
Code:
# Datei: /etc/fail2ban/filter.d/nginx-http-auth.conf
[Definition]
failregex = ^<HOST> -.* "(GET|POST) .*HTTP/.*" 401
ignoreregex =
# Datei: /etc/fail2ban/filter.d/nginx-4xx-5xx.conf
[Definition]
failregex = ^<HOST> -.* "(GET|POST|HEAD) .*HTTP/.*" (4\d{2}|5\d{2}) .*
ignoreregex =
# Datei: /etc/fail2ban/filter.d/nginx-badbots.conf
[Definition]
failregex = ^<HOST> -.* "(GET|POST|HEAD) .*HTTP/.*" 200 .*"(?:bot|crawl|spider|wget|curl|nikto)"
ignoreregex =
# Datei: /etc/fail2ban/filter.d/nginx-all.conf
[Definition]
failregex = ^<HOST> -.* "(GET|POST|HEAD) .*HTTP/.*"
ignoreregex =
# Datei: /etc/fail2ban/filter.d/nginx-404.conf
[Definition]
failregex = ^<HOST> -.* "(GET|POST|HEAD) .*HTTP/.*" 404
ignoreregex =
# Datei: /etc/fail2ban/filter.d/nginx-ssl-error.conf
[Definition]
failregex = ^.*\[error\].*SSL_do_handshake\(\) failed:.*peer error SSL
^.*\[crit\].*SSL_do_handshake\(\) failed:.*SSL routines.*
ignoreregex =
# Datei: /etc/fail2ban/filter.d/nginx-host-header.conf
[Definition]
failregex = ^<HOST> -.* "(GET|POST|HEAD) .*HTTP/.*" (400|444)
ignoreregex =