攻擊科普:DDos


一.DDoS 攻擊究竟是什么?

DDoS 攻擊,全稱是 Distributed Denial of Service,翻譯成中文就是分布式拒絕服務。

一般來說是指攻擊者利用“肉雞”對目標網站在較短的時間內發起大量請求,大規模消耗目標網站的主機資源,讓它無法正常服務。在線游戲、互聯網金融等領域是 DDoS 攻擊的高發行業。

例如: 我開了一家有五十個座位的重慶火鍋店,由於用料上等,童叟無欺。平時門庭若市,生意特別紅火,而對面二狗家的火鍋店卻無人問津。二狗為了對付我,想了一個辦法,叫了五十個人來我的火鍋店坐着卻不點菜,讓別的客人沒法吃飯。

二.DDoS 攻擊多少G是什么意思?

經常有人說,被攻擊了,有50G流量,那多少G到底啥意思?

G指的就是帶寬和流量了。例如你去訪問百度,百度需要將它的頁面發給你,這個頁面可能有幾百字節而已,但要是一直訪問,百度就需要一直發送幾百字節的頁面給你。

一台肉雞,10M帶寬,可以不斷訪問直到帶寬滿了,那將消耗百度服務器10M的下行流量。像一般服務器對外有100M帶寬,10台肉雞就可以將網站帶寬占滿,正常的訪問無法進入。

像IDC查詢出口帶寬的流量就行。如果是Linux服務器,使用ifconfig命令即可查詢上行和下行的流量。

二.DDoS攻擊種類

ICMP Flood

ICMP(Internet控制報文協議)用於在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 就是用戶向服務器發送報文后突然死機或掉線,那么服務器在發出應答報文后就無法收到客戶端的確認報文(第三次握手無法完成),這時服務器端一般會重試並等待一段時間后再丟棄這個未完成的連接。

一個用戶出現異常導致服務器的一個線程等待一會兒並不是大問題,但惡意攻擊者大量模擬這種情況,服務器端為了維護數以萬計的半連接而消耗非常多的資源,結果往往是無暇理睬客戶的正常請求,甚至崩潰。從正常客戶的角度看來,網站失去了響應,無法訪問。

CC攻擊

CC攻擊是目前應用層攻擊的主要手段之一,借助代理服務器生成指向目標系統的合法請求,實現偽裝和DDoS。

我們都有這樣的體驗,訪問一個靜態頁面,即使人多也不需要太長時間,但如果在高峰期訪問論壇、貼吧等,那就很慢了,因為服務器系統需要到數據庫中判斷訪問者否有讀帖、發言等權限。訪問的人越多,論壇的頁面越多,數據庫壓力就越大,被訪問的頻率也越高,占用的系統資源也就相當可觀。

CC攻擊就充分利用了這個特點,模擬多個正常用戶不停地訪問如論壇這些需要大量數據操作的頁面,造成服務器資源的浪費,CPU長時間處於100%,永遠都有處理不完的請求,網絡擁塞,正常訪問被中止。這種攻擊技術性含量高,見不到真實源IP,見不到特別大的異常流量,但服務器就是無法進行正常連接。

之所以選擇代理服務器是因為代理可以有效地隱藏自己的身份,也可以繞開防火牆,因為基本上所有的防火牆都會檢測並發的TCP/IP連接數目,超過一定數目一定頻率就會被認為是Connection-Flood。

當然也可以使用肉雞來發動CC攻擊,攻擊者使用CC攻擊軟件控制大量肉雞發動攻擊,肉雞可以模擬正常用戶訪問網站的請求偽造成合法數據包,相比前者來說更難防御。CC攻擊是針對Web服務在第七層協議發起的攻擊,在越上層協議上發動DDoS攻擊越難以防御,上層協議與業務關聯愈加緊密,防御系統面臨的情況也會更復雜。

比如CC攻擊中最重要的方式之一HTTP Flood,不僅會直接導致被攻擊的Web前端響應緩慢,對承載的業務造成致命的影響,還可能會引起連鎖反應,間接攻擊到后端的Java等業務層邏輯以及更后端的數據庫服務。

由於CC攻擊成本低、威力大,知道創宇安全專家組發現80%的DDoS攻擊都是CC攻擊。帶寬資源嚴重被消耗,網站癱瘓;CPU、內存利用率飆升,主機癱瘓;瞬間快速打擊,無法快速響應。

DNS Query Flood

DNS作為互聯網的核心服務之一,自然也是DDoS攻擊的一大主要目標。

DNS Query Flood采用的方法是操縱大量傀儡機器,向目標服務器發送大量的域名解析請求。服務器在接收到域名解析請求時,首先會在服務器上查找是否有對應的緩存,若查找不到且該域名無法直接解析時,便向其上層DNS服務器遞歸查詢域名信息。

通常,攻擊者請求解析的域名是隨機生成或者是網絡上根本不存在的域名,由於在本地無法查到對應的結果,服務器必須使用遞歸查詢向上層域名服務器提交解析請求,引起連鎖反應。解析過程給服務器帶來很大的負載,每秒鍾域名解析請求超過一定的數量就會造成DNS服務器解析域名超時。

