摘要:上篇TCP/IP協(xié)議常見漏洞類型我們介紹了TCP/IP協(xié)議中常見的漏洞類型包括ARP病毒攻擊、基于RIP的攻擊、DNS欺騙、TCP連接欺騙。面對TCP/IP協(xié)議中存在的漏洞我們要采取什么樣的安全措施去預(yù)防和解決呢?
首先從架構(gòu)角度來說:IPSec與TLS最常用的兩種安全架構(gòu),可以利IPSec、TLS安全架構(gòu)在不同的協(xié)議層來保護數(shù)據(jù)傳輸?shù)陌踩浴?/p>
一、IPSec
IPSec 是一組用來在網(wǎng)絡(luò)層提高數(shù)據(jù)包傳輸安全的協(xié)議族統(tǒng)稱,它通過在原有的IP報文中加入一些特定的檢測頭來達(dá)到安全確認(rèn)的目的。
IPSec有兩種工作模式,分別是傳輸模式和隧道模式,前者適用于端到端(End to End),即兩臺主機之間的 IPSec 通信,后者適用于站點到站點(Site to Site),即兩個網(wǎng)關(guān)之間的 IPSec 通信,IPSec 由 AH 協(xié)議、ESP協(xié)議和一些復(fù)雜的安全驗證算法組成,這些基本的算法為IPSec中的協(xié)議服務(wù)。我們主要介紹AH和ESP兩個協(xié)議:
(1)AH協(xié)議提供的安全服務(wù)
AH 的工作模式是在每一個數(shù)據(jù)包中的 IP 報頭后添加一個 AH 頭,這個 AH 頭有自己獨特的字段用于提供安全服務(wù),AH 可以保證數(shù)據(jù)的完整性不被篡改,但不能防止數(shù)據(jù)被盜竊。AH 使用的 IP 協(xié)議號是 51,當(dāng)IP報文的協(xié)議號部分為51 時,代表IP頭后面是一個 AH 報頭。
![]()
AH提供的安全服務(wù)主要有數(shù)據(jù)源認(rèn)證,加入一個雙方協(xié)商好的密文,來對對方身份以及數(shù)據(jù)的有效性進行驗證;第二個是數(shù)據(jù)完整性校驗,因為AH協(xié)議需要防止數(shù)據(jù)被非法篡改,因此該協(xié)議會通過引入一個單向Hash函數(shù)來創(chuàng)建一個散列值或者摘要信息,將該散列值與文本結(jié)合向接收方傳輸,同時接受方用同樣的單向Hash函數(shù)對接受內(nèi)容進行解密,驗證結(jié)果是否一致,以此來保護數(shù)據(jù)的完整性。
第三個是防報文重放攻擊,所謂重放攻擊就是攻擊者雖然不知道加密過的數(shù)據(jù)包里面到底是什么,但是可以通過截取這個數(shù)據(jù)包再發(fā)給接受方從而使接收方無法判別哪個才是正確的發(fā)送者,而AH協(xié)議會校驗序列號字段中的數(shù)值是否重復(fù)過,若重復(fù),則直接丟棄。
![]()
(2)ESP 協(xié)議提供的安全服務(wù)
ESP與 AH不同的是 ESP會先把數(shù)據(jù)段加密,然后再存放到IP報文中,從而達(dá)到防止竊聽的目的。ESP 除了在 IP 報頭的后面會加上一個 ESP報頭以外,還會在報文最后加上一個 ESP 報尾,該報尾用來提供加密服務(wù)。這樣攻擊者即使獲取了該數(shù)據(jù)包,在沒解開 ESP 加密的情況下也無法獲知其中的信息。
![]()
ESP 提供的安全服務(wù)和 AH 有所重合,ESP使用序列號字段來防止重放攻擊,ESP 通常使用Hmac-MD5 或 HMAC-SHA-1算法對加密后的載荷進行 Hash 計算來完成認(rèn)證和保證數(shù)據(jù)完整性的功能。但因為ESP會把數(shù)據(jù)加密之后再傳輸,因此會提供保密性服務(wù),在傳輸機密性數(shù)據(jù)的時候 ESP 有很大優(yōu)勢。
![]()
此外,在 NAT 模式下,由于AH會對IP地址也做Hash運算,因此在地址轉(zhuǎn)換之后 AH 的 Hash 值會被破壞,而ESP的IP協(xié)議號是50,在進行NAT轉(zhuǎn)換時沒有相應(yīng)的 TCP或UDP端口號的概念。為了使 ESP 能夠滿足 NAT環(huán)境下的地址轉(zhuǎn)換,這時就需要引進一個新的方法,即在ESP報文和 IP 報頭之間加入一個新的UDP報頭。
二、TLS協(xié)議
TLS 協(xié)議工作在傳輸層,由于TCP和UDP都有可被利用的漏洞,因此它是為了解決傳輸層鏈路安全問題而出現(xiàn)的。
TLS 分為兩種協(xié)議,分別是 TLS 記錄協(xié)議和 TLS 握手協(xié)議。TLS 記錄協(xié)議根據(jù) TLS 握手協(xié)議協(xié)商的參數(shù),對上層所交付的數(shù)據(jù)進行各種操作,從而使數(shù)據(jù)通過密文的形式傳輸,而接收方則通過解密的方式來接受數(shù)據(jù)。
通過這種方式就可以大大加強數(shù)據(jù)傳輸?shù)陌踩浴A硪环N協(xié)議是 TLS 握手協(xié)議,他讓客戶端和服務(wù)端進行協(xié)商,確定一組用于數(shù)據(jù)傳輸加密的密鑰串,相互認(rèn)證對方,這樣當(dāng)攻擊者沒有通過密鑰認(rèn)證時,就無法與另一端進行數(shù)據(jù)通信。
首先,客戶端向服務(wù)端發(fā)送 ClientHello 消息,其中含有一個客戶端生成的隨機數(shù),我們假設(shè)為R1和可供選擇的版本號清單等信息。
第二步,根據(jù)客戶端發(fā)來的Client Hello,服務(wù)端回復(fù) Server Hello 消息,其中會根據(jù)客戶端發(fā)來的清單數(shù)據(jù)確定兩端通信將會使用的版本號,密碼套件,壓縮方式等等協(xié)議需要的重要信息,并產(chǎn)生一個服務(wù)端隨機數(shù) R2,當(dāng)服務(wù)器認(rèn)證時,服務(wù)器會發(fā)給客戶端自己的證書。
第三步,當(dāng)要求客戶端認(rèn)證時,客戶端會先發(fā)送自己的證書,同時根據(jù)之前客戶端和服務(wù)器端產(chǎn)生的隨機數(shù)公用一種算法計算出密鑰。最后相互發(fā)送了 Finished 消息后就代表握手結(jié)束,可以開始傳輸數(shù)據(jù)。
![]()
同時也可以根據(jù)每種漏洞不同的特點進行有針對性的防御,但是一些防御方法并不全面。
一、ARP病毒攻擊的常見防御方法
目前有很多針對ARP病毒攻擊的防御方法,我們來看一下常見的防御方法。
(1)提高系統(tǒng)安全性
定期更新操作系統(tǒng)補丁,及時升級殺毒軟件病毒庫,并開啟殺毒軟件的實時監(jiān)控功能,防止系統(tǒng)被非法入侵或感染ARP病毒,但是這種防御方法只能防止本機感染ARP病毒,并不能有效防御ARP欺騙。
(2)部署ARP防火墻
ARP防火墻在一定程度上可以用來幫助緩解ARP攻擊,協(xié)助保護局域網(wǎng)內(nèi)主機安全。ARP防火墻除了下文即將介紹的綁定MAC地址功能外,最主要的防御方法就是主動防御。
主動防御是指ARP防火墻按照一定頻率強制對外發(fā)送正確的ARP數(shù)據(jù)包,這ARP防火墻在一定程度上可以用來幫助緩解ARP攻擊,協(xié)助保護局域網(wǎng)內(nèi)主機安全。ARP防火墻除了綁定MAC地址功能外,最主要的防御方法就是主動防御。
主動防御是指ARP防火墻按照一定頻率強制對外發(fā)送正確的ARP數(shù)據(jù)包,這顯然會對網(wǎng)絡(luò)造成額外的負(fù)擔(dān)。如果發(fā)送頻率過高時,會在局域網(wǎng)內(nèi)造成ARP風(fēng)暴。而且攻擊者只要提高攻擊速度,使其大于ARP防火墻的主動防御速度,主動防御就會失效。
(3)在交換機或主機端綁定MAC地址
在交換機端綁定每臺主機的IP/MAC對應(yīng)關(guān)系,為每臺主機添加一條靜態(tài)ARP緩存條目。當(dāng)交換機收到來自主機的數(shù)據(jù)包時,將數(shù)據(jù)包的IP地址和MAC地址與ARP緩存條目進行比對,如果相同則放行數(shù)據(jù)包,否則該數(shù)據(jù)包將被丟棄。同理,在主機端也可以綁定網(wǎng)關(guān)的IP/MAC對應(yīng)關(guān)系,為網(wǎng)關(guān)添加一條靜態(tài)ARP緩存條目。這種防御方法雖然可以抵御一定程度的ARP攻擊,但會犧牲 Inte.NET的移動性和自動配置性,增加了網(wǎng)絡(luò)管理員的負(fù)擔(dān),不適用于主機變動頰繁的局域網(wǎng)。
二、基于RIP的攻擊的常見預(yù)防方法
(1) 將路由器的某些接口配置為被動接口。配置為被動接后,該接口停止向該接口所在的網(wǎng)絡(luò)廣播路由更新消息。但是,允許繼續(xù)在該接口接收路由更新廣播消息。
(2) 配置ACL訪問控制列表。只允許相應(yīng)源IP地址的路由更新報文進入。
(3) 在RIPV2中使用驗證機制。RIPV1天生就有不安全因素。因為它沒有使用認(rèn)證機制并使用不可靠的UDP協(xié)議進行傳輸。
RIPv2的分組格式中包含了一個選項可以設(shè)置16個字符的明文密碼字符串(表示可很容的被嗅探到)或者MD5簽字。雖然RIP信息包可以很容易的偽造,但在RIPv2中你使用了MD5簽字將會使欺騙的操作難度大大提高。
(4)采用路由器之間數(shù)據(jù)鏈路層PPP的驗證。采用PPP的PAP驗證或Chap驗證實現(xiàn)數(shù)據(jù)鏈路層的安全線路連接。
三、DNS欺騙常見預(yù)防方法
(1)進行IP地址和MAC地址的綁定
① 預(yù)防ARP欺騙攻擊。因為DNS攻擊的欺騙行為要以ARP欺騙作為開端,所以如果能有效防范或避免ARP欺騙,也就使得DNS欺騙攻擊無從下手。例如可以通過將GatewayRouter的IpAddress和MACAddress靜態(tài)綁定在一起,就可以防范ARP攻擊欺騙。
②DNS信息綁定。DNS欺騙攻擊是利用變更或者偽裝DNS Server的IP Address,因此也可以使用MACAddress和IP Address靜態(tài)綁定來防御DNS欺騙的發(fā)生。
由于每個Nctwork Card 的MAC Address具有唯一性質(zhì),所以可以把DNS Server的 MAC Address與其IPAddress綁定,然后此綁定信息存儲在客戶機網(wǎng)卡的Eprom中。當(dāng)客戶機每次向DNS Server 發(fā)出查詢串請后,就會檢測DNS Server響應(yīng)的應(yīng)答數(shù)據(jù)包中的MACAddress是否與Eprom存儲器的 MAC Address相同,要是不同,則很有可能該網(wǎng)絡(luò)中的 DNS Server受到DNS欺騙攻擊。
這種方法有一定的不足,因為如果局域網(wǎng)內(nèi)部的客戶主機也保存了DNS Server 的 MAC Address,仍然可以用 MACAddress進行偽裝欺騙攻擊 。
(2)使用Digital Password 進行辨別
在不同子網(wǎng)的文件數(shù)據(jù)傳輸中,為預(yù)防竊取或篡改信息事件的發(fā)生,可以使用任務(wù)數(shù)字簽名(TSIG)技術(shù)即在主從Donain Name Server中使用相同的Password和數(shù)學(xué)模型算法,在數(shù)據(jù)通信過程中進行辨別和確認(rèn)。
因為有Password進行校驗的機制,從而使主從 Server的身份地位極難偽裝,加強了Domain Name信息傳遞的安全性。
在不同子網(wǎng)的文件數(shù)據(jù)傳輸中,為預(yù)防竊取或篡改信息事件的發(fā)生,可以使用任務(wù)數(shù)字簽名(TSIG)技術(shù)即在主從Donain Name Server中使用相同的Password和數(shù)學(xué)模型算法,在數(shù)據(jù)通信過程中進行辨別和確認(rèn)。因為有Password進行校驗的機制,從而使主從 Server的身份地位極難偽裝,加強了Domain Name信息傳遞的安全性。
安全性和可靠性更好的 Domain Name Service是使用域名系統(tǒng)的安全協(xié)議(Domain Name System Security,DNSSEC)),用Digital Signature的方式對搜索中的信息源進行分辨,對 DATA的完整性實施校驗。
因為在設(shè)立 Domain時就會產(chǎn)生Password,同時要求上層的Domain Name也必須進行相關(guān)的Domain Password Signature,顯然這種方法很復(fù)雜,所以InterNIC域名管理截至目前尚未使用。然而就技術(shù)層次上講,DNSSEC應(yīng)該是現(xiàn)今最完善的Domain Name設(shè)立和解析的辦法,對防范Domain Name欺騙攻擊等安全事件是非常有效的。
(3)直接使用IP地址訪問
對個別信息安全等級要求十分嚴(yán)格的WEB站點盡量不要使用DNS進行解析。由于DNS欺騙攻擊中不少是針對竊取客戶的私密數(shù)據(jù)面來的,而多數(shù)用戶訪問的站點并不涉及這些隱私信息,因此當(dāng)訪問具有嚴(yán)格保密信息的站點時,可以直接使用IP地址而無需通過DNS解析,這樣所有的DNS欺騙攻擊可能造成的危害就可以避免了。
除此,應(yīng)該做好 DNS Server的安全配置項目和升級DNS軟件,合理限定 DNS Server進行響應(yīng)的IP地址區(qū)間,關(guān)閉DNS Server的遞歸查詢項目等。
(4)對DNS數(shù)據(jù)包進行監(jiān)測
在DNS欺騙攻擊中, Client會接收到至少兩個 DNS的數(shù)據(jù)響應(yīng)包,一個是真實的數(shù)據(jù)包,另一個是攻擊數(shù)據(jù)包。欺騙攻擊數(shù)據(jù)包為了搶在真實應(yīng)答包之前回復(fù)給Client,它的信息數(shù)據(jù)結(jié)構(gòu)與真實的數(shù)據(jù)包相比十分簡單,只有應(yīng)答域,而不包括授權(quán)域和附加域。
因此,可以通過監(jiān)測DNS響應(yīng)包,遵循相應(yīng)的原則和模型算法對這兩種響應(yīng)包進行分辨,從而避免虛假數(shù)據(jù)包的攻擊。
四、TCP連接欺騙的常見防御方法
(1)利用網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
IP協(xié)議本身支持包過濾,當(dāng)一個數(shù)據(jù)包從廣域網(wǎng)進入局域網(wǎng)時,受害者可以查詢源IP地址字段是否屬于局域網(wǎng)內(nèi)部地址段。如果是,則丟棄這個數(shù)據(jù)包。
這種防御方法的前提是受害者儀信任局域網(wǎng)內(nèi)主機。如果受害者不僅信任局域網(wǎng)內(nèi)主機,還通過其他協(xié)議授權(quán)。域網(wǎng)的主機對其進行訪問,那么就無法利用該方法防御來自廣域網(wǎng)的攻擊者。
(2)限制僅利用IP地址進行認(rèn)證的協(xié)議
比如Unix系統(tǒng)的Rlogin協(xié)議,它僅僅利用IP地址進行身份認(rèn)證。只要主機的IP地址包含在信任列表中,Rlogin協(xié)議就允許遠(yuǎn)程登錄到另一主機,而不需輸入密碼。這樣,攻擊者可以利用Rlogin協(xié)議輕松地登錄到受害者主機。我們可以限制這些僅利用IP地址進行認(rèn)證的協(xié)議,或?qū)P地址進行一定配置或驗證,通過風(fēng)險畫像、IP代理檢測驗明這些IP地址是否存在風(fēng)險,提高這些協(xié)議的安全性。
(3)使用加密算法或認(rèn)證算法
對協(xié)議進行加密或認(rèn)證可以組織攻擊者篡改或偽造TCP連接中的數(shù)據(jù)。而就目前的加密技術(shù)或認(rèn)證技術(shù)而言,雙方需要共享一個密鑰或者協(xié)商出一對射私密鑰對。這就涉及到通信雙方必須采用同種加密或認(rèn)證手段,但是,加密算法或認(rèn)證算法往往涉及到復(fù)雜的數(shù)學(xué)計算,很消耗系統(tǒng)資源,會使通信效率明顯下降。






