在当今网络环境中,保障服务器和数据的安全性已成为每个网络工程师的核心职责之一,尤其是在使用Linux作为服务器操作系统时,防火墙工具UFW(Uncomplicated Firewall)和虚拟私人网络(VPN)的结合使用,能够为系统提供强大的安全防护能力,本文将深入探讨如何在Ubuntu或Debian系统中配置UFW与OpenVPN(或其他主流VPN服务),实现既严格控制入站流量、又安全访问私有网络资源的目标。
什么是UFW?
UFW是基于iptables的前端工具,旨在简化防火墙规则的管理,它默认启用时会阻止所有外部连接,只允许预定义的服务(如SSH、HTTP等)通过,非常适合新手和运维人员快速上手,其语法简洁,sudo ufw allow ssh 即可开放SSH端口(默认22),而 sudo ufw enable 则激活整个防火墙策略。
为什么需要将UFW与VPN结合使用?
原因很简单:很多企业或个人用户希望远程安全地访问内部服务(如数据库、文件共享、监控系统等),如果直接暴露这些服务到公网,风险极高,通过部署一个可靠的VPN(如OpenVPN或WireGuard),可以创建加密隧道,让远程用户仿佛“置身”于局域网中;再配合UFW,仅允许来自该VPN隧道的IP地址访问特定服务,从而构建一道“双重防线”。
配置步骤如下:
-
安装并配置OpenVPN
使用apt安装OpenVPN及相关工具:sudo apt update && sudo apt install openvpn easy-rsa
接着生成证书和密钥(EasyRSA工具),并配置服务器端的
/etc/openvpn/server.conf,指定本地子网(如10.8.0.0/24)、加密方式(如AES-256-CBC)和端口(如1194 UDP)。 -
启用IP转发和NAT
在服务器上开启IP转发功能:echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf sudo sysctl -p
然后设置SNAT规则,使客户端访问外网时使用服务器IP:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
-
配置UFW规则以信任VPN网络
UFW默认不识别VPN子网,需手动添加规则,若你的OpenVPN分配的子网是10.8.0.0/24,则执行:sudo ufw allow in on tun0 from 10.8.0.0/24
这条规则表示:允许来自TUN接口(即VPN隧道)的流量进入,并且源IP必须属于10.8.0.0/24网段。
-
限制其他来源的访问
比如你想只允许从VPN访问SSH(而非公网直接访问):sudo ufw deny ssh sudo ufw allow ssh from 10.8.0.0/24
即使有人尝试暴力破解SSH,只要不在VPN内,就无法连接。
-
测试与验证
客户端连接成功后,使用ip addr show tun0确认获得IP地址,然后尝试ping服务器内网服务(如数据库),运行sudo ufw status verbose查看当前规则是否生效。
注意事项:
- 始终保持UFW处于启用状态(
sudo ufw enable),避免意外暴露服务。 - 考虑定期更新证书和密钥,防止泄露。
- 若使用WireGuard替代OpenVPN,流程类似,但更轻量高效,适合移动设备频繁连接场景。
UFW + VPN不是简单的叠加,而是通过分层防御机制——UFW控制“谁可以进来”,VPN控制“谁能合法进来”,这种组合特别适用于远程办公、云服务器隔离、物联网设备接入等场景,熟练掌握这一套配置,能显著提升Linux系统的整体安全性,是每一位网络工程师必备的技能。







