DDoS 攻擊究竟是什么?
開門見山,舉個形象點的例子
我開了一家有五十個座位的重慶火鍋店,用料上等,童叟無欺。平時門庭若市,生意特別紅火,而對面二狗家的火鍋店卻無人問津。二狗為了對付我,想了一個辦法,叫了五十個人來我的火鍋店坐著卻不點菜,讓別的客人無法吃飯。
上面這個例子講的就是典型的 DDoS 攻擊,全稱是 Distributed Denial of Service,翻譯成中文就是分布式拒絕服務。一般來說是指攻擊者利用 “肉雞”(所謂肉雞就是網絡上被攻陷的計算機) 對目標網站在較短的時間內發起大量請求,以大量無用的數據消耗有限的網絡資源和服務器系統資源,讓目標網站無法正常服務(輕則網絡阻塞,重則服務器系統崩潰,導致死機)。在線游戲、互聯網金融等領域是 DDoS 攻擊的高發行業。
在 DDoS 黑色產業鏈中,各個角色是如何分工的?
DDoS 攻擊犯罪已經進入產業化時代,從需要專業不法黑客實施全部攻擊過程的行為,發展成由發單人、攻擊實施人、肉雞商、出量人、不法黑客攻擊軟件作者、擔保人等多個犯罪個體共同參與實施的產業化犯罪行為。
- 發單人:DDoS 攻擊黑色產業鏈中頂端的角色,也就是出資并發出對具體網站或服務器的攻擊需求的人
- 攻擊實施人:接到 “發單人” 指令并執行攻擊的人
- 肉雞商:侵入計算機信息系統的實施人,或者買賣被侵入計算機系統權限的中間商。
- 出量人:擁有服務器控制權限和網絡流量的人。他們有一定技術能力,能夠租用專屬服務器并自行配置攻擊軟件從而獲取流量
- 擔保人:業內“信譽”較高的不法黑客。因為交易的雙方往往并不認識,于是他們會找到 “擔保人”,負責買賣雙方的資金中轉,擔保人可從中抽取一定的好處費。
DDoS 攻擊手段具體有哪些?
ICMP Flood
ICMP 用于在 IP 主機、路由器之間傳遞控制消息,控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息,雖然并不傳輸用戶數據,但是對于用戶數據的傳遞起著重要的作用。通過對目標系統發送海量數據包,就可以令目標主機癱瘓,如果大量發送就成了洪水攻擊。
UDP Flood
UDP 協議是一種無連接的服務,偽造源地址很方便。在 UDP Flood 中,攻擊者通常發送大量偽造源 IP 地址的小 UDP 包沖擊 DNS 服務器或 Radius 認證服務器、流媒體視頻服務器。100k bps 的 UDP Flood 經常將線路上的骨干設備例如防火墻打癱,造成整個網段的癱瘓。
上述兩種傳統的流量型攻擊方式技術含量較低,傷人一千自損八百,攻擊效果通常依賴受控主機本身的網絡性能,而且容易被查到攻擊源頭,單獨使用的情況已不常見。于是,具有四兩拔千斤效果的放射型放大攻擊就出現了。
NTP Flood
NTP 是標準的基于 UDP 協議傳輸的網絡時間同步協議,由于 UDP 協議的無連接性,方便偽造源地址。攻擊者使用特殊的數據包,也就是 IP 地址指向作為反射器的服務器,源 IP 地址被偽造成攻擊目標的 IP,反射器接收到數據包時就被騙了,會將響應數據發送給被攻擊目標,耗盡目標網絡的帶寬資源。一般的 NTP 服務器都有很大的帶寬,攻擊者可能只需要 1Mbps 的上傳帶寬欺騙 NTP 服務器,就可給目標服務器帶來幾百上千 Mbps 的攻擊流量。
因此,“問-答”方式的協議都可以被反射型攻擊利用,將質詢數據包的地址偽造為攻擊目標地址,應答的數據包就會都被發送至目標,一旦協議具有遞歸效果,流量就被顯著放大了,堪稱一種“借刀殺人”的流量型攻擊。
SYN Flood
這是一種利用 TCP 協議缺陷,發送大量偽造的 TCP 連接請求,從而使得被攻擊方資源耗盡(CPU 滿負荷或內存不足)的攻擊方式。建立 TCP 連接,需要三次握手:客戶端發送 SYN 報文,服務端收到請求并返回報文表示接受,客戶端也返回確認,完成連接。
SYN Flood 就是攻擊者客戶端在短時間內偽造大量不存在的 IP 地址,并向目標服務器不斷地發送 SYN 包,Server 則回復確認包,并等待客戶端確認,由于源地址不存在,因此目標服務器需要不斷重發直至超時,這些偽造的 SYN 包將長時間占用半連接隊列,導致正常的 SYN 請求因為隊列滿而被丟棄,從而引起網絡擁塞甚至系統癱瘓。
CC 攻擊
CC 攻擊是目前應用層攻擊的主要手段之一,借助【代理服務器】生成指向目標系統的合法請求,實現偽裝和 DDoS。
我們都有這樣的體驗,訪問一個靜態頁面,即使人多也不需要太長時間,但如果在高峰期訪問論壇、貼吧等,那就很慢了,因為服務器系統需要到數據庫中判斷訪問者否有讀帖、發言等權限。訪問的人越多,論壇的頁面越多,數據庫壓力就越大,被訪問的頻率也越高,占用的系統資源也就相當可觀。
CC 攻擊就充分利用了這個特點,模擬多個正常用戶不停地訪問如論壇這些需要大量數據操作的頁面(HTTP Flood),造成服務器資源的浪費,CPU 長時間處于 100%,永遠都有處理不完的請求,網絡擁塞,正常訪問被中止。這種攻擊技術性含量高,見不到真實源 IP,見不到特別大的異常流量,但服務器就是無法進行正常連接。
之所以選擇代理服務器是因為代理可以有效地隱藏自己的身份,也可以繞開防火墻,因為基本上所有的防火墻都會檢測并發的 TCP/IP 連接數目,超過一定數目一定頻率就會被認為是 Connection-Flood。當然也可以使用肉雞來發動 CC 攻擊,攻擊者使用 CC 攻擊軟件控制大量肉雞發動攻擊,肉雞可以模擬正常用戶訪問網站的請求偽造成合法數據包,相比前者來說更難防御。
CC 攻擊是針對 Web 服務在應用層發起的攻擊,在越上層協議上發動 DDoS 攻擊越難以防御,上層協議與業務關聯愈加緊密,防御系統面臨的情況也會更復雜。
由于 CC 攻擊成本低、威力大,80% 的 DDoS 攻擊都是 CC 攻擊。
DNS Query Flood
DNS 作為互聯網的核心服務之一,自然也 是DDoS 攻擊的一大主要目標。
DNS Query Flood 采用的方法是操縱大量傀儡機器,向目標服務器發送大量的域名解析請求。服務器在接收到域名解析請求時,首先會在服務器上查找是否有對應的緩存,若查找不到且該域名無法直接解析時,便向其上層 DNS 服務器遞歸查詢域名信息。
通常,攻擊者請求解析的域名是隨機生成或者是網絡上根本不存在的域名,由于在本地無法查到對應的結果,服務器必須使用遞歸查詢向上層域名服務器提交解析請求,引起連鎖反應。解析過程給服務器帶來很大的負載,每秒鐘域名解析請求超過一定的數量就會造成 DNS 服務器解析域名超時。
根據微軟的統計數據,一臺 DNS 服務器所能承受的動態域名查詢的上限是每秒鐘 9000 個請求。而一臺 P3 的 PC 機上可以輕易地構造出每秒鐘幾萬個域名解析請求,足以使一臺硬件配置極高的 DNS 服務器癱瘓,由此可見 DNS 服務器的脆弱性。
混合攻擊
在實際情況中,攻擊者只求達到打垮對方的目的,發展到現在,高級攻擊者已經不傾向使用單一的攻擊手段作戰了,而是根據目標系統的具體環境靈動組合,發動多種攻擊手段,既具備了海量的流量,又利用了協議、系統的缺陷,盡其所能地展開攻勢。
對于被攻擊目標來說,需要面對不同協議、不同資源的分布式的攻擊,分析、響應和處理的成本就會大大增加。
如何應對 DDoS 攻擊?
高防服務器
還是拿最開始重慶火鍋店舉例,高防服務器就是給重慶火鍋店增加了兩名保安,這兩名保安可以讓保護店鋪不受流氓騷擾,并且還會定期在店鋪周圍巡邏防止流氓騷擾。
高防服務器主要是指能獨立硬防御 50Gbps 以上的服務器,能夠幫助網站拒絕服務攻擊,定期掃描網絡主節點等,這東西是不錯,就是貴
黑名單
面對火鍋店里面的流氓,我一怒之下將他們拍照入檔,并禁止他們踏入店鋪,但是有的時候遇到長得像的人也會禁止他進入店鋪。這個就是設置黑名單,此方法秉承的就是 “錯殺一千,也不放一百” 的原則,會封鎖正常流量,影響到正常業務。
DDoS 清洗
DDos 清洗,就是我發現客人進店幾分鐘以后,但是一直不點餐,我就把他踢出店里。
DDoS 清洗會對用戶請求數據進行實時監控,及時發現 DOS 攻擊等異常流量,在不影響正常業務開展的情況下清洗掉這些異常流量。
CDN 加速
CDN 加速,我們可以這么理解:為了減少流氓騷擾,我干脆將火鍋店開到了線上,承接外賣服務,這樣流氓找不到店在哪里,也耍不來流氓了。
在現實中,CDN 服務將網站訪問流量分配到了各個節點中,這樣一方面隱藏網站的真實 IP,另一方面即使遭遇 DDoS 攻擊,也可以將流量分散到各個節點中,防止源站崩潰。