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