什麼是TCP重新設定?
前言 #
在現代電腦網路中,TCP(傳輸控制協議)作為 INTERNET 通訊的基本協議,扮演著非常重要的角色。TCP 不僅負責數據的可靠傳遞,還通過複雜的手勢和流量控制機制確保網路連接的穩定性和高效性。它是一種面向連接、可靠的、基於位元流的传输層協議,在各種應用程式之間數據的可靠傳遞上廣泛應用。
然而,在TCP協議的设计與實現中,有一種機制雖然重要但常常被忽略——TCP重置(TCP Reset)。在某些情況下,TCP會發送一個「重置」(RST)段來終止當前進行中的資料傳輸,這通常被稱為TCP重置。這種機制在某些情況下可能會對網絡安全和系統穩定性造成嚴重影響。本文將深入探討TCP重置帶來的危害與影響,並詳細介紹如何應對這一問題。
這個技術可以在善意的防火牆中應用,但也可用於網路審查或是攻擊,恶意中断TCP連接,是一種旁觀者攻擊。防火長城(GFW)會自動執行TCP重置攻擊,來阻斷不符合當地法規法例的網站。
基本概念 #
背景 #
當兩台電腦之間需要建立雙向虛擬連線時,TCP(Transmission Control Protocol)與IP(Internet Protocol)會一起使用。(UDP則是無连接的IP協議。)兩台電腦上的TCP軟體將透過交換數據包流進行通訊(例如,裝有瀏覽器的電腦和Web服务器)。使用TCP連線為電腦提供了一種便捷的方式來交換對於單個數據包來說過大的數據項,例如影音片段、電子郵件附件或音樂檔案。雖然某些網頁对于單個數據包來說足夠小,但為了方便起見,它們也是透過TCP連線傳送的。
TCP重置 #
TCP重置是TCP協議中的一種錯誤處理機制,用於在网络連接出現異常時快速恢復通訊狀態。當TCP連線因某些原因斷開或發生嚴重錯誤(如數據包損壞、超時等)時,傳送方會向接收方傳送一個帶有RST(Reset)標旗位的TCP報文段,指示對方重置該連線。
TCP重置機制的設計初衷是快速清理無效連線,確保網路資源不被無謂地占用。然而,在實際應用中,由於配置不當、惡意攻擊或協議漏洞等原因,TCP重置可能會引發嚴重的安全問題和性能隱患。 按照最初的设计,這是一種有用的工具。常見的應用是在建立TCP連線時電腦(電腦A)發生崩潰的情況。另一端的電腦(電腦B)仍會持續傳送TCP數據包,因為它不知道電腦A已崩潰。重新啟動電腦A後,它將從舊的崩潰前連線接收數據包。電腦A沒有這些數據包的上下文,也無法知道如何處理這些數據包,因此它可以向電腦B傳送TCP重置。此重置使電腦B知道該連線不再有效。電腦B上的用戶現在可以嘗試其他連線或採取其他措施。
伪造TCP重置 #
在上述情況下,TCP重置是由作為連線端點之一的電腦發送的。但操作中,第三台電腦可以監視連線上的TCP數據包,然後將包含TCP重置的“偽造”數據包送到一個或兩個端點。偽造數據包中的標頭必須誤導地表明它來自端點,而不是偽造者。這些信息包括端點IP地址和端口号。IP和TCP封包標頭中的每個欄位都必須設置為令人信服的偽造值,以便進行偽重置,以欺騙端點關閉TCP連接。正確格式化的偽造TCP重置可能是中斷偽造者可以監視的任何TCP連接的非常有效的方法。
TCP重置是如何產生的 #
TCP重設(RST)是一種用於終止TCP連接或拒絕異常連接請求的機制。在正常的TCP通訊過程中,雙方會通過三次握手建立連接,並通過四次揮手完成連接的关闭。然而,在某些情況下,網路中的主機會發送一個帶有RST標誌位的TCP包,這將導致當前連接被重設。 以下是導致TCP重設的一些主要原因:
1.異常終止連接 #
- 在正常的通訊過程中有時候,如果一方突然斷電、崩潰或因其他原因無法繼續維持連接,它會發送一個RST包來通知另一方終止連接。這種情況下,RST包是合法的,用於清理異常狀態。
2.網路配置錯誤 #
- 在網路設備(如路由器、防火牆)的配置過程中,如果規則設置不當,可能會導致某些合法的TCP流量被錯誤地標記為非法,並觸發RST重設。例如,一些ACL(訪問控制列表)或NAT(網絡地址轉換)配置錯誤可能导致連接被意外終止。
3.中間設備干擾 #
- 在複雜的網路環境中,某些中間設備(如防火牆、負載均衡器)可能會因為處理不當而發送RST包。特別是在處理畸形的TCP包(如重組失敗的数据包)時,這些設備可能會認為連接處於異常狀態,並主動發送RST來重設連接。
4.安全威脅 #
- 憤怒攻擊者可以通過發送偽造的RST包啟動拒絕服務(DoS)攻擊或分布式拒絕服務(DDoS)攻擊。透過向目標伺服器發送大量RST包,攻擊者可以阻止合法客戶端與伺服器之間的正常通訊,從而導致服務中斷。
5.協議實現問題 #
- 某些操作系統或應用程序的TCP/IP協定堆疊可能存在漏洞,導致在特定情況下錯誤地發送RST包。例如,某些老版本的操作系統在處理某些異常流量時可能會觸發不必要的RST重設。
6.網路故障 #
- 硬體問題:如交換機、路由器等設備的物理損壞或配置錯誤。
- 帶寬限制:高流量需求可能导致網絡擁塞,進而引發TCP重設。
7.安全攻擊 #
- SYN Flood攻擊:攻擊者發送大量偽造的連接請求(SYN包),導致伺服器資源耗盡,無法正常回應有效的連接請求。
- 憤怒RST包:黑客通過向目標設備發送RST段來干擾正常的通訊過程。
8.應用程式錯誤 #
- 超時問題:應用程沒有正確處理TCP的重傳機制,導致长时间等待無回應的数据包被自動放棄並發送RST。
- 資源耗盡:例如記憶體洩漏、線程挂起等情況下,應用程式無法正常工作,從而觸發TCP重設。
9.作業系統配置 #
- 防火牆規則設定不當:錯誤的防火牆規則可能导致合法的数据包被誤判為恶意攻擊並阻止其傳輸。
- 網絡介面問題:如網卡驅動程式故障或不兼容等導致的问题。
TCP重置帶來的危害與影響 #
在2016年,由Mirai僵尸網路發起的大規模DDoS攻擊中,攻擊者通过感染大量物聯網設備(如攝像頭、路由器)向目標服務器发送了海量的RST包和其他畸形數據包。這種攻擊不僅導致目標服務器因過載而崩潰,還引發了全球範圍內的インターネット服務中斷。
...