我想在我的计算机上配置防火墙终止开关,但不知道如何进行。我想阻止所有传入流量。仅允许特定 IP 地址、端口和接口上的传出流量。
这是 ufw 的替代方案:
ufw default deny incoming
ufw default deny outgoing
ufw allow out to $IP port $PORT proto { udp | tcp }
ufw allow out on $VPN_INTERFACE
ufw allow in on $VPN_INTERFACE from any to any port 60002
谢谢!
答案1
这是从我的自己的博客我在这里详细解释了一些关于区域、政策和丰富规则的内容。
Firewalld 可与区域和策略配合使用。为了实现您想要的目标,我们必须将所有面向互联网的卡分配到仅 VPN 区域,并创建一个策略来过滤进入该区域的所有流量。
在这里,我假设您只想过滤来自您自己的计算机的流量,因此该策略将具有入口区域 HOST 和出口区域 VPN-Only。
创建仅 VPN 区域:
firewall-cmd --permanent --new-zone VPN-Only
创建 VPN-Killswtich 策略:
firewall-cmd --permanent --new-policy VPN-Killswitch
策略的默认目标(这意味着删除我们未明确允许的所有内容):
firewall-cmd --permanent --policy VPN-Killswitch --set-target DROP
重新加载以应用更改:
firewall-cmd --reload
现在让我们添加允许出站流量到达 VPN IP 的策略规则。对每个区域重复此规则,将 1.2.3.4 替换为您的 VPN 的 IP。如果您使用的是wireguard,请将openvpn 更改为wireguard。
firewall-cmd --policy VPN-Killswitch --add-rich-rule='rule family="ipv4" destination address="1.2.3.4" service name="openvpn" accept'
允许传出流量到本地网络:
firewall-cmd --policy VPN-Killswitch --add-rich-rule='rule family="ipv4" destination address="192.168.1.0/24" accept'
设置入口区域:
firewall-cmd --policy VPN-Killswitch --add-ingress-zone HOST
和出口区:
firewall-cmd --policy VPN-Killswitch --add-egress-zone VPN-Only
现在我们只需要将网卡添加到 VPN-Only 区域即可。这可以通过 NetworkManager GUI(或 CLI)或通过 firewalld 来完成。
使用 NetworkManager 打开要过滤的连接的属性窗口,然后在“常规配置”选项卡上将“防火墙区域”设置为“仅限 VPN”。
或者使用firewalld:
firewall-cmd --permanent --zone VPN-Only --add-interface=enp0s8
测试设置并使其永久化:
firewall-cmd --runtime-to-permanent