當攻擊者發現目標站點存在CDN防護的時候,會嘗試通過查找站點的真實IP,從而繞過CDN防護。
我們來看一個比較常見的基於公有雲的高可用架構,如下:
CDN(入口層)->WAF(應用層防護)-> SLB(負載層)-> ECS(源站) -> RDS(數據庫)
即對應關系為:域名 cname 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檢測。
即使攻擊者找到了真實IP地址,修改本地hosts文件,強行將域名與IP解析,也無法訪問到目標站點。
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>
IIS參考配置:
網站綁定,綁定主機名就可以了
