我需要使用防火墙来让 fail2ban 正常工作吗?
fail2ban 可以仅使用 iptables 来阻止 IP 吗?
我在 CentOS 8 vps 上安装了 iptables-service。我使用 nftables v0.9.3 (Topsy) 来限制/授予访问权限。Firewalld 已停止且未运行,但我猜 fail2ban 需要使用 Firewalld 来阻止 IP?
感谢有关这个问题的任何提示或想法。
答案1
您可以配置您的 fail2ban 实例以指定它将使用哪种禁止操作,因此建议使用本机网络过滤器(因此不建议使用防火墙)。
可用的操作取决于您的 fail2ban 版本,例如最新的 0.10/0.11 除了几个 iptables 之外还nftables动作。
如果您使用nftables
,最好也禁止使用nftables
动作(大多数 iptables 只会模拟 nftables)。
另外如果你的版本比较旧(仍然没有),你可以尝试复制最新版本的操作/etc/fail2ban/action.d
并尝试一下。
要覆盖默认设置,只需banaction
在默认部分中设置jail.local
:
[DEFAULT]
# default type of nftables is multiport: banaction = nftables[type=multiport]
banaction = nftables
banaction_allports = nftables[type=allports]
答案2
除了 serbes 所说的之外,我还必须警告你。
确实,fail2ban偏好原始 iptables 而不是 ufw 或 firewalld 或其他更高层的帮助程序。但是,如果你有一些规则保存/恢复机制(比如netfilter-persistent
在 Debian 中;我不知道在 CentOS 中这种东西叫什么,抱歉),就会出现烦人的陷阱。重新启动时,它会在停止时保存 fail2ban 添加的规则并在启动期间恢复它们,和开始时,fail2ban 也会再次添加它们。因此,您最终会得到两个相同的 fail2ban 规则集。下次重新启动时,它们将再次相乘。如此反复。
这不会破坏任何东西,但这会在某种程度上掩盖 iptables 的直接使用。要解决这个问题,您需要自定义 fail2ban 操作。您需要它在 jail 启动期间不安装任何防火墙规则,然后手动安装这些规则并依靠您的规则保存/恢复服务。此外,最好将 fail2ban 设置为使用 ipset,并且不要通过规则保存服务保存 ipset。这样一切都会干净。
或者,不要将规则保存/恢复服务与 fail2ban 一起使用。