freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

2774alinux防火墻設計與實現(xiàn)畢業(yè)設計論文-資料下載頁

2024-11-29 10:42本頁面

【導讀】廣泛分布的企業(yè)內部網(wǎng)絡和公共網(wǎng)絡互聯(lián)起來,這種互聯(lián)方式面臨多種安全威脅,極易受到外界的攻擊,導致對網(wǎng)絡的非法訪問和信息泄露。防火墻是安全防范的最。有效也是最基本的手段之一。Linux以其開放源碼的特性,開放的網(wǎng)絡特性使越來。越多的用戶選擇Linux作為防火墻的操作平臺。熟悉LINUX系統(tǒng)的NETFILTER防火墻技術與原理。熟悉LINUX下C語言的調試和編譯;熟悉PERL,CGI。量統(tǒng)計等基本功能。進行系統(tǒng)總體方案設計以及各功能模塊的詳細設計與編程實現(xiàn)。軟件產(chǎn)品;畢業(yè)論文;光盤;英文翻譯。1.搜集和整理與NETFILTER相關資料;第三部分測試防火墻程序,寫論文,英文翻譯。近年來媒體報導的很多黑客入侵事件都是通過互聯(lián)網(wǎng)進行攻擊。防火墻是目前最為流行也是使用最為廣泛的一種網(wǎng)絡安全技術。絡環(huán)境的過程中,防火墻作為第一道安全防線而倍受關注。理及其在內核中的實現(xiàn)機制;Linux內核模塊的開發(fā)。本設計在Netfilter上進行二次開發(fā),設。率,數(shù)據(jù)包處理能力較強。中包括測試環(huán)境,測試方法與結果分析。

  

