午夜福利院在线观看免费,天堂最新版在线,色噜噜精品一区二区三区,无码一区二区三区中文字幕,丝袜美腿一区二区三区

DDOS 攻擊的防范教程

一個多月前,我的個人網(wǎng)站遭受 DDOS 攻擊,下線了50多個小時。這篇文章就來談?wù)?,如何?yīng)對這種攻擊。

需要說明的是,我對 DDOS 并不精通,從沒想過自己會成為攻擊目標(biāo)。攻擊發(fā)生以后,很多素昧平生的朋友提供了各種幫助和建議,讓我學(xué)到了很多東西。這里記錄的就是對我最有幫助的一些解決方案。

DDOS 攻擊的防范教程插圖

一、DDOS 是什么?

首先,我來解釋一下,DDOS 是什么。

舉例來說,我開了一家餐廳,正常情況下,最多可以容納30個人同時進(jìn)餐。你直接走進(jìn)餐廳,找一張桌子坐下點餐,馬上就可以吃到東西。

DDOS 攻擊的防范教程插圖1

很不幸,我得罪了一個流氓。他派出300個人同時涌進(jìn)餐廳。這些人看上去跟正常的顧客一樣,每個都說”趕快上餐”。但是,餐廳的容量只有30個人,根本不可能同時滿足這么多的點餐需求,加上他們把門口都堵死了,里三層外三層,正常用餐的客人根本進(jìn)不來,實際上就把餐廳癱瘓了。

DDOS 攻擊的防范教程插圖2

這就是 DDOS 攻擊,它在短時間內(nèi)發(fā)起大量請求,耗盡服務(wù)器的資源,無法響應(yīng)正常的訪問,造成網(wǎng)站實質(zhì)下線。

DDOS 里面的 DOS 是 denial of service(停止服務(wù))的縮寫,表示這種攻擊的目的,就是使得服務(wù)中斷。最前面的那個 D 是 distributed (分布式),表示攻擊不是來自一個地方,而是來自四面八方,因此更難防。你關(guān)了前門,他從后門進(jìn)來;你關(guān)了后門,他從窗口跳起來。

二、DDOS 的種類

DDOS 不是一種攻擊,而是一大類攻擊的總稱。它有幾十種類型,新的攻擊方法還在不斷發(fā)明出來。網(wǎng)站運行的各個環(huán)節(jié),都可以是攻擊目標(biāo)。只要把一個環(huán)節(jié)攻破,使得整個流程跑不起來,就達(dá)到了癱瘓服務(wù)的目的。

其中,比較常見的一種攻擊是 cc 攻擊。它就是簡單粗暴地送來大量正常的請求,超出服務(wù)器的最大承受量,導(dǎo)致宕機(jī)。我遭遇的就是 cc 攻擊,最多的時候全世界大概20多個 IP 地址輪流發(fā)出請求,每個地址的請求量在每秒200次左右。我看訪問日志的時候,就覺得那些請求像洪水一樣涌來,一眨眼就是一大堆,幾分鐘的時間,日志文件的體積就大了100MB。

本文以下的內(nèi)容都是針對 cc 攻擊。

三、HTTP 請求的攔截

如果惡意請求有特征,對付起來很簡單:直接攔截它就行了。

HTTP 請求的特征一般有兩種:IP 地址和 User Agent 字段。比如,惡意請求都是從某個 IP 段發(fā)出的,那么把這個 IP 段封掉就行了?;蛘撸鼈兊?User Agent 字段有特征(包含某個特定的詞語),那就把帶有這個詞語的請求攔截。

攔截可以在三個層次做。

(1)專用硬件

Web 服務(wù)器的前面可以架設(shè)硬件防火墻,專門過濾請求。這種效果最好,但是價格也最貴。

(2)本機(jī)防火墻

操作系統(tǒng)都帶有軟件防火墻,Linux 服務(wù)器一般使用 iptables。比如,攔截 IP 地址1.2.3.4的請求,可以執(zhí)行下面的命令。

$ iptables -A INPUT -s 1.2.3.4 -j DROP

iptables 比較復(fù)雜,我也不太會用。它對服務(wù)器性能有一定影響,也防不住大型攻擊。

(3)Web 服務(wù)器

Web 服務(wù)器也可以過濾請求。攔截 IP 地址1.2.3.4,nginx 的寫法如下。

location / { deny 1.2.3.4; }

Apache 的寫法是在.htaccess文件里面,加上下面一段。

<RequireAll> Require all granted Require not ip 1.2.3.4 </RequireAll>

如果想要更精確的控制(比如自動識別并攔截那些頻繁請求的 IP 地址),就要用到 WAF。這里就不詳細(xì)介紹了,nginx 這方面的設(shè)置可以參考這里這里。

