我刚刚安装了一台运行在linuxmint-19.2-xfce-64bit
.
我将 Gufw 设置为阻止所有传入和传出流量,但我的系统仍然收到 IP 地址!软件管理器获取查询结果(除非这是本地的?),但 Firefox 至少被阻止了。
那么我怎样才能简单地阻止一切呢?此外,当一个进程尝试建立连接时,我希望在屏幕上通过窗口、弹出窗口或类似通知向我发出警告?
答案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 )。