VPS 安全加固实战总结起因VPS 遭遇 DDoS 攻击，IP 被黑洞路由 15 分钟。排查后发现多个安全隐患。问题一：端口暴露过多发现：ss -tlnpMySQL 3306 对公网开放，代理端口直接暴露。修复：Docker 服务只绑定 127.0.0.1同一 Docker network 内的容器通信不需要暴露端口启用 ufw，只放行必要端口问题二：SSH 直接暴露方案：Cloudflare Tunnel原理：VPS 主动向外建立隧道，外部无法直接访问任何端口。本地 → Cloudflare 网络 → VPS（主动连出的隧道）配置完成后：SSH 只监听 127.0.0.1关闭 SSH 端口的防火墙规则通过 cloudflared access ssh 连接逃生通道：VPS 控制台的 VNC/Serial Console，与 SSH 完全独立。问题三：代理协议过时原方案 Trojan 问题：项目停止维护（2020）需要单独暴露端口不支持 WebSocket，无法套 CDN升级为 VLESS + Reality：优势：不需要域名和证书伪装成访问正规大站，无法识别可与 Web 服务共用 443 端口（fallback 机制）架构：外部 443 → Xray ├─ VLESS 流量 → 代理出去 └─ 普通 HTTPS → 回落到 Web 服务问题四：真实 IP 泄露检查方法：curl -s "https://api.hackertarget.com/hostsearch/?q=你的域名"历史 DNS 记录会被收录，一旦泄露无法撤回。教训：新域名/新 IP 从第一秒起开启 Cloudflare 代理子域名命名避免暴露用途（不要用 vpn、proxy、trojan 等）VLESS 客户端直接填 IP，不走域名关于 Null Route廉价 VPS 的 DDoS 防护机制：检测到异常流量后，将 IP 路由到黑洞。副作用： 攻击者只需小流量触发阈值，就能让服务中断 15 分钟。应对： 隐藏真实 IP 比硬扛更重要。最终架构服务访问方式WebCloudflare 代理 → Xray 回落 → DockerSSHCloudflare Tunnel代理VLESS + Reality（直连 IP）数据库仅本地对外只暴露 80/443，且：禁用 ping 响应Web 流量有 Cloudflare 保护代理流量伪装成正常 HTTPS扫描者只能看到一个普通网站。检查清单# 查看监听端口 ss -tlnp # 查看防火墙状态 sudo ufw status # 检查 IP 是否泄露 curl -s "https://api.hackertarget.com/hostsearch/?q=你的域名" # 禁用 ping sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1