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