【正文】 ll 在 Linux kernel 系列的開發(fā)過程中發(fā)展了 Netfilter 這個架構。Linux 內核 版本中集成了Netfilter 框架,該框架是 Linux 平臺新的網(wǎng)絡安全功能框架,實現(xiàn)了多種網(wǎng)絡安全功能:數(shù)據(jù)包過濾、狀態(tài)保持、NAT,以及抗攻擊等等 [2]。 Linux 內核模塊設計Linux 操作系統(tǒng)的內核是單一體系結構(monolithic kernel),也就是說,整個內核是一個單獨的非常大的程序。對于單一體系結構的操作系統(tǒng)來說,所有的模塊都集成在一起,系統(tǒng)的速度和性能都很好,但是可擴展性和維護性就相對比較差。為了彌補單一體系結構的這種缺陷,Linux 操作系統(tǒng)使用了一種全新的機制——模塊設計,用戶可以根據(jù)需要,在不需要對內核重新編譯的情況下,模塊能動態(tài)地載入內核或從內核卸載出來以擴展內核的功能 [7]。 模塊的定義模塊(module)是在內核空間運行的程序,實際上是一種目標對象文件,沒有鏈接,不能獨立運行,但是其代碼可以在運行時鏈接到系統(tǒng)中作為內核的一部分運行或從內核中取出,從而可以動態(tài)擴充內核的功能。這種目標代碼通常由一組函數(shù)和數(shù)據(jù)結構組成,用來實現(xiàn)一種文件系統(tǒng)、一個驅動程序或其他內核上層的功能。模塊機制的完整叫法應該是動態(tài)可加載內核模塊(Loadable Kernel Module ,LKM),一般就簡稱為模塊 [7]。 模塊的優(yōu)點1.模塊使得內核更加緊湊和靈活。2.修改內核時,不必重新編譯整個內核,可以節(jié)省時間。系統(tǒng)中如果需要使用新模塊,只要編譯相應的內核模塊然后使用特定用戶空間的程序將模塊插入即可。3.模塊可以不依賴于某個固定的硬件平臺,即使它依賴于某些特殊的硬件特征。4.模塊的目標代碼一旦被鏈接到內核,它的作用和靜態(tài)鏈接的內核目標代碼完全等價。所以當調用模塊的函數(shù)時,無須顯式的消息傳遞 [7]。西南交通大學本科畢業(yè)設計(論文) 第 16 頁 模塊的結構Module 的數(shù)據(jù)結構在 include/Linux/ 中聲明。下面是 module 數(shù)據(jù)結構的主要組成部分 [1]:struct module{unsigned long size_of_struct。/*module 結構的大小*/struct module *next。 /*下一個 module 的地址*/const char *name。 /*module 的名字*/unsigned long size。 /*module 的大小,是整個 module 的總長度, 包括 module 結構,代碼,數(shù)據(jù)等 */…………int (*init)(void)。 /*用戶實現(xiàn)的 init_module 函數(shù)的入口*/void (*cleanup)(void)。 /*用戶實現(xiàn)的 clean_up 函數(shù)的入口*/…………}每個 module 在 kernel 中都有一個 module 結構與其對應,各個 module 之間用next 構成單向鏈表。kernel 中還有一個全局變量 module_list,存儲鏈表的頭指針,一個新的 module 被加載后,會被加載到鏈表的最開始,因此 module_list 的值就是新加載 module 的值。kernel 中還有一個全局變量是 kernel_module,在支持 module方式的內核中,內核本身被描述成一個大 module,這個 module 將被以后加載的所有 module 所引用。如果 kernel 當前狀態(tài)一個 module 都沒有加載,那么 module_list的值就是 kernel_module。每個 Linux 內核模塊至少由兩個基本的函數(shù)組成: int init_module(void) 用于初始化所有的數(shù)據(jù);void cleanup_module(void) 用于清除數(shù)據(jù),從而模塊能有一個安全的退出 [7]。 NETFILTER 原理介紹 什么是 NetfilterNetfilter 比以前任何一版 Linux 內核的防火墻子系統(tǒng)都要完善強大。Netfilter 提供了一個抽象、通用化的框架,該框架定義的一個子功能的實現(xiàn)就是包過濾子系統(tǒng)。因此不要在 中期望討論諸如“如何在 中架設一個防火墻或者偽裝網(wǎng)關”這樣的話題,這些只是 Netfilter 功能的一部分。 Netfilter 框架包含以下三部分。第一部分為每種網(wǎng)絡協(xié)議(IPvIPv6 等)定義一套鉤子函數(shù)(IPv4 定義了 5 個鉤子函數(shù)) ,這些鉤子函數(shù)在數(shù)據(jù)報流過協(xié)議棧的幾個關鍵點被調用。在這幾個點中,西南交通大學本科畢業(yè)設計(論文) 第 17 頁協(xié)議棧將把數(shù)據(jù)報及鉤子函數(shù)標號作為參數(shù)調用 Netfilter 框架。第二部分內核的任何模塊可以對每種協(xié)議的一個或多個鉤子進行注冊,實現(xiàn)掛接,這樣當某個數(shù)據(jù)包被傳遞給 Netfilter 框架時,內核能檢測是否有任何模塊對該協(xié)議和鉤子函數(shù)進行了注冊。若注冊了,則調用該模塊的注冊時使用的回調函數(shù),這樣這些模塊就有機會檢查(可能還會修改)該數(shù)據(jù)包、丟棄該數(shù)據(jù)包及指示 Netfilter將該數(shù)據(jù)包傳入用戶空間的隊列。第三部分那些排隊的數(shù)據(jù)包是被傳遞給用戶空間的異步地進行處理。一個用戶進程能檢查數(shù)據(jù)包,修改數(shù)據(jù)包,甚至可以重新將該數(shù)據(jù)包通過離開內核的同一個鉤子函數(shù)中注入到內核中。所有的包過濾/NAT 等等都基于該框架。內核網(wǎng)絡代碼中不再有到處都是的、混亂的修改數(shù)據(jù)包的代碼了。當前 Netfilter 框架在 IPvIPv6 及 Deet 網(wǎng)絡棧中被實現(xiàn) [10]。 Netfilter 在 IPv4 中的結構Linux 內核中的 Netfilter 位于 Linux 網(wǎng)絡層(IP 層)和防火墻內核模塊之間,在內核中通過 Netfilter 結構將防火墻對數(shù)據(jù)包的處理引入到 IP 層中實現(xiàn),防火墻代碼與實現(xiàn) IP 層的代碼完全分離,從而構成不同的模塊。 Linux 可以支持不同的協(xié)議,如 TCP/IP,APPLETALK , 等,這些協(xié)議分別對應著一個唯一的協(xié)議號碼,如IPv4 的協(xié)議號定義: define AF_INET 2 /*Inter IP Protocol*/每種協(xié)議都可以有自己的防火墻。在內核中定義了一個為 firewall_ops 的結構體,來為各種協(xié)議的防火墻提供一個統(tǒng)一的接口。結構如圖 31: 圖 31 Linux 防火墻機制每種協(xié)議都可以對應多級防火墻,每個協(xié)議的多級防火墻都有各自的優(yōu)先級,按照優(yōu)先級,從高到低的順序將其 firewall_ops 連成一個內核與防火墻的接口鏈表。數(shù)據(jù)包在經(jīng)過 IP 層處理時,會檢查相應的鉤子函數(shù)鏈表中是否有 HOOK 函數(shù)注冊,西南交通大學本科畢業(yè)設計(論文) 第 18 頁如果存在注冊的 HOOK 函數(shù),各級防火墻就會順著其鏈表一一處理。Netfilter 中定義了五個關于 IPv4 的 hook,對這些符號的聲明可以在Linux/ 中找到。這些 hook 的位置如下圖 32:圖 32 IPv4 中 IP 層的 5 個 HOOK 點的位置 [11]上圖中 HOOK 點位置的名稱及其調用時機如表 31:表 31 HOOK 點的名稱及其調用時機 [11]HOOK 名稱 調用的時機[1]NF_IP_PRE_ROUTING 在完整性校驗之后,選路確定之前[2]NF_IP_LOCAL_IN 在選路確定之后,且數(shù)據(jù)包的目的是本地主機[3]NF_IP_FORWARD 目的地是其它主機地數(shù)據(jù)包[4]NF_IP_LOCAL_OUT 本機進程的數(shù)據(jù)包在其離開本地主機的過程中[5]NF_IP_POST_ROUTING 在數(shù)據(jù)包離開本地主機“上線”之前NF_IP_PRE_ROUTING 這個 HOOK 點是數(shù)據(jù)包被接收到之后調用的第一個HOOK。本防火墻正是通過將自己編寫的 hook 函數(shù)掛接到此點來實現(xiàn)對網(wǎng)絡數(shù)據(jù)包的控制。在防火墻規(guī)則中制定了對需要檢查數(shù)據(jù)的選擇標準,以及如果符合規(guī)則中的條件后要采取的動作。這些動作定義在內核的 中,這些值也是向內核提供接口函數(shù)的返回值,就是 , 所調用宏處理函數(shù)的返回值。處理函數(shù)返回值及其含義如表 32:NF_DROP 這個返回值的含義是該數(shù)據(jù)包將被完全的丟棄,所有為它分配的資源都應當被釋放。 NF_ACCEPT 這個返回值告訴 Netfilter:到目前為止,該數(shù)據(jù)包還是被接受的并且該數(shù)據(jù)包應當被遞交到網(wǎng)絡堆棧的下一個階段。NF_STOLEN 是一個有趣的返回值,因為它告訴 Netfilter,“忘掉”這個數(shù)據(jù)包。這里告訴 Netfilter的是:該 hook 函數(shù)將從此開始對數(shù)據(jù)包的處理,并且 Netfilter 應當放棄對該數(shù)據(jù)包西南交通大學本科畢業(yè)設計(論文) 第 19 頁做任何的處理。但是,這并不意味著該數(shù)據(jù)包的資源已經(jīng)被釋放。這個數(shù)據(jù)包以及它的 sk_buff 數(shù)據(jù)結構仍然有效,只是 hook 函數(shù)從 Netfilter 獲取了該數(shù)據(jù)包的所有權。這個返回值 NF_REPEAT 請求 Netfilter 再次調用這個 hook 函數(shù)。這個返回值應當謹慎使用,否則容易形成死循環(huán) [12]。表 32 處理函數(shù)返回值及其含義 [11]返回值 含義NF_DROP 丟棄該數(shù)據(jù)包NF_ACCEPT 保留該數(shù)據(jù)包NF_STOLEN 忘掉該數(shù)據(jù)包NF_QUEUE 將該數(shù)據(jù)包插入到用戶空間NF_REPEAT 再次調用該 hook 函數(shù)如果某協(xié)議沒有注冊防火墻,則返回默認策略,令數(shù)據(jù)包通過。如圖 32 所示,數(shù)據(jù)包從左邊(HOOK 點 NF_IP_PRE_ROUTING 之前)進入系統(tǒng),進行 IP 校驗以后,數(shù)據(jù)包經(jīng)過第一個鉤子函數(shù) NF_IP_PRE_ROUTING 處理,然后就進入路由代碼,其決定該數(shù)據(jù)包是要轉發(fā)還是發(fā)給本機;若該數(shù)據(jù)包是發(fā)給本機的,則該數(shù)據(jù)經(jīng)過鉤子函數(shù) NF_IP_LOCAL_IN 處理以后然后傳遞給上層協(xié)議;若數(shù)據(jù)包應該被轉發(fā)則被 NF_IP_FORWAD 處理;經(jīng)過轉發(fā)的數(shù)據(jù)包經(jīng)過最后一個鉤子函數(shù) NF_IP_POST_ROUTING 處理以后在傳輸?shù)骄W(wǎng)上。而本地產(chǎn)生的數(shù)據(jù)經(jīng)過鉤子函數(shù) NF_IP_LOCAL_OUT 處理以后,然后經(jīng)過 NF_IP_POST_ROUTING 處理后發(fā)送到網(wǎng)絡上。當內核模塊不需要參與 IP 層的數(shù)據(jù)包的處理時,調用 Netfilter 鉤子函數(shù)的注銷函數(shù),Netfilter 從鉤子函數(shù)鏈表中去掉此鉤子函數(shù)指針,這樣 IP 層就檢測不到鉤子函數(shù)的存在,會繼續(xù)操作 [10]。下面舉例說明 Netfilter 與 Linux TCP/IP 協(xié)議棧對數(shù)據(jù)包的處理過程:假設物理網(wǎng)絡上來了一個 IP 分組。這個分組由 ip_rcv()函數(shù)接收,該函數(shù)最后一個宏將控制權交給 PREROUTING 規(guī)則鏈處理。如果該分組沒有被過濾掉,則ip_rcv_finish()函數(shù)調用 ip_route_input()檢查路由表,并且判斷該分組是發(fā)給本機還是轉發(fā)到另外一個網(wǎng)絡。如果是發(fā)送給本機,則調用函數(shù) ip_local_deliver()。該函數(shù)在最后調用防火墻宏,處理 INPUT 規(guī)則鏈。處理完成后交給傳輸層,直至應用程序中的應用進程。如果是轉發(fā),則在函數(shù) ip_rcv_finish()中,會調用路由表函數(shù)ip_route_input()后將控制權交給 ip_forward(),這個函數(shù)會通過防火墻宏將執(zhí)行FORWARD 規(guī)則鏈中的規(guī)則。最后 ip_forward_finish()負責調用 ip_send()將分組發(fā)出。但是發(fā)出之前會通過防火墻宏,執(zhí)行 POSTROUTING 中的規(guī)則,然后將分組交給驅動程序放到物理網(wǎng)絡上。還有一個 HOOK 點是 OUTPUT,當本地進程要發(fā)送分組時,會在 POSTROUTING 之前先處理 OUTPUT 規(guī)則鏈。為實現(xiàn) Netfilter 結構在 HOOK西南交通大學本科畢業(yè)設計(論文) 第 20 頁點對應函數(shù)中調用宏 NF_HOOK,他檢測相應的鉤子函數(shù)鏈表是否為空,如果不為空則調用注冊的鉤子函數(shù)。鉤子函數(shù)的定義為:(文件 Linux/)define NF_HOOK(pf, hook, skb, indev, outdev, okfn) \(list_empty(amp。nf_hooks[(pf)][(hook)]) \ ? (okfn)(skb) \ : nf_hook_slow((pf), (hook), (skb), (indev), (outdev), (okfn)))而在 IP 層代碼具體實現(xiàn)中,則有一些帶有 NF_HOOK 宏的語句,如 IP 轉發(fā)函數(shù)中有:NF_HOOK(pf,hook,skb,indev,outdev ,okfn)。如果在編譯內核的時候沒有配置 Netfilter 時,就相當于調用最后一個參數(shù),即執(zhí)行 ip_forward_finish()函數(shù);否則進入 HOOK 點,執(zhí)行通過 nf_register_hook()登記功能(實際上是進入 nf_hook_slow()函數(shù),再由它執(zhí)行的登記的函數(shù))。 NF_HOOK宏的參數(shù)分別為:1.pf: 協(xié)議族名.2.hook: HOOK 點的名字,對于 IP 層就是表 中的五個值。3.skb: Linux 網(wǎng)絡層緩沖區(qū)結構 sk_buff(include/)。4.indev: 數(shù)據(jù)包進來的設備,以 struct _device 的結構表示。
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1