掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
SYN Flood (SYN洪水) 是種典型的DoS (Denial of Service,拒絕服務(wù)) 攻擊,屬于DDos攻擊的一種。遭受攻擊后服務(wù)器TCP連接資源耗盡,停止響應(yīng)正常的TCP連接請(qǐng)求。盡管這種攻擊已經(jīng)出現(xiàn)了十多年,但它的變種至今仍能看到。雖然能有效對(duì)抗SYN洪泛的技術(shù)已經(jīng)存在,但是沒有對(duì)于TCP實(shí)現(xiàn)的一個(gè)標(biāo)準(zhǔn)的補(bǔ)救方法出現(xiàn)。今天小編將詳述這種攻擊原理以及對(duì)抗SYN洪水的方法~

攻擊原理
正常的三次握手:
SYN Flood 主要是利用了TCP協(xié)議的三次握手的缺陷,在這個(gè)攻擊中,F(xiàn)lood帶有一系列的syn數(shù)據(jù)包,每個(gè)數(shù)據(jù)包都會(huì)導(dǎo)致服務(wù)端發(fā)送SYN-ACK響應(yīng),然后服務(wù)器等待SYN+ACK之后的第三次握手ACK,由于客戶端是軟件生成的虛擬IP,永遠(yuǎn)不會(huì)再發(fā)送ACK響應(yīng)服務(wù)端,服務(wù)端會(huì)利用從傳機(jī)制直到超時(shí)后刪除,整個(gè)系統(tǒng)資源也會(huì)被隊(duì)列積壓消耗,導(dǎo)致服務(wù)器無法對(duì)正常的請(qǐng)求進(jìn)行服務(wù)。
如何判斷自己是否遭受 SYN 攻擊?
檢測SYN攻擊非常的簡單,當(dāng)你在服務(wù)器上看到大量的半連接狀態(tài)時(shí),特別是源IP地址是隨機(jī)的,基本上可以斷定這是一次SYN攻擊。我們使用系統(tǒng)自帶的netstat 工具來檢測SYN攻擊:
- # netstat -n -p TCP
反饋如圖
防御 SYN Flood攻擊
配置iptables規(guī)則
Iptables防火墻我們可以理解為Linux系統(tǒng)下的訪問控制功能,我們可以利用Iptables來配置一些規(guī)則來防御這種攻擊。強(qiáng)制SYN數(shù)據(jù)包檢查,保證傳入的tcp鏈接是SYN數(shù)據(jù)包,如果不是就丟棄。
- #iptables -A INPUT -p tcp --syn -m state --state NEW -j DROP
強(qiáng)制檢查碎片包,把帶有傳入片段的數(shù)據(jù)包丟棄。
- #iptables -A INPUT -f -j DROP
丟棄格式錯(cuò)誤的XMAS數(shù)據(jù)包。
- #iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
丟棄格式錯(cuò)誤的NULL數(shù)據(jù)包。
- #iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
當(dāng)Iptables配置完成后我們可以使用nmap命令對(duì)其驗(yàn)證
- # nmap -v -f FIREWALL IP
- # nmap -v -sX FIREWALL IP
- # nmap -v -sN FIREWALL IP
例如:
其他防御方式:
除此之外針對(duì)SYN攻擊的幾個(gè)環(huán)節(jié),我們還可以使用以下處理方法:
方式1:減少SYN-ACK數(shù)據(jù)包的重發(fā)次數(shù)(默認(rèn)是5次)
- sysctl -w net.ipv4.tcp_synack_retries=3
- sysctl -w net.ipv4.tcp_syn_retries=3
方式2:使用SYN Cookie技術(shù)
- sysctl -w net.ipv4.tcp_syncookies=1
方式3:增加backlog隊(duì)列(默認(rèn)是1024):
- sysctl -w net.ipv4.tcp_max_syn_backlog=2048
方式4:限制SYN并發(fā)數(shù):
- iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT --limit 1/s

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流