这是生产服务器,我需要非常小心地添加规则,我不确定什么是正确的规则。
目前我的 UFW 规则允许从任何 IP 和 WireGuard 进行 SSH 连接,我自己的 IP (YYY.YYY.YYY.YYY) 也允许我连接到任何端口。目前任何其他 IP 都可以通过 VPN 直接连接。
# sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] XXXXX/udp ALLOW IN Anywhere
[ 2] OpenSSH ALLOW IN Anywhere
[ 3] Anywhere ALLOW IN YYY.YYY.YYY.YYY
[ 4] Anywhere on eth0 ALLOW FWD Anywhere on wg0
[ 5] XXXXX/udp (v6) ALLOW IN Anywhere (v6)
[ 6] OpenSSH (v6) ALLOW IN Anywhere (v6)
[ 7] Anywhere (v6) on eth0 ALLOW FWD Anywhere (v6) on wg0
这是我的服务器上的 WireGuard 配置
#cat /etc/wireguard/wg0.conf
[Interface]
PrivateKey = .............................=
Address = 10.8.0.1/24, fd..:....:....::1/64
ListenPort = XXXXX
SaveConfig = true
PostUp = ufw route allow in on wg0 out on eth0
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on eth0
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
我需要禁止其他IP的直接连接,除我的IP之外的任何IP只能通过VPN连接。
例如,我打开了很多 JAVA 端口和一个 SMB 端口,这是我的应用程序需要的:
#sudo netstat -tulpn | grep LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 557/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 641/sshd: /usr/sbin
tcp6 0 0 :::37111 :::* LISTEN 1005/java
tcp6 0 0 :::36069 :::* LISTEN 630/java
tcp6 0 0 :::2181 :::* LISTEN 1005/java
tcp6 0 0 :::9092 :::* LISTEN 630/java
我需要为我的 IP YYY.YYY.YYY.YYY 保存 JAVA 开放端口和 SSH 端口,但需要关闭 VPN 之外的其他 IP 的这些端口。不幸的是,SMB 端口需要向任何 IP 开放,这需要向该服务器开放。
我需要添加哪些 UFW 规则(或者更改 Wareguard 配置)以便只允许一个 IP(YYY.YYY.YYY.YYY)直接连接,而任何其他 IP 只能从 VPN 连接,并且只能使用 WireGuard 连接到任何服务器端口。