Linux安全之SYN攻擊原理及處理


TCP自從1974年被發明出來之后,歷經30多年發展,目前成為最重要的互聯網基礎協議,但TCP協議中也存在一些缺陷。

SYN攻擊就是利用TCP協議的缺陷,來導致系統服務停止正常的響應。

SYN攻擊原理


 

TCP在傳遞數據前需要經過三次握手,SYN攻擊的原理就是向服務器發送SYN數據包,並偽造源IP地址。

服務器在收到SYN數據包時,會將連接加入backlog隊列,並向源IP發送SYN-ACK數據包,並等待ACK數據包,以完成三次握手建立連接。

由於源IP地址是偽造的不存在主機IP,所以服務器無法收到ACK數據包,並會不斷重發,同時backlog隊列被不斷被攻擊的SYN連接占滿,導致無法處理正常的連接。

SYN攻擊處理


針對SYN攻擊的幾個環節,提出相應的處理方法:

方式1:減少SYN-ACK數據包的重發次數(默認是5次):

sysctl -w net.ipv4.tcp_synack_retries=3 
sysctl -w net.ipv4.tcp_syn_retries=3 

方式2:使用SYN Cookie技術:

sysctl -w net.ipv4.tcp_syncookies=1 

方式3:增加backlog隊列(默認是1024):

sysctl -w net.ipv4.tcp_max_syn_backlog=2048 

方式4:限制SYN並發數:

iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT --limit 1/s

SYN攻擊模擬


可以用之前介紹的hping工具來模擬SYN攻擊,參見《Linux常用網絡工具:hping高級主機掃描》;

還有一款synkill也可以用來模擬SYN攻擊。


記錄,為更好的自己!


免責聲明!

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



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