当发现目标站点存在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的难度。