如何防止CDN防护被绕过

  • 2020 年 3 月 13 日
  • 筆記

当发现目标站点存在CDN防护的时候,我们会尝试通过查找站点的真实IP,从而绕过CDN防护。

我们来看一个比较常见的基于公有云的高可用架构,即:

域名–>CDN,CDN–>WAF,WAF–>SLB,SLB–>ECS。

我们重点来关注一下CDN–>WAF–>SLB–>ECS这几层服务之间的关系吧。

假设,攻击者知道SLB的真实IP地址,就可以直接访问SLB的ip地址,从而轻易绕过CDN+WAF的安全防护。

如何防止CDN被绕过呢?

这里分享一个CDN防护技巧,通过中间件配置只允许域名访问,禁止ip访问。

这样处理的话,所有直接访问站点真实IP的请求将会被拒绝,任何用户只能通过域名访问站点,通过预先设定的网络链路,从DNS→CDN→waf防护→源站,所有的域名访问请求都必须经过WAF检测。

Nginx参考配置:

#添加一个server,在原server里绑定域名server  {        listen 80 default;        server_name _;        return 403;    }server {        listen       80;        server_name  www.demo.com;        .........

Apache参考配置:

  • =#在httpd.conf最后面加上 <VirtualHost 此处填写IP> ServerName 此处填写IP <Location /> Order Allow,Deny Deny from all </Location></VirtualHost> <VirtualHost 此处填写IP> DocumentRoot /var/www/html ServerName 此处填写域名</VirtualHost>

我们再来思考一个问题?

如果攻击者有了真实IP地址,修改本地hosts文件,强行将域名与IP解析,从而本地访问请求是无需经过DNS解析,还是可以绕过CDN防护。

这个策略,本质上是一个减缓措施,增加了寻找真实IP的难度。