UFW(防火墙)没有立即阻止 UDP

UFW(防火墙)没有立即阻止 UDP

我有一个 PBX(电话系统,称为阿斯特西克) 可与 udp 和 tcp 配合使用。有时我会收到来自某些我想阻止的 IP 地址的无效请求。我无法阻止这些请求,除非我重新启动计算机。我认为原因是 UFW 不会阻止已建立的连接

假设我从 IP 地址收到恶意请求 1.2.3.4。然后我需要通过执行以下命令来阻止这些请求:

sudo ufw insert 1 deny from 1.2.3.4 to any

我需要这样insert 1才能使该规则在其他规则之前执行。

无论如何,即使我执行该命令,我仍然看到我的计算机回复1.2.3.4。问题是由于已经建立了连接,因此 ufw 不会丢弃这些数据包,直到这些连接关闭。

我找到了一个临时的解决方案:

1)我打开nano /etc/ufw/before.rules

2)注释以下行:

在此处输入图片描述

(图中未注释的行。但请注释红圈内的所有内容)

3)ufw disable然后重启防火墙ufw enable

如果我注释掉这些行,那么我的防火墙就会按我想要的方式工作。它会立即阻止连接!

问题是,注释掉这些行会导致我的 DNS 停止工作换句话说,现在当我执行时,ping google.com我看到uknown host google.com

为什么当我注释掉这些行时 DNS 就停止工作了?简而言之,我需要在执行时sudo ufw insert 1 deny from 1.2.3.4 to any不再收到来自该 IP 的请求!每次我想阻止 IP 地址时,我都无法承受重新启动计算机的后果。

答案1

远野,

ufw 是 iptables 的前端。您本质上想问的是,当您停止接受相关、已建立的连接时,DNS 为何会失败。conntrack 会跟踪您的连接。如果流量与 conntrack 中的条目匹配,则该流量为已建立。如果已建立的连接创建新连接,则该流量为相关。如果流量是新的,且未建立或未相关,则该流量为新流量。

如果已经建立了连接,则需要在链的开头插入一个 drop 指令。编辑 /etc/ufw/before.rules,以便在注释的规则之前有一个阻止部分。在-A ufw-before-input -s 1.2.3.4 -j DROP那里添加一个条目。然后使用sudo ufw reload

如果您仍然遇到问题,请考虑使用 iptables 而不是 ufw,因为 ufw 是 iptables 的前端,不包含其所有选择。

https://www.cyberciti.biz/faq/how-to-block-an-ip-address-with-ufw-on-ubuntu-linux-server/

https://help.ubuntu.com/community/UFW

https://askubuntu.com/questions/602176/configure-ufw-to-allow-only-established-and-related-conections-on-ipv4

在此处输入链接描述

答案2

UDP 是一种无状态协议,但 Linux 内核仍会跟踪它的 IP 和端口号 30 秒,以确定已建立和相关的流量。(30 秒或中的值/proc/sys/net/netfilter/nf_conntrack_udp_timeout) - ServerFault 链接:Iptables:“-p udp --state ESTABLISHED”

DNS 通过 UDP 工作,因此如果您发送 DNS 查询,并且已注释掉允许相关返回流量的规则,则您将不会收到任何回复 -> DNS 损坏。

由于 UDP“状态”被跟踪了 30 秒,您尝试在 INPUT 顶部插入新的阻止规则不会产生任何效果。“ufw-before-input”首先发生并允许 ESTABLISHED 流量,然后您的 INPUT 规则才会看到它并将其丢弃。

要修复此问题,您需要:

  • 使用类似“conntrack”的命令删除要阻止的主机的跟踪 UDP 条目,然后将阻止规则添加到防火墙。不会有已建立或相关的连接,因此阻止应立即生效。例如删除特定的 conntrack 条目?

  • 重新制定防火墙规则,以便在 DROP 之后在 INPUT 规则中执行 ESTABLISHED、RELATED 规则,而不是先执行它们。

每次我想阻止 IP 地址时,我都无法重新启动计算机

但是您能负担得起一次过滤 40 亿个 IP 地址,并手动阻止它们吗?这似乎不合理。使用 IPS 设备,使用 fail2ban。

相关内容