Fail2Ban правильно пытается запретить IP, но IP не блокируется - цепочка iptables существует, но не работает

12

Работает на сервере Ubuntu 14.04.

Поэтому у меня fail2ban правильно настроен для обработки /var/log/auth.logпопыток входа по SSH.

После 3 неудачных попыток я вижу это в журнале fail2ban:

2014-11-19 15:22:56,822 fail2ban.actions: WARNING [ssh] Ban BANNED_IP_ADDY

iptables -L показывает эту цепочку:

Chain fail2ban-ssh (1 references)
target     prot opt source               destination         
REJECT     all  --  BANNED_IP_ADDY  anywhere             reject-with icmp-port-unreachable
RETURN     all  --  anywhere             anywhere

Тем не менее, с этого IP я все еще могу войти через SSH без каких-либо проблем.

Та же самая история относится ко всем моим fail2ban-тюрьмам. В Apache, например, я вижу, что fail2ban правильно определяет журнал и утверждает, что он запрещает IP. IP заканчивается в цепочке iptables, но на самом деле IP не отклоняется.

У меня такое ощущение, что в этих случаях SSH не на стандартном порте. Он находится в другом порту.

Поэтому, если я заставлю правило ssh jail использовать новый порт:

[ssh]

enabled  = true
port     = 32323
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 5

Тогда я вижу эту ошибку:

2014-11-19 15:30:06,775 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 32323 -j fail2ban-ssh
iptables -F fail2ban-ssh
iptables -X fail2ban-ssh returned 400
2014-11-19 15:30:06,778 fail2ban.actions.action: ERROR  iptables -N fail2ban-ssh
iptables -A fail2ban-ssh -j RETURN
iptables -I INPUT -p tcp -m multiport --dports 32323 -j fail2ban-ssh returned 400
2014-11-19 15:30:06,779 fail2ban.actions.action: ERROR  iptables -n -L INPUT | grep -q 'fail2ban-ssh[ \t]' returned 100
2014-11-19 15:30:06,780 fail2ban.actions.action: CRITICAL Unable to restore environment

Если я оставлю это как

 port = ssh

Затем он корректно попадает в iptables, но цепочка не работает с REJECTтрафиком (как упоминалось выше).

ОБНОВИТЬ:

Если я изменю:

banaction = iptables-multiport

Для того, чтобы:

banaction = iptables-allports

Тогда, кажется, работает. Каковы последствия этого изменения?

Похоже, что вызывая fail2banбан IP из-за SSH с этим allportsон забанил КАЖДЫЙ порт для этого IP. Преднамеренно забанен из-за повторных неудачных попыток входа по ssh. Также был забанен на любом другом сервисе.

Halsafar
источник
Я никогда не сталкивался с этой проблемой с fail2ban. Если вы хотите вернуться к блокировке одного порта, вы можете попробовать это решение: oschgan.com/drupal/index.php?q=node/52 . В противном случае fail2ban может использовать другие механизмы, такие как hosts.deny или нулевые маршруты, если iptables вызывает горе.
digitaladdictions
Проверьте /etc/fail2ban/actions.d, у него есть файл, соответствующий каждому из этих действий запрета. Внутри вы увидите, какие команды используются для запрета, отмены, запуска и остановки fail2ban. Вы можете попробовать запустить команды actionban вручную и посмотреть, что произойдет. Я
Майкл
1
Что еще есть в твоих iptables? Пожалуйста, предоставьте полный вывод iptables -L -n -v(редактирование IP-адресов при необходимости). В частности, обратите внимание на то -v, что будут давать байты и счетчики пакетов для каждой цепочки и правила, облегчая отладку.
17
У меня была точно такая же проблема. Fail2Ban запрещает IP, я вижу адрес в цепочке fail2ban, я получил электронное письмо, которое забанено, но IP-адрес все еще имеет доступ. Изменение запрета на allports сработало, но не знаю почему!
Ergec

Ответы:

2

Цепочки fail2ban неправильно связаны с цепочками INPUT и OUTPUT. Пожалуйста, отредактируйте ваш вопрос и предоставьте вывод:

iptables -n -L INPUT
iptables -n -L OUTPUT

и все цепочки fail2ban тоже, и я смогу быть более точным.

Marco
источник
0
INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
Заре Каспарян
источник