Назад | Перейти на главную страницу

fail2ban не добавляет IP-адреса в ipset (firewalld)

По какой-то причине я не могу понять, Fail2Ban отказывается добавлять IP-адреса в ipset / firewalld.

Меня брутфорсирует китайский IP-адрес, Fail2Ban, похоже, действительно пытается его заблокировать (по крайней мере, это отображается в команде sshd fail2ban-client status), но на самом деле это не останавливает брутфорс сервера, и это не так. не отображается в ipset / iptables / firewalld.

fail2ban-client статус sshd:

[root@GITserver alex]# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 2
|  |- Total failed: 93613
|  `- File list:    /var/log/secure
`- Actions
   |- Currently banned: 2
   |- Total banned: 1003
   `- Banned IP list:   61.177.172.17 95.103.88.106

ipset / firewalld:

[root@GITserver alex]# ipset list
[root@GITserver alex]# firewall-cmd --direct --get-all-rules
[root@GITserver alex]#

Любые идеи? дополнительные журналы могут быть добавлены по запросу

Изменить, все еще нет решения, все еще подвергаются брутфорсу и DDoS-атакам, вот полный /var/log/fail2ban.log, если это может помочь https://paste.fedoraproject.org/paste/Y5aPF8~WY~fpuhaZBDo7Ml5M1UNdIGYhyRLivL9gydE=/raw (предупреждение: 11 МБ)

ЛЮБОЕ ПРЕДЛОЖЕНИЕ БУДЕТ ОЧЕНЬ ПРИНЯТЫ. Все еще под атакой.

Edit2: глядя на журналы, все еще казалось, что используется iptables, хотя /etc/fail2ban/jail.d/00-firewalld.conf определил banaction = firewallcmd-ipset. Я отредактировал основной файл jail.conf, чтобы исправить это, но он ничего не изменил. Вы можете увидеть результат после перезагрузки в журнале выше.

Я потратил целую вечность, пытаясь заставить это работать сегодня на VPS (CentOS Linux 7.6.1810) с fail2ban, установленным через VirtualMin.

В моей ситуации Fail2Ban работал правильно из своих журналов

tail -f /var/log/fail2ban.log

И правильно записывать решения о запрете, однако они не обрабатывались в правилах firewalll. Прочитав все комментариев в ответе, опубликованном Моше, и безуспешно попробовав три решения, я обнаружил, что решение от Geraden07 в обсуждении GitHub, связанном с этим сообщением на форуме, работал над Centos.

1. Создайте новое правило действия. (/etc/fail2ban/action.d/custom-firewalld.conf)

[INCLUDES]
before  =

[Definition]
actionstart =
actionstop =
actioncheck =

actionflush = sed -i '/<source address=/d' /etc/firewalld/zones/drop.xml
actionban = firewall-cmd --change-source=<ip> --zone=drop && firewall-cmd --change-source=<ip> --zone=drop --permanent
actionunban = firewall-cmd --remove-source=<ip> --zone=drop && firewall-cmd --remove-source=<ip> --zone=drop --permanent || echo 0

[Init]

2. Создайте / обновите конфигурацию тюрьмы, чтобы использовать это новое правило по умолчанию. (/etc/fail2ban/jail.local)

[DEFAULT]
banaction = custom-firewalld

3. При необходимости обновите все тюрьмы, которые переопределяют настройки по умолчанию, чтобы использовать новое правило.

Я тестировал это на запрет и разблокировку, и это единственное, что у меня сработало.

Убедитесь, что firewallcmd-ipset действительно существует в вашей системе; его больше нет в CentOS 7.3 и выше.

это обходной путь на основе firewalld воссоздает firewallcmd-ipset. Я собираюсь внедрить это в своей системе.

У меня была такая же проблема, и я думаю, что в fail2ban есть несколько ошибок, которые необходимо исправить, например, 00-firewalld.conf, похоже, полностью игнорируется.

Чтобы решить это установите желаемое действие в разделе фильтра sshd. Моя тюрьма sshd выглядит так (/etc/fail2ban/jail.d/sshd.local)

[sshd]
enabled = true
port = ssh
# set the action explicitly or the default iptables-allports will be used
# ==============================
action = firewallcmd-ipset
# ==============================
logpath = %(sshd_log)s
findtime = 600
maxretry = 3
bantime = 86400

Теперь проблема в том, что время блокировки в вашей тюрьме игнорируется, а время, определенное в /etc/fail2ban/action.d/firewalld-ipset.conf, имеет приоритет. Поэтому отредактируйте этот файл конфигурации действия, чтобы включить новое время запрета.

...
bantime=86400
...

И последняя проблема в том, что bantime = -1 для постоянных банов вроде бы не работает. Разработчики фиксированный это в fail2ban +0.9, но у меня это не работает, хотя я использую fail2ban-0.9.7-1.el7

Для вашего продукта я скопировал firewallcmd-ipset.conf в firewalldcmd-ipset-custom.conf и отредактировал там время запрета. Наконец, в определении тюрьмы sshd установите действие action = firewallcmd-ipset-custom

После внесения изменений перезапустите службу fail2ban.

Некоторый вывод:

# firewall-cmd --direct --get-all-rules
ipv4 filter INPUT_direct 0 -p tcp -m multiport --dports ssh -m set --match-set fail2ban-default src -j REJECT --reject-with icmp-port-unreachable
# iptables -L -n | grep fail2ban
REJECT tcp -- 0.0.0.0/0   0.0.0.0/0    multiport dports 22 match-set fail2ban-default src reject-with icmp-port-unreachable
# ipset list | head
Name: fail2ban-default
Type: hash:ip
Revision: 1
Header: family inet hashsize 1024 maxelem 65536 timeout 86400
Size in memory: 53520
References: 1
Members:
x.x.x.x timeout 78498
y.y.y.y timeout 78506
z.z.z.z timeout 78454

Я до сих пор не понимаю, почему ipset называется fail2ban-default вместо fail2ban-sshd, возможно, у меня что-то неправильно настроено, но шаги, которые я описываю, работают, и теперь IP-адреса блокируются из набора, а у меня нет +1000 правил в iptables больше нет.

Ничего не могу добавить в комментарии.

Как именно вы это настраиваете? Я попытался скопировать вашу конфигурацию действий и поместить ее в специальный файл, добавить в jail.local в качестве запрета по умолчанию, и теперь похоже, что мой fail2ban не видит никаких попыток sshd. Получил 0 в sshd и обычно через минуту делал несколько попыток.

Установка по умолчанию см. Попытки sshd.

Можете ли вы помочь мне с настройкой fail2ban для WordPress? Правила Apache, wordpress-hard из плагина wp и ни один из них ничего не показывает в банах ... теперь также sshd ничего не показывает. Похоже, что fail2ban не работает на centos.

Я попробовал это год назад, и теперь он такой же.

Или как создать все правила шаг за шагом? Как здесь запретить базовую аутентификацию apache? Стоит ли модифицировать фильтры для этого? Это так неприятно софт ... нет документации по этому поводу, все статьи указывают на создание jail.local и некоторых строк и должны работать, но ни одна не работает правильно. Также я ничего не вижу в firewall-cmd --direct --get-all-rules - думаю, что-то должно быть там, даже если запретов нет?