生产服务器UFW规则配置咨询:限制SSH及多数端口仅允许指定IP直连与WireGuard访问
生产服务器UFW规则配置咨询:限制SSH及多数端口仅允许指定IP直连与WireGuard访问
嗨,针对你生产服务器的UFW配置需求,我给你梳理了一套安全且符合要求的调整方案,一步步操作就不会有问题:
第一步:先备份现有UFW规则(重中之重!)
防止误操作导致无法连接服务器,先把当前规则导出备份:
sudo ufw show added > ufw_rules_backup.txt
第二步:清理不合理的现有规则
当前你的UFW允许任意IP访问OpenSSH(规则[2]和IPv6的规则[6]),这不符合你“仅允许指定IP和VPN访问”的需求,需要删除:
# 删除IPv4的任意IP SSH规则 sudo ufw delete 2 # 删除IPv6的任意IP SSH规则(如果不需要IPv6可跳过) sudo ufw delete 6
你的自定义IP(YYY.YYY.YYY.YYY)全端口访问规则(规则[3])可以保留,它已经满足你直连所有端口的需求。
第三步:允许WireGuard子网访问所有端口
你的WireGuard服务器使用10.8.0.1/24网段,所以需要添加规则允许整个VPN子网的客户端访问服务器所有端口:
# IPv4规则 sudo ufw allow in from 10.8.0.0/24 to any # 如果你的WireGuard配置了IPv6,对应你的IPv6子网(比如fdxx:xxxx:xxxx::/64)添加: # sudo ufw allow in from fdxx:xxxx:xxxx::/64 to any
第四步:开放SMB端口给所有IP
根据你的需求,SMB需要对所有IP开放,默认SMB使用139和445端口,执行以下命令添加规则:
# 开放SMB的TCP端口(IPv4) sudo ufw allow in 139/tcp sudo ufw allow in 445/tcp # 若需要支持IPv6,添加对应规则: # sudo ufw allow in 139/tcp (v6) # sudo ufw allow in 445/tcp (v6)
如果你的SMB用了自定义端口,把上面的端口号替换成你实际使用的即可。
第五步:设置默认入站规则为拒绝
这一步能确保所有未被明确允许的流量都被阻挡,是实现“仅允许指定IP和VPN访问”的关键:
sudo ufw default deny incoming
⚠️ 注意:执行这条命令前,请务必确认你已经配置好自己IP和WireGuard的访问规则,否则会导致你无法直连服务器!
第六步:验证规则并生效
最后检查调整后的规则是否符合预期,然后重启UFW确保规则生效:
# 查看编号形式的规则列表 sudo ufw status numbered # 重启UFW应用规则 sudo ufw reload
关于WireGuard配置的说明
你当前的/etc/wireguard/wg0.conf里的PostUp/PreDown规则是正确的,它们负责处理VPN的路由转发和NAT,不需要修改,已经能满足VPN客户端访问服务器及出站互联网的需求。
完成以上操作后,你的服务器会实现:
- 只有你的IP(YYY.YYY.YYY.YYY)可以直连所有端口(包括SSH、Java端口等)
- 所有其他IP必须通过WireGuard VPN才能访问服务器的非SMB端口
- SMB端口对所有IP开放,满足业务需求
备注:内容来源于stack exchange,提问作者John14




