如何配置服务器仅允许通过加密隧道进行全量网络回传加固实战

要让服务器只走加密隧道回传全部网络流量,核心是把默认路由指向隧道接口,并切断明文出口。这不是加个代理或开个端口的事,而是重构整台机器的网络出口路径。

确认隧道已稳定运行

先确保你用的是 WireGuard、IPsec 或 GRE+IPsec 这类内核级隧道,且两端 已互通、无丢包、能持续 ping 通对端隧道 IP。比如 WireGuard 中执行 wg show 应显示 latest handshake 在几分钟内,transfer 字段持续增长。若隧道本身断连频繁,强行切换默认路由会导致全网失联。

接管默认路由,强制所有出向流量经隧道

在服务器上执行以下操作(以 WireGuard 为例,隧道接口名为 wg0,对端隧道 IP 为 10.8.0.1):

临时生效:运行 sudo ip route replace default via 10.8.0.1 dev wg0 永久生效:编辑 /etc/wireguard/wg0.conf,在 [Interface] 段末尾添加一行:PostUp = ip route replace default via 10.8.0.1 dev wg0PreDown = ip route del default via 10.8.0.1 dev wg0 验证:执行 ip route show default,输出应为 default via 10.8.0.1 dev wg0

封禁原始物理出口的非隧道流量

仅改路由还不够——攻击者或误配置仍可能绕过隧道直连外网。需用防火墙阻断物理接口(如 ens3)上的非隧道出向连接:

使用 nftables(推荐):sudo nft add rule inet filter output oifname "ens3" ip daddr != 10.8.0.0/24 counter drop这条规则表示:所有从 ens3 发出、目标地址不是隧道网段(10.8.0.0/24)的包,全部丢弃并计数。 若用 firewalld,可新建富规则:sudo firewall-cmd –permanent –add-rich-rule=’rule out-interface ens3 destination address="!10.8.0.0/24" drop’sudo firewall-cmd –reload

保留关键管理通道防锁死

全量接管后,SSH 登录、系统更新等都依赖隧道。务必提前验证隧道可用性,并留一条逃生路径:

在修改默认路由前,用 screen 或 tmux 开一个会话,运行:while sleep 30; do ip route get 1.1.1.1 | grep -q wg0 || echo "$(date): tunnel down!" && reboot -f; done 确保 SSH 服务监听在隧道 IP(如 10.8.0.2)或所有接口(0.0.0.0),且防火墙允许来自隧道网段的连接; 不建议依赖云平台的 VNC 或串口控制台作为常规手段——响应慢、延迟高,仅作最后兜底。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。