如何在不删除Azure App Service的情况下更换其IP地址,规避Cloudflare防护被绕过
解决Azure App Service暴露旧IP、绕过Cloudflare防护的方案
刚好处理过类似的场景,给你几个可行的方案,不用删除App Service就能解决IP暴露、被攻击者绕过Cloudflare防护的问题:
方案一:Azure Front Door(推荐,双重防护+隐藏真实IP)
这是最稳妥的方案,Front Door自带CDN和DDoS防护,还能完全隐藏App Service的真实IP:
- 创建Azure Front Door实例,在后端池中添加你的App Service作为后端节点,配置好健康检查规则
- 设置Front Door的前端主机名(可以用默认的
xxx.azurefd.net,也可绑定你的自定义域名) - 将Cloudflare的DNS记录更新为指向Front Door的前端IP地址
- 关键步骤:在你的App Service的访问限制(Access Restrictions)中,添加允许规则,只放行Azure Front Door的官方IP段(可以通过Azure CLI命令
az network front-door list-frontend-ips --resource-group <你的资源组名> --name <你的Front Door名称>获取具体IP,或者参考Azure官方文档的IP范围),最后添加一条拒绝所有其他IP的规则 - 这样一来,所有合法流量必须经过Front Door和Cloudflare,攻击者即使查到旧IP,直接访问也会被App Service的访问限制拦截
方案二:Azure Traffic Manager(适合不需要CDN的场景)
如果不需要CDN加速,用Traffic Manager也能实现类似的效果:
- 创建Traffic Manager配置文件,将你的App Service作为端点添加进去
- 把Cloudflare的DNS记录指向Traffic Manager的域名(比如
xxx.trafficmanager.net) - 同样在App Service的访问限制中,只允许Traffic Manager的IP范围访问,拒绝所有其他流量
- 注意:Traffic Manager是DNS级别的负载均衡,攻击者仍有可能解析到App Service的真实IP,但访问限制会拦截非Traffic Manager来源的请求,所以也能达到防护效果
关于你提到的“添加公网IP并路由流量”的思路补充
你的思路方向是对的,但普通多租户Azure App Service无法直接绑定自定义入站IP(只有App Service Environment这种单租户环境支持),所以需要通过Front Door/Traffic Manager这类中间层来实现:中间层对外暴露新的IP/域名,所有流量先经过中间层,再转发到App Service,同时App Service只接受中间层的流量,相当于用中间层的IP替换了原来暴露的旧IP
测试验证步骤
- 先添加自己的IP到App Service的访问允许列表,防止配置过程中自己无法访问
- 配置好中间层和访问限制后,通过Cloudflare访问站点,确认正常加载
- 直接用浏览器或curl访问App Service的旧IP,确认返回403 Forbidden,说明拦截生效
内容的提问来源于stack exchange,提问作者rollsch
相关产品推荐
相关产品推荐

