Вопрос или проблема
кажется, я не могу заставить fail2ban работать.
У меня настроен ufw с таким статусом:
~$ sudo ufw status
Статус: активен
Куда Действие Откуда
-- ------ ----
25/tcp ПОЗВОЛИТЬ Везде
2278/tcp ПОЗВОЛИТЬ Везде
80,143,443,465,587,993/tcp ПОЗВОЛИТЬ Везде
110,995/tcp ПОЗВОЛИТЬ Везде
80/tcp ПОЗВОЛИТЬ Везде
22/tcp ЗАПРЕТИТЬ Везде
25/tcp (v6) ПОЗВОЛИТЬ Везде (v6)
2278/tcp (v6) ПОЗВОЛИТЬ Везде (v6)
80,143,443,465,587,993/tcp (v6) ПОЗВОЛИТЬ Везде (v6)
110,995/tcp (v6) ПОЗВОЛИТЬ Везде (v6)
80/tcp (v6) ПОЗВОЛИТЬ Везде (v6)
22/tcp (v6) ЗАПРЕТИТЬ Везде (v6)
Я не вносил изменения в файл jail.conf
и просто создал файл jail.local
.
/etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1/128
[sshd]
#mode = normal
enabled = true
bantime = 1h
port = 2278
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
[postfix]
enabled = true
bantime = 1h
mode = more
port = smtp,465,submission
filter = postfix
logpath = /var/log/mail.log
[postfix-sasl]
enabled = true
bantime = 1h
maxretry = 5
filter = postfix[mode=auth]
port = smtp,465,submission,imap,imaps,pop3,pop3s
logpath = /var/log/mail.log
~$ sudo fail2ban-client status
Статус
|- Количество тюрем: 3
`- Список тюрем: postfix, postfix-sasl, sshd
~$ sudo fail2ban-client status postfix
Статус для тюрьмы: postfix
|- Фильтр
| |- Текущие ошибки: 0
| |- Всего ошибок: 0
| `- Записи журнала: _SYSTEMD_UNIT=postfix.service
`- Действия
|- В настоящее время заблокировано: 0
|- Всего заблокировано: 0
`- Список заблокированных IP:
Я вручную заблокировал IP:
~$ sudo fail2ban-client -vvv set postfix banip 1.2.3.4
+ 32 743F3BD1E080 fail2ban.configreader INFO Загружаю конфигурации для fail2ban из /etc/fail2ban
+ 32 743F3BD1E080 fail2ban.configreader DEBUG Чтение конфигураций для fail2ban из /etc/fail2ban
+ 33 743F3BD1E080 fail2ban.configreader DEBUG Чтение конфигурационных файлов: /etc/fail2ban/fail2ban.conf
+ 33 743F3BD1E080 fail2ban.configparserinc INFO Загружаю файлы: ['/etc/fail2ban/fail2ban.conf']
+ 33 743F3BD1E080 fail2ban.configparserinc TRACE Чтение файла: /etc/fail2ban/fail2ban.conf
+ 33 743F3BD1E080 fail2ban.configparserinc INFO Загружаю файлы: ['/etc/fail2ban/fail2ban.conf']
+ 33 743F3BD1E080 fail2ban.configparserinc TRACE Общий файл: /etc/fail2ban/fail2ban.conf
+ 34 743F3BD1E080 fail2ban INFO Используя сокет /var/run/fail2ban/fail2ban.sock
+ 34 743F3BD1E080 fail2ban INFO Используя pid файл /var/run/fail2ban/fail2ban.pid, [INFO] ведение журнала в /var/log/fail2ban.log
+ 34 743F3BD1E080 fail2ban HEAVY CMD: ['set', 'postfix', 'banip', '1.2.3.4']
+ 73 743F3BD1E080 fail2ban HEAVY OK : 1
+ 73 743F3BD1E080 fail2ban.beautifier HEAVY Улучшаю 1 с помощью ['set', 'postfix', 'banip', '1.2.3.4']
1
+ 73 743F3BD1E080 fail2ban DEBUG Выход с кодом 0
Команда iptables -nL
не показывает, что этот IP был заблокирован fail2ban:
~$ sudo iptables -nL
Цепочка INPUT (политика DROP)
target prot opt source destination
ufw-before-logging-input 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-before-input 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-after-input 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-after-logging-input 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-reject-input 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-track-input 0 -- 0.0.0.0/0 0.0.0.0/0
Цепочка FORWARD (политика DROP)
target prot opt source destination
ufw-before-logging-forward 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-before-forward 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-after-forward 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-after-logging-forward 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-reject-forward 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-track-forward 0 -- 0.0.0.0/0 0.0.0.0/0
Цепочка OUTPUT (политика ACCEPT)
target prot opt source destination
ufw-before-logging-output 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-before-output 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-after-output 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-after-logging-output 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-reject-output 0 -- 0.0.0.0/0 0.0.0.0/0
ufw-track-output 0 -- 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-after-forward (1 ссылка)
target prot opt source destination
Цепочка ufw-after-input (1 ссылка)
target prot opt source destination
ufw-skip-to-policy-input 17 -- 0.0.0.0/0 0.0.0.0/0 udp dpt:137
ufw-skip-to-policy-input 17 -- 0.0.0.0/0 0.0.0.0/0 udp dpt:138
ufw-skip-to-policy-input 6 -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:139
ufw-skip-to-policy-input 6 -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:445
ufw-skip-to-policy-input 17 -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ufw-skip-to-policy-input 17 -- 0.0.0.0/0 0.0.0.0/0 udp dpt:68
ufw-skip-to-policy-input 0 -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type BROADCAST
Цепочка ufw-after-logging-forward (1 ссылка)
target prot opt source destination
LOG 0 -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
Цепочка ufw-after-logging-input (1 ссылка)
target prot opt source destination
LOG 0 -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
Цепочка ufw-after-logging-output (1 ссылка)
target prot opt source destination
LOG 0 -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW ALLOW] "
Цепочка ufw-after-output (1 ссылка)
target prot opt source destination
Цепочка ufw-before-forward (1 ссылка)
target prot opt source destination
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT 1 -- 0.0.0.0/0 0.0.0.0/0 icmptype 3
ACCEPT 1 -- 0.0.0.0/0 0.0.0.0/0 icmptype 11
ACCEPT 1 -- 0.0.0.0/0 0.0.0.0/0 icmptype 12
ACCEPT 1 -- 0.0.0.0/0 0.0.0.0/0 icmptype 8
ufw-user-forward 0 -- 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-before-input (1 ссылка)
target prot opt source destination
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ufw-logging-deny 0 -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
DROP 0 -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
ACCEPT 1 -- 0.0.0.0/0 0.0.0.0/0 icmptype 3
ACCEPT 1 -- 0.0.0.0/0 0.0.0.0/0 icmptype 11
ACCEPT 1 -- 0.0.0.0/0 0.0.0.0/0 icmptype 12
ACCEPT 1 -- 0.0.0.0/0 0.0.0.0/0 icmptype 8
ACCEPT 17 -- 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
ufw-not-local 0 -- 0.0.0.0/0 0.0.0.0/0
ACCEPT 17 -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
ACCEPT 17 -- 0.0.0.0/0 239.255.255.250 udp dpt:1900
ufw-user-input 0 -- 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-before-logging-forward (1 ссылка)
target prot opt source destination
LOG 0 -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW AUDIT] "
Цепочка ufw-before-logging-input (1 ссылка)
target prot opt source destination
LOG 0 -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW AUDIT] "
Цепочка ufw-before-logging-output (1 ссылка)
target prot opt source destination
LOG 0 -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW AUDIT] "
Цепочка ufw-before-output (1 ссылка)
target prot opt source destination
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ufw-user-output 0 -- 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-logging-allow (0 ссылок)
target prot opt source destination
LOG 0 -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW ALLOW] "
Цепочка ufw-logging-deny (2 ссылки)
target prot opt source destination
LOG 0 -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW AUDIT INVALID] "
LOG 0 -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
Цепочка ufw-not-local (1 ссылка)
target prot opt source destination
RETURN 0 -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
RETURN 0 -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type MULTICAST
RETURN 0 -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type BROADCAST
ufw-logging-deny 0 -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10
DROP 0 -- 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-reject-forward (1 ссылка)
target prot opt source destination
Цепочка ufw-reject-input (1 ссылка)
target prot opt source destination
Цепочка ufw-reject-output (1 ссылка)
target prot opt source destination
Цепочка ufw-skip-to-policy-forward (0 ссылок)
target prot opt source destination
DROP 0 -- 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-skip-to-policy-input (7 ссылок)
target prot opt source destination
DROP 0 -- 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-skip-to-policy-output (0 ссылок)
target prot opt source destination
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-track-forward (1 ссылка)
target prot opt source destination
Цепочка ufw-track-input (1 ссылка)
target prot opt source destination
Цепочка ufw-track-output (1 ссылка)
target prot opt source destination
ACCEPT 6 -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW
ACCEPT 17 -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW
Цепочка ufw-user-forward (1 ссылка)
target prot opt source destination
Цепочка ufw-user-input (1 ссылка)
target prot opt source destination
ACCEPT 6 -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
ACCEPT 6 -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2278
ACCEPT 6 -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,143,443,465,587,993
ACCEPT 6 -- 0.0.0.0/0 0.0.0.0/0 multiport dports 110,995
ACCEPT 6 -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
DROP 6 -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Цепочка ufw-user-limit (0 ссылок)
target prot opt source destination
LOG 0 -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 5 LOG flags 0 level 4 prefix "[UFW LIMIT BLOCK] "
REJECT 0 -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Цепочка ufw-user-limit-accept (0 ссылок)
target prot opt source destination
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-user-logging-forward (0 ссылок)
target prot opt source destination
Цепочка ufw-user-logging-input (0 ссылок)
target prot opt source destination
Цепочка ufw-user-logging-output (0 ссылок)
target prot opt source destination
Цепочка ufw-user-output (1 ссылка)
target prot opt source destination
Сервис Fail2ban работает.
~$ sudo systemctl status fail2ban.service
● fail2ban.service - Служба Fail2Ban
Loaded: загружен (/usr/lib/systemd/system/fail2ban.service; включен; предустановка: включен)
Active: активен (работает) с Вт 2024-11-12 21:09:28 CET; 1ч 6мин назад
Docs: man:fail2ban(1)
Main PID: 1001 (fail2ban-server)
Tasks: 9 (лимит: 4556)
Memory: 49.7M (макс: 53.2M)
CPU: 10.557s
CGroup: /system.slice/fail2ban.service
└─1001 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Nov 12 21:09:28 crosis systemd[1]: Запущена служба fail2ban.service - Служба Fail2Ban.
Nov 12 21:09:29 crosis fail2ban-server[1001]: 2024-11-12 21:09:29,352 fail2ban.configreader [1001]: ПРЕДУПРЕЖДЕНИЕ 'allowipv6' не определено в 'Definition'. Используется значение по умолчанию: 'auto'
Nov 12 21:09:30 crosis fail2ban-server[1001]: Сервер готов
Не хватает ли мне чего-то? Делаю ли я что-то не так?
Ответ или решение
Проблема, с которой вы столкнулись, заключается в том, что Fail2ban активен, настроены необходимые правила, но они не отображаются в iptables. Давайте разберем несколько важных аспектов, которые могут помочь вам устранить эту проблему.
Проверка настройки UFW (Uncomplicated Firewall)
-
Конфликт настроек: UFW обрабатывает правила фаервола, и если он включен, то, как правило, конфигурация iptables будет управляться через него. Fail2ban может не вносить изменения, если UFW настроен на блокировку определенных действий. Вам необходимо убедиться, что UFW не блокирует добавленные правила Fail2ban.
Проверьте, активированы ли правила для Fail2ban. Существует команда, которая позволяет это сделать:
sudo ufw status verbose
Если UFW блокирует необходимые порты или IP-адреса, попробуйте временно отключить правила UFW для тестирования:
sudo ufw disable
После проверки включите UFW снова и проанализируйте его конфигурацию.
-
Правила входящих и исходящих соединений: Ваша конфигурация UFW показывает, что порт 22 заблокирован. Убедитесь, что данный порт открыт для вашего SSH, иначе Fail2ban просто не сможет работать должным образом.
Проверьте настройки Fail2ban
-
Точность конфигурации: Убедитесь, что ваш файл конфигурации
/etc/fail2ban/jail.local
корректно настроен. В этом случае:- Раздел
[sshd]
указывает на порт 2278, который используется для SSH. Если у вас используется стандартный порт 22, вам нужно изменить его на 22 или настроить SSH на использование порта 2278. - Убедитесь, что фильтры и журналы (лог-файлы), указанные в конфигурации, существуют и корректны.
- Раздел
-
Логи Fail2ban: Проверьте журналы Fail2ban:
cat /var/log/fail2ban.log
Логи могут предоставить информацию о проблемах, которые возникают во время работы Fail2ban.
-
Статусы и действия: Убедитесь, что в jails действуют соответствующие действия. Для jails с включёнными фильтрами, проверьте их статус:
sudo fail2ban-client status sshd
Это позволит узнать, какие IP-адреса уже были заблокированы.
Проверка iptables
Если все настройки корректны, проверьте, правильно ли Fail2ban интегрирован с iptables. Вам нужно убедиться, что Fail2ban использует iptables как метод блокировки IP, и что нет настроек в системе, которые этому препятствуют.
-
Список правил: Выполните команду для проверки правил iptables:
sudo iptables -L -n -v
Это покажет, какие правила применены и какие пакеты обрабатываются.
-
Перезапуск Fail2ban: Если изменения были внесены в конфигурацию или настройки, перезапустите службу Fail2ban:
sudo systemctl restart fail2ban
После этого снова проверьте статус и правила.
Заключение
Проанализировав предложенные аспекты, вы сможете более точно идентифицировать и устранить основные причины, по которым Fail2ban не вносит изменения в iptables. Если после выполнения всех рекомендаций проблема остается, возможно, потребуется дополнительное исследование логов или оценка конфликта с другими системами безопасности. Всегда рекомендуется вести резервное копирование конфигураций перед внесением изменений.