
В файле журнала firewalld повторяются следующие сообщения об ошибках.
2019-07-19 14:18:20 ERROR: COMMAND_FAILED: Direct: '/usr/sbin/iptables-restore -w -n' failed: iptables-restore v1.4.21: Set fail2ban-ssh doesn't exist.
Error occurred at line: 2
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
Я искал тут и там, чтобы исправить эту ошибку, но безуспешно. Я использую Centos7 с firewalld и fail2ban.
Я не знаю, в чем именно проблема. Это связано с fail2ban или firewalld?
При запуске systemctl status firewalld -l отображаются следующие сообщения об ошибках:
firewalld[703]: WARNING: '/usr/sbin/iptables-restore --wait=2 -n' failed: iptables-restore v1.4.21: Set fail2ban-sshd doesn't exist.
Error occurred at line: 2
Try 'iptables-restore -h' or 'iptables-restore --help' for more information.
firewalld[703]: ERROR: COMMAND_FAILED
У меня есть следующее содержимое jail.local для fail2ban:
[DEFAULT]
ignoreip = 127.0.0.0/8
bantime = 86400
findtime = 86400
maxretry = 5
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = firewallcmd-ipset
[sshd]
enabled = true
[ssh]
enabled = true
filter = sshd
action = %(action_)s
logpath = /var/log/secure
maxretry = 5
Все остальные конфигурации соответствуют системным настройкам по умолчанию.
Я установил firewalld следующим образом:
sudo yum install firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --remove-service=smtp
sudo systemctl enable firewalld
Наконец, выполняем следующую команду:
# firewall-cmd --direct --get-all-rules
Я получаю следующие результаты:
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 0:65535 -m set --match-set fail2ban-ssh src -j REJECT --reject-with icmp-port-unreachable
Я ценю вашу помощь, так как я больше занимаюсь разработкой, чем серверами.
Мне действительно нужно исправить это как можно скорее. Это для моего производственного сервера.
Спасибо!
решение1
если бы вы проверили свой /var/log/fail2ban.log или где бы вы его ни разместили, вы бы, вероятно, увидели что-то вроде этого
2019-08-01 08:16:14,509 fail2ban.utils [11727]: #39-Лев. 3ef3cd40 -- exec: ipset create f2b-apache-myadmin hash:ip timeout 2160000 firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 0 -p tcp -m multiport --dports http,https -m set --match-set f2b-apache-myadmin src -j REJECT --reject-with icmp-port-unreachable 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ERROR 3ef3cd40 -- stderr: "ipset v7.2: Синтаксическая ошибка: '2160000' выходит за пределы диапазона 0-2147483" 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ОШИБКА 3ef3cd40 -- stderr: "Ошибка: COMMAND_FAILED: '/usr/sbin/iptables-restore -w -n' не удалось: iptables-restore v1.8.2 (устаревшая версия): Набор f2b-apache-myadmin не существует." 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ОШИБКА 3ef3cd40 -- stderr: '' 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ОШИБКА 3ef3cd40 -- stderr: 'Ошибка произошла в строке: 2' 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ОШИБКА 3ef3cd40 -- stderr: "Попробуйте `iptables-restore -h' или 'iptables-restore --help' для получения дополнительной информации." 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ОШИБКА 3ef3cd40 -- stderr: '' 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ОШИБКА 3ef3cd40 -- возвращено 13 2019-08-01 08:16:14,510 fail2ban.actions [11727]: ОШИБКА Не удалось выполнить действие блокировки 'apache-catchall' 'firewallcmd-ipset' info 'ActionInfo({'ip': '128.14.209.154', 'family': 'inet4', 'fid': at 0x3f24b200>, 'raw-ticket': at 0x3f24b7a0>})': Ошибка запуска действия Jail('apache-myadmin')/firewallcmd-ipset 2019-08-01 08:16:14,510 fail2ban.actions [11727]: УВЕДОМЛЕНИЕ [apache-myadmin]
ipset может иметь максимальный тайм-аут 2147483 см.http://ipset.netfilter.org/ipset.man.html
timeout Все типы наборов поддерживают необязательный параметр timeout при создании набора и добавлении записей. Значение параметра timeout для команды create означает значение timeout по умолчанию (в секундах) для новых записей. Если набор создан с поддержкой timeout, то тот же параметр timeout можно использовать для указания нестандартных значений timeout при добавлении записей. Нулевое значение timeout означает, что запись добавляется в набор навсегда. Значение timeout уже добавленных элементов можно изменить, повторно добавив элемент с помощью параметра -exist. Наибольшее возможное значение timeout составляет 2147483 (в секундах).
Поскольку вы используете ipset через firewalld, вам нужно уменьшить время бана в файле jail.local для каждой тюрьмы и установить значение по умолчанию максимум на 2147483 секунды или сколько там это в днях. И тогда все будет хорошо!
решение2
Я знаю, что этому вопросу уже несколько лет, но я только что столкнулся с этой проблемой со старым сервером под управлением Centos7. В конце концов я сузил проблему до неправильного префикса ipset, застрявшего в /etc/firewalld/direct.xml:
... --match-set fail2ban-sshd
...
... вместо ...
...--match-set f2b-sshd
Исправление этого неверного префикса в direct.xml решило для меня эту ошибку.