亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

防止網絡重置拒絕服務攻擊的制作方法

文檔序號:7633321閱讀:201來源:國知局
專利名稱:防止網絡重置拒絕服務攻擊的制作方法
技術領域
本發(fā)明一般地涉及計算機網絡。更具體而言,本發(fā)明涉及防止網絡中的TCP重置攻擊。
背景技術
這一部分中描述的方法可以實現,但是并不一定是先前已察覺或已實現的方法。因此,除非這里另有指明,否則這一部分中描述的方法并不是本申請中權利要求的現有技術,也不應當因為被包括在這一部分中而被當作現有技術。
網絡已經變?yōu)槠髽I(yè)和消費者等的重要工具,許多企業(yè)和消費者當前依賴于諸如郵件服務器、網站和內容服務器之類的網絡資源的恒定可用性。隨著網絡使用的增加,保護網絡免受惡意實體通過拒絕服務(“DoS”)攻擊進行的破壞變得更加重要。DoS攻擊剝奪了合法用戶對網絡服務的訪問權限,并且已被成功地用來破壞合法用戶對諸如Yahoo!和CNN之類的因特網站點的訪問。
一種類型的DoS攻擊利用了傳輸控制協(xié)議(“TCP”)的基本設計,TCP是因特網的基礎協(xié)議之一,如因特網工程任務組(IETF)請求注解(RFC)793中所定義的。這類DoS攻擊被稱為TCP重置或RST攻擊,其利用了這樣的事實即,在遵從RFC 793的TCP的實現方式中,TCP連接可以響應于從遠程節(jié)點接收到設置了頭部中的重置位(“RST位”)的TCP分組而被適當地終止。
TCP重置攻擊試圖通過將欺騙性片段插入到活動TCP連接中來關斷合法TCP會話,該欺騙性片段設置了重置(RST)標志并且包含落在接收節(jié)點允許的有效序列值范圍內的分組序列值。一般來說,攻擊者首先確定或猜測兩個端點的IP地址和端點用于進行TCP連接或更高級協(xié)議的端口號。成功的攻擊者還猜測落在允許的范圍或窗口內的序列號。發(fā)送設置了RST標志、具有正確IP地址和端口號并且序列號落在TCP連接窗口內的任何TCP片段都可以使得根據RFC 793適當地實現TCP的接收節(jié)點關斷TCP連接。
TCP SYN攻擊以類似的方式進行。根據RFC 793,如果攻擊者發(fā)送在頭部中設置了SYN位的TCP分組,并且序列值落在允許的序列值的窗口內,則接收節(jié)點關閉TCP連接并發(fā)送TCP RST分組。RFC 793規(guī)定該過程,以使得非同步主機能夠關閉連接并重新同步,但是在當代實踐中,該過程使得安全性脆弱。
邊界網關協(xié)議(BGP)、超文本傳送協(xié)議(HTTP)、某些語音協(xié)議、多協(xié)議標簽交換(MPLS)和其他協(xié)議使用TCP連接,并且是這些攻擊的目標。后果可能是嚴重的。例如,當路由器的BGP會話被通過關閉相關聯的TCP連接而破壞時,路由器將會丟棄其已創(chuàng)建的所有BGP路由,從而實質上導致BGP過程發(fā)生故障。結果,BGP過程必須使其自身和網絡中的對等路由器之間重新同步,并且在重新同步時段期間,故障路由器不能轉發(fā)任何流量。因此,本領域中的研究者的興趣在于創(chuàng)建某些方式來阻止TCP重置攻擊,而不會從根本上改變RFC 793中指定的TCP的操作。
在一種方法中,研究者認為通過分配32位偽隨機值作為新的TCP連接的初始序列號(ISN),則攻擊者無法以任何實際可行的方式猜測正確的序列號,這是因為可能正確的值的數目是232或近似40億,從而使得這種攻擊實質上是不可能的。該原理在攻擊者嘗試將數據段插入現有TCP連接中的情況下可能是正確的。
然而,如果片段的序列號落在可接受值的窗口或范圍內,則即使該序列號與下一期望序列號不是精確匹配,遵從RFC 793的傳統(tǒng)TCP實現方式也會接受RST片段或SYN分組。該方法用來補償分組可能丟失的可能性。在TCP的某些實現方式中,允許的序列值的范圍可能大到16,000到多于50,000個值。不幸的是,其后果是攻擊者不需要正確地生成所有32位的序列號以提供接收節(jié)點將會接受的號,即使在使用了真隨機或偽隨機ISN時也是如此。如果允許的序列值的范圍足夠大,則攻擊者可以在實際可行的時間量中通過隨機或強力選擇猜測出正確序列值的機會大大增加。接收節(jié)點建立的窗口越大,黑客執(zhí)行該攻擊就越容易。
從而,僅僅檢查已建立連接的新到達RST分組或SYN分組以確定序列號是否在給定窗口內并且如果在的話則拆掉連接的TCP實現方式并不適合于防止試圖過早終止連接的黑客的攻擊。
在UNIX下的TCP的OpenBSD實現方式中所用的另一種方法通過要求重置分組攜帶這樣的序列號來預防重置攻擊,該序列號精確地是下一期望序列號,而不僅僅在期望窗口內。如果重置分組攜帶了并不精確匹配的序列號,則TCP過程忽略重置分組并且不采取任何動作。然而,該方法并不實用,因為對于接收者而言,由于分組丟失的原因TCP分組的序列號常常與下一期望值不相同。當在OpenBSD方法中發(fā)生丟失分組時,為接收節(jié)點留下了發(fā)送節(jié)點認為已關閉的連接。
在另一種方法中,執(zhí)行TCP RST“衰減”,其中如果在給定時間段內太多的RST分組到達則節(jié)點忽略這些RST分組。然而,該方法并不合適,因為即使一個不正確的RST分組也足以引起關鍵TCP連接的關閉。
一種用于解決類似攻擊(被稱為SYN-RST攻擊)的方法在PritamShah等人2003年8月14日提交的題為“Detecting network denial of serviceattacks”的共同未決申請No.10/641,494中提供,該申請與本申請被轉讓給同一受讓人。Shah等人的方法適合于中間路由器而不是TCP端點設備,但是沒有完全解決在本公開中描述的所有問題。


