寻找一个简单但有效的防火墙

寻找一个简单但有效的防火墙

我刚刚安装了一台运行在linuxmint-19.2-xfce-64bit.

我将 Gufw 设置为阻止所有传入和传出流量,但我的系统仍然收到 IP 地址!软件管理器获取查询结果(除非这是本地的?),但 Firefox 至少被阻止了。

那么我怎样才能简单地阻止一切呢?此外,当一个进程尝试建立连接时,我希望在屏幕上通过窗口、弹出窗口或类似通知向我发出警告?

1]

答案1

在 Linux 上,标准网络堆栈禁止发送源 IP 为 0.0.0.0 的 IP 数据包(可能从内核 2.2 开始)。由于这是 DHCP 协议所要求的,因此 DHCP 工具必须绕过此限制。

因此,DHCP 客户端依靠 RAW 套接字来制作源 IP 0.0.0.0 的禁止数据包,并实际将它们用于初始 DHCP 交换。这些数据包绕过网络堆栈,包括 iptables。

以下是一些快速找到的相关链接:

原始套接字使用指南
Red Hat Bugzilla – Bug 1269914 – 无法防火墙通过原始套接字传入的数据包
ISC - DHCP 如何使用原始套接字

无论如何,可以通过使用以太网桥来对此进行防火墙处理,即使其他任何事情都不需要它。因此,您可以选择创建一个桥接接口并在其中奴役您独特的以太网接口(请注意,如果没有复杂的设置,无线 Wifi 接口通常无法在桥接器上工作),并将 DHCP 客户端设置为使用桥接器的自身接口而不是原装以太网接口。然后 DHCP 客户端发出的数据包将被交换,因此需要使用桥接防火墙ebtables(也可以使用 nftables 代替):

ebtables -A OUTPUT -j DROP

对于接收到的数据包也是如此:

ebtables -A INPUT -j DROP

或者,如果您不想这样做,则必须在接口级别更低,这在使用时是可能的tc。假设您的界面被调用eth0(您的图片很难阅读):

添加一个类简单的qdisc 能够附加过滤器:

tc qdisc add dev eth0 root handle 1: prio

添加全部匹配/全部删除过滤器和操作:

tc filter add dev eth0 parent 1: matchall action drop

现在没有任何东西可以从接口出去,但是如果需要的话仍然可以看到传入的数据包。

(您可以使用 恢复所有内容tc qdisc del dev eth0 root

同样,您可以阻止所有传入数据:

tc qdisc add dev eth0 ingress
tc filter add dev eth0 ingress matchall action drop

(用 取消tc qdisc del dev eth0 ingress

我不能说它很简单,但该tc方法通过 4 个命令实现了完全锁定,并且不需要重新配置其他网络工具,如 NetworkManager,就像使用网桥时可能需要的那样(并且它也适用于 Wifi )。

相关内容