Як показати всі заборонені ip з fail2ban?


36

Коли я запускаю цю команду, fail2ban-client status sshdя отримав це:

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

Він показує лише два IP-адреси у списку заборонених IP-адрес, а не 8, як каже Total Banned.

Поки я tail -f /var/log/auth.logце:

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

заборонено IP все ще намагаються.

Однак коли я перевіряю, sudo iptables -L INPUT -v -nя отримав це:

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

Що я тут роблю неправильно?

Як я можу показати весь список заборонених IP-адрес?

Заздалегідь спасибі.


"Усього" означає загальну кількість заборонених, а зараз не заборонену. Єдине місце, де ви знайдете раніше заборонені адреси, - це журнали (якщо ви їх зберігали).
Зупиніть шкодити Моніці

у jail.local або jail.conf, здається, у вас є невеликий bantime. Зробіть це 200mабо навіть вище, а потім зробіть, sudo service fail2ban restartа потімfail2ban-client status sshd
Аллен Кінг,

Відповіді:


19

Будь ласка, майте на увазі, що заборона забороненої IP-адреси має тимчасовий характер.

Найкращий спосіб ознайомитися з повним списком заблокованих IP-адрес - перевірити файл журналу:

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

Наступна команда також може дати вам чистий список правил введення:

sudo iptables -L INPUT -v -n | less

3
У моїх журналах немає товстої кишки (таким чином, вона потрібна для регулювання грепа). Залишаючи коментар, а не редагування, хоча я не знаю, наскільки це широко поширене / якщо це нещодавня зміна.
kwah

Майте на увазі, що перелік правил iptables працює лише у тому випадку, якщо iptables є вашою заборонною дією. Іноді це не так.
gilad mayani

@kwah для мене однакова, у файлі журналу немає двокрапки. Можливо, нещодавня зміна результатів чи друкарська помилка.
Девід Мордігал

Видаліть ":" після пошукового терміну "Заборона", оскільки ":" більше не записується у файл журналу. Таким чином, ви зможете знову побачити заблоковані IP-адреси за допомогою вищезгаданої команди.
Маріо Нойбауер

9

Щоб переглянути повний рядок iptables:

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

Щоб переглянути лише IP-адресу:

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

Ви можете змінити "REJECT" на "DROP", залежно від вашого випадку.


6

Подібно до NA AE вище із включеними коментарями kwaa , у цьому списку перелічені всі IP-адреси:

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

але цей вихід має стільки рядків. Він рахує рядки всіх зареєстрованих заборонених (і, ймовірно, не заборонених) ip-адрес:

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

Вихід з вищевказаної команди (з підрахунком рядків) повинен відповідати кількості "Total Banned" у вихідному статусі fail2ban:

fail2ban-client status sshd

перевірена в Ubuntu 18.04.1 LTS.

Мій вихід із рядка 'wc -l':

7244

І з статусу fail2ban перевіряється той самий номер 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:   [...]

4

Просто вигадка:

  • "Повна заборона" - це загальна кількість IP-адрес, заборонених до цієї в'язниці (і, ймовірно, заборонені).
  • "На даний момент заборонено" - це ТІЛЬКИ IP-адреси, які наразі заборонені для цієї в'язниці (і список IP-адрес це підтверджує).

Сподіваюся, що це допомагає.


4

якщо ви хочете переглянути список заборонених IP-адрес із їх таймаутом (час закінчення закінчується, вони видаляються із забороненого пулу), ви можете використовувати:

ipset list

2

Це покаже, що наразі заборонено (REJECT) у частині iptables Chain fail2ban-ssh.

sudo iptables -L fail2ban-ssh -v -n

2

Щоб додати більш загальну відповідь:

Зверніть увагу, що iptables може бути невірною відповіддю і взагалі може не дати вам відповідної інформації (для оригінального плаката це). Це залежить від того, яке значення для banaction = [дії] ви використовуєте у своєму DEFAULT або конкретному в'язничному визначенні.

У мене є багато невеликих коробок ARM під управлінням Linux, але у ядра немає всіх відповідних модулів iptables, тому iptables не працюватиме в цьому випадку.

* BSD може взагалі не мати iptables і використовувати натомість щось на зразок pf .

У своїх коробках ARM я використовую маршрут для блокування. Він додає недійсний маршрут для заборонених IP-адрес, тому пакети повернення недоступні, а IP по суті заблокований. Працює дуже добре. У такому випадку ви можете перевірити заборонені IP-адреси, скориставшись:

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

У вас є багато варіантів заборони. І тому багато варіантів перевірки списку заборон. Який з них використовувати, залежить від вашої платформи та переваг. У налаштуваннях /etc/fail2ban/action.d/ є багато попередньо налаштованих конфігураційних файлів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.