在附圖中以示例方式而非以限制方式圖示了本發(fā)明,在附圖中,相似的標號指代類似的元件,在附圖中圖1是示出用于防止TCP RST攻擊的過程的一個實施例的狀態(tài)圖;圖2A是示出在攻擊進行時節(jié)點利用圖1的過程交換的TCP消息的消息流程圖;圖2B是示出在沒有攻擊發(fā)生時節(jié)點利用圖1的過程交換的TCP消息的消息流程圖;圖3是示出用于防止TCP RST攻擊的過程的另一實施例的狀態(tài)圖;圖4A是示出在攻擊進行時節(jié)點利用圖3的過程交換的TCP消息的消息流程圖;圖4B是示出在沒有攻擊發(fā)生時節(jié)點利用圖3的過程交換的TCP消息的消息流程圖;圖5是示出用于防止TCP SYN攻擊的過程的一個實施例的狀態(tài)圖;圖6A是示出在攻擊進行時節(jié)點利用圖5的過程交換的TCP消息的消息流程圖;圖6B是示出在沒有攻擊發(fā)生時節(jié)點利用圖5的過程交換的TCP消息的消息流程圖;以及圖7是示出可以實現實施例的計算機系統(tǒng)的框圖。
具體實施例方式
本發(fā)明描述了一種用于防止網絡拒絕服務攻擊的方法和裝置。在下面的描述中,為了說明目的,給出了大量具體細節(jié)以提供對本發(fā)明的完全理解。但是,本領域技術人員將會清楚,沒有這些具體細節(jié)也可以實施本發(fā)明。在其他實例中,公知的結構和設備以框圖形式示出,以避免不必要地模糊本發(fā)明。
這里根據下面的大綱描述實施例1.0概述2.0用于防止TCP拒絕服務攻擊的方法2.1用于防止TCP RST攻擊的第一方法2.2用于防止TCP RST攻擊的第二方法2.3用于防止TCP SYN攻擊的方法3.0實現機構-硬件概述4.0擴展和替換1.0概述僅作為導論,并且并不是要限制所附權利要求的范圍,在本發(fā)明中實現了在前述背景技術中提出的需要、以及將從下面的描述中變清楚的其他需要和目的,本發(fā)明在一個方面包括一種用于防止網絡上的攻擊的方法,其中所述攻擊包括發(fā)送設置了重置(RST)位的偽造的傳輸控制協(xié)議(TCP)分組,該方法包括以下由計算機實現的步驟從遠程末端節(jié)點接收設置了TCP頭部的RST位的流的分組;確定分組中的序列值是否在允許的序列值的范圍內;以及當第一序列值在允許的序列值的范圍內時,發(fā)送確認消息,而不關閉與流相關聯的TCP連接。
根據該方面的一個特征,該方法還包括從遠程末端節(jié)點接收設置了RST位并且包括第二序列值的流的下一分組;確定第二序列值是否等于期望序列值;以及僅當第二序列值等于期望序列值時,才關閉與流相關聯的TCP連接。
在另一個方面中,提供了一種防止網絡上的攻擊的方法,包括以下由計算機實現的步驟從遠程末端節(jié)點接收設置了TCP頭部的RST位的流的分組;以及發(fā)送確認消息,而不關閉與流相關聯的TCP連接并且不考慮分組中的序列值是否在允許的序列值的范圍內。該方法還可以包括設置代表接收到設置了RST位的分組的標志;從遠程末端節(jié)點接收設置了RST位并且包括序列值的流的下一分組;確定序列值是否等于期望序列值;以及僅當序列值等于期望序列值時,才關閉TCP連接。
在另一個方面中,提供了一種防止網絡上的攻擊的方法,包括以下步驟從遠程末端節(jié)點接收設置了頭部的SYN位的流的分組;發(fā)送確認消息,而不關閉與流相關聯的TCP連接并且不考慮分組中的序列值是否在允許的序列值的范圍內;接收流的下一分組;以及當下一分組是TCP RST分組時,對下一分組執(zhí)行以上兩方面中任何一方面的步驟。
在其他方面中,本發(fā)明包含被配置用來執(zhí)行前述步驟的計算機裝置和計算機可讀介質。另外,許多其他的特征和方面將從下面的描述和所附權利要求中變清楚。
2.0用于防止TCP拒絕服務攻擊的方法給出了兩種用于防止TCP RST拒絕服務攻擊的方法和一種用于防止TCP SYN攻擊的方法。在用于RST攻擊的第一方法中,當RST到達并且不包含下一期望序列值但是序列值在正確數據窗口內時,接收者節(jié)點發(fā)送確認但是并不關閉連接。如果合法發(fā)送節(jié)點已經關閉了連接,則遠程末端節(jié)點將會生成RST作為對確認的回復,并且近程末端節(jié)點可以適當地關閉連接。
第二方法以類似方式操作,但是默認所有RST分組都是無效的。在接收到包括攜帶了期望序列值的分組在內的RST分組后,接收者節(jié)點自動發(fā)回確認,并且設置指示其已看見RST分組的標志。如果接收者節(jié)點隨后接收到的是具有正確序列號的RST分組,則接收者節(jié)點關閉連接。如果其看見的下一片段不是RST分組,則標志被清除。
因此,在接收到RST分組后,接收者節(jié)點利用確認消息在當前連接中質詢對等節(jié)點。對等節(jié)點或者以RST分組作出響應(如果連接被真正關閉),或者不采取任何動作(如果連接保持開放)。所公開的方法提供了免受RST DOS攻擊的保護,并且提供了響應于接收到RST分組的更快和更確切的連接終止。該方法一般應用于處于如RFC 793所定義的已建立(ESTABLISHED)或已同步狀態(tài)的TCP連接的端點節(jié)點上。
為了防止TCP RST攻擊,節(jié)點可以僅實現這里的方法中的一種,或者可以實現兩種方法,并使得用戶能夠根據察覺的危險級別選擇一種或另一種。通常,第二方法更適合于所察覺的更高危險級別。
2.1用于防止TCP RST攻擊的第一方法現在參考圖1、圖2A和圖2B描述用于防止TCP RST攻擊的第一方法。圖1是示出用于防止TCP RST攻擊的過程的一個實施例的狀態(tài)圖;圖2A是示出在攻擊進行時節(jié)點利用圖1的過程交換的TCP消息的消息流程圖;圖2B是示出在沒有攻擊發(fā)生時節(jié)點利用圖1的過程交換的TCP消息的消息流程圖。
圖1的過程可以實現在一個或多個計算機程序、指令序列或其他軟件元素中,這些軟件元素由充當TCP連接中的端點的網絡元件執(zhí)行。例如,圖1可以實現為路由器、交換機或網絡基礎結構的其他元件的操作系統(tǒng)的TCP應用或特征的一部分。在圖2A和圖2B中,網絡元件或節(jié)點R1、R2代表TCP連接中的端點。
節(jié)點R1、R2可以包括路由器、交換機、集線器、網關、個人計算機、工作站、服務器或者連接到或可以連接到網絡或與網絡通信的其他設備。攻擊者202是將有害的或偽造的分段或分組插入到已在節(jié)點R1和R2之間建立的TCP流中的任何實體。攻擊者202可以包括工作站、個人計算機、路由器、交換機或其他處理元件。
節(jié)點R1、R2和攻擊者202加入一個或多個網絡。另外,節(jié)點R1、R2和攻擊者202可以處于局域網(LAN)、廣域網(WAN)、一個或多個互聯網、或者其中使用傳輸控制協(xié)議(TCP)來建立網絡元件之間的連接的任何其他種類的網絡或其子集中,或者可以通過這些網絡被訪問。這種網絡可以包括附加的網絡基礎結構元件(如路由器、交換機等)和其他末端臺站設備(如工作站、打印機、服務器等)。在一種實現方式中,節(jié)點R1、R2和攻擊者202都通信地耦合到諸如互聯網之類的公共分組交換網絡。
節(jié)點R1、R2和攻擊者202可以連接到附加的網絡元件。圖2A、2B中所示的系統(tǒng)僅是許多可能的不同配置中的一種。其他實施例可以包括比圖示情形更少或更多的系統(tǒng)組件。具體而言,在實際系統(tǒng)中可以有任何數目的網絡元件。
為了描述圖1,假設圖2A、圖2B的R2已經實現了圖1的過程;節(jié)點R1可以實現相同的過程,或者可以僅實現RFC 793中所定義的TCP。
首先,實現圖1的元件處于空閑狀態(tài)101中,該狀態(tài)廣泛地代表線程、進程或實現或實施TCP連接的其他元素的相對不活動性的任何狀態(tài)。當接收到TCP SYN分組時轉移到執(zhí)行握手102,而不需要設置確認(ACK)或重置(RST)位,以發(fā)起新連接的握手。如果握手成功,則轉移到正常TCP數據通信狀態(tài)104。握手和建立連接的細節(jié)以及響應于不成功握手的處理都與本公開無關,但是在RFC 793中有所定義。
在狀態(tài)104,在端點節(jié)點之間交換數據。例如,節(jié)點R1、R2如圖1中箭頭1指示的那樣傳輸數據。在狀態(tài)104,節(jié)點R1、R2之間的TCP連接處于已建立或已同步狀態(tài)。
在接收到設置了RST位的TCP分組后,轉移到評估序列值狀態(tài)106。在狀態(tài)106中,評估在TCP頭部中攜帶的序列值,并且依賴于該序列值是等于所期望的下一序列值,不等于所期望的下一序列值但是在允許的下一序列值的范圍內,還是不等于所期望的下一序列值也不在允許的下一序列值的范圍內,發(fā)生若干種轉移中的一種。在圖2A的攻擊場景中,設置了RST位的TCP分組可以從攻擊者202接收到,如箭頭2所指示,或者從諸如R2之類的合法端點接收到,如圖2B中的箭頭2所指示。
如果該序列值等于所期望的下一序列值,則TCP連接被關閉,如關閉連接狀態(tài)108所指示。由于所有可能的序列值的范圍是232,因此攻擊者幾乎不可能猜出準確的所期望的下一序列值。因此,包括完全正確的下一序列值的RST分組被假定是要求關閉連接的合法RST分組。然后轉移到空閑狀態(tài)101。例如,可以終止代表當前TCP連接的線程或進程,并且可以收回相關聯的資源。
如果該序列值不等于所期望的下一序列值但是在允許的下一序列值的范圍內,則發(fā)送確認消息,如發(fā)送確認狀態(tài)110所指示??梢允褂迷陬^部中設置了ACK位并且攜帶下一期望序列值的TCP分組。在攻擊場景中發(fā)送確認消息在圖2A中表示為箭頭3;在正常場景中發(fā)送確認消息在圖2B中示為箭頭3。然后轉移到正常狀態(tài)104。
事實上,在狀態(tài)110發(fā)送的確認消息充當對另一端點的質詢,以證實關于準確的下一期望序列號的知識(如果該端點合法地試圖關閉連接的話)。從而,在圖2A的攻擊場景中,節(jié)點R1在對箭頭3的確認消息的回復時不采取任何動作,因為其不發(fā)起箭頭2的RST分組。根據RFC 793,節(jié)點R1不需要采取動作,因為主動提供的確認消息可以被忽略。結果,攻擊者202的攻擊被阻止。
相反地,在圖2B的正常場景中,節(jié)點R1在箭頭4發(fā)出又一RST分組,該RST分組將包括節(jié)點R1在箭頭3的ACK消息中接收到的準確的下一期望序列值。作為響應,節(jié)點R1轉移到關閉連接狀態(tài)108,在狀態(tài)108中,節(jié)點R1適當地關閉連接。
在狀態(tài)106中,如果該序列值不等于所期望的下一序列值也不在允許的下一序列值的范圍內,則分組被丟棄,如丟棄分組狀態(tài)112所指示。可選地,可以采取進一步的響應動作,如響應動作狀態(tài)114所示。這種響應動作可以包括累積計數器(該計數器對欺騙性RST分組計數,直到達到指定的閾值),生成去往網絡操作中心的通知消息,在事件總線上公布事件等等。
2.2用于防止TCP RST攻擊的第二方法現在參考圖3、圖4A和圖4B描述用于防止TCP RST攻擊的第二方法。圖3是示出用于防止TCP RST攻擊的過程的另一實施例的狀態(tài)圖;圖4A是示出在攻擊進行時節(jié)點利用圖3的過程交換的TCP消息的消息流程圖;圖4B是示出在沒有攻擊發(fā)生時節(jié)點利用圖3的過程交換的TCP消息的消息流程圖。
首先參考圖3,連接最初處于空閑狀態(tài)101中,并且進行到執(zhí)行握手狀態(tài)102和正常數據通信狀態(tài)104,如上關于圖1所述。TCP連接處于已建立或已同步狀態(tài)。假定隨后接收到TCP RST分組。作為響應,轉移到測試標志狀態(tài)302,在狀態(tài)302中,測試指示先前接收到RST分組的標志。如果未設置標志,則轉移到設置標志狀態(tài)304,在狀態(tài)304中,設置標志。在一個實施例中,標志只在RST分組中攜帶的序列值落在允許的值的范圍內的情況下才被設置?;蛘撸瑯酥镜脑O置與序列值是否在允許范圍內無關。
然后,確認消息被發(fā)送回遠程末端節(jié)點,如發(fā)送確認狀態(tài)306所指示。狀態(tài)306的確認消息的發(fā)送與包含在TCP RST分組中的序列值是否等于所期望的下一序列值或者是否在允許的序列值的窗口內無關。然后轉移到等待下一分組狀態(tài)307。
在等待下一分組狀態(tài)307中,過程等待接收下一TCP分組。如果下一分組是RST分組,則轉移到評估序列值狀態(tài)308。檢查RST分組內的序列值。如果該序列值與下一期望序列值精確匹配,則連接被關閉,如關閉連接狀態(tài)108所示。
如果該序列值不與下一期望序列值精確匹配,則在丟棄分組狀態(tài)112中丟棄分組,TCP連接不受影響。不考慮序列值是否在允許窗口內,這是因為合法遠程末端節(jié)點總是以期望序列值來回復確認消息??蛇x地,在響應動作狀態(tài)114中,可以采取其他響應動作,如上結合圖1所述。
如果在等待下一分組狀態(tài)307中接收的下一TCP分組不是RST分組,或者是具有不正確的序列號的RST分組,則標志值被清除,如清除標志狀態(tài)310所指示。然后轉移到正常數據通信狀態(tài)104。
下面在攻擊的上下文中和連接的合法關閉的上下文中描述前述過程的操作。
參考圖4A,假定節(jié)點R1和R2已經建立了正常的TCP通信,如箭頭1所指示,然后攻擊者202發(fā)送偽造的RST分組,如箭頭2所指示。作為響應,接收端點節(jié)點R2利用圖3的過程在設置標志狀態(tài)304設置標志值,如圖4A的數字3所指示。節(jié)點R2發(fā)送確認消息,如箭頭4所示并且如發(fā)送確認狀態(tài)306所指示。由于節(jié)點R1還未關閉連接,因此節(jié)點R1將確認消息視作不需要響應的主動提供的確認。因此,節(jié)點R1繼續(xù)在正常TCP通信中發(fā)送數據,如箭頭5所指示。結果,攻擊者202的攻擊被阻止(thwarted)。
在圖4B的正常場景中,節(jié)點R1和R2再一次建立正常TCP通信,如箭頭1所指示,但是節(jié)點R1隨后關閉連接并向接收節(jié)點R2發(fā)送合法RST分組。作為響應,節(jié)點R2設置標志值(數字3)并發(fā)送包含下一期望序列值的確認消息(箭頭4)。
由于節(jié)點R1已經關閉了連接,因此節(jié)點R1以包含期望序列值的另一RST分組作出響應。結果,R2轉移到圖3的狀態(tài)308、狀態(tài)108和狀態(tài)310,適當地關閉連接并清除標志值,如圖4B的數字6和數字7所指示。
2.3用于防止TCP SYN攻擊的方法圖5是示出用于防止TCP SYN攻擊的過程的一個實施例的狀態(tài)圖;圖6A是示出在攻擊進行時節(jié)點利用圖5的過程交換的TCP消息的消息流程圖;圖6B是示出在沒有攻擊發(fā)生時節(jié)點利用圖5的過程交換的TCP消息的消息流程圖。
首先參考圖5,從空閑狀態(tài)101開始,經過執(zhí)行握手狀態(tài)102建立連接,并且在正常數據通信狀態(tài)104發(fā)生第一和第二端點節(jié)點之間的正常TCP通信。TCP連接處于已建立或已同步狀態(tài)中。假定第一端點節(jié)點隨后接收到在頭部中設置了SYN位的TCP分組。轉移到發(fā)送確認狀態(tài)502,在狀態(tài)502中,第一端點節(jié)點向第二端點發(fā)送確認消息。狀態(tài)502的確認消息的發(fā)送與包含在TCP SYN分組中的序列值是否等于期望下一序列值或者是否在允許下一序列值的窗口內無關。
相反地,在RFC 793的傳統(tǒng)實現方式下,如果接收到的TCP SYN分組的序列值落在允許的下一序列值的窗口內,則接收到該TCP SYN分組使得接收節(jié)點發(fā)送TCP RST分組。
然后直接轉移到等待下一分組狀態(tài)504,在狀態(tài)504中,第一端點節(jié)點等待接收下一TCP分組。
如果下一分組不是RST分組,則轉移到正常數據通信狀態(tài)104,并且對于連接不采取任何動作。這種轉移例如會在發(fā)送節(jié)點還未關閉連接并且將狀態(tài)502的確認視作不需要回復的主動提供的確認的情況下發(fā)生。
如果下一分組是RST分組,則可選地發(fā)起上述用于防止RST分組的第一方法或第二方法。從而,在狀態(tài)506,第一端點節(jié)點進入圖1的狀態(tài)106或圖3的狀態(tài)302。以這種方式,剛接收到的RST分組受到與圖1或圖3的過程中提供的相同的攻擊檢查。執(zhí)行這種額外的檢查不是必需的,但是可以提供確保RST合法的額外保證。
在另一種替換實現方式中,圖1或圖3的過程可以只在在狀態(tài)504中接收到的TCP RST分組包含不等于期望下一序列值的序列值的情況下執(zhí)行。如果在狀態(tài)504接收到包含等于期望下一序列值的序列值的TCP RST分組,則連接可以被關閉,因為最有可能地,只有實際關閉連接的端點節(jié)點才發(fā)送了這種分組。
圖5的過程在圖6A的攻擊場景中和圖6B的正常場景中可以按下述方式操作。首先參考圖6A,假定作為TCP端點節(jié)點的節(jié)點R1和R2建立正常TCP通信,如箭頭1所示。攻擊者202隨后向節(jié)點R2發(fā)送偽造的TCPRST分組,如箭頭2所示。
作為響應,如箭頭3所指示并且如發(fā)送確認狀態(tài)502所示,R2發(fā)送確認消息,并且進入等待下一分組狀態(tài)504。由于節(jié)點R1還未關閉連接,因此節(jié)點R1將確認消息視作不需要響應的主動提供的確認。因此,節(jié)點R1對連接不采取任何動作。
在其后的某時,節(jié)點R1在TCP分組中發(fā)送進一步的數據。在狀態(tài)504,節(jié)點R2確定下一分組不是RST分組,因此轉移到正常數據通信狀態(tài)104。結果,攻擊者202的攻擊被防止。
在圖6B的正常場景中,節(jié)點R1和R2在箭頭1建TCP連接并傳送數據。節(jié)點R1隨后適當地關閉連接并發(fā)送TCP RST分組,如箭頭2所示。作為響應,節(jié)點R2在箭頭3發(fā)送由發(fā)送確認狀態(tài)502提供的確認消息,并進入等待下一分組狀態(tài)504。
由于節(jié)點R1已經關閉連接,因此節(jié)點R1在箭頭4以RST分組作出回復。作為響應,在狀態(tài)504,節(jié)點R2確定下一分組是RST分組,并且轉移到狀態(tài)506。節(jié)點R2隨后根據圖1或圖3的方法評估RST分組,如圖6B的數字5所指示。
因此,RST分組經歷進一步的評估以確定其是否代表攻擊。圖2B、圖4B中所示的進一步的消息流被執(zhí)行,其中節(jié)點R2發(fā)送另一確認消息作為質詢,節(jié)點R1以正確的期望序列號作為回復。連接隨后被適當地關閉。
3.0實現機構-硬件概述圖7是示出可以實現實施例的計算機系統(tǒng)700的框圖。優(yōu)選實施例是利用運行在諸如路由器設備之類的網絡元件上的一個或多個計算機程序實現的。從而,在該實施例中,計算機系統(tǒng)700是路由器。
計算機系統(tǒng)700包括用于傳輸信息的總線702或其他通信機構和與總線702相耦合用于處理信息的處理器704。計算機系統(tǒng)700還包括諸如隨機存取存儲器(RAM)、閃存或其他動態(tài)存儲設備之類的主存儲器706,其耦合到總線702,用于存儲信息和處理器704要執(zhí)行的指令。主存儲器706還可用于存儲在處理器704執(zhí)行指令期間的臨時變量或其他中間信息。計算機系統(tǒng)700還包括只讀存儲器(ROM)708或其他靜態(tài)存儲設備,其耦合到總線702,用于存儲靜態(tài)信息和處理器704的指令。提供了諸如磁盤、閃存或光盤之類的存儲設備710,其耦合到總線702,用于存儲信息和指令。
通信接口718可以耦合到總線702,用于將信息和命令選擇傳輸到處理器704。接口718是諸如RS-232或RS-422接口之類的傳統(tǒng)串行接口。外部終端712或其他計算機系統(tǒng)利用接口714連接到計算機系統(tǒng)700并向其提供命令。運行在計算機系統(tǒng)700中的固件或軟件提供終端接口或基于字符的命令接口,從而可以向計算機系統(tǒng)給出外部命令。
交換系統(tǒng)716耦合到總線702,并且具有去往一個或多個外部網絡元件的輸入接口714和輸出接口719。外部網絡元件可以包括耦合到一個或多個主機724的本地網絡722,或者諸如因特網728之類的具有一個或多個服務器730的全球網絡。交換系統(tǒng)716根據公知的預定協(xié)議和協(xié)定將到達輸入接口714的信息流量交換到輸出接口719。例如,交換系統(tǒng)716與處理器704協(xié)同操作可以確定到達輸入接口714的數據分組的目的地,并利用輸出接口719將其發(fā)送到正確的目的地。目的地可以包括主機724、服務器730、其他末端臺站或者本地網絡722或因特網728中的其他路由和交換設備。
本發(fā)明涉及使用計算機系統(tǒng)700來實現這里的方法。根據本發(fā)明的一個實施例,這里的方法的實現方式由計算機系統(tǒng)700響應于處理器704執(zhí)行包含在主存儲器706中的一條或多條指令的一個或多個序列而提供。這些指令可以被從另一計算機可讀介質(如存儲設備710)讀取到主存儲器706中。包含在主存儲器706中的指令序列的執(zhí)行使得處理器704執(zhí)行這里描述的過程步驟。也可以采用多處理布置中的一個或多個處理器來執(zhí)行包含在主存儲器706中的指令序列。在替換實施例中,可以使用硬線電路來替代軟件指令或與軟件指令相組合以實現本發(fā)明。從而,本發(fā)明的實施例并不限于硬件電路和軟件的任何特定組合。
這里所用的術語“計算機可讀介質”指參與向處理器704提供指令以供執(zhí)行的任何介質。這種介質可以采取許多形式,包括但不限于非易失性介質、易失性介質和傳輸介質。非易失性介質例如包括光盤或磁盤,如存儲設備710。易失性介質包括動態(tài)存儲器,如主存儲器706。傳輸介質包括同軸電纜、銅線和光纖,包括含總線702的線路。傳輸介質也可以采取聲波或光波的形式,例如在無線電波和紅外數據通信期間生成的聲波或光波。
計算機可讀介質的常見形式例如包括軟盤、柔性盤、硬盤、磁帶或任何其他磁介質,CD-ROM、任何其他光介質,穿孔卡、紙帶、任何其他具有孔圖案的物理介質,RAM、PROM和EPROM、FLASH-EPROM、任何其他存儲器芯片或卡盤,下文中描述的載波,或者計算機可以讀取的任何其他介質。
計算機可讀介質的各種形式可用于將一條或多條指令的一個或多個序列傳輸到處理器704以供執(zhí)行。例如,指令可以首先承載在遠程計算機的磁盤上。遠程計算機可以將指令加載到其動態(tài)存儲器中,并利用調制解調器經由電話線發(fā)送指令。計算機系統(tǒng)700本地的調制解調器可以接收電話線上的數據,并使用紅外發(fā)送器來將數據轉換為紅外信號。耦合到總線702的紅外檢測器可以接收在紅外信號中攜帶的數據,并將數據置于總線702上。總線702將數據傳輸到主存儲器706,處理器704從主存儲器706取得指令并執(zhí)行指令。主存儲器706接收的指令可以可選地在處理器704執(zhí)行之前或之后存儲到存儲設備710上。
通信接口718也提供到連接到本地網絡722的網絡鏈路720的雙向數據通信耦合。例如,通信接口718可以是集成業(yè)務數字網絡(ISDN)卡或調制解調器,以提供到相應類型電話線的數字通信連接。作為另一個示例,通信接口718可以是局域網(LAN)卡,以提供到兼容LAN的數據通信連接。也可以實現無線鏈路。在任何這種實現方式中,通信接口718發(fā)送并接收電的、電磁的或光信號,這些信號攜帶了代表各種類型信息的數字數據流。
網絡鏈路720一般經過一個或多個網絡提供到其他數據設備的數據通信。例如,網絡鏈路720可以經過本地網絡722提供到主機計算機724或由因特網服務供應商(ISP)726操作的數據設備的連接。ISP 726又經過全球分組數據通信網絡(現在通常稱為“因特網”728)提供數據通信服務。本地網絡722和因特網728都使用攜帶數字數據流的電的、電磁的或光信號。經過各種網絡的信號和在網絡鏈路720上并經過通信接口718的信號(這些信號攜帶去往和來自計算機系統(tǒng)700的數字數據)是傳輸信息的載波的示例性形式。
計算機系統(tǒng)700可以經過網絡、網絡鏈路720和通信接口718發(fā)送消息并接收數據,包括程序代碼。在因特網示例中,服務器730可以經過因特網728、ISP 726、本地網絡722和通信接口718發(fā)送針對應用程序的請求代碼。根據本發(fā)明,一個這種下載的應用程序提供了如這里所述的檢測RST泛洪和/或SYN-RST拒絕服務攻擊的方法。
處理器704可以在接收時執(zhí)行所接收的代碼,和/或將其存儲在存儲設備710或其他非易失性存儲介質中以供后續(xù)執(zhí)行。以這種方式,計算機系統(tǒng)700可以獲得載波形式的應用代碼。
4.0擴展和替換在前述說明書中,已參考特定實施例描述了本發(fā)明。但是,應當清楚,在不脫離本發(fā)明更寬廣的精神和范圍的前提下,可以進行各種修改和改變。因此,說明書和附圖都應當認為是示例性的,而非限制性的。
權利要求
1.一種防止網絡上的攻擊的方法,其中所述攻擊包括發(fā)送設置了重置(RST)位的偽造的傳輸控制協(xié)議(TCP)分組,所述方法包括以下由計算機實現的步驟從遠程末端節(jié)點接收設置了TCP頭部的RST位的流的分組;確定所述分組中的序列值是否在允許的序列值的范圍內;以及當所述序列值在所述允許的序列值的范圍內時,發(fā)送確認消息,而不關閉與所述流相關聯的TCP連接。
2.如權利要求1所述的方法,還包括以下步驟從所述遠程末端節(jié)點接收設置了RST位并且包括第二序列值的流的下一分組;確定所述第二序列值是否等于期望序列值;以及僅當所述第二序列值等于所述期望序列值時,才關閉與所述流相關聯的TCP連接。
3.如權利要求1所述的方法,其中所述允許的序列值的范圍不包括所述期望序列值。
4.如權利要求1所述的方法,其中所述允許的序列值的范圍包括所述期望序列值。
5.如權利要求1所述的方法,還包括發(fā)送確認消息,而不關閉與所述流相關聯的TCP連接,并且不考慮所述分組中的序列值是否在允許的序列值的范圍內。
6.如權利要求4所述的方法,還包括以下步驟設置代表接收到設置了RST位的分組的標志;從所述遠程末端節(jié)點接收設置了RST位并且包括序列值的流的下一分組;確定所述序列值是否等于期望序列值;以及僅當所述序列值等于所述期望序列值時,才關閉所述TCP連接。
7.如權利要求6所述的方法,還包括以下步驟當設置了RST位并且所述下一分組中的序列值不等于期望序列值時,丟棄所述分組和所述下一分組。
8.如權利要求5或6所述的方法,還包括以下步驟確定在所述分組中未設置RST位,或者設置了RST位并且包含不正確的序列號,并且作為對其的響應,清除所述標志。
9.如權利要求1所述的方法,還包括以下步驟累積對偽造的TCPRST分組計數的計數器。
10.如權利要求1或8所述的方法,還包括以下步驟當所述分組未被成功驗證時生成通知消息。
11.如權利要求1、2、3、4、5、6、7或9中任何一個所述的方法,還包括以下步驟當所述序列值或所述第二序列值不在所述允許的序列值的范圍內時生成通知消息。
12.一種用于防止網絡上的攻擊的裝置,其中所述攻擊包括發(fā)送設置了重置(RST)位的偽造的傳輸控制協(xié)議(TCP)分組,所述裝置包括用于從遠程末端節(jié)點接收設置了TCP頭部的RST位的流的分組的裝置;用于確定所述分組中的序列值是否在允許的序列值的范圍內的裝置;以及用于當所述序列值在所述允許的序列值的范圍內時,發(fā)送確認消息,而不關閉與所述流相關聯的TCP連接的裝置。
13.一種用于防止網絡上的攻擊的裝置,其中所述攻擊包括發(fā)送設置了重置(RST)位的偽造的傳輸控制協(xié)議(TCP)分組,所述裝置包括處理器;所述處理器可訪問的一個或多個存儲的指令序列,所述指令序列當被所述處理器執(zhí)行時,使得所述處理器執(zhí)行以下步驟從遠程末端節(jié)點接收設置了TCP頭部的RST位的流的分組;確定所述分組中的序列值是否在允許的序列值的范圍內;以及當所述序列值在所述允許的序列值的范圍內時,發(fā)送確認消息,而不關閉與所述流相關聯的TCP連接。
14.一種承載一個或多個指令序列的計算機可讀介質,所述指令序列用于防止網絡上的攻擊,其中所述攻擊包括發(fā)送設置了重置(RST)位的偽造的傳輸控制協(xié)議(TCP)分組,并且一個或多個處理器執(zhí)行所述一個或多個指令序列使得所述一個或多個處理器執(zhí)行以下步驟從遠程末端節(jié)點接收設置了TCP頭部的RST位的流的分組;確定所述分組中的序列值是否在允許的序列值的范圍內;以及當所述序列值在所述允許的序列值的范圍內時,發(fā)送確認消息,而不關閉與所述流相關聯的TCP連接。
全文摘要
公開了用于防止分組交換網絡中的TCP RST攻擊和TCP SYN攻擊的方法。在一種方法中,在接收到TCP RST分組后,第一端點節(jié)點利用確認消息在當前連接中質詢第二端點節(jié)點。如果連接被真正地關閉,則第二端點節(jié)點以攜帶期望的下一序列值的RST分組作出響應。如果未接收到RST分組則第一端點節(jié)點不采取任何動作。從而,由于攻擊者未接收到確認消息因而不能提供準確的期望下一序列值從而阻止了攻擊。
文檔編號H04L29/06GK1898649SQ200580001378
公開日2007年1月17日 申請日期2005年1月5日 優(yōu)先權日2004年1月9日
發(fā)明者米特什·德拉爾, 阿莫·卡里, 蘭德爾·斯圖爾特 申請人:思科技術公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1