-
Notifications
You must be signed in to change notification settings - Fork 0
Fail2Ban
Inhaltsverzeichnis
Weitere Links:
fail2ban Konfig neu laden
fail2ban-client reload
fail2ban Jail & Actions ausgeben
fail2ban-client -d
fail2ban Jail Status abfragen
fail2ban-client status sshd
fail2ban-client status nginx-http-auth
fail2ban-client status nginx-botsearch
fail2ban-client status php-url-fopen
fail2ban-client status monit
fail2ban-client status postfix
fail2ban-client status ee-wordpress
Inhalt:
Erstellen Sie dann den nginx-Filter, wenn Sie sich auf dem neuesten fail2ban befinden, haben Sie diese Datei möglicherweise bereits, in diesem Fall können Sie mit dem Befehl fail2ban-regex zum Testen übergehen.
sudo nano /etc/fail2ban/filter.d/nginx-http-auth.conf
Fügen Sie folgenden Text ein: Quelle
[Definition]
failregex = ^ \[error\] \d+#\d+: \*\d+ user "\S+":? (password mismatch|was not found in ".*"), client: <HOST>, server: \S*, request: "\S+ \S+ HTTP/\d+\.\d+", host: "\S+"(, referrer: "\S+")?\s*$
ignoreregex =
Ctrl+X, Y + Enter
um zu speichern und zu beenden.
Jetzt können wir den nginx HTTP-Authortfilter testen, indem wir das im virtuellen Host von nginx angegebene Fehlerprotokoll scannen.
fail2ban-regex /var/log/nginx/wpbullet.error.log /etc/fail2ban/filter.d/nginx-http-auth.conf
Du wirst diese Ausgabe sehen, die zeigt, dass sie die von uns zuvor erzeugten Login-Fehler gefunden hat.
Running tests
=============
Use failregex file : /etc/fail2ban/filter.d/nginx-http-auth.conf
Use log file : /var/log/nginx/wp-bullet.error.log
Results
=======
Failregex: 2 total
|- #) [# of hits] regular expression
| 1) [2] ^ \[error\] \d+#\d+: \*\d+ user "\S+":? (password mismatch|was not found in ".*"), client: , server: \S+, request: "GET /wp-login.php.*$
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [2] Year/Month/Day Hour:Minute:Second
`-
Lines: 2 lines, 0 ignored, 2 matched, 0 missed
Stellen Sie sicher, dass ein fail2ban Jail-Ordner existiert.
sudo mkdir -p /etc/fail2ban/jail.d
Erstellen Sie die fail2ban nginx http auth Jail-Konfigurationsdatei.
sudo nano /etc/fail2ban/jail.d/nginx-http-auth.conf
Fügen Sie die Konfiguration ein, die den zuvor erstellten Filter verwendet. Sie scannt alle nginx-Protokolldateien und sperrt Benutzer für 6000 Minuten, deren HTTP Authentifikation in einem Zeitraum von 60 Sekunden dreimal fehlschlägt.
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/*.log
findtime = 60
bantime = 6000
maxretry = 3
Jetzt, da wir wissen, dass das Jail erstellt wurde, testen Sie die fail2ban-Syntax, um sicherzustellen, dass alles funktioniert.
sudo fail2ban-client -d
Wenn du keine Fehler bekommen hast (Warnungen sind OK), dann können wir fail2ban neu starten.
service fail2ban restart
Der fail2ban-Client kann verwendet werden, um die Statistiken seiner Jails anzuzeigen.
sudo fail2ban-client status nginx-http-auth
Während eines lokalen Tests gelang es mir, die Gateway-IP zu sperren.
Status for the jail: nginx-http-auth
|- filter
| |- File list: /var/log/nginx/wp-bullet.error.log /var/log/nginx/error.log
| |- Currently failed: 0
| `- Total failed: 3
`- action
|- Currently banned: 1
| `- IP list: 192.168.60.1
`- Total banned: 1
Sie können auch die iptables
auflisten.
sudo iptables -L -n
Dies zeigt die iptables
-Kette zur Begrenzung von nginx HTTP Auth Anfragen.
Chain f2b-nginx-http-auth (2 references)
target prot opt source destination
REJECT all -- 192.168.0.1 0.0.0.0/0 reject-with icmp-port-unreachable
RETURN all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0
Unzählige Bots scannen das Web und testen ihre Listen mit Standardpasswörtern an allen WordPress Installationen die sie finden. Diese werden nun schnell gesperrt. Nach der Installation dieser WordPress-Sicherheitslösung werden keine schweren PHP-Plugins wie WordFence mehr benötigt. Sämtliche Attacken werden geblockt ohne auch nur ein einziges Mal PHP oder MySQL auszuführen. Dies führt zu massivem Performance Gewinn gegenüber jeder Plugin basierten Lösung.
Quellen:
- NGiNX
- PHP