HTTP请求的拦截
申明:閑暇學習阮一峰老師的博客(http://www.ruanyifeng.com/blog/2018/06/ddos.html),所以想做簡單的總結,方便以后查看。
?
HTTP 請求的特征一般有兩種:IP 地址和 User Agent 字段。比如,惡意請求都是從某個 IP 段發出的,那么把這個 IP 段封掉就行了?;蛘?#xff0c;它們的 User Agent 字段有特征(包含某個特定的詞語),那就把帶有這個詞語的請求攔截。
攔截可以在三個層次做:
(1)專用硬件
Web 服務器的前面可以架設硬件防火墻,專門過濾請求。這種效果最好,但是價格也最貴。
(2)本機防火墻
操作系統都帶有軟件防火墻,Linux 服務器一般使用?iptables。比如,攔截 IP 地址1.2.3.4的請求,可以執行下面的命令。
$ iptables -A INPUT -s 1.2.3.4 -j DROPiptables 比較復雜,我也不太會用。它對服務器性能有一定影響,也防不住大型攻擊。
(3)Web 服務器
Web 服務器也可以過濾請求。攔截 IP 地址1.2.3.4,nginx 的寫法如下。
location / {deny 1.2.3.4; }Apache 的寫法是在.htaccess文件里面,加上下面一段。
<RequireAll>Require all grantedRequire not ip 1.2.3.4 </RequireAll>如果想要更精確的控制(比如自動識別并攔截那些頻繁請求的 IP 地址),就要用到?WAF。
Web 服務器的攔截非常消耗性能,尤其是 Apache。稍微大一點的攻擊,這種方法就沒用了。
CDN? ? ? ? ? ? ? ? ??https://www.cloudflare.com/zh-cn/
指的是網站的靜態內容分發到多個服務器,用戶就近訪問,提高速度。因此,CDN 也是帶寬擴容的一種方法,可以用來防御 DDOS 攻擊。
網站內容存放在源服務器,CDN 上面是內容的緩存。用戶只允許訪問 CDN,如果內容不在 CDN 上,CDN 再向源服務器發出請求。這樣的話,只要 CDN 夠大,就可以抵御很大的攻擊。不過,這種方法有一個前提,網站的大部分內容必須可以靜態緩存。對于動態內容為主的網站(比如論壇),就要想別的辦法,盡量減少用戶對動態數據的請求。
各大云服務商提供的高防 IP,背后也是這樣做的:網站域名指向高防 IP,它提供一個緩沖層,清洗流量,并對源服務器的內容進行緩存。
這里有一個關鍵點,一旦上了 CDN,千萬不要泄露源服務器的 IP 地址,否則攻擊者可以繞過 CDN 直接攻擊源服務器,前面的努力都白費。
源服務器前面有 CDN。如果攻擊域名,CDN 可以擋住;如果直接攻擊源服務器,買彈性 IP ,可以動態掛載主機實例,受到攻擊就換一個地址。
轉載于:https://www.cnblogs.com/libin123/p/10331424.html
總結
- 上一篇: js模块化编程之彻底弄懂CommonJS
- 下一篇: hbase(三)coprocessor