摘 要: 分析SYN flood attack攻擊原理,并在此基礎上研究幾種典型的SYN flood 攻擊檢測方法。對主要技術進行分析和比較,這些技術均有各自的優點和局限性,多種方法有機融合互補將成為SYN flood 攻擊檢測研究的重點。
關鍵詞: SYN flood攻擊;TCP協議;檢測
SYN flood攻擊是一種當前流行的DoS與DDoS的方式之一,主要是利用TCP協議的三次握手的缺陷,造成服務器上TCP連接表溢出[1],而攻擊服務器響應TCP連接請求的能力。TCP是TCP/IP體系中的運輸層協議,是面向連接的,其三次握手過程數據包都通過IP協議傳輸。而IP協議是一種不可靠、盡力而為的網絡協議,缺乏認證和保密措施,因此為否認、拒絕等欺瞞行為開了方便之門[2]。目前,DDos攻擊中約有90%是SYN flood攻擊[3],研究 SYN flood攻擊檢測技術對網絡安全意義重大。
1 SYN flood 原理
TCP連接的建立是通過三次握手來初始化[4]。三次握手建立TCP連接如圖1所示。
在TCP連接的三次握手中,若用戶向服務器發送了SYN報文后突然死機或掉線,則服務器在發出SYN+ACK應答報文后將無法收到客戶端的ACK報文,導致第三次握手無法完成。這時,服務器端的TCP/IP棧中會保留這個半連接狀態,然后再次發送SYN+ACK給客戶端,并等待一段時間后丟棄這個未完成的連接。這段時間稱為SYN Timeout(一般約為30 s~2 min)[4]。但如有攻擊者大量模擬這種情況,產生大量的半連接,服務器將為維護這些半連接而消耗大量的資源,進而導致服務器的TCP/IP堆棧溢出,使服務器無法響應正常用戶的請求。SYN flood攻擊就是利用這種行為發動攻擊。
正常情況下,連接超時后,服務器會清理出TCP連接表中已超時連接的相關信息。但攻擊者不斷給服務器發送大量的欺騙的TCP連接請求,使TCP連接表一直處于被填滿狀態,導致服務器無法響應大多數合法的連接請求。
根據攻擊源的IP地址,SYN flood攻擊可分為以下三種:(1)使用本機的IP發送SYN欺騙包;(2)假冒本網段中未在線的多臺主機IP發送SYN欺騙包;(3)隨機產生偽造的IP地址發送SYN欺騙包。為增加攻擊的力度、隱蔽性和效率,使用隨機源地址進行SYN flood攻擊是攻擊者常使用的方法[5]。
2 SYN flood攻擊的檢測技術
根據檢測的位置SYN flood攻擊檢測主要分為4種:被攻擊的服務器端、攻擊源端、攻擊源和被攻擊服務器間以及正常的主機端。最受關注的是服務器端的檢測和防護[6];
2.1 基于TCP協議SYN-FIN(RST)行為對特征的檢測
這種方法檢測的是連接終端主機的路由器端,是基于TCP協議SYN-FIN(RST)包對特征和連續變化點的檢測[6]。首先收集IP數據包,然后分類數據包。根據IP訪問包的TCP頭部來識別TCP SYN、FIN和RST。關鍵是找出IP數據包片偏移中TCP數據位,計算依據公式為IPoffset=Hdr_LengthIP+TCPoffset。接著利用非參數的CUSUM(Cumulative Sum)算法分析SYN-FIN(RST)行為對。CUSUM算法公式如下:
此檢測方法與參考文獻[6]的檢測思想類似,都是以TCP協議的SYN/ACK包數量為檢測基礎,均需對IP數據包進行分類。優點是兩個粒度檢測引擎采用不同的檢測機制,檢測高效、高速、虛警率低。其缺點主要有:檢測效果會隨著攻擊組規模的增大而衰減。當網絡中攻擊流與網絡正常業務相差不大時,也不易檢測出來。
的優點是存儲保證數據的持久性和容錯性。如系統出現任何故障,當再次進入系統時,數據仍然存在,可以直接恢復正常連接。檢查過程是主動的,不依賴于其他網絡設備。不僅能檢測SYN flood攻擊,還有一定的消除SYN flood攻擊的功能。
3 現有技術比較
表3對上面介紹的SYN flood 攻擊檢測的防御所采用的方法進行簡單總結。通過分析和比較已有的SYN flood 攻擊檢測和防御方法發現,對于SYN flood 攻擊檢測和防御目前還沒有完美的解決方案。常規的SYN flood防御方法因實現容易,已得到廣泛應用,但防御力度不強,不能從根本上避免SYN flood 攻擊的發生。SYN-cookie技術已得到廠商的支持, 已在一些防火墻中使用。輸入過濾器在理論上可以徹底避免SYN flood攻擊的發生,但因其會使路由器處理數據量加大,影響路由器的性能,實施難度較大,還需進一步研究。
本文分析了TCP的三次握手協議,并針對SYN flood 攻擊的原理,對其檢測方法進行了探討。未來的檢測和防御,應趨向于如何綜合應用上述幾種檢測方法,取長補短,以達到互相補充和彌補,提高檢測精度和效率。
參考文獻
[1] 黃發文,徐濟仁,陳家松.計算機網絡安全技術初探[J].計算機應用研究,2002,19(5):46-48.
[2] 賈春福,劉春波,高敏芬,等.計算機安全原理與實踐[M].北京:機械工業出版社,2008.7.
[3] 李海偉,張大方,劉俊,等.一種基于主動探測機制的SYNFlood攻擊檢測方法[J].計算機科學,2010,37(3):117-120.
[4] SYN Flood攻擊的基本原理及防御[EB/OL].http://www.bitscn.com/network/hack/200705/102673.html,2007.
[5] 謝希仁.計算機網絡[M].北京:電子工業出版社,2003.
[6] WANG H,ZHANG D,SHIN K G.Detecting SYN flood attacks[J/OL].Proceedings of the Annual Joint Conference of the IEEE Computer Society and Communications Society (INFOCOM),New York,NY,USA,2002,3:1530-1539.
[7] Xiao Bin,Chen Wei,He Yanxiang,et al.An active detecting method against SYN flood attack[J/OL].The 11th International Conference on Parallel and Distributed Systems (ICPADS′05),Volume I,709-715,Fukuoka,Japan,2005.07.
[8] 陳杰,薛質,單蓉勝.一種基于Patricia樹的檢測Syn Flood攻擊的方法[J].計算機工程,2004,30(13):26-28.
[9] 林白,李鷗,趙樺.基于源端網絡的SYN Flood攻擊雙粒度檢測[J].計算機工程,2005,31(10):132-134.
[10] 許曉東,楊海量,朱士瑞.基于重尾特性的SYN洪流檢瀏方法[J].計算機工程,2008,34(22):179-181.
[11] Ling Yun,Gu Ye,Wei Guiyi.Detect SYN flood attack in edge routers[J].International Journal of Security and its Applications,2009,3(1):32-45.