張 霞
摘要:TCP/IP協議是目前使用最為廣泛的網絡互聯協議。在詳細敘述TCP/IP基本工作原理的基礎上,深入分析了各層協議的安全性,指出了存在的安全漏洞及攻擊方式,并給出了針對安全性問題的防范措施。為網絡安全的研究提供了參考。
關鍵詞=TCP/IP協議;網絡安全;防范
1引言
隨著信息技術的迅猛發展,計算機網絡技術已經廣泛地應用到名個領域。Internet,Intranet是基于TCP/IP協議簇的計算機網絡。TCP/IP協議簇在設計初期只是用于科學研究領域,因而沒有考慮安全性問題。但隨著Internet應用迅猛發展和應用的普及,它不僅用于安全性要求很高的軍事領域,也應用于商業及金融等領域,因而對其安全性的要求也越來越高。對TCP/IP協議及其安全性進行分析和研究就顯得尤為重要。
2TCP/IP的工作原理
TCP/JP協議是一組包括TCP協議和P協議、UDP協議、ICMF協議和其他協議的協議組。TCP/IP協議共分為4層,即應用層、傳輸層、網絡層和數據鏈路層。其中應用層向用戶提供訪問internet的一些高層協議,使用最為廣泛的有TELNET、FTP、SMTP、DNS等。傳輸層提供應用程序端到端的通信服務。網絡層負責相鄰主機之間的通信。數據鏈路層是TCP/IP協議組的最低一層,主要負責數據幀的發送和接收。其工作原理是:源主機應用層將一串應用數據流傳送給傳輸層,傳輸層將其截成分組,并加上TCP報頭形成TCP段送交網絡層,網絡層給TCP段加上包括源主機和目的主機IP地址的IP報頭,生成一個IP數據包,并送交數據鏈路層;數據鏈路層在其MAC幀的數據部分裝上IP數據包,再加上源主機和目的主機的MAC地址和幀頭,并根據其目的MAC地址,將MAC幀發往目的主機或IP路由器。目的主機的數據鏈路層將MAC幀的幀頭去掉,將IP數據包送交網絡層:網絡層檢查IP報頭,如果報頭中校驗和與計算結果不一致,則丟棄該IP數據包。如果一致則去掉IP報頭,將TCP段送交傳輸層;傳輸層檢查順序號,判斷是否是正確的TCP分組,然后檢查TCP報頭數據,若正確,則向源主機發確認信息,若不正確則丟包,向源主機要求重發信息,傳輸層去掉TCP報頭,將排好順序的分組組成應用數據流送給應用程序。這樣目的主機接收到的字節流,就像是直接來自源主機一樣。
3TCP/IP各層的安全性分析
3.1數據鏈路層
數據鏈路層是TCP/IP協議的最底層。它主要實現對上層數據(IP或ARP)進行物理幀的封裝與拆封以及硬件尋址、管理等功能。在以太網中,由于信道是共享的,數據以“幀”為單位在網絡上傳輸,因此,任何主機發送的每一個以太幀都會到達與其處于同一網段的所有主機的以太網接口。當數字信號到達一臺主機的網絡接口時,根據CSMA/CD協議,正常狀態下,網絡接口對讀入數據進行檢查,如果數據幀中攜帶的物理地址是自己的或者物理地址是廣播地址,那么就會將數據幀交給IP層軟件。當數據幀不屬于自己時,就把它忽略掉。然而,目前網絡上存在一些被稱為嗅探器(sniffer)的軟件,如NeXRay、Sniffit、IPMan等。攻擊方稍作設置或修改,使網卡工作在監聽模式下,則可達到非法竊取他人信息(如用戶賬戶、口令等)的目的。防范對策:(1)裝檢測軟件,查看是否有Sniffer在網絡中運行,做到防范于未然。(2)對數據進行加密傳輸,使對方無法正確還原竊取的數據,并且對傳輸的數據進行壓縮,以提高傳輸速度。(3)改用交換式的網絡拓撲結構,使數據只發往目的地址的網卡,其他網卡接收不到數據包。這種方法的缺點是交換機成本太高。
3.2網絡層
3.2.1IP欺騙
在TCP/IP協議中,IP地址是用來作為網絡節點的惟一標志。IP協議根據IP頭中的目的地址來發送IP數據包。在IP路由IP包時,對IP頭中提供的源地址不做任何檢查,并且認為IP頭中的源地址即為發送該包的機器的IP地址。這樣,攻擊者可以直接修改節點的IP地址,冒充某個可信節點的IP地址攻擊或者編程(如RawSocket),實現對IP地址的偽裝,即所謂IP欺騙。攻擊者可以采用IP欺騙的方法來繞過網絡防火墻。另外對一些以IP地址作為安全權限分配依據的網絡應用,攻擊者很容易使用IP欺騙的方法獲得特權,從而給被攻擊者造成嚴重的損失。防范對策:(1)拋棄基于地址的信任策略。(2)采用加密技術,在通信時要求加密傳輸和驗證。(3)進行包過濾。如果網絡是通過路由器接入Internet的,那么可以利用路由器來進行包過濾。確認只有內部IAN可以使用信任關系,而內部LAN上的主機對于LAN以外的主機要慎重處理。路由器可以過濾掉所有來自于外部而希望與內部建立連接的請求。
3.2.2ICMP漏洞
ICMP運行于網絡層,它被用來傳送IP的控制信息,如網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。常用的Ping命令就是使用ICMP協議,Ping程序是通過發送一個ICMP Echo請求消息和接收一個響應的ICMP回應來測試主機的連通性。幾乎所有的基于TCP/IP的機器都會對ICMP Echo請求進行響應。所以如果一個敵意主機同時運行很多個Ping命令,向一個服務器發送超過其處理能力的ICMP Echo請求時,就可以淹沒該服務器使其拒絕其它服務。即向主機發起“Ping of Death”(死亡之Ping)攻擊。死亡之Ping是較為原始的拒絕服務攻擊手段。解決方法較成熟:(1)可給操作系統打上補丁(patch)。(2)在主機上設置ICMP數據包的處理規則,最好是設定拒絕所有的ICMP數據包。(3)利用防火墻來阻止Ping。但同時會阻擋一些合法應用。可只阻止被分段的Ping。使得在大多數系統上只允許一般合法的64Byte的Ping通過,這樣就能擋住那些長度大于MTU(Maximum TransmiSsIon Unit)的ICMP數據包,從而防止此類攻擊。
3.3傳輸層
TCP是基于連接的。為了在主機A和B之間傳遞TCP數據,必須通三次握手機制建立連接。其連接過程如下:A→B:A向B發SYN,初始序列號為ISNI;B→A:B向A發SYN,初始序列號為ISN2,同時對ISNI確認;A→B:A向B發對ISN2的確認。建立連接以后,主要采用滑動窗口機制來驗證對方發送的數據,如果對方發送的數據不在自己的接收窗口內,則丟棄此數據,這種發送序號不在對方接收窗口的狀態稱為非同步狀態。由于TCP協議并不對數據包進行加密和認證,確認數據包的主要根據就是判斷序列號是否正確。這樣一來,當通信雙方進入非同步狀態后,攻擊者可以偽造發送序號在有效接收窗口內的報文,也可以截獲報文,篡改內容后,再修改發送序號,而接收方會認為數據是有效數據,即進行TCP會話劫持。目前存在一些軟件可以進行TCP會話劫持,如Hunt等。防范對策:(1)在傳輸層對數據進行加密。(2)使用安全協議,對通信和會話加密,如使用SSI代替telnet和ftp。(3)運用某些入侵檢測軟件(IDS)或者審計工具,來查看和分析自己的系統是否受到了攻擊。
3.4應用層
在應用層常見的攻擊手段是DNS欺騙。攻擊者偽造機器名稱和網絡的信息,當主機需要將一個域名轉化為IP地址時,它會向某DNS服務器發送一個查詢請求。同樣,在將IP地址轉化為域名時,可發送一個反查詢請求。如果服務器在進行DNS查詢時人為地給出攻擊者自己的應答信息,就產生了DNS欺騙。由于網絡上的主機都信任DNS服務器,一個被破壞的DNS服務器就可以將客戶引導到非法的服務器,從而就可以使某個地址產生欺騙。防范對策:(1)直接用IP訪問重要的服務,從而避開DNS欺騙攻擊。(2)加密所有對外的數據流。在服務器端,盡量使用SSH等有加密支持的協議;在客戶端,應用PGP等軟件加密發到網絡上的數據。
4結束語
網絡安全是一個永恒的主題。通過對TCP/IP各層協議的分析,不難發現其在設計上存在很多漏洞,黑客或黑客工具往往利用這些漏洞對網絡進行破壞。相信隨著網絡的發展和安全技術應用的深入,TCP/IP將不斷地改進和完善。一個穩定的、安全的網絡世界必將到來。