分片頭是其中一種特殊類(lèi)型的擴(kuò)展頭,它包含了實(shí)現(xiàn)IPv6分片所需要的機(jī)制。與IPv4頭不同,IPv6不是將所有分片相關(guān)信息保存在固定的IPv6頭中,而是將這些信息保存在一個(gè)可選的分片頭中。因此,執(zhí)行分片的主機(jī)只需要在IPv6頭信息鏈中插入一個(gè)分片頭信息,再添加需要分片的原始數(shù)據(jù)包。
IPv6防火墻對(duì)安全的影響
上述IPv6頭信息鏈結(jié)構(gòu)的靈活性?xún)?yōu)于IPv4,因?yàn)樗幌拗茢?shù)據(jù)包可以包含的數(shù)量。然而,這種靈活性也是有代價(jià)的。
任何需要獲取上層信息(如TCP端口號(hào))的系統(tǒng),都需要處理整個(gè)IPv6頭信息鏈。而且,由于當(dāng)前的協(xié)議標(biāo)準(zhǔn)支持任意數(shù)量的擴(kuò)展頭,包括同一種擴(kuò)展頭的多個(gè)實(shí)例,因此它會(huì)對(duì)防火墻等設(shè)備造成多種影響:
– 防火墻需要解析多個(gè)擴(kuò)展頭,才能夠執(zhí)行深度數(shù)據(jù)包檢測(cè)(DPI),它可能會(huì)降低WAN性能,引發(fā)拒絕服務(wù)(DoS)攻擊,或者防火墻被繞過(guò)。
– 組合擴(kuò)展頭和分片可能妨礙數(shù)據(jù)包檢測(cè)。
正如前面介紹的,由于當(dāng)前的協(xié)議規(guī)范支持任意數(shù)量的擴(kuò)展頭,包括同一種擴(kuò)展頭類(lèi)型的多個(gè)實(shí)例,因此防火墻必須能夠細(xì)致地處理包括異常的多IPv6擴(kuò)展頭信息的數(shù)據(jù)包。而這可能被一些攻擊者利用,他們可能故意在數(shù)據(jù)包中加入大量的擴(kuò)展頭,使防火墻在處理上述數(shù)據(jù)包時(shí)浪費(fèi)過(guò)多資源。最終,這可能會(huì)引起防火墻性能下降,或者造成防火墻本身出現(xiàn)DoS問(wèn)題。此外,有一些性能不佳的防火墻在應(yīng)用過(guò)濾策略時(shí),可能無(wú)法處理整個(gè)IPv6頭信息鏈,從而可能讓一些攻擊者利用擴(kuò)展頭威脅相應(yīng)的防火墻。
IPv6分片也可能被惡意利用,方法與IPv4的類(lèi)似。例如,為了破壞防火墻的過(guò)濾策略,攻擊者可能會(huì)發(fā)送一些重疊的分片,從而影響目標(biāo)主機(jī)的分片重組過(guò)程。在IPv6中,這個(gè)問(wèn)題更為嚴(yán)重,因?yàn)槎鄠€(gè)IPv6擴(kuò)展頭和分片的組合可能產(chǎn)生一些錯(cuò)誤分片,盡管它們的數(shù)據(jù)包大小是“正常的”,但是它們丟失了一些實(shí)施過(guò)濾策略通常需要的基本信息,如TCP端口號(hào)。即,數(shù)據(jù)包的第一個(gè)分片可能包含很多IPv6選項(xiàng),以致上層協(xié)議頭可能屬于另一個(gè)分片,而不是第一個(gè)分片。
IPv6轉(zhuǎn)換/共存技術(shù)
IPv6轉(zhuǎn)換/共存技術(shù)還給IPv6防火墻帶來(lái)另一個(gè)問(wèn)題。大多數(shù)轉(zhuǎn)換技術(shù)都使用某種通道機(jī)制,它在一種網(wǎng)絡(luò)協(xié)議(通常是IPv4)中封裝另一種網(wǎng)絡(luò)層協(xié)議(通常是IPv6)。這會(huì)對(duì)防火墻的安全性造成很多影響。
首先,防火墻可能無(wú)法識(shí)別特定的轉(zhuǎn)換技術(shù),也可能無(wú)法應(yīng)用一些原生IPv6流量支持的過(guò)濾策略。例如,在使用原生IPv4或原生IPv6時(shí),一個(gè)網(wǎng)站可以阻擋通向TCP端口25的數(shù)據(jù)包,但是在部署了Teredo 等轉(zhuǎn)換機(jī)制后,它可能無(wú)法阻擋這些數(shù)據(jù)包。
其次,轉(zhuǎn)換技術(shù)可能會(huì)加劇上述問(wèn)題,因?yàn)椴粌H封裝的流量可能使用組合的IPv6擴(kuò)展頭和分片,其他向外發(fā)送的數(shù)據(jù)包(通常是IPv4)也可能是分片的,因此這都會(huì)大大增加最終流量的復(fù)雜性。這種復(fù)雜性不僅會(huì)降低網(wǎng)絡(luò)流量傳輸速度,更嚴(yán)重的是,它還可能影響防火墻的過(guò)濾策略。例如,防火墻可能無(wú)法處理整個(gè)頭信息鏈,從而無(wú)法找到TCP分片(參見(jiàn)下圖)。下圖的示例顯示的是使用Teredo的TCP/IPv6數(shù)據(jù)包的語(yǔ)法,說(shuō)明了最終流量的復(fù)雜程度。
圖2:一個(gè)使用Teredo的TCP/IPv6數(shù)據(jù)包示例
這個(gè)數(shù)據(jù)包的結(jié)構(gòu)可能會(huì)變得更復(fù)雜,例如,如果內(nèi)外數(shù)據(jù)包都分片了。
可能的IPv6安全問(wèn)題
顯然,為了應(yīng)用IPv6數(shù)據(jù)包過(guò)濾策略,防火墻至少必須支持整個(gè)IPv6頭信息鏈的處理。理想情況下,這些防火墻還應(yīng)該支持IPv6轉(zhuǎn)換技術(shù),這樣應(yīng)用于原生IPv6流量的過(guò)濾策略可以同樣應(yīng)用到轉(zhuǎn)換流量上。也就是說(shuō),防火墻應(yīng)該有一個(gè)“默認(rèn)拒絕”策略,這樣防火墻就能夠阻擋您不需要的流量,如轉(zhuǎn)換流量。
對(duì)于可能利用多擴(kuò)展頭的資源耗盡攻擊,在防火墻上限制一個(gè)IPv6數(shù)據(jù)包支持的最大擴(kuò)展頭數(shù)量可以解決這個(gè)問(wèn)題。合理的限制是允許每一個(gè)當(dāng)前定義的擴(kuò)展頭只出現(xiàn)一個(gè)實(shí)例。然而,也可以使用“16”等其他限制值——例如,OpenBSD就采用這個(gè)限制值。這種限制允許合法流量,但不允許異常多數(shù)量的擴(kuò)展頭。超過(guò)限制的數(shù)據(jù)包必須丟棄。雖然這可能會(huì)影響性能,但是能夠防止DoS。
最后,規(guī)定在IPv6報(bào)文的第一個(gè)分片中包含應(yīng)用數(shù)據(jù)包過(guò)濾策略所需要的完整數(shù)據(jù)包頭信息,能夠應(yīng)付使用分片的防火墻繞行技術(shù)。也就是說(shuō),在防火墻接收到的報(bào)文第一個(gè)分片中,如果不包含完整的上層協(xié)議頭信息,如TCP頭,那么這個(gè)數(shù)據(jù)包就會(huì)被丟棄。防火墻繞行技術(shù)還可以在應(yīng)用過(guò)濾策略之前,通過(guò)在防火墻中重新組合分片的報(bào)文來(lái)解決。然而,對(duì)于基于網(wǎng)絡(luò)的防火墻而言,至少這并不是一種推薦的方法,因?yàn)樗赡軙?huì)留下DoS漏洞。
解決IPv6防火墻問(wèn)題
正如本文所介紹的,IPv6防火墻面臨許多問(wèn)題,但是它們可以通過(guò)合理的防火墻設(shè)計(jì)和操作解決。在購(gòu)買(mǎi)防火墻設(shè)備時(shí),必須對(duì)IPv6防火墻支持仔細(xì)評(píng)估,因?yàn)椴煌a(chǎn)品的支持差別很大,支持不佳的防火墻可能會(huì)對(duì)企業(yè)網(wǎng)絡(luò)安全造成負(fù)面影響。