- 資訊首頁(yè) > 互聯(lián)網(wǎng) > 經(jīng)驗分享 >
- 簡(jiǎn)單的DDOS攻擊防范
首先,我來(lái)解釋一下,DDOS 是什么。
舉例來(lái)說(shuō),我開(kāi)了一家餐廳,正常情況下,最多可以容納30個(gè)人同時(shí)進(jìn)餐。你直接走進(jìn)餐廳,找一張桌子坐下點(diǎn)餐,馬上就可以吃到東西。
很不幸,我得罪了一個(gè)流氓。他派出300個(gè)人同時(shí)涌進(jìn)餐廳。這些人看上去跟正常的顧客一樣,每個(gè)都說(shuō)”趕快上餐”。但是,餐廳的容量只有30個(gè)人,根本不可能同時(shí)滿(mǎn)足這么多的點(diǎn)餐需求,加上他們把門(mén)口都堵死了,里三層外三層,正常用餐的客人根本進(jìn)不來(lái),實(shí)際上就把餐廳癱瘓了。
這就是 DDOS 攻擊,它在短時(shí)間內發(fā)起大量請求,耗盡服務(wù)器的資源,無(wú)法響應正常的訪(fǎng)問(wèn),造成網(wǎng)站實(shí)質(zhì)下線(xiàn)。
DDOS 里面的 DOS 是 denial of service(停止服務(wù))的縮寫(xiě),表示這種攻擊的目的,就是使得服務(wù)中斷。最前面的那個(gè) D 是 distributed (分布式),表示攻擊不是來(lái)自一個(gè)地方,而是來(lái)自四面八方,因此更難防。你關(guān)了前門(mén),他從后門(mén)進(jìn)來(lái);你關(guān)了后門(mén),他從窗口跳起來(lái)。
DDOS 不是一種攻擊,而是一大類(lèi)攻擊的總稱(chēng)。它有幾十種類(lèi)型,新的攻擊方法還在不斷發(fā)明出來(lái)。網(wǎng)站運行的各個(gè)環(huán)節,都可以是攻擊目標。只要把一個(gè)環(huán)節攻破,使得整個(gè)流程跑不起來(lái),就達到了癱瘓服務(wù)的目的。
其中,比較常見(jiàn)的一種攻擊是 cc 攻擊。它就是簡(jiǎn)單粗暴地送來(lái)大量正常的請求,超出服務(wù)器的最大承受量,導致宕機。我遭遇的就是 cc 攻擊,最多的時(shí)候全世界大概20多個(gè) IP 地址輪流發(fā)出請求,每個(gè)地址的請求量在每秒200次~300次。我看訪(fǎng)問(wèn)日志的時(shí)候,就覺(jué)得那些請求像洪水一樣涌來(lái),一眨眼就是一大堆,幾分鐘的時(shí)間,日志文件的體積就大了100MB。說(shuō)實(shí)話(huà),這只能算小攻擊,但是我的個(gè)人網(wǎng)站沒(méi)有任何防護,服務(wù)器還是跟其他人共享的,這種流量一來(lái)立刻就下線(xiàn)了。
本文以下的內容都是針對 cc 攻擊。
防范 DDOS 的第一步,就是你要有一個(gè)備份網(wǎng)站,或者最低限度有一個(gè)臨時(shí)主頁(yè)。生產(chǎn)服務(wù)器萬(wàn)一下線(xiàn)了,可以立刻切換到備份網(wǎng)站,不至于毫無(wú)辦法。
備份網(wǎng)站不一定是全功能的,如果能做到全靜態(tài)瀏覽,就能滿(mǎn)足需求。最低限度應該可以顯示公告,告訴用戶(hù),網(wǎng)站出了問(wèn)題,正在全力搶修。
這種臨時(shí)主頁(yè)建議放到 Github Pages 或者 Netlify,它們的帶寬大,可以應對攻擊,而且都支持綁定域名,還能從源碼自動(dòng)構建。
如果惡意請求有特征,對付起來(lái)很簡(jiǎn)單:直接攔截它就行了。
HTTP 請求的特征一般有兩種:IP 地址和 User Agent 字段。比如,惡意請求都是從某個(gè) IP 段發(fā)出的,那么把這個(gè) IP 段封掉就行了?;蛘?,它們的 User Agent 字段有特征(包含某個(gè)特定的詞語(yǔ)),那就把帶有這個(gè)詞語(yǔ)的請求攔截。
攔截可以在三個(gè)層次做。
(1)專(zhuān)用硬件
Web 服務(wù)器的前面可以架設硬件防火墻,專(zhuān)門(mén)過(guò)濾請求。這種效果最好,但是價(jià)格也最貴。
(2)本機防火墻
操作系統都帶有軟件防火墻,Linux 服務(wù)器一般使用 iptables。比如,攔截 IP 地址1.2.3.4
的請求,可以執行下面的命令。
$ iptables -A INPUT -s 1.2.3.4 -j DROP
iptables 比較復雜,我也不太會(huì )用。它對服務(wù)器性能有一定影響,也防不住大型攻擊。
(3)Web 服務(wù)器
Web 服務(wù)器也可以過(guò)濾請求。攔截 IP 地址1.2.3.4
,nginx 的寫(xiě)法如下。
location / { deny 1.2.3.4; }
Apache 的寫(xiě)法是在.htaccess
文件里面,加上下面一段。
<RequireAll> Require all granted Require not ip 1.2.3.4 </RequireAll>
如果想要更精確的控制(比如自動(dòng)識別并攔截那些頻繁請求的 IP 地址),就要用到 WAF。這里就不詳細介紹了,nginx 這方面的設置可以參考這里和這里。
Web 服務(wù)器的攔截非常消耗性能,尤其是 Apache。稍微大一點(diǎn)的攻擊,這種方法就沒(méi)用了。
上一節的 HTTP 攔截有一個(gè)前提,就是請求必須有特征。但是,真正的 DDOS 攻擊是沒(méi)有特征的,它的請求看上去跟正常請求一樣,而且來(lái)自不同的 IP 地址,所以沒(méi)法攔截。這就是為什么 DDOS 特別難防的原因。
當然,這樣的 DDOS 攻擊的成本不低,普通的網(wǎng)站不會(huì )有這種待遇。不過(guò),真要遇到了該怎么辦呢,有沒(méi)有根本性的防范方法呢?
答案很簡(jiǎn)單,就是設法把這些請求都消化掉。30個(gè)人的餐廳來(lái)了300人,那就想辦法把餐廳擴大(比如臨時(shí)再租一個(gè)門(mén)面,并請一些廚師),讓300個(gè)人都能坐下,那么就不影響正常的用戶(hù)了。對于網(wǎng)站來(lái)說(shuō),就是在短時(shí)間內急劇擴容,提供幾倍或幾十倍的帶寬,頂住大流量的請求。這就是為什么云服務(wù)商可以提供防護產(chǎn)品,因為他們有大量冗余帶寬,可以用來(lái)消化 DDOS 攻擊。
一個(gè)朋友傳授了一個(gè)方法,給我留下深刻印象。某云服務(wù)商承諾,每個(gè)主機保 5G 流量以下的攻擊,他們就一口氣買(mǎi)了5個(gè)。網(wǎng)站架設在其中一個(gè)主機上面,但是不暴露給用戶(hù),其他主機都是鏡像,用來(lái)面對用戶(hù),DNS 會(huì )把訪(fǎng)問(wèn)量均勻分配到這四臺鏡像服務(wù)器。一旦出現攻擊,這種架構就可以防住 20G 的流量,如果有更大的攻擊,那就買(mǎi)更多的臨時(shí)主機,不斷擴容鏡像。
CDN 指的是網(wǎng)站的靜態(tài)內容分發(fā)到多個(gè)服務(wù)器,用戶(hù)就近訪(fǎng)問(wèn),提高速度。因此,CDN 也是帶寬擴容的一種方法,可以用來(lái)防御 DDOS 攻擊。
網(wǎng)站內容存放在源服務(wù)器,CDN 上面是內容的緩存。用戶(hù)只允許訪(fǎng)問(wèn) CDN,如果內容不在 CDN 上,CDN 再向源服務(wù)器發(fā)出請求。這樣的話(huà),只要 CDN 夠大,就可以抵御很大的攻擊。不過(guò),這種方法有一個(gè)前提,網(wǎng)站的大部分內容必須可以靜態(tài)緩存。對于動(dòng)態(tài)內容為主的網(wǎng)站(比如論壇),就要想別的辦法,盡量減少用戶(hù)對動(dòng)態(tài)數據的請求。
各大云服務(wù)商提供的高防 IP,背后也是這樣做的:網(wǎng)站域名指向高防 IP,它提供一個(gè)緩沖層,清洗流量,并對源服務(wù)器的內容進(jìn)行緩存。
這里有一個(gè)關(guān)鍵點(diǎn),一旦上了 CDN,千萬(wàn)不要泄露源服務(wù)器的 IP 地址,否則攻擊者可以繞過(guò) CDN 直接攻擊源服務(wù)器,前面的努力都白費。搜一下”繞過(guò) CDN 獲取真實(shí) IP 地址“,你就會(huì )知道國內的黑產(chǎn)行業(yè)有多猖獗。
百度云加速提供免費 CDN 服務(wù),收費版的提供防火墻,價(jià)格也便宜,高度推薦。
發(fā)布者:水橋丶帕露西
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站