Wie zeige ich mit fail2ban alle gesperrten IP-Adressen an?


36

Wenn ich diesen Befehl ausführe, erhalte fail2ban-client status sshdich Folgendes:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     81
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 2
   |- Total banned:     8
   `- Banned IP list:   218.65.30.61 116.31.116.7

Es werden nur zwei IP-Adressen in der Liste der gesperrten IP-Adressen anstelle von 8 angezeigt, wie Total Banned sagt.

Während ich das tue, habe tail -f /var/log/auth.logich Folgendes:

Mar 29 11:08:40 DBSERVER sshd[29163]: error: maximum authentication attempts exceeded for root from 218.65.30.61 port 50935 ssh2 [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61  user=root
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:08:44 DBSERVER sshd[29165]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61  user=root
Mar 29 11:08:46 DBSERVER sshd[29165]: Failed password for root from 218.65.30.61 port 11857 ssh2
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:01 DBSERVER CRON[29226]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:10:02 DBSERVER CRON[29226]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:18 DBSERVER sshd[29238]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185  user=root
Mar 29 11:10:20 DBSERVER sshd[29238]: Failed password for root from 113.122.43.185 port 46017 ssh2
Mar 29 11:10:33 DBSERVER sshd[29238]: message repeated 5 times: [ Failed password for root from 113.122.43.185 port 46017 ssh2]
Mar 29 11:10:33 DBSERVER sshd[29238]: error: maximum authentication attempts exceeded for root from 113.122.43.185 port 46017 ssh2 [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185  user=root
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:11:36 DBSERVER sshd[29245]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:11:38 DBSERVER sshd[29245]: Failed password for root from 116.31.116.7 port 24892 ssh2
Mar 29 11:11:43 DBSERVER sshd[29245]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 24892 ssh2]
Mar 29 11:11:43 DBSERVER sshd[29245]: Received disconnect from 116.31.116.7 port 24892:11:  [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: Disconnected from 116.31.116.7 port 24892 [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:12:39 DBSERVER sshd[29247]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:12:41 DBSERVER sshd[29247]: Failed password for root from 116.31.116.7 port 26739 ssh2
Mar 29 11:12:45 DBSERVER sshd[29247]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 26739 ssh2]
Mar 29 11:12:45 DBSERVER sshd[29247]: Received disconnect from 116.31.116.7 port 26739:11:  [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: Disconnected from 116.31.116.7 port 26739 [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:13:41 DBSERVER sshd[29249]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:13:43 DBSERVER sshd[29249]: Failed password for root from 116.31.116.7 port 27040 ssh2

gesperrte IP versucht immer noch.

Wenn ich sudo iptables -L INPUT -v -nmich jedoch erkundige, erhalte ich Folgendes:

Chain INPUT (policy ACCEPT 228 packets, 18000 bytes)
 pkts bytes target     prot opt in     out     source               destination
 6050  435K f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22

Was mache ich hier falsch?

Wie kann ich alle gesperrten IP-Adressen anzeigen?

Danke im Voraus.


"Total" bedeutet "Total", das jemals gebannt wurde, und nicht "Total", das derzeit gebannt wurde. Der einzige Ort, an dem Sie zuvor gesperrte Adressen finden, ist in den Protokollen (sofern Sie diese aufbewahrt haben).
Hören Sie auf, Monica

in der jail.local oder in der jail.conf scheinen Sie eine kleine zu haben bantime. Machen Sie es 200moder noch höher und dann sudo service fail2ban restartund dannfail2ban-client status sshd
Allen King

Antworten:


19

Bitte beachten Sie, dass das fail2ban-Verbot von IP nur vorübergehend ist.

Die vollständige Liste der gesperrten IP-Adressen können Sie am besten in der Protokolldatei nachlesen:

sudo zgrep 'Ban:' /var/log/fail2ban.log*

Mit dem folgenden Befehl können Sie auch eine saubere Liste der Eingaberegeln erstellen:

sudo iptables -L INPUT -v -n | less

3
In meinen Logfiles ist kein Doppelpunkt (wird also benötigt, um das grep anzupassen). Ich gehe jedoch als Kommentar und nicht als Änderung, da ich nicht weiß, wie weit verbreitet dies ist / ob es sich um eine kürzliche Änderung handelt.
KWAH

Beachten Sie, dass das Auflisten von iptables-Regeln nur funktioniert, wenn iptables Ihre Sperraktion ist. Manchmal ist das nicht der Fall.
Gilad Mayani

@kwah das gleiche für mich, kein Doppelpunkt in der Protokolldatei. Vermutlich eine kürzliche Änderung in der Ausgabe oder ein Tippfehler.
David Mordigal

Entfernen Sie das ':' nach dem Suchbegriff 'Ban', da das ':' nicht mehr in die Protokolldatei geschrieben wird. So können Sie die gesperrten IPs mit dem oben genannten Befehl wieder sehen.
Mario Neubauer

9

So zeigen Sie die gesamte iptables-Reihe an:

sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0"'

So zeigen Sie nur die IP-Adresse an:

sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0" {print $4}'

Sie können "REJECT" je nach Fall durch "DROP" ändern.


6

Ähnlich wie bei NA AE oben, mit den Kommentaren von kwaa , werden hier alle IPs aufgelistet:

sudo zgrep 'Ban' /var/log/fail2ban.log*

aber diese Ausgabe hat so viele Zeilen. Dies zählt die Zeilen aller protokollierten gesperrten (und wahrscheinlich nicht gesperrten) IPs:

sudo zgrep 'Ban' /var/log/fail2ban.log* | wc -l

Die Ausgabe des obigen Befehls (mit Zeilenzahl) sollte mit der Anzahl 'Total Banned' in der Statusausgabe von fail2ban übereinstimmen:

fail2ban-client status sshd

getestet in Ubuntu 18.04.1 LTS.

Meine Ausgabe von 'wc -l' Zeile:

7244

Und vom Status von fail2ban wird dieselbe 7244-Nummer überprüft:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 7
|  |- Total failed: 49457
|  `- File list:    /var/log/auth.log
`- Actions
   |- Currently banned: 9
   |- Total banned: 7244
   `- Banned IP list:   [...]

