Как показать все забаненные 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-адресов?

Заранее спасибо.

Темный Кибер
источник
«Всего» означает общее количество, когда-либо забаненное, а не общее количество, в настоящее время запрещенное Единственное место, где вы найдете ранее запрещенные адреса, - это логи (если вы их сохранили).
Стоп Harm Моника
в jail.local или jail.conf кажется, что у вас есть маленький bantime. Сделать это 200mили даже выше, а затем сделать, sudo service fail2ban restartа затемfail2ban-client status sshd
Аллен Кинг

Ответы:

19

Имейте в виду, что запрет IP-адресов fail2ban носит временный характер.

Лучший способ просмотреть полный список заблокированных IP-адресов - проверить файл журнала:

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

Следующая команда также может дать вам чистый список правил ввода:

sudo iptables -L INPUT -v -n | less
NA AE
источник
3
В моих лог-файлах нет двоеточия (поэтому необходимо настроить grep). Оставляя как комментарий, а не как редактирование, так как я не знаю, насколько это широко распространено / если это недавнее изменение.
Kwah
Имейте в виду, что перечисление правил iptables работает только в том случае, если iptables является вашим действием по запрету. Иногда это не так.
Гилад Майани
@ kwah то же самое для меня, без двоеточия в файле журнала. Вероятно, недавнее изменение в выводе или опечатка.
Дэвид Мордигал
Удалите ':' после поискового термина 'Ban', потому что ':' больше не записывается в файл журнала. Таким образом, вы сможете снова увидеть заблокированные 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}'

Вы можете изменить «ОТКАЗ» на «УСТАВИТЬ», в зависимости от вашего случая.

Цезарь Темудо Годай
источник
6

По аналогии с NA AE выше, включая комментарии kwaa , здесь перечислены все IP-адреса:

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

но этот вывод имеет так много строк. Это подсчитывает количество всех зарегистрированных заблокированных (и, вероятно, небанкованных) ip:

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

Выходные данные вышеуказанной команды (с количеством строк) должны совпадать с количеством «Всего забаненных» в выводе состояния 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
gstlouis
источник
2

Это покажет, что в настоящее время запрещено (REJECT) в цепочке fail2ban-ssh часть iptables.

sudo iptables -L fail2ban-ssh -v -n
IG-88
источник
2

Чтобы добавить более общий ответ:

Обратите внимание, что iptables может быть неправильным ответом и может вообще не дать вам соответствующую информацию (для оригинального постера это так). Это зависит от того, какое значение для banaction = [action] вы используете в своем 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/ имеется множество предварительно настроенных файлов конфигурации.

SRX
источник