潜在的 ufw 和 fail2ban 冲突

Ada*_*sen 48 iptables security ufw fail2ban

运行 fail2ban 和 ufw 会导致问题吗?我注意到fail2ban 修改了iptables 规则,但是ufw 已经定义了大量的iptables 规则……所以我不确定fail2ban 是否会搞砸这些。

Pan*_*her 53

您可以同时使用 ufw 和 fail2b,但如前所述,(ufw) 规则的顺序很重要。

开箱即用,fail2ban 使用 iptables 并首先在 INPUT 链中插入规则。这不会对 ufw 造成任何伤害或冲突。

如果您希望完全集成 fail2ban 以使用 ufw(而不是 iptables)。您将需要编辑许多文件,包括

/etc/fail2ban/jail.local
Run Code Online (Sandbox Code Playgroud)

jail.local 是您定义 services 的地方,包括它们正在侦听的端口(想想将 ssh 更改为非默认端口)以及要采取的操作。

**请注意*:永远不要编辑jail.conf,您的更改应该在jail.local!该文件以以下内容开头:

# Changes:  in most of the cases you should not modify this
#           file, but provide customizations in jail.local file,
#           or separate .conf files under jail.d/ directory
Run Code Online (Sandbox Code Playgroud)

以 ssh 为例,还要注意非默认端口的定义=)

[ssh]
enabled = true
banaction = ufw-ssh
port = 2992
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
Run Code Online (Sandbox Code Playgroud)

然后配置 fail2ban 以在(每个服务一个 .conf 文件)中使用 ufw

/etc/fail2ban/action.d/ufw-ssh.conf
Run Code Online (Sandbox Code Playgroud)

语法是

[Definition]
actionstart =
actionstop =
actioncheck =
actionban = ufw insert 1 deny from <ip> to any app OpenSSH
actionunban = ufw delete deny from <ip> to any app OpenSSH
Run Code Online (Sandbox Code Playgroud)

注意:您配置的fail2ban使用UFW和插入新规则的第一使用“插入1”语法。无论顺序如何,删除都会找到规则。

有一篇很好的博客文章,这里有更详细的介绍

http://blog.vigilcode.com/2011/05/ufw-with-fail2ban-quick-secure-setup-part-ii/

[编辑] 对于 ubuntu 16.04+

默认情况下带有内容的“ defaults-debian.conf/etc/fail2ban/jail.d

[sshd]
enabled = true
Run Code Online (Sandbox Code Playgroud)

将激活fail2ban的ssh保护。

您需要将其设置为 false。

然后创建一个 jail.local 就像你通常会做的那样,我的会是这样的:

[ssh-with-ufw] 
enabled = true 
port = 22 
filter = sshd 
action = ufw[application="OpenSSH", blocktype=reject] 
logpath = /var/log/auth.log 
maxretry = 3
Run Code Online (Sandbox Code Playgroud)

在fail2ban默认安装中已经有一个ufw.conf,所以不需要创建一个。

对您 jail.local 的唯一特定更改是在操作行中,您需要将相关的应用程序放在保护中,以及您希望获得的结果。

ufw 倾向于自动检测使用网络运行的一定数量的应用程序。要获得列表,只需键入sudo ufw app list. 它区分大小写。

重新加载fail2ban,您将不再看到fail2ban 链,如果有任何IP 获得一个块,您将在其中看到它 sudo ufw status

  • 简而言之:如果没有按照说明进行集成,ufw 和 fail2ban 都可以正常工作。Fail2ban 将在应用 ufw 的规则之前插入其阻止定义。另一方面,如果希望块显示在“ufw status”中,则需要集成。除了在“ufw status”中显示块之外,还有其他好处吗?特别是因为该博客的作者说了以下内容:*开箱即用的 Fail2ban 适用于 iptables 规则,但是这些与我们更简单的 UFW 命令(...)* (7认同)
  • 我要添加一条注释,**不建议**使用 ufw 操作,因为它不会阻止已建立的连接。因此,在 ip 规则最终阻止某个 IP 之前,您仍然可以收到数千个攻击请求。默认情况下效果很好。在“ufw status”中查看被阻止的 IP 是没有意义的,因为您可以使用“fail2ban-client”工具来查看被阻止的 IP。 (2认同)

小智 6

安装 0.9.5 的 fail2ban 包括一个ufw我必须为banaction

  • 作为记录,该操作也存在于 0.8.13 版本中 (2认同)