DDOS攻擊類型:
1.資源消耗型攻擊:Syn Flood 、UDP Flood、ACK Flood、ICMP Flood、Slowloris慢速連接攻擊
2.服務(wù)消耗型攻擊:CC攻擊
3.反射攻擊:DNS Flood
主要的攻擊介紹:
SYN Flood
攻擊者偽裝大量的IP地址給服務(wù)器發(fā)送SYN報文,由于偽造的IP地址幾乎不可能存在,也就幾乎沒有設(shè)備會給服務(wù)器返回任何應(yīng)答了。因此,服務(wù)器將會維持一個龐大的等待列表,不停地重試發(fā)送SYN+ACK報文,同時占用著大量的資源無法釋放。更為關(guān)鍵的是,被攻擊服務(wù)器的SYN_RECV隊列被惡意的數(shù)據(jù)包占滿,不再接受新的SYN請求,合法用戶無法完成三次握手建立起TCP連接。也就是說,這個服務(wù)器被SYN Flood拒絕服務(wù)了。
2. Slowloris慢速連接攻擊
慢速攻擊就是要維持跟服務(wù)器的連接,導(dǎo)致正??蛻舳说倪B接不能建立,從而達(dá)到拒絕服務(wù)的目的。
3. Hash碰撞攻擊
所謂的哈希碰撞攻擊就是,針對哈希函數(shù)的特性,精心構(gòu)造數(shù)據(jù),使所有數(shù)據(jù)的哈希值相同,當(dāng)這些數(shù)據(jù)保存到哈希表中,哈希表就會退化為單鏈表,哈希表的各種操作的時間復(fù)雜度提升一個數(shù)量級,因此會消耗大量CPU資源,導(dǎo)致系統(tǒng)無法快速響應(yīng)請求,從而達(dá)到拒絕服務(wù)攻擊(Dos)的目的。
發(fā)起方式:HashTable在所有的Web應(yīng)用框架上都有應(yīng)用,我們對Web應(yīng)用每次發(fā)起請求所提交的參數(shù),服務(wù)器端都會將其存儲在HashTable中供后臺代碼調(diào)用,所以哈希碰撞攻擊的攻擊方式一般都是通過發(fā)送包含大量碰撞鍵值的參數(shù)的post請求,來達(dá)到攻擊的目的。
4. DNS Query Flood
DNS可以分為普通DNS和授權(quán)域DNS,攻擊普通DNS,IP地址需要隨機(jī)偽造,并且指明服務(wù)器要求做遞歸解析;但攻擊授權(quán)域DNS,偽造的源IP地址則不應(yīng)該是純隨機(jī)的,而應(yīng)該是事先收集的全球各地ISP的DNS地址,這樣才能達(dá)到最大攻擊效果。
DNS Query Flood就是攻擊者操縱大量傀儡機(jī)器,對目標(biāo)發(fā)起海量的域名查詢請求。為了防止基于ACL的過濾,必須提高數(shù)據(jù)包的隨機(jī)性。常用的做法是UDP層隨機(jī)偽造源IP地址、隨機(jī)偽造源端口等參數(shù)。在DNS協(xié)議層,隨機(jī)偽造查詢ID以及待解析域名。隨機(jī)偽造待解析域名除了防止過濾外,還可以降低命中DNS緩存的可能性,盡可能多地消耗DNS服務(wù)器的CPU資源。
5. HTTP Flood(CC攻擊)
通過端口掃描程序在互聯(lián)網(wǎng)上尋找匿名的HTTP代理或者SOCKS代理,攻擊者通過匿名代理對攻擊目標(biāo)發(fā)起HTTP請求。
HTTP Flood攻擊在HTTP層發(fā)起,極力模仿正常用戶的網(wǎng)頁請求行為,與網(wǎng)站業(yè)務(wù)緊密相關(guān),安全廠商很難提供一套通用的且不影響用戶體驗(yàn)的方案。在一個地方工作得很好的規(guī)則,換一個場景可能帶來大量的誤殺。
- ACK Flood
當(dāng)建立完TCP連接后,所有的數(shù)據(jù)傳輸TCP報文都是帶有ACK標(biāo)志位的,主機(jī)在接收到一個帶有ACK標(biāo)志位的數(shù)據(jù)包的時候,需要檢查該數(shù)據(jù)包所表示的連接四元組是否存在(查TCP連接表,增加cpu耗時),如果存在則檢查該數(shù)據(jù)包所表示的狀態(tài)是否合法,然后再向應(yīng)用層傳遞該數(shù)據(jù)包。如果在檢查中發(fā)現(xiàn)該數(shù)據(jù)包不合法,例如該數(shù)據(jù)包所指向的目的端口在本機(jī)并未開放,則主機(jī)操作系統(tǒng)協(xié)議棧會回應(yīng)RST包告訴對方此端口不存在。
DDOS防御:
架構(gòu)優(yōu)化:
對于部署在云端的系統(tǒng),可以使用云解析,優(yōu)化DNS的智能解析使用LB,通過負(fù)載均衡來減緩CC攻擊的影響,同時也能將訪問用戶均衡分配到各個web服務(wù)器上,減少單個web服務(wù)器的壓力,加快服務(wù)器的響應(yīng)速度。使用專有網(wǎng)絡(luò)VPC,防止內(nèi)網(wǎng)攻擊做好服務(wù)器的性能測試,評估正常業(yè)務(wù)環(huán)境下能承受的帶寬和請求數(shù),確??梢噪S時彈性擴(kuò)容使用ip代理服務(wù)器,隱藏服務(wù)器的真實(shí)ip地址,防止泄露服務(wù)器的ip
服務(wù)器安全加固:
限制同時打開的SYN半連接數(shù)目,縮短SYN半連接的timeout時間,限制SYN流量禁用ICMP。僅在需要測試時開放ICMP控制TCP連接,通過iptables軟件防火墻來限制某些IP的新建連接控制某些IP的速率
針對性的防御措施
- SYN FLOOD防御:
修改內(nèi)核參數(shù):
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
分別為啟用SYN Cookie、設(shè)置SYN最大隊列長度以及設(shè)置SYN+ACK最大重試次數(shù)。
- Slowloris慢速連接防御
對于這種慢速攻擊的防御,可以簡單的依據(jù)其特征,修改些參數(shù)即可,包括:限制單機(jī)IP的連接數(shù)、限制http request header/body 的超時時間、包括其頭部包含的字段也是其特征。
- Hash碰撞攻擊防護(hù)
限制post請求的個數(shù)限制沖突鏈表的長度
- DNS FLOOD 防御:
普通DNS
緩存,將緩存的ip地址返回給后端業(yè)務(wù)
重發(fā):丟棄DNS報文導(dǎo)致UDP層面的重發(fā),返回特殊響應(yīng)強(qiáng)制要求客戶端使用TCP協(xié)議重發(fā)
授權(quán)域DNS:
對于授權(quán)域DNS的保護(hù),設(shè)備會在業(yè)務(wù)正常時期提取收到的DNS域名列表和ISP DNS IP列表備用,在攻擊時,非此列表的請求一律丟棄,大幅降低性能壓力。
- HTTP FLOOD防御:
通過緩存來做,將設(shè)備的緩存來直接返回給后端業(yè)務(wù)
緩存擊穿,對源ip的http請求頻率做統(tǒng)計,高于一定頻率的IP地址加入黑名單,但是這樣會帶來誤殺。因此,此方案已經(jīng)被廢棄。取而代之的是JavaScript跳轉(zhuǎn)人機(jī)識別方案。