很多站长觉得,我已经买了WAF(Web应用防火墙),网站应该安全了吧?如果源站IP还是暴露在公网上,WAF就是个摆设。 攻击者根本不需要过WAF,直接拿你的源站IP打就行。就像你家门口请了保安,但后门没锁,小偷当然走后门。
这篇文章讲清楚一件事:怎么通过安全组配置,彻底隐藏源站IP,只让WAF的回源地址访问你的服务器。
先搞明白:源站IP是怎么泄露的
在动手配置之前,得先知道自己到底漏了哪里。源站IP暴露通常来自这些渠道:
- DNS历史记录:域名之前直接A记录指向过源站IP,虽然现在改了,但历史记录还留在SecurityTrails这类数据库里
- 子域名没藏好:mail、admin、test这类子域名没走WAF/CDN,直接A记录指向源站IP
- SSL证书CT日志:证书透明度日志会公开域名和IP的关联信息
- 邮件头泄露:在源站服务器上直接发邮件,邮件头里会带出真实IP
- 前端代码或报错页面:页面里写了API地址,或者报错信息直接暴露了IP
排查完泄露渠道之后,最彻底的做法是换一个全新的源站IP,然后按照下面的流程重新配置安全组,确保新IP不再暴露。
第一步:获取WAF回源IP地址
WAF的作用是站在用户和源站中间:用户访问你的网站,流量先到WAF节点,经过检测清洗后,再由WAF转发给源站。在源站看来,所有请求的源IP都是WAF的节点IP,真实用户IP被放在HTTP头部的X-Forwarded-For字段里。
所以安全组的逻辑是:只允许这些WAF节点IP访问你的Web端口,其他所有公网IP一律拒绝。
一个关键提醒:WAF的回源IP段不是永久固定的。服务商可能在某个时间点新增或调整回源节点,如果没及时更新安全组,新的WAF节点访问不了源站,网站就会大面积报5xx错误。建议开启云服务商的通知订阅(短信、邮件、站内信),或者写个脚本定期自动同步最新的回源IP列表到安全组里。
第二步:配置安全组规则(核心操作)
拿到WAF回源IP段之后,在源站服务器的安全组里添加入方向规则。
安全组遵循白名单机制——默认拒绝所有外部访问,只放行明确允许的流量。所以入方向规则只需要配置两条:
| 规则方向 | 策略 | 协议端口 | 源地址 | 说明 |
| 入方向 | 允许 | TCP:80,443(或你的Web端口) | WAF回源IP段 | 只允许WAF访问Web端口 |
| 入方向 | 允许 | TCP:22(SSH) | 你的办公IP | 只允许你自己登录服务器 |
关键点:
1. Web端口绝对不能放行0.0.0.0/0。 否则攻击者只要扫到你的源站IP,就能绕过WAF直接访问。很多人买完服务器第一件事就是在安全组里开80/443端口给0.0.0.0/0——这是裸奔。
2. 一条规则只能配一个IP或一个IP段。 如果WAF给的回源IP数量比较多,一条一条加比较费事。有些云服务商支持在“源地址”字段里粘贴多个IP段(用逗号分隔),但要注意如果同时包含IPv4和IPv6地址,可能需要分开两条规则配置,因为安全组不支持单条规则同时包含两种地址类型。
3. SSH端口只对你自己的IP开放。更安全的做法是用堡垒机,不直接在公网暴露SSH端口。
第三步:其他防护措施(把漏堵死)
安全组配好了,但风险还没完全消除。这几个动作也要做:
1. 所有子域名都走WAF/CDN
检查DNS解析列表,确保所有Web业务子域名都CNAME到了WAF/CDN的地址,没有A记录直接指向源站IP。mail、dev、staging这类子域名是最容易被忽略的。
2. Nginx加一层“兜底拦截”
万一有人直接用IP访问你的服务器(比如扫描器扫到IP后直接打https://你的IP:443),Nginx默认会返回第一个SSL配置站点的证书,证书里写的域名会进一步暴露你的源站。
在Nginx里加一个默认server块,专门拦截这类访问。新版本Nginx(1.19.4+)支持用ssl_reject_handshake on直接拒绝无SNI的SSL握手,老版本可以用return 444关闭连接:
server {
listen 443 default_server;
server_name _;
ssl_reject_handshake on;
}
3. 后端服务不要暴露到公网
Tomcat、Node.js、PHP-FPM这类后端服务,启动时绑定到127.0.0.1或内网IP,不要绑定0.0.0.0。否则攻击者绕过Nginx直接访问后端端口(比如8080、3000)也能打到源站。
4. 隐藏响应头里的技术信息
在Nginx里加几行,把Server头、X-Powered-By这类信息藏掉,不给攻击者暴露技术栈的机会:
server_tokens off;
proxy_hide_header Server;
proxy_hide_header X-Powered-By;
验证配置是否生效
配置完成后,做几个验证:
1. 用第三方工具直接访问源站IP
在浏览器或在线工具里输入http://你的源站IP,正常情况下应该返回403或无法连通。
2. 检查访问日志
登录服务器,查看Web访问日志。正常业务流量应该全部来自WAF回源IP段。如果看到其他IP的Web访问记录,说明安全组没拦住,要回去检查配置。
3. 从你的办公IP测试SSH连接
ssh 你的源站IP应该能通。换一个不是白名单里的IP再试,应该被拒绝。
维护提醒
回源IP段会变动,这是最容易被忽略的长期风险。如果只配置一次就不管了,哪天WAF新增了回源节点,新节点访问源站被安全组拦住,网站就会大面积报错。
建议做三件事:
1. 在云服务商后台打开“回源IP变更通知”,确保能收到官方通知
2. 每季度手动检查一次WAF控制台的回源IP列表,跟安全组里的规则做对比
3. 如果团队有开发能力,可以写个小脚本定期拉取官方IP列表,通过API自动更新安全组规则
外贸电商的生意,稳定和安全是第一位的。安全组配置这件事,五分钟就能搞定,但省下来的是未来可能面对的几小时甚至几天的业务中断。花这点时间,值。
推荐文章