DDoS的攻擊方式
1、Synflood
該攻擊以多個(gè)隨機(jī)的源主機(jī)地址向目的主機(jī)發(fā)送SYN包,而在收到目的主機(jī)的SYN ACK后并不回應(yīng)。
這樣,目的主機(jī)就為這些源主機(jī)建立了大量的連接隊(duì)列,而且由于沒(méi)有收到ACK一直維護(hù)著這些隊(duì)列,造成了資源的大量消耗,最終導(dǎo)致拒絕服務(wù)。
2、Smurf
該攻擊向一個(gè)子網(wǎng)的廣播地址發(fā)一個(gè)帶有特定請(qǐng)求(如ICMP回應(yīng)請(qǐng)求)的包,并且將源地址偽裝成想要攻擊的主機(jī)地址。
子網(wǎng)上所有主機(jī)都回應(yīng)廣播包請(qǐng)求而向被攻擊主機(jī)發(fā)包,使該主機(jī)受到攻擊。
3、Land-based
攻擊者將一個(gè)包的源地址和目的地址都設(shè)置為目標(biāo)主機(jī)的地址,然后將該包通過(guò)IP欺騙的方式發(fā)送給被攻擊主機(jī),這種包可以造成被攻擊主機(jī)因試圖與自己建立連接而陷入死循環(huán),從而很大程度地降低了系統(tǒng)性能。
4、Ping of Death
根據(jù)TCP/IP的規(guī)范,一個(gè)包的長(zhǎng)度最大為65536字節(jié)。盡管一個(gè)包的長(zhǎng)度不能超過(guò)65536字節(jié),但是一個(gè)包分成的多個(gè)片段的疊加卻能做到。
當(dāng)一個(gè)主機(jī)收到了長(zhǎng)度大于65536字節(jié)的包時(shí),就是收到了Ping of Death攻擊,該攻擊會(huì)造成主機(jī)的宕機(jī)。
5、Teardrop
IP數(shù)據(jù)包在網(wǎng)絡(luò)傳遞時(shí),數(shù)據(jù)包可以分成更小的片段。攻擊者可以通過(guò)發(fā)送兩段(或者更多)數(shù)據(jù)包來(lái)實(shí)現(xiàn)TearDrop攻擊。第一個(gè)包的偏移量為0,長(zhǎng)度為N,第二個(gè)包的偏移量小于N。
為了合并這些數(shù)據(jù)段,TCP/IP堆棧會(huì)分配超乎尋常的巨大資源,從而造成系統(tǒng)資源的缺乏甚至機(jī)器的重新啟動(dòng)。
6、PingSweep
使用ICMP Echo輪詢多個(gè)主機(jī)。
7、Pingflood
該攻擊在短時(shí)間內(nèi)向目的主機(jī)發(fā)送大量ping包,造成網(wǎng)絡(luò)堵塞或主機(jī)資源耗盡。
DDOS攻擊防御方法
1、按攻擊流量規(guī)模分類
(1) 較小流量:小于1000Mbps,且在服務(wù)器硬件與應(yīng)用接受范圍之內(nèi),并不影響業(yè)務(wù)的: 利用iptables或者DDoS防護(hù)應(yīng)用實(shí)現(xiàn)軟件層防護(hù)。
(2) 大型流量:大于1000Mbps,但在DDoS清洗設(shè)備性能范圍之內(nèi),且小于機(jī)房出口,可能影響相同機(jī)房的其他業(yè)務(wù)的:利用iptables或者DDoS防護(hù)應(yīng)用實(shí)現(xiàn)軟件層防護(hù),或者在機(jī)房出口設(shè)備直接配置黑洞等防護(hù)策略,或者同時(shí)切換域名,將對(duì)外服務(wù)IP修改為高負(fù)載Proxy集群外網(wǎng)IP,或者CDN高仿IP,或者公有云DDoS網(wǎng)關(guān)IP,由其代理到RealServer;或者直接接入DDoS清洗設(shè)備。
(3) 超大規(guī)模流量:在DDoS清洗設(shè)備性能范圍之外,但在機(jī)房出口性能之內(nèi),可能影響相同機(jī)房的其他業(yè)務(wù),或者大于機(jī)房出口。
已經(jīng)影響相同機(jī)房的所有業(yè)務(wù)或大部分業(yè)務(wù)的:聯(lián)系運(yùn)營(yíng)商檢查分組限流配置部署情況并觀察業(yè)務(wù)恢復(fù)情況。
2、按攻擊流量協(xié)議分類
(1) syn/fin/ack等tcp協(xié)議包:設(shè)置預(yù)警閥值和響應(yīng)閥值,前者開(kāi)始報(bào)警,后者開(kāi)始處理,根據(jù)流量大小和影響程度調(diào)整防護(hù)策略和防護(hù)手段,逐步升級(jí)。
(2) UDP/DNS query等UDP協(xié)議包:對(duì)于大部分游戲業(yè)務(wù)來(lái)說(shuō),都是TCP協(xié)議的,所以可以根據(jù)業(yè)務(wù)協(xié)議制定一份TCP協(xié)議白名單,如果遇到大量UDP請(qǐng)求,可以不經(jīng)產(chǎn)品確認(rèn)或者延遲跟產(chǎn)品確認(rèn),直接在系統(tǒng)層面/HPPS或者清洗設(shè)備上丟棄UDP包。
(3) http flood/CC等需要跟數(shù)據(jù)庫(kù)交互的攻擊:這種一般會(huì)導(dǎo)致數(shù)據(jù)庫(kù)或者webserver負(fù)載很高或者連接數(shù)過(guò)高,在限流或者清洗流量后可能需要重啟服務(wù)才能釋放連接數(shù),因此更傾向在系統(tǒng)資源能夠支撐的情況下調(diào)大支持的連接數(shù)。
相對(duì)來(lái)說(shuō),這種攻擊防護(hù)難度較大,對(duì)防護(hù)設(shè)備性能消耗很大。
(4) 其他:icmp包可以直接丟棄,先在機(jī)房出口以下各個(gè)層面做丟棄或者限流策略。現(xiàn)在這種攻擊已經(jīng)很少見(jiàn),對(duì)業(yè)務(wù)破壞力有限。