我正在尝试在运行 Fedora Server 35 的 VPS 上设置 OpenVPN 服务器。我已经设置并运行了 VPN,但在防火墙设置方面遇到了问题。
这是我第一次管理防火墙,我也不是 Linux 本地人,但我正在努力学习。我遵循了 CentOS 实例的指南,但由于 CentOS 不再存在,我选择了 Contabo 中的 Fedora 映像。
该指南依赖于firewalld
,由于它已在我的 VPS 上安装并部分设置,因此我做了相同的操作。我知道 是firewalld
问题所在,因为当我关闭它时,VPN 客户端可以毫无问题地连接。
配置了 2 个活动区域,FedoraServer
和trusted
。FedoraServer
区域已预先配置了 VPS 映像,并设置为默认区域。我使用以下命令根据指南更改配置:
firewall-cmd --zone=trusted --add-service openvpn
firewall-cmd --zone=trusted --add-service openvpn --permanent
firewall-cmd --add-masquerade
firewall-cmd --add-masquerade --permanent
VAR=$(ip route get 1.1.1.1 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $VAR -j MASQUERADE
firewall-cmd --reload
目前区域信息如下:
[~]# firewall-cmd --info-zone=FedoraServer
FedoraServer (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: no
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[~]# firewall-cmd --info-zone=trusted
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces: tun0
sources:
services: openvpn
ports:
protocols:
forward: yes
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
有趣的警告是,当我将其设置trusted
为默认区域时,我能够连接到正在firewalld
运行的 VPN,NAT 可以正常工作并且可以访问 Internet。
现在,您可以说问题解决了。但由于我缺乏知识,我担心我可能会在安全性上留下漏洞,因为该trusted
区域使用了target: ACCEPT
。
我阅读了 StackExchange、Fedora 论坛和 OpenVPN 论坛上的无数帖子以及firewalld
文档,但一无所获。我觉得我缺乏弄清楚这个问题所需的底层网络知识,而且我不知道该搜索什么了。
任何帮助、提示或指导都将不胜感激!
答案1
您可以将服务添加到受信任区域,然后将接受更改为删除,例如,仅允许 openvpn 和 ssh,您可以这样做
sudo firewall-cmd --zone=trusted --add-service={ssh,openvpn}
sudo firewall-cmd --zone=trusted --set-target=DROP
sudo firewall-cmd --reload
答案2
看起来您走在正确的轨道上,并且在 Fedora 35 上配置 OpenVPN 服务器方面取得了良好的进展。主要关注的是确保您的防火墙设置是安全的并且不会留下任何不必要的漏洞。
让我们解决您的疑虑并提供一些指导:
默认区域:
为不同目的设置不同的区域是很常见的。如果将受信任设置为默认区域可让您的 VPN 正常工作,那就没问题。但是,您正确地指出了目标的担忧:接受。在更安全的配置中,您希望仅限制对必要服务的访问。
FedoraServer专区:
如果您想使用 FedoraServer 区域作为默认区域,则需要确保它允许 OpenVPN 的必要流量。您提到当将受信任设置为默认区域时,OpenVPN 可以正常工作,因此比较两个区域之间的设置可能会有所帮助。调整 FedoraServer 区域:
如果您决定使用 FedoraServer 区域作为默认区域,则需要添加规则以允许 OpenVPN 流量。例如:
防火墙cmd --zone=FedoraServer --add-service=openvpn --permanent 防火墙cmd --reload