Web 服務(wù)器的攔截非常消耗性能,尤其是 Apache。稍微大一點的攻擊,這種方法就沒用了。

四、帶寬擴(kuò)容

上一節(jié)的 HTTP 攔截有一個前提,就是請求必須有特征。但是,真正的 DDOS 攻擊是沒有特征的,它的請求看上去跟正常請求一樣,而且來自不同的 IP 地址,所以沒法攔截。這就是為什么 DDOS 特別難防的原因。

當(dāng)然,這樣的 DDOS 攻擊的成本不低,普通的網(wǎng)站不會有這種待遇。不過,真要遇到了該怎么辦呢,有沒有根本性的防范方法呢?

答案很簡單,就是設(shè)法把這些請求都消化掉。30個人的餐廳來了300人,那就想辦法把餐廳擴(kuò)大(比如臨時再租一個門面,并請一些廚師),讓300個人都能坐下,那么就不影響正常的用戶了。對于網(wǎng)站來說,就是在短時間內(nèi)急劇擴(kuò)容,提供幾倍或幾十倍的帶寬,頂住大流量的請求。這就是為什么云服務(wù)商可以提供防護(hù)產(chǎn)品,因為他們有大量冗余帶寬,可以用來消化 DDOS 攻擊。

一個朋友傳授了一個方法,給我留下深刻印象。某云服務(wù)商承諾,每個主機(jī)保 5G 流量以下的攻擊,他們就一口氣買了5個。網(wǎng)站架設(shè)在其中一個主機(jī)上面,但是不暴露給用戶,其他主機(jī)都是鏡像,用來面對用戶,DNS 會把訪問量均勻分配到這四臺鏡像服務(wù)器。一旦出現(xiàn)攻擊,這種架構(gòu)就可以防住 20G 的流量,如果有更大的攻擊,那就買更多的臨時主機(jī),不斷擴(kuò)容鏡像。

五、CDN

CDN 指的是網(wǎng)站的靜態(tài)內(nèi)容分發(fā)到多個服務(wù)器,用戶就近訪問,提高速度。因此,CDN 也是帶寬擴(kuò)容的一種方法,可以用來防御 DDOS 攻擊。

網(wǎng)站內(nèi)容存放在源服務(wù)器,CDN 上面是內(nèi)容的緩存。用戶只允許訪問 CDN,如果內(nèi)容不在 CDN 上,CDN 再向源服務(wù)器發(fā)出請求。這樣的話,只要 CDN 夠大,就可以抵御很大的攻擊。不過,這種方法有一個前提,網(wǎng)站的大部分內(nèi)容必須可以靜態(tài)緩存。對于動態(tài)內(nèi)容為主的網(wǎng)站(比如論壇),就要想別的辦法,盡量減少用戶對動態(tài)數(shù)據(jù)的請求。

上一節(jié)提到的鏡像服務(wù)器,本質(zhì)就是自己搭建一個微型 CDN。各大云服務(wù)商提供的高防 IP,背后也是這樣做的:網(wǎng)站域名指向高防 IP,它提供一個緩沖層,清洗流量,并對源服務(wù)器的內(nèi)容進(jìn)行緩存。

這里有一個關(guān)鍵點,一旦上了 CDN,千萬不要泄露源服務(wù)器的 IP 地址,否則攻擊者可以繞過 CDN 直接攻擊源服務(wù)器,前面的努力都白費。搜一下”繞過 CDN 獲取真實 IP 地址”,你就會知道國內(nèi)的黑產(chǎn)行業(yè)有多猖獗。

百度云加速是百度旗下的一款高防 CDN 產(chǎn)品,提供防火墻,可防DDOS/CC,高度推薦。

更新(6月27日)

攻擊者看來訂閱了我的微博。昨天這篇文章發(fā)布沒多久,我就又遭受了攻擊,他繞過CDN直接攻擊源服務(wù)器(我不知道 IP 地址怎么泄漏的),流量還大過上一次。

感謝騰訊云的朋友,提供了一個高防 IP,使得網(wǎng)站可以重新上線?,F(xiàn)在,我的防護(hù)措施是,源服務(wù)器前面有 CDN,如果攻擊 CDN,影響不到源服務(wù)器。如果直接攻擊源服務(wù)器的 IP 地址,我買了彈性 IP ,可以動態(tài)掛載主機(jī)實例,受到攻擊就換一個地址。這只是一個技術(shù)博客,內(nèi)容都是免費的,要防到這種地步,我也是無語了。

(完)

給TA打賞
共{{data.count}}人
人已打賞
0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
在線客服
主機(jī)邦
我們將24小時內(nèi)回復(fù)。
2025-05-17 23:45:20
您好,有任何疑問請與我們聯(lián)系!
您的工單我們已經(jīng)收到,我們將會盡快跟您聯(lián)系!
取消

選擇聊天工具: