郝婉嬌
[摘要]互聯(lián)網(wǎng)技術屏蔽了底層網(wǎng)絡硬件細節(jié),使得異種網(wǎng)絡之間可以互相通信。TCP/IP協(xié)議組是目前使用最廣泛的網(wǎng)絡互連協(xié)議。但TCP/IP協(xié)議組本身存在著一些安全性問題。這就給“黑客”們攻擊網(wǎng)絡以可乘之機。由于大量重要的應用程序都以TCP作為它們的傳輸層協(xié)議,因此TCP的安全性問題會給網(wǎng)絡帶來嚴重的后果。
[關鍵詞]TCP/IP 定時器 狀態(tài)轉移
中圖分類號:TP3 文獻標識碼:A文章編號:1671-7597(2009)0220070-01
一、TCP狀態(tài)轉移圖和定時器
TCP狀態(tài)轉移圖控制了一次連接的初始化、建立和終止,該圖由定義的狀態(tài)以及這些狀態(tài)之間的轉移弧構成。TCP狀態(tài)轉移圖與定時器密切相關,不同的定時器對應于連接建立或終止、流量控制和數(shù)據(jù)傳輸。幾類主要的定時器及其功能如下:
1.連接定時器:在連接建立階段,當發(fā)送了SYN包后,就啟動連接定時器。如果在75秒內(nèi)沒有收到應答,則放棄連接建立。
2.FIN-WAIT-2定時器:當連接從FIN-WAIT-1狀態(tài)轉移到FIN-WAIT-2狀態(tài)時,將一個FIN-WAIT-2定時器設置為10分鐘。如果在規(guī)定時間內(nèi)該連接沒有收到一個帶有置位FIN的TCP包,則定時器超時,再定時為75秒。如果在該時間段內(nèi)仍無FIN包到達,則放棄該連接。
3.TIME-WAIT定時器:當連接進入TIME-WAIT狀態(tài)時,該定時器被激活。當定時器超時時,與該連接相關的內(nèi)核數(shù)據(jù)塊被刪除,連接終止。
4.維持連接定時器:其作用是預測性地檢測連接的另一端是否仍為活動狀態(tài)。如果設置了SO-KEEPALIVE套接字選擇項,則TCP機狀態(tài)是ESTABLISHED或CLOSE-WAIT。
二、網(wǎng)絡入侵方式
1.偽造IP地址。入侵者使用假IP地址發(fā)送包,利用基于IP地址證實的應用程序。其結果是未授權的遠端用戶進入帶有防火墻的主機系統(tǒng)。
假設有兩臺主機A、B和入侵者控制的主機X。假設B授予A某些特權,使得A能夠獲得B所執(zhí)行的一些操作。X的目標就是得到與B相同的權利。為了實現(xiàn)該目標,X必須執(zhí)行兩步操作:首先,與B建立一個虛假連接;然后,阻止A向B報告網(wǎng)絡證實系統(tǒng)的問題。主機X必須假造A的IP地址,從而使B相信從X發(fā)來的包的確是從A發(fā)來的。
2.TCP狀態(tài)轉移的問題。上述的入侵過程,主機X是如何阻止主機A向主機B發(fā)送響應在的,主機調(diào)通過發(fā)送一系列的SYN包,但不讓A向調(diào)發(fā)送SYN-ACK包而中止主機A的登錄端口。如前所述,TCP維持一個連接建立定時器。如果在規(guī)定時間內(nèi)(通常為75秒)不能建立連接,則TCP將重置連接。在前面的例子中,服務器端口是無法在75秒內(nèi)作出響應的。
3.定時器問題。一旦進入連接建立過程,則啟動連接定時器。如果在規(guī)定時間內(nèi)不能建立連接,則TCP機回到CLOSED狀態(tài)。我們來分析一下主機A和主機X的例子。主機A向主機X發(fā)送一個SYN包,期待著回應一個SYN-ACK包。假設幾乎同時,主機X想與主機A建立連接,向A發(fā)送一個SYN包。A和X在收到對方的SYN包后都向對方發(fā)送一個SYN-ACK包。當都收到對方的SYN-ACK包后,就可認為連接已建立。在本文中,假設當主機收到對方的SYN包后,就關閉連接建立定時器。
(1)主機X向主機A發(fā)送一個FTP請求。在X和A之間建立起一個TCP連接來傳送控制信號。主機A向X發(fā)送一個SYN包以啟動一個TCP連接用來傳輸數(shù)據(jù),其狀態(tài)轉移到SYN-SENT狀態(tài)。當X收到來自A的SYN包時,它回送一個SYN包作為響應。
(2)主機X收到來自A的SYN-ACK包,但不回送任何包。
(3)主機A期待著接收來自X的SYN-ACK。由于X不回送任何包,因此A被鎖在SYN-RCVD狀態(tài)。這樣,X就成功地封鎖了A的一個端口。
三、利用網(wǎng)絡監(jiān)控設備觀測網(wǎng)絡入侵
1.偽造IP地址。最初,網(wǎng)絡監(jiān)控設備會監(jiān)測到大量的TCP SYN包從某個主機發(fā)往A的登錄端口。主機A會回送相應的SYN-ACK包。SYN包的目的是創(chuàng)建大量的與主機A的半開放的TCP連接,從而填滿了主機A的登錄端口連接隊列。大量的TCP SYN包將從主機X經(jīng)過網(wǎng)絡發(fā)往主機B,相應地有SYN-ACK包從主機B發(fā)往主機X。然后主機X將用RST包作應答。這個SYN/SYN-ACK/RST包序列使得入侵者可以知道主機B的TCP序列號發(fā)生器的動作。主機A向主機B發(fā)送一個SYN包。實際上,這是主機X發(fā)送的一個“偽造”包。收到這個包之后,主機B將向主機A發(fā)送相應的SYN-ACK包。主機A向主機B發(fā)送ACK包。按照上述步驟,入侵主機能夠與主機B建立單向TCP連接。
2.虛假狀態(tài)轉移。當入侵者試圖利用從SYN-RCVD到CLOSE-WAIT的狀態(tài)轉移長時間阻塞某服務器的一個網(wǎng)絡端口時,可以觀察到如下序列包:
(1)從主機X到主機B發(fā)送一個帶有SYN和FIN標志位置位的TCP包。
(2)主機B首先處理SYN標志,生成一個帶有相應ACK標志位置位的包,并使狀態(tài)轉移到SYN-RCVD,然后處理FIN標志,使狀態(tài)轉移到CLOSE-WAIT,并向X回送ACK包。
(3)主機X不向主機B發(fā)送其它任何包。主機的TCP機將固定在CLOSE-WAIT狀態(tài)。直到維持連接定時器將其重置為CLOSED狀態(tài)。
因此,如果網(wǎng)絡監(jiān)控設備發(fā)現(xiàn)一串SYN-FIN/ACK包,可推斷入侵者正在阻塞主機B的某個端口。
3.定時器問題。如果一入侵者企圖在不建立連接的情況下使連接建立定時器無效,我們可以觀察到主機X不向主機B發(fā)送任何ACK包。因此,B被阻塞在SYN-RCVD狀態(tài),無法響應來自其它客戶機的連接請求。
四、總結
目前還沒有十分簡便的方法防止偽造IP地址的和侵行為,但我們可以采取以下措施來盡可能地保護系統(tǒng)免受這類攻擊。首先,我們可以配置路由器和網(wǎng)關,使它們能夠拒絕網(wǎng)絡外部與本網(wǎng)內(nèi)具有相同IP地址的連接請求。而且,當包的IP地址不在醞釀網(wǎng)內(nèi)時,路由器和網(wǎng)關不應該把本網(wǎng)主機的包發(fā)送出去。其次,在包發(fā)送到網(wǎng)絡上之前,我們可以對它進行加密。雖然加密過程要求適當改變目前的網(wǎng)絡環(huán)境,但它將保證數(shù)據(jù)的完整性和真實性。為了防止從SYN-RCVD到CLOSE-WAIT狀態(tài)的偽轉移,需要改變操作系統(tǒng)中TCP操作的部分相關代碼,使得當TCP機處于SYN-RCVD狀態(tài)時,忽略任何對等主機發(fā)來的FIN包。只有當建立連接后,才可以使連接建立定時器無效。
參考文獻:
[1]王廷堯,以太網(wǎng)技術與應用,人民郵電出版社,2005-01.
[2]謝希仁,計算機網(wǎng)絡,電子工業(yè)出版社,2008-01.
[3]蘭少華、楊余旺、呂建勇,TCP/IP網(wǎng)絡與協(xié)議,清華大學出版社,2006-01.