自建VPN安全加固:从VPS选型到WireGuard隧道优化的完整流程
7/3/2026 · 2 min
1. VPS选型与初始安全配置
选择VPS时,优先考虑提供DDoS防护、BGP会话过滤和严格反滥用政策的提供商。推荐使用KVM虚拟化,避免OpenVZ共享内核。操作系统选择最新的LTS版本(如Ubuntu 22.04或Debian 12),安装后立即执行以下操作:
- 更新系统包:
apt update && apt upgrade -y - 禁用root密码登录,创建sudo用户并配置SSH密钥认证
- 修改SSH端口(如2222),启用Fail2ban防止暴力破解
- 配置UFW或iptables,仅允许必要端口(SSH、WireGuard UDP端口)
2. WireGuard部署与密钥管理
WireGuard以其简洁高效著称,但安全配置仍需注意:
- 使用
wg genkey生成私钥,wg pubkey导出公钥,私钥必须严格保密 - 每个客户端分配独立密钥对,避免密钥复用
- 配置
AllowedIPs时遵循最小权限原则,仅允许必要子网 - 启用
PersistentKeepalive(如25秒)保持NAT穿透连接 - 定期轮换密钥,可通过脚本自动化
3. 隧道优化与性能调优
WireGuard默认使用ChaCha20-Poly1305加密,性能优秀。进一步优化包括:
- 调整MTU值(建议1420或根据路径MTU探测结果设置)
- 启用内核级优化:
net.core.rmem_max和net.core.wmem_max调大至262144 - 使用
fq_codel队列规则减少延迟 - 对于多核CPU,可启用多线程模式(
KernelModuleParameters) - 监控隧道状态:
wg show实时查看传输数据量
4. 防火墙与DDoS防护
- 使用iptables限制每个IP的连接数:
iptables -A INPUT -p udp --dport 51820 -m connlimit --connlimit-above 10 -j DROP - 配置速率限制:
iptables -A INPUT -p udp --dport 51820 -m limit --limit 100/s -j ACCEPT - 启用SYN Cookies和TCP窗口缩小保护
- 考虑使用Cloudflare Spectrum或类似服务隐藏真实IP
5. 日志审计与入侵检测
- 配置rsyslog将WireGuard日志发送到远程日志服务器
- 安装AIDE或Tripwire监控关键文件完整性
- 使用
auditd监控/etc/wireguard/目录变更 - 定期审查
/var/log/auth.log和wg show输出 - 设置日志轮转避免磁盘满
6. 高可用与灾难恢复
- 备份
/etc/wireguard/目录及密钥到加密存储 - 配置双节点故障转移(如Keepalived + VRRP)
- 编写自动化部署脚本(Ansible或Shell)快速重建
- 定期测试恢复流程