4

Nur zu Ihrer Information:

  • "Total Banned" sind die gesamten IPs, die für dieses Gefängnis gebannt wurden (und wahrscheinlich nicht gebannt wurden).
  • "Derzeit gesperrt" sind die EINZIGEN IP-Adressen, die derzeit für dieses Gefängnis gesperrt sind (und die IP-Liste bestätigt dies).

Hoffentlich hilft das.


4

Wenn Sie die Liste der gesperrten IPs mit ihrem Timeout anzeigen möchten (Timeout läuft ab, sie werden aus dem gesperrten Pool entfernt), können Sie Folgendes verwenden:

ipset list

2

Dies zeigt an, was derzeit im Chain fail2ban-ssh-Teil von iptables gesperrt ist (REJECT).

sudo iptables -L fail2ban-ssh -v -n

2

So fügen Sie eine allgemeinere Antwort hinzu:

Bitte beachten Sie, dass iptables möglicherweise nicht die richtige Antwort sind und Ihnen möglicherweise überhaupt keine relevanten Informationen liefern (für das Originalposter ist dies der Fall). Es hängt davon ab, welchen Wert für banaction = [action] Sie in Ihrer DEFAULT- oder spezifischen Gefängnisdefinition verwenden.

Ich habe viele kleine ARM-Boxen, auf denen Linux läuft, aber im Kernel sind nicht alle relevanten iptables-Module verfügbar, sodass iptables in diesem Fall nicht funktioniert.

* BSD hat möglicherweise überhaupt keine iptables und verwendet stattdessen so etwas wie pf .

Auf meinen ARM-Boxen verwende ich route zum Blockieren. Es wird eine ungültige Route für gesperrte IPs hinzugefügt, und daher sind zurückgegebene Pakete nicht zustellbar und IP wird im Wesentlichen blockiert. Funktioniert sehr gut In diesem Fall können Sie gesperrte IP-Adressen überprüfen, indem Sie Folgendes verwenden:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
# normal routing entries
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
# banned IPs (no gateway, no iface)
223.96.95.85    -               255.255.255.255 !H    0      -        0 -

Sie haben viele Möglichkeiten zum Sperren. Und deshalb viele Möglichkeiten, die Verbotsliste zu überprüfen. Welche Sie verwenden, hängt von Ihrer Plattform und Ihren Vorlieben ab. In /etc/fail2ban/action.d/ stehen viele vorkonfigurierte Konfigurationsdateien zur Auswahl.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.