如何避免绕过WAF 直接访问云主机
要防止用户绕过 WAF 直接访问云主机(源站),核心思路是切断“公网直接访问源站”的路径——通过限制源站仅接收 WAF 回源流量、隐藏源站公网暴露面、强化网络访问控制等手段,确保所有业务流量必须经过 WAF 防护后才能到达源站。以下是具体可落地的方案,按“优先级+操作步骤”详细说明:
一、核心方案:配置安全组,仅允许 WAF 回源 IP 访问(必做)
WAF 防护的本质是“流量代理”——公网流量先到 WAF,WAF 检测后再通过固定的回源 IP 段将合法流量转发到源站。因此,只需在源站云主机(或云服务器所在的安全组)中配置“仅允许 WAF 回源 IP 访问业务端口(如 80/443)”,即可彻底阻断非 WAF 流量直接访问源站。
操作步骤(腾讯云为例):
- 获取 WAF 回源 IP 段
腾讯云 WAF 会定期更新回源 IP 段,需先获取最新列表:
-
- 官方文档地址:WAF 回源 IP 段(包含 IPv4 和 IPv6 段,按需选择);
- 也可通过腾讯云 API 自动拉取(适合动态更新场景),API 文档:获取 WAF 回源 IP 列表。
- 配置源站安全组规则
登录【腾讯云控制台】→ 进入【云服务器】→ 【安全组】,找到源站云主机绑定的安全组,按以下规则修改:
规则方向 | 协议端口 | 来源(源 IP) | 策略 | 备注 |
入站 | TCP:80,443 | WAF 回源 IP 段(全部) | 允许 | 仅允许 WAF 访问业务端口 |
入站 | 其他端口(如 SSH 22) | 你的办公 IP/指定 IP 段 | 允许 | 避免自己无法远程管理 |
入站 | 所有端口 | 0.0.0.0/0(全部公网) | 拒绝 | 兜底规则,阻断所有未允许的流量 |
出站 | 所有端口 | 0.0.0.0/0 | 允许 | 源站正常对外请求(如连 MySQL/Kafka) |
- ✅ 关键提醒:
-
- 若源站用了“负载均衡(CLB)+ WAF”(负载均衡型 WAF),需同时给 CLB 绑定的安全组也配置相同规则(仅允许 WAF 回源 IP 访问 CLB 的 80/443 端口);
- 安全组规则优先级:“允许规则”优先级高于“拒绝规则”,需确保 WAF 回源 IP 规则在最前面。
二、进阶方案:隐藏源站公网 IP(彻底消除直接访问入口)
如果源站云主机本身有公网 IP,即使配置了安全组,仍存在“安全组规则误配/泄露”导致被绕过的风险。此时可通过“无公网 IP 部署”彻底隐藏源站,让源站仅能通过内网与 WAF/中间件通信。
适用场景:
源站不需要直接对外提供服务(仅需通过 WAF 接收流量),且依赖的中间件(MySQL/Kafka/Redis/ES)也部署在腾讯云内网(或通过 VPC 互通)。
操作步骤:
- 移除源站公网 IP
-
- 若源站是新购云服务器:购买时“网络配置”选择“仅内网”,不分配公网 IP;
- 若源站已有公网 IP:登录【云服务器】→ 【实例】→ 找到对应实例,进入【网络与安全】→ 【公网 IP】,点击“解绑公网 IP”(解绑前需确保已通过内网/跳板机可管理源站)。
- 通过“内网负载均衡(CLB)+ WAF”对接源站
无公网 IP 的源站无法直接与 WAF 通信,需通过腾讯云“内网 CLB”作为中间层:
✅ 效果:源站无公网 IP,仅能通过内网 CLB 接收 WAF 转发的流量,彻底消除“直接访问源站”的可能性。
-
- 新建【内网 CLB】(控制台→【负载均衡】→ 新建,网络类型选“私有网络 VPC”);
- 给 CLB 配置“目标组”,将无公网 IP 的源站云服务器加入目标组,绑定 80/443 端口;
- 接入 WAF 时,选择“负载均衡型 WAF”,并绑定上述“内网 CLB”(而非源站);
- 按“方案一”给【内网 CLB 绑定的安全组】配置“仅允许 WAF 回源 IP 访问”。
三、补充方案:强化 DNS 与流量监控(及时发现绕过行为)
即使做了前面的防护,仍需通过监控确认是否有绕过尝试,避免因配置疏漏导致风险。
1. 锁定 DNS 解析,防止被篡改
用户绕过 WAF 的常见手段之一是“修改本地 DNS 解析,将域名指向源站 IP”(若源站公网 IP 泄露)。需通过以下方式锁定 DNS:
- 使用腾讯云【DNSPod】管理域名解析,开启“DNS 安全锁”(控制台→【DNSPod】→【域名安全】→ 开启“禁止非授权修改解析”);
- 仅保留“域名→WAF CNAME”的解析记录,删除所有直接指向源站 IP 的 A 记录(若有);
- 开启 DNSPod 的“DDoS 防护”和“解析监控”,及时发现异常解析请求。
2. 监控源站流量,发现非法访问
通过日志和监控工具实时检测源站是否有非 WAF 流量接入:
- 日志监控:在源站云服务器上部署日志工具(如 ELK、腾讯云【日志服务 CLS】),收集 80/443 端口的访问日志,筛选“来源 IP 不属于 WAF 回源 IP 段”的请求,若有则触发告警;
- 流量监控:在腾讯云【云监控】中,给源站云服务器添加“入站流量告警”,重点监控“非 WAF 回源 IP 段”的流量波动(如突然有大量来自未知 IP 的访问);
- WAF 日志联动:查看 WAF 控制台的【攻击日志】和【访问日志】,对比源站日志,若源站有访问记录但 WAF 无对应记录,则可能存在绕过。
四、兜底方案:配置 WAF 防绕过规则(二次拦截)
腾讯云 WAF 自带“防绕过”能力,可通过配置规则进一步降低风险:
- 登录 WAF 控制台→【防护设置】→ 找到对应域名→【高级配置】;
- 开启“防 IP 绕过”功能(部分版本支持):WAF 会检测请求的“X-Forwarded-For”(XFF)头,若发现请求直接来自非 WAF IP 且携带虚假 XFF 头,直接阻断;
- 配置“自定义拦截规则”:针对源站业务特点,添加规则(如“禁止访问路径中包含特定标识的请求”“拦截来自非指定地区的 IP”),即使流量绕过 WAF 到达源站,也能通过 WAF 的二次检测拦截。
总结:防护优先级排序
- 必做:配置安全组,仅允许 WAF 回源 IP 访问源站业务端口;
- 推荐:若源站无需公网 IP,移除公网 IP 并通过内网 CLB 对接 WAF;
- 补充:锁定 DNS 解析+开启流量监控,及时发现绕过行为;
- 兜底:开启 WAF 防绕过规则,二次拦截非法流量。
通过以上四层防护,可99%以上杜绝“绕过 WAF 直接访问源站”的风险,同时确保业务流量正常经过 WAF 防护。