資源描述:
《Ipsec協(xié)議實(shí)現(xiàn)與IP實(shí)現(xiàn)的整合.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、1實(shí)現(xiàn)總體思想通過改造Linux的IP協(xié)議棧源代碼,使得IP實(shí)現(xiàn)與IPSec實(shí)現(xiàn)完全整合。該實(shí)現(xiàn)按功能分,可以分為以下幾個(gè)功能模塊模塊:安全策略庫(SPD),安全關(guān)聯(lián)庫(SAD),AH協(xié)議處理,ESP協(xié)議處理,算法(加密卡的實(shí)現(xiàn)),日志、統(tǒng)計(jì)、配置與審計(jì),面向應(yīng)用的接口。按處理過程分,還可以分為以下幾個(gè)處理模塊:進(jìn)入IP層預(yù)處理、IPSec進(jìn)入策略處理、路由、本機(jī)對(duì)IP包處理、IPSec進(jìn)入處理、轉(zhuǎn)發(fā)處理、本地IP包處理、IPSec外出處理、發(fā)送處理。Ipsec協(xié)議實(shí)現(xiàn)與IP實(shí)現(xiàn)的整合思想:利用Netfilter的HOOK機(jī)制,在接受IP包和發(fā)送I
2、P包的過程中,在適當(dāng)?shù)奶幚砦恢谜{(diào)用相關(guān)的ipsec處理模塊。1.1Netfilter的HOOK機(jī)制的介紹Netfilter是linux2.4內(nèi)核實(shí)現(xiàn)數(shù)據(jù)包過濾/數(shù)據(jù)包處理/NAT等功能的抽象、通用化的框架。Netfilter框架包含以下三部分:1、為每種網(wǎng)絡(luò)協(xié)議(IPv4、IPv6等)定義一套鉤子函數(shù)(IPv4定義了5個(gè)鉤子函數(shù)),這些鉤子函數(shù)在數(shù)據(jù)報(bào)流過協(xié)議棧的幾個(gè)關(guān)鍵點(diǎn)被調(diào)用。在這幾個(gè)點(diǎn)中,協(xié)議棧將把數(shù)據(jù)報(bào)及鉤子函數(shù)標(biāo)號(hào)作為參數(shù)調(diào)用netfilter框架。2、內(nèi)核的任何模塊可以對(duì)每種協(xié)議的一個(gè)或多個(gè)鉤子進(jìn)行注冊(cè),實(shí)現(xiàn)掛接,這樣當(dāng)某個(gè)數(shù)據(jù)包被傳遞
3、給netfilter框架時(shí),內(nèi)核能檢測(cè)是否有任何模塊對(duì)該協(xié)議和鉤子函數(shù)進(jìn)行了注冊(cè)。若注冊(cè)了,則調(diào)用該模塊的注冊(cè)時(shí)使用的回調(diào)函數(shù),這樣這些模塊就有機(jī)會(huì)檢查(可能還會(huì)修改)該數(shù)據(jù)包、丟棄該數(shù)據(jù)包及指示netfilter將該數(shù)據(jù)包傳入用戶空間的隊(duì)列。3、那些排隊(duì)的數(shù)據(jù)包是被傳遞給用戶空間的異步地進(jìn)行處理。一個(gè)用戶進(jìn)程能檢查數(shù)據(jù)包,修改數(shù)據(jù)包,甚至可以重新將該數(shù)據(jù)包通過離開內(nèi)核的同一個(gè)鉤子函數(shù)中注入到內(nèi)核中。IP層(ipv4)的五個(gè)HOOK點(diǎn)如下:1.NF_IP_PRE_ROUTING:剛剛進(jìn)入網(wǎng)絡(luò)層的數(shù)據(jù)包通過此點(diǎn)(剛剛進(jìn)行完版本號(hào),校驗(yàn)和等檢測(cè)),源地
4、址轉(zhuǎn)換在此點(diǎn)進(jìn)行;2.NF_IP_LOCAL_IN:經(jīng)路由查找后,送往本機(jī)的通過此檢查點(diǎn),INPUT包過濾在此點(diǎn)進(jìn)行;3.NF_IP_FORWARD:要轉(zhuǎn)發(fā)的包通過此檢測(cè)點(diǎn),F(xiàn)ORWORD包過濾在此點(diǎn)進(jìn)行;4.NF_IP_POST_ROUTING:所有馬上便要通過網(wǎng)絡(luò)設(shè)備出去的包通過此檢測(cè)點(diǎn),內(nèi)置的目的地址轉(zhuǎn)換功能(包括地址偽裝)在此點(diǎn)進(jìn)行;5.NF_IP_LOCAL_OUT:本機(jī)進(jìn)程發(fā)出的包通過此檢測(cè)點(diǎn),OUTPUT包過濾在此點(diǎn)進(jìn)行。1.2處理模塊之間的關(guān)系IPSec安全網(wǎng)關(guān)對(duì)IP報(bào)文的接收、轉(zhuǎn)發(fā)和發(fā)送處理的整個(gè)過程:當(dāng)安全網(wǎng)關(guān)的網(wǎng)卡接收到數(shù)據(jù)報(bào)
5、時(shí),通過中斷觸發(fā)內(nèi)核的中斷處理程序,將網(wǎng)卡接收的數(shù)據(jù)報(bào)傳送到內(nèi)核空間,然后再通過IP層預(yù)處理程序?qū)?shù)據(jù)報(bào)轉(zhuǎn)換為IP包。此時(shí),我們將利用內(nèi)核的Netfilter機(jī)制提供的HOOK點(diǎn)PRE_ROUTING,將IP包傳送到IPSec進(jìn)入策略處理模塊。該模塊將決定哪些包可以進(jìn)入安全網(wǎng)關(guān),哪些包需要丟棄。對(duì)于允許進(jìn)入網(wǎng)關(guān)的IP包,將送回到路由處理模塊。路由處理根據(jù)IP頭決定IP包是發(fā)送到本機(jī)還是繼續(xù)轉(zhuǎn)發(fā)。對(duì)于發(fā)送到本機(jī)的IP包,首先經(jīng)過內(nèi)核對(duì)IP包的處理,如:分片重組、選項(xiàng)處理等等。然后利用HOOK點(diǎn)LOCAL_IN,將重組的IP包傳送到IPSec進(jìn)入處理模
6、塊。IPSec進(jìn)入處理模塊將對(duì)IPSec包和非IPSec包進(jìn)行區(qū)分,對(duì)于發(fā)往本機(jī)的非IPSec包將直接傳送到傳輸層處理模塊;對(duì)于IPSec包將進(jìn)行認(rèn)證或解密等IPSec處理,并剝?nèi)PSec頭。處理完后,將重新組裝成IP包發(fā)回到IP層預(yù)處理模塊。這樣該IP包將重新通過路由來決定發(fā)往何處。對(duì)于轉(zhuǎn)發(fā)的IP包,首先進(jìn)行轉(zhuǎn)發(fā)處理,如:決定下一跳、減少TTL、對(duì)某些特殊情況發(fā)送ICMP包。然后,利用HOOK點(diǎn)IP_FORWARD,將IP包傳送到外出IPSec外出處理模塊。IPSec處理將根據(jù)策略區(qū)分IPSec包、非IPSec包以及包發(fā)往何處。對(duì)于IPSec包
7、將直接丟棄。對(duì)于發(fā)往內(nèi)部網(wǎng)的非IPSec包,直接將包傳送給發(fā)送處理模塊,發(fā)往內(nèi)部網(wǎng)。對(duì)于發(fā)往外部網(wǎng)的IP包,將根據(jù)策略進(jìn)行認(rèn)證或加密等IPSec處理,最后將處理過的IP包傳送到發(fā)送處理模塊。對(duì)于從安全網(wǎng)關(guān)傳輸層發(fā)送的報(bào)文,首先進(jìn)行本地的IP包處理,構(gòu)建IP包。然后對(duì)IP包進(jìn)行路由,決定IP包的出口。路由之后將利用HOOK點(diǎn)LOCAL_OUTPUT,將IP包傳送到IPSec外出處理模塊。IPSec外出處理將根據(jù)策略決定那些包需要進(jìn)行IPSec處理。對(duì)于不需要處理的IP包,直接傳送到發(fā)送處理模塊。對(duì)于需要進(jìn)行IPSec處理的IP包,將根據(jù)策略進(jìn)行認(rèn)證或
8、加密等IPSec處理,然后將IPSec包重新發(fā)回到路由處理模塊,決定IPSec包將發(fā)往何處。當(dāng)再次經(jīng)過HOOK點(diǎn)時(shí),IPS