根據微軟的統計數據,一台DNS服務器所能承受的動態域名查詢的上限是每秒鍾9000個請求。而一台P3的PC機上可以輕易地構造出每秒鍾幾萬個域名解析請求,足以使一台硬件配置極高的DNS服務器癱瘓,由此可見DNS服務器的脆弱性。

混合攻擊

在實際情況中,攻擊者只求達到打垮對方的目的,發展到現在,高級攻擊者已經不傾向使用單一的攻擊手段作戰了,而是根據目標系統的具體環境靈動組合,發動多種攻擊手段,既具備了海量的流量,又利用了協議、系統的缺陷,盡其所能地展開攻勢。對於被攻擊目標來說,需要面對不同協議、不同資源的分布式的攻擊,分析、響應和處理的成本就會大大增加。

三.如何應對 DDoS 攻擊?

行為:選購

選IDC或者雲主機時,要查看是否有臨時增加帶寬,高防服務,冗余等等。這些信息的了解有助於在遇到攻擊時幫助解決一部分問題。

行為:檢測

購買機器前進行性能測試,定期對業務服務進行測試,要清楚當前結構能抗住多大壓力。對於電商網站,雙十一就是一次DDOS,清楚抗壓多少可以根據這些數據來增加機器進行冗余,做到心中有數。

平時可根據數據來預留綜合流量30%的資源,以防突然的小高峰訪問而導致服務崩潰。

行為:適當

對系統和軟件的配置,不能動不動就65535,這會導致很容易就被打垮。如果機器只能支持3000,那就配置3000,這樣再多就進不來了,而當前只會慢一些。

優化:內核進行優化

內核可以控制tcp協議的一些機制,比如鏈接超時多久就放棄鏈接,設置短一些將會少量禁止那些半syn攻擊,再比如啟用TIME-WAIT狀態sockets的快速回收,這樣可以應對大並發的流量,一個tcp鏈接終止后將快速釋放。

具體可以查看內核詳細說明

優化:web服務器優化

針對WEB服務配置的修改,當前只說明nginx的,可以設置客戶端連接保持會話超時時間,超過這個時間,服務器斷開這個鏈接等等,根據性能測試,web服務器的優化將帶來更顯著的效果。

具體可以查看nginx詳細說明對於優化前后差別可以查看優化前后

軟件:黑名單

面對火鍋店里面的流氓,我一怒之下將他們拍照入檔,並禁止他們踏入店鋪,但是有的時候遇到長得像的人也會禁止他進入店鋪。這個就是設置黑名單,此方法秉承的就是“錯殺一千,也不放一百”的原則,會封鎖正常流量,影響到正常業務。

像nginx里設置最大一個ip並發訪問20就禁止,也是不太好的,因為有的公司使用正向代理服務器訪問,或者公司就一個出口ip,那一個ip可能一個公司用,何止20並發。

並且如果在服務器上設置黑名單,將會很消耗服務器資源,進來一個鏈接就比對一次,換成硬件防火牆好一些。

配置:CDN加速

我們可以這么理解:為了減少流氓騷擾,我干脆將火鍋店開到了線上,承接外賣服務,這樣流氓找不到店在哪里,也耍不來流氓了。在現實中,CDN 服務將網站訪問流量分配到了各個節點中,這樣一方面隱藏網站的真實 IP,另一方面即使遭遇 DDoS 攻擊,也可以將流量分散到各個節點中,防止源站崩潰。

同時每個節點都有緩存的靜態頁面,這樣如果攻擊方不是隨機訪問網站多個頁面,將能更好的承接攻擊。

配置:盡量使用靜態頁面

DDOS是耗盡資源(帶寬,服務器的內存,cpu,tcp鏈接數),如果將首頁或者某些頁面盡量使用靜態的html頁面,如果點擊某些東西再切換到動態頁面,將能更好的承接DDOS攻擊,如果首頁是動態頁面,那每次的解析和查詢表單等操作將會很耗費性能。

硬件:高防服務器

還是拿我開的重慶火鍋店舉例,高防服務器就是我給重慶火鍋店增加了兩名保安,這兩名保安可以讓保護店鋪不受流氓騷擾,並且還會定期在店鋪周圍巡邏防止流氓騷擾。高防服務器主要是指能獨立硬防御 50Gbps 以上的服務器,能夠幫助網站拒絕服務攻擊,定期掃描網絡主節點等,這東西是不錯,就是貴~

硬件:DDoS 清洗

DDos 清洗,就是我發現客人進店幾分鍾以后,但是一直不點餐,我就把他踢出店里。

DDoS 清洗會對用戶請求數據進行實時監控,及時發現DOS攻擊等異常流量,在不影響正常業務開展的情況下清洗掉這些異常流量。

硬件:提高帶寬

現在大多用雲,那意味着可以動態擴容,像nginx屬於高並發,很多時候並不是內存和cpu滿了,而是帶寬不夠用了。那就可以買帶寬來臨時提高

如果是真實機,那就沒辦法了,像idc被攻擊就不太好處理,最好是上高防

硬件:LSB負載均衡

如果是阿里雲,可以在域名的DNS那里填寫多個LSB的地址,每個LSB提供5G的流量清洗,這樣幾個加起來就可以抵御很大的攻擊了。將正常訪問傳給后端服務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM