几天前,我问了这个问题Confuse about fail2ban behavior with firewallD in Centos 7
这是一个带有几条评论的大文本。
在 fail2ban 重启几个小时后,似乎有些东西开始刷新 iptables 我不明白它是什么。
几个月前,我将一些虚拟主机从我使用了 10 多年的专用服务器移到了 Contabo VPS。一切顺利,但 fail2ban 监狱。囚犯逃跑。:)
我的举动是从 Centos 6 到 Centos 7 Webmin/Virtualmin LAMP fail2ban;离开 /etc/sysconfig/iptables,现在使用 firewalld。如前所述,经过几个小时的fail2ban重启,以及一些成功禁止IP后,正如@sebres所建议的那样,由于症状“后遗症”,某些东西正在刷新iptables,例如
2019-12-05 16:55:20,856 fail2ban.action [1514]:错误 iptables -w -n -L INPUT | grep -q 'f2b-proftpd[ \t]' -- 标准输出:''
和“已被禁止”的通知。
我在默认配置中尝试的所有更改都没有改变这一点。
最后我删除了管理fail2ban的Webmin模块并重新安装了该服务。
重命名 /etc/fail2ban 以保留备份配置。
rpm -qa | grep -i fail2ban
然后
yum remove fail2ban-server
yum remove fail2ban-firewalld
yum install fail2ban-firewalld (also installs -server)
yum install fail2ban-systemd
然后将旧的 jail.local 复制到新的 /etc/fail2ban 目录
[默认]
banaction = iptables-multiport
banaction_allports = iptables-allports[sshd]
启用 = 真
端口 = ssh
maxretry = 4
bantime = 7200[ssh-ddos]
启用 = true
端口 = ssh,sftp
过滤器 = sshd-ddos[webmin-auth]
启用 = 真实
端口 = 10000[proftpd]
启用 = 真正的
bantime = -1[后缀]
启用 = 真正的
bantime = -1[dovecot]
启用 = 真正的
bantime = -1[postfix-sasl]
启用 = true
bantime = -1
我还检查了 cron 作业,看看是否有东西可以以任何方式刷新 iptables。
目前,我定期运行一个脚本来手动拒绝那些“已被禁止”的 IP 一次。
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='xxx.xxx.xxx.xxx' reject"
所以我的问题是如何知道什么是flusing iptables。
UPADATE 1
更新到稳定的 V 0.10 fail2ban 版本后,问题似乎消失了,但 5 天后问题又开始了。
以前,在 v0.9 重启后,几个小时后问题就开始了。
UPADATE 2
Runningfail2ban-client -d
我得到“找不到'filter.d/sshd-ddos'的可访问配置文件”。那是因为我在 jail.conf 中保留了旧的 ssh-ddos 配置。
所以,一个子问题是如果我只是做这个改变是对的(至少没有错误fail2ban-client -d
#filter = sshd-ddos
filter = sshd
mode = agressive (as suggested by @sebres)
这是输出fail2ban-client -d
“不,后遗症是因为某些东西是冲洗规则,反之亦然”
我明白,我的英语说得不太流利,我的意思是那是发生某些事情的症状,所以效果。
“那么你真的使用了哪种禁止行动?”
对不起,我对这件事知之甚少。这是 jail.local 的 [Default] 部分中包含的内容吗?
“(例如,你能排除一些由 Contabo 实现的服务,安装或集成在你的 VPS 中,这样做吗?”
我前段时间问过他们,但他们的回答是“......我们正在为我们的客户提供基本的安装......”没有什么技术含量。他们有几个 VPS 服务,我没有看到其他人对此抱怨。
更新 3
第一个 jail.local(来自新的 Webmin/Virtualmin 安装)操作是
action = firewallcmd-ipset[]
action_ = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
我改变了
banaction = iptables-multiport
banaction_allports = iptables-allports
前一段时间。
现在我用 firewallcmd-ipset 作为 [DEFAULT] 返回,这是fail2ban-client -d
输出。
我会检查fail2ban.log。.... 几个小时后,问题又来了。
关于 firewallD Webmin 有一个部分定义了区域/规则和工具来管理它们,而不必在 shell 中编写命令。而已。