Я использовал fail2ban/iptables на сервере Centos 6.
Я перешел на Centos 7 и теперь использую fail2ban/firewallD (устанавливается Webmin/Virtualmin с их настройками по умолчанию)
Это скриншоты cat /var/log/maillog | grep "disconnect from unknown"
cat /var/log/fail2ban.log | grep Ban
отображает только
2019-10-27 16:52:22,975 fail2ban.actions [8792]: УВЕДОМЛЕНИЕ [proftpd] Бан 111.225.204.32
Кроме того tailf /var/log/fail2ban.log
отображает несколько "уже забаненных" одного и того же IP. В этом случае fail2ban после достижения maxretry
пытается заблокировать IP-адрес.
Вот мои настройки (частичные), я оставил их такими, какие они были по умолчанию, но изменил bantimes.
jail.local
[постфикс]
включено = верно
порт = smtp,465,отправка
бантайм = -1[постфикс-sasl]
включено = верно
порт = smtp, 465, отправка, imap3, imaps, pop3, pop3s
бантайм = -1[голубятня]
включено = верно
порт = pop3,pop3s,imap,imaps,submission,465,сито
бантайм = -1
jail.conf
[ПО УМОЛЧАНИЮ]
время поиска = 600
максимальное количество попыток = 5
серверная часть = авто
фильтр = %(__name__)s
порт = 0:65535
banaction = iptables-multiport
banaction_allports = iptables-allports
action_ = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="% > (port)s", protocol="%(protocol)s", chain=" %(цепочка)s"]
действие = %(действие_)с
jail.d/00-firewalld.conf
[ПО УМОЛЧАНИЮ]
banaction = firewallcmd-ipset
Существуют следующие файлы: action.d/firewallcmd-ipset.conf и filter.d/postfix.conf.
firewall-cmd --direct --get-all-rules
фильтр ipv4 INPUT_direct 0 -p tcp -m multiport --dports ssh -m set --match-set fail2ban-default src -j REJECT --reject-with icmp-port-unreachable
ipv4 filter INPUT 0 -p tcp -m multiport --dports ssh -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable
ipv4 filter INPUT 0 -p tcp -m multiport --dports 10000 -m set --match-set fail2ban-webmin-auth src -j REJECT --reject-with icmp-port-unreachable
ipv4 filter INPUT 0 -p tcp -m multiport --dports ssh,sftp -m set --match-set fail2ban-ssh-ddos src -j REJECT --reject-with icmp-port-unreachable
После ручного запуска
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='193.56.28.0/24' reject"
и
firewall-cmd --reload
этот вывод tailf /var/log/fail2ban.log
остановился.
Как я могу заблокировать все эти IP-адреса после того, как они достигнут значения maxretry
? Будут ли они забанены навсегда, несмотря на перезапуск или перезагрузку службы?
Редактировать 1: Из файла fail2ban.log с action=firewalld-cmd ipset
Из файла fail2ban.log с action=iptables-allports
Редактировать 2:
Кажется (я думаю), что-то сбрасывает конфигурации (я думаю, это будет Webmin), потому что через некоторое время я начинаю получать журналы ошибок, такие как failed to execute ban jail 'dovecot' action iptables-allports
, поэтому я пытаюсь сделать это: в action.d создал banning.conf
[Definition]
actionban = /usr/bin/firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='<IP>' reject"; ; /usr/bin/firewall-cmd --reload
И в jail.local
[DEFAULT]
banaction = iptables-multiport
banning
Но я получаю Error in action definition banning
Я знаю, что это не решение.
Перед перемещением сервера я годами использовал fail2ban/iptables (не firewalld), не обращая внимания на настройки по умолчанию.
1 ответ
Как я могу заблокировать все эти IP-адреса после того, как они достигнут значения maxretry?
Вероятно, ваша проблема не связана с maxretry
и т. д.
Если вы видите [jail] Ban 192.0.2.1
и несколько сообщений [jail] 192.0.2.1 already banned
в дальнейшем (особенно через несколько минут после сообщения "Бан" для того же Jail/IP), это означает только то, что ваше действие по бану (firewalld) вообще не работает (после бана злоумышленник-IP все еще может повторить свои попытки).
В последнее время у нас были определенные проблемы с этим (особенно с комбинацией firewalld + CentOS) - см., например, https://github.com/fail2ban/fail2ban/issues/1609, а также связанная с ним проблема firewalld — https://github.com/firewalld/firewalld/issues/515.
Поэтому проверьте свой собственный сетевой фильтр (iptables и т. д.), если вы видите какие-то правила (внесение установленного трафика в белый список) перед цепочками fail2ban, похоже, что ваша конфигурация не поддерживает fail2ban (или любую другую систему банов)... здесь может быть ответом для вас - https://github.com/fail2ban/fail2ban/ issue/2503#issuecomment-533105500.
Вот еще одна похожая проблема с выдержкой из примера, иллюстрирующей «неправильное правило iptables, которое обходит fail2ban» — https://github.com/fail2ban/fail2ban/issues/2545#issuecomment-543347684
В этом случае:
- либо переключите серверную часть firewalld (как было предложено выше);
- или переключите блокировку fail2ban на что-то родное (iptables/ipset/etc).
- или даже добавить еще одно действие, сбрасывающее или убивающее активное установленное соединение забаненного IP (используя что-то вроде tcpkill, killcx, ss и т.д.).
ОБНОВЛЕНИЕ 1
Пример jail.local:
[DEFAULT]
banaction = iptables-multiport
banaction_allports = iptables-allports
[postfix-sasl]
enabled = true
[dovecot]
enabled = true
...
Если после перезагрузки fail2ban вы по-прежнему видите какие-то IP-адреса, делающие попытки после бана и already banned
в fail2ban.log, предоставьте выдержку из журнала fail2ban по первому бану или еще какие-то возможные ошибки ( потому что already banned
слишком поздно и совсем не помогает).
Если ошибок нет, предоставьте вывод iptables -nL
.
Похожие вопросы
Связанные вопросы
Новые вопросы
fail2ban
НЕПРАВИЛЬНЫЕ ВОПРОСЫ ДОЛЖНЫ БЫТЬ ПРОГРАММИРОВАННЫМИ. Fail2ban сканирует файлы журналов и блокирует IP-адреса, которые показывают вредоносные признаки.
ERROR ipset add fail2ban-proftpd 222.182.57.235 timeout -1 -exist -- stderr: 'ipset v7.1: The set with the given name does not exist\n'
, изменил некоторые действия на iptables-allports и получилERROR iptables -w -n -L INPUT | grep -q 'f2b-default[ \t]' -- stdout: ''
иiptables -w -X f2b-default -- stderr: "iptables v1.4.21: Couldn't load target f2b-default':No such file or d
banaction
, либо если установлено значениеaction
/action_
, вы должны указать все ожидаемые параметры, как это установлено в ПО УМОЛЧАНИЮ - см. conf#L174. Или предоставьте выдержку изfail2ban-client -d
для джейла, который не работает.bantime=-1
в файл jail.local по умолчанию. Вот вывод dovecot, proftpd и postfix-sasl docs.google. ком/документ/д/…... 'name', 'default'
в выводе для каждой тюрьмы? Это означает, что вы неправильно установилиaction
(в нем отсутствует имя параметра), поэтому внимательно прочитайте мой второй комментарий: либо используйтеbanaction = firewalld-ipset
, либоaction = firewalld-ipset[...all-parameters-action-needed...]
, как в github.com/fail2ban/fail2ban/blob/…