Jak wyświetlić wszystkie zbanowane IP za pomocą fail2ban?

36

Po uruchomieniu tego polecenia fail2ban-client status sshdotrzymałem to:

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

Pokazuje tylko dwa adresy IP na liście zablokowanych adresów IP zamiast 8, tak jak mówi Total Banned.

Kiedy to robię tail -f /var/log/auth.log, mam to:

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

zablokowane IP nadal próbuje.

Jednak kiedy to sprawdzam, sudo iptables -L INPUT -v -ndostaję to:

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

Co ja tu robię źle?

Jak mogę wyświetlić listę wszystkich zablokowanych adresów IP?

Z góry dziękuję.

Dark Cyber
źródło
„Suma” oznacza całkowitą ilość zbanowanych, a nie całkowitą obecnie zbanowanych. Jedynym miejscem, w którym znajdziesz wcześniej zablokowane adresy, są dzienniki (jeśli je zachowałeś).
Stop Harming Monica,
w jail.local lub jail.conf wydaje się, że masz małe bantime. Zrobić to 200mlub nawet wyższe, a następnie zrobić sudo service fail2ban restart, a następniefail2ban-client status sshd
Allen króla

Odpowiedzi:

19

Należy pamiętać, że banowanie adresów IP przez fail2ban ma charakter tymczasowy.

Najlepszym sposobem na sprawdzenie pełnej listy zablokowanych adresów IP jest sprawdzenie pliku dziennika:

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

Następujące polecenie może również dać ci czystą listę reguł wprowadzania:

sudo iptables -L INPUT -v -n | less
NA AE
źródło
3
W moich plikach dziennika nie ma dwukropka (dlatego potrzebne jest dostosowanie grep). Pozostawiam jednak jako komentarz, a nie jako edycję, ponieważ nie wiem, jak bardzo jest to rozpowszechnione / czy jest to ostatnia zmiana.
kwah
Pamiętaj, że wylistowanie reguł iptables działa tylko w przypadku, gdy iptables jest twoim banującym działaniem. Czasami tak nie jest.
gilad mayani
@kwah to samo dla mnie, bez dwukropka w pliku dziennika. Prawdopodobnie ostatnia zmiana wyniku lub literówka.
David Mordigal,
Usuń „:” po wyszukiwanym haśle „Ban”, ponieważ „:” nie jest już zapisane w pliku dziennika. Dzięki temu będziesz mógł ponownie zobaczyć zablokowane adresy IP za pomocą wyżej wymienionego polecenia.
Mario Neubauer,
9

Aby wyświetlić pełną linię iptables:

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

Aby wyświetlić tylko adres IP:

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

Możesz zmienić „REJECT” za pomocą „DROP”, w zależności od przypadku.

César Themudo Goday
źródło
6

Podobnie jak powyżej NA AE z dołączonymi komentarzami kwaa , zawiera wszystkie IP:

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

ale ten wynik ma tak wiele wierszy. Zlicza linie wszystkich zalogowanych zablokowanych (i prawdopodobnie niezbanowanych) adresów IP:

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

Dane wyjściowe powyższego polecenia (z liczbą wierszy) powinny być zgodne z liczbą „Całkowicie zbanowany” w danych wyjściowych statusu fail2ban:

fail2ban-client status sshd

testowany w Ubuntu 18.04.1 LTS.

Moje wyjście z wiersza „wc -l”:

7244

A ze statusu fail2ban weryfikowany jest ten sam numer 7244:

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:   [...]
Marc Compere
źródło
4

Po prostu FYI:

  • „Całkowicie zbanowany” to łączna liczba adresów IP, które zostały zablokowane w tym więzieniu (i prawdopodobnie zostały zbanowane).
  • „Obecnie zbanowane” to TYLKO adresy IP, które są obecnie zbanowane dla tego więzienia (i lista adresów IP to potwierdza).

Mam nadzieję, że to pomaga.

Rob Pickering
źródło
4

jeśli chcesz zobaczyć listę zablokowanych adresów IP wraz z ich limitem czasu (upływa limit czasu, są one usuwane z zakazanej puli) możesz użyć:

ipset list
gstlouis
źródło
2

To pokaże, co jest obecnie zakazane (ODRZUĆ) w części łańcucha fail2ban-ssh iptables.

sudo iptables -L fail2ban-ssh -v -n
IG-88
źródło
2

Aby dodać bardziej ogólną odpowiedź:

Pamiętaj, że iptables może nie być poprawną odpowiedzią i może w ogóle nie zawierać istotnych informacji (w przypadku oryginalnego plakatu). To zależy od tego, jakiej wartości banaction = [akcja] używasz w DOMYŚLNEJ lub konkretnej definicji więzienia.

Mam wiele małych urządzeń zasilanych ARM z systemem Linux, ale jądro nie ma dostępnych wszystkich odpowiednich modułów iptables, więc iptables nie będą działać w tym przypadku.

* BSD może w ogóle nie mieć iptables i zamiast tego użyj polecenia typu pf .

Na moich polach ARM używam trasy do blokowania. Dodaje nieprawidłową trasę dla zablokowanych adresów IP, dlatego pakiety zwrotne są niemożliwe do dostarczenia, a adres IP jest zasadniczo zablokowany. Działa bardzo dobrze W takim przypadku możesz sprawdzić zablokowane adresy IP, używając:

# 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 -

Masz wiele opcji banowania. A zatem wiele opcji, aby sprawdzić listę banów. Który z nich zależy od twojej platformy i preferencji. Istnieje wiele wstępnie skonfigurowanych plików konfiguracyjnych w: /etc/fail2ban/action.d/ do wyboru.

srx
źródło