基于Linux的防火墻設(shè)計(jì)實(shí)現(xiàn)分析_第1頁
基于Linux的防火墻設(shè)計(jì)實(shí)現(xiàn)分析_第2頁
基于Linux的防火墻設(shè)計(jì)實(shí)現(xiàn)分析_第3頁
基于Linux的防火墻設(shè)計(jì)實(shí)現(xiàn)分析_第4頁
基于Linux的防火墻設(shè)計(jì)實(shí)現(xiàn)分析_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、摘要防火墻是網(wǎng)絡(luò)平安研究的一個(gè)重要容,數(shù)據(jù)包捕獲是包過濾型防火墻的前提,本文對(duì)基于linux主機(jī)的個(gè)人防火墻的數(shù)據(jù)包捕獲模塊進(jìn)展了研究,重點(diǎn)論述數(shù)據(jù)包捕獲模塊的構(gòu)造、組成以及功能。首先對(duì)信息平安及防火墻的重要性進(jìn)展論述,并給出防火墻的詳細(xì)分類;然后分析了基于linux主機(jī)的個(gè)人防火墻總體設(shè)計(jì)及軟硬件平臺(tái)原理,接著論述linux下的數(shù)據(jù)包捕獲模塊構(gòu)造與原理,并詳述其具體實(shí)現(xiàn)步驟關(guān)鍵詞:防火墻linux,數(shù)據(jù)包捕獲模塊,包過濾Abstractfirewallnetworksecurityisanimportantcontentoftheresearch,thepacketfilterpacketc

2、aptureisthepremiseoffirewall,thispaperisbasedonpersonalfirewallofhostLinuxpacketcapturemodulewasstudied,andfocusesonthepacketcapturesmodulestructure,positionandfunction.Firsttoinformationsecurityandtheimportanceofthefirewallisdiscussedindetail,andgivesthefirewall.ThenbasedontheanalysisofthemainLinux

3、personalfirewallsoftwareandhardwareplatformandoveralldesignprinciple,thendiscussestheLinuxpacketcapturemodulestructureandprinciple,anddiscussitsspecificimplementationsteps.keywords:firewalllinux;packetcaptures;thepacketfiltermodules目錄緒論1第一章LINUX系統(tǒng)2 TOC o 1-5 h z HYPERLINK l bookmark8 o Current Docum

4、ent LINUX系統(tǒng)簡(jiǎn)介2 HYPERLINK l bookmark10 o Current Document LINUX的特點(diǎn)3 HYPERLINK l bookmark12 o Current Document 第二章防火墻簡(jiǎn)介5傳統(tǒng)防火墻及其缺陷5 HYPERLINK l bookmark16 o Current Document 分布式防火墻5第三章LINUX防火墻的幾種常見功能9包過濾9代理9IP偽裝11一個(gè)LINUX防火墻實(shí)例12 TOC o 1-5 h z HYPERLINK l bookmark28 o Current Document 第四章防火墻系統(tǒng)15 HYPERLIN

5、K l bookmark30 o Current Document 4.1防火墻系統(tǒng)總體設(shè)計(jì)15 HYPERLINK l bookmark32 o Current Document 第五章基于LINUX的數(shù)據(jù)包捕獲模塊16 HYPERLINK l bookmark34 o Current Document 基于LINUX的數(shù)據(jù)包捕獲模塊構(gòu)造16 HYPERLINK l bookmark36 o Current Document 基于LINUX的數(shù)據(jù)包捕獲模塊原理分析16 HYPERLINK l bookmark38 o Current Document 第六章數(shù)據(jù)包捕獲模塊設(shè)計(jì)19 HYPER

6、LINK l bookmark40 o Current Document 數(shù)據(jù)包捕獲模塊設(shè)計(jì)流程19 HYPERLINK l bookmark42 o Current Document 數(shù)據(jù)包捕獲模塊實(shí)現(xiàn)19 HYPERLINK l bookmark44 o Current Document 第七章程序中用到的構(gòu)造體21 HYPERLINK l bookmark46 o Current Document 7.1程序中用到的一些構(gòu)造體解析21致辭23參考文獻(xiàn):24緒言網(wǎng)絡(luò)防火墻技術(shù)是一種用來加強(qiáng)網(wǎng)絡(luò)之間控制,防止外部網(wǎng)絡(luò)用戶以非法手段通過外部網(wǎng)絡(luò)進(jìn)入部網(wǎng)絡(luò),部網(wǎng)絡(luò)資源,保護(hù)部網(wǎng)絡(luò)操作環(huán)境的特殊網(wǎng)

7、絡(luò)互聯(lián)設(shè)備。它對(duì)兩個(gè)或多個(gè)網(wǎng)絡(luò)之間傳輸?shù)臄?shù)據(jù)包按照一定的平安策略來實(shí)施檢查,以決定網(wǎng)絡(luò)之間的通信是否被允許,并監(jiān)視網(wǎng)絡(luò)運(yùn)行狀態(tài)。根據(jù)防火墻所采用的技術(shù)不同,可以將它分為四種根本類型:包過濾型、網(wǎng)絡(luò)地址轉(zhuǎn)換一net、代理型和監(jiān)測(cè)型。包過濾型產(chǎn)品是防火墻的初級(jí)產(chǎn)品,具技術(shù)依據(jù)是網(wǎng)絡(luò)中的分包傳輸技術(shù)。包過濾技術(shù)的優(yōu)點(diǎn)是簡(jiǎn)單實(shí)用,實(shí)現(xiàn)本錢較低,在應(yīng)用環(huán)境比擬簡(jiǎn)單的情況下,能夠以較小的代價(jià)在一定程度上保證系統(tǒng)的平安絡(luò)地址轉(zhuǎn)換是一種用于把ip地址轉(zhuǎn)換成臨時(shí)的、外部的、注冊(cè)的ip地址標(biāo)準(zhǔn)。它允許具有私有ip地址的部網(wǎng)絡(luò)因特網(wǎng)。代理型防火墻也可以被稱為代理效勞器,它的平安性要高于包過濾型產(chǎn)品,并已經(jīng)開場(chǎng)向應(yīng)用

8、層開展。代理型防火墻的優(yōu)點(diǎn)是平安性較高,可以針對(duì)應(yīng)用層進(jìn)展偵測(cè)和掃描,對(duì)付基于應(yīng)用層的侵入和病毒都十分有效。其缺點(diǎn)是對(duì)系統(tǒng)的整體性能有較大的影響,而且代理效勞器必須針對(duì)客戶機(jī)可能產(chǎn)生的所有應(yīng)用類型逐一進(jìn)展設(shè)置,大大增加了系統(tǒng)管理的復(fù)雜性。監(jiān)測(cè)型防火墻是新一代的產(chǎn)品,能夠?qū)Ω鲗拥臄?shù)據(jù)進(jìn)展主動(dòng)的、實(shí)時(shí)的監(jiān)測(cè),在對(duì)這些數(shù)據(jù)加以分析的根底上,監(jiān)測(cè)型防火墻能夠有效地判斷出各層中的非法侵入。同時(shí),這種檢測(cè)型防火墻產(chǎn)品一般還帶有分布式探測(cè)器,這些探測(cè)器安置在各種應(yīng)用效勞器和其他網(wǎng)絡(luò)的節(jié)點(diǎn)之中,不僅能夠檢測(cè)來自網(wǎng)絡(luò)外部的攻擊,同時(shí)對(duì)來自部的惡意破壞也有極強(qiáng)的防作用。監(jiān)測(cè)型防火墻在平安性上已超越了包過濾型和代理

9、效勞器型防火墻,但其實(shí)現(xiàn)本錢較高。基于對(duì)系統(tǒng)本錢與平安技術(shù)本錢的綜合考慮,用戶可以選擇性地使用某些監(jiān)測(cè)型技術(shù)。第一章Linux系統(tǒng)Linux系統(tǒng)簡(jiǎn)介L(zhǎng)inux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng)。我們通常所說的Linux,指的是GNU/Linux,即采用Linux核的GNU操作系統(tǒng)。GNU代表GNUsNotUnix。它既是一個(gè)操作系統(tǒng),也是一種規(guī)。Linux最早由LinusTorvalds在1991年開場(chǎng)編寫。在這之前,RichardStallman&J立了FreeSoftwareFoundationFSF組織以及GNU工程,并不斷的編寫創(chuàng)立GNU程序程序的許可方式均為GPL:Gene

10、ralPublicLicense。在不斷的有程序員和開發(fā)者參加到GNU組織中后,變?cè)炀土私裉煳覀兯吹降腖inux!Linux是一個(gè)核。然而一個(gè)完整的操作系統(tǒng)不僅僅是核而已。所以許多個(gè)人、組織和企業(yè)開發(fā)了基于GNU/Linux的Linux發(fā)行版。今天有不計(jì)其數(shù)的發(fā)行版可供人們選擇使用,雖然不夠統(tǒng)一的標(biāo)準(zhǔn)給不同版本的使用者在技術(shù)上的相互溝通帶來了一定的麻煩,但歸根結(jié)底“自由、開源、團(tuán)結(jié)互助的理念是Linux愛好者們共同的向往。Linux的特點(diǎn)有很多人現(xiàn)在都在學(xué)習(xí)和研究Linux。作為當(dāng)今一種新興和流行的操作系統(tǒng)的前身來源與強(qiáng)大的UNIX。而那個(gè)芬蘭小伙子一開場(chǎng)就沒把它定位成一種操作系統(tǒng)。但是Li

11、nux的作用在今天已越來越重要了。想接觸和學(xué)習(xí)它,就要先了解它的特點(diǎn)。讓我們一起來了解一下吧:.自由開源軟件首先,Linux可以說是作為開放源碼的自由軟件的代表,作為自由軟件,它有如下兩個(gè)特點(diǎn):一是它開放源碼并對(duì)外免費(fèi)提供,二是愛好者可以按照自己的需要自由修改、復(fù)制和發(fā)布程序的源碼,并公布在Internet上,因此Linux操作系統(tǒng)可以從互聯(lián)網(wǎng)上很方便地免費(fèi)下載得到,這樣你還可以省下購置Windows操作系統(tǒng)的一筆不小的資金。且由于可以得到Linux的源碼,所以操作系統(tǒng)的部邏輯可見,這樣就可以準(zhǔn)確地查明故障原因,及時(shí)采取相應(yīng)對(duì)策。在必要的情況下,用戶可以及時(shí)地為L(zhǎng)inux打“補(bǔ)丁,這是其它操作

12、系統(tǒng)所沒有的優(yōu)勢(shì)。同時(shí),這也使得用戶容易根據(jù)操作系統(tǒng)的特點(diǎn)構(gòu)建平安保障系統(tǒng),不用擔(dān)憂來自那些不公開源碼的“黑盒子式的系統(tǒng)預(yù)留的什么”后門的意外的打擊。而且,Linux上跑的絕大多數(shù)應(yīng)用程序也是免費(fèi)可得的,用了Linux就再也不用擔(dān)憂背上“使用盜版軟件的黑鍋了。.真正的多任務(wù)多用戶只有很少的操作系統(tǒng)能提供真正的多任務(wù)能力,盡管許多操作系統(tǒng)聲明支持多任務(wù),但并不完全準(zhǔn)確,如Windows。而Linux那么充分利用了X86CPU的任務(wù)切換機(jī)制,實(shí)現(xiàn)了真正多任務(wù)、多用戶環(huán)境,允許多個(gè)用戶同時(shí)執(zhí)行不同的程序,并且可以給緊急任務(wù)以較高的優(yōu)先級(jí)。.價(jià)格優(yōu)勢(shì)價(jià)格其實(shí)是影響產(chǎn)品的重要因素,作為開源軟件,它的價(jià)格

13、優(yōu)勢(shì)不言而喻。4多平臺(tái)支持各種CPU,包括Intel,AMD,ARM,Mips等。.強(qiáng)大的網(wǎng)絡(luò)功能實(shí)際上,Linux就是依靠互聯(lián)網(wǎng)才迅速開展了起來,Linux具有強(qiáng)大的網(wǎng)絡(luò)功能也是自然而然的事情。它可以輕松地與TCP/IP、LANManager、WindowsforWorkgroups、NovellNetware或WindowsNT網(wǎng)絡(luò)集成在一起,還可以通過以太網(wǎng)或調(diào)制解調(diào)器連接到Internet上。Linux不僅能夠作為網(wǎng)絡(luò)工作站使用,更可以勝任各類效勞器,如X應(yīng)用效勞器、文件效勞器、打印效勞器、效勞器、新聞效勞器等等。.兼容性高Linux對(duì)系統(tǒng)兼容性較高,對(duì)硬件要求不是很高。支持很多軟硬件

14、平臺(tái)。.開發(fā)功能強(qiáng)Linux支持一系列的UNIX開發(fā),它是一個(gè)完整的UNIX開發(fā)平臺(tái),幾乎所有的主流程序設(shè)計(jì)語言都已移植到Linux上并可免費(fèi)得到,如C、C+、Fortran77、ADA、PASCAL、Modual2和3、Tcl/TkScheme、SmallTalk/X等。.具有豐富的圖形用戶界面Linux的圖形用戶界面是Xwindow系統(tǒng)。如GNOME、KDE。還有SHELL。Xwindow可以做MSWindows下的所有事情,而且更有趣、更豐富,用戶甚至可以在幾種不同風(fēng)格的窗口之間來回切換。另外它還支持很多的應(yīng)用軟件,這也是它的一大特性。.得意的“代言物下次大家看到得意企鵝造型的時(shí)候,不只

15、是要聯(lián)想到QQ。其實(shí)Linux也是的哦。10平安性和穩(wěn)定性這點(diǎn)不用多說,Linux的較高平安性和良好的穩(wěn)定性能是它的一大特色。第二章防火墻簡(jiǎn)介2.1傳統(tǒng)防火墻及其缺陷防火墻是指設(shè)置在不同網(wǎng)絡(luò)或網(wǎng)絡(luò)平安域之間,根據(jù)一定的平安策略對(duì)網(wǎng)絡(luò)間的通信實(shí)施控制的一系列部件的組合。傳統(tǒng)意義上的防火墻就是指邊界防火墻,它將網(wǎng)絡(luò)分為網(wǎng)和外網(wǎng)兩局部。它是網(wǎng)絡(luò)間信息傳輸?shù)奈ㄒ怀鋈肟?,能夠根?jù)平安策略控制允許、拒絕、監(jiān)測(cè)出入網(wǎng)絡(luò)的信息流,且本身具有較強(qiáng)的抗攻擊能力。它是提供信息平安效勞、實(shí)現(xiàn)網(wǎng)絡(luò)和信息平安的重要的、根本的平安裝置。在邏輯上,防火墻是一個(gè)別離器,一個(gè)限制器,也是一個(gè)分析器,有效地監(jiān)控了部網(wǎng)和Intern

16、et之間的任何活動(dòng),保證了部網(wǎng)絡(luò)的平安。傳統(tǒng)防火墻依賴于網(wǎng)絡(luò)的拓?fù)湎拗?,它假定網(wǎng)上的所有主機(jī)都是可信任的,而外網(wǎng)上的所有主機(jī)都是不可信的。當(dāng)網(wǎng)絡(luò)遵照拓?fù)湎拗茣r(shí),這種模型工作得很好;但是,隨著網(wǎng)絡(luò)連接的擴(kuò)大和新的網(wǎng)絡(luò)應(yīng)用的開展,這種模型暴露出了越來越多的缺陷,面臨著極大的挑戰(zhàn)。主要表現(xiàn)在:對(duì)繞過防火墻的攻擊無能為力;如果防火墻的規(guī)那么設(shè)置不當(dāng),網(wǎng)上的所有主機(jī)將暴露在外部攻擊的直接威脅之下。由于信任網(wǎng)上的所有主機(jī),而對(duì)來自網(wǎng)絡(luò)部的惡意攻擊、未授權(quán)或無意的誤操作“視而不見。是潛在的通信瓶頸和單一故障點(diǎn)。與端到端加密如VPN有沖突。由于依賴于網(wǎng)絡(luò)拓?fù)洌瑹o法支持移動(dòng)計(jì)算。為了克制上述缺陷,產(chǎn)生了“分布式

17、防火墻DistributedFirewall的概念。2.2分布式防火墻多臺(tái)基于主機(jī)但受集中管理和配置的防火墻組成了分布式防火墻。在分布式防火墻中,平安策略仍然被集中定義,但是在每一個(gè)單獨(dú)的網(wǎng)絡(luò)端點(diǎn)例如主機(jī)、路由器上實(shí)施。分布式防火墻中含有三個(gè)必需的組件:描述平安策略的語言。平安地發(fā)布策略的機(jī)制。應(yīng)用、實(shí)施策略的機(jī)制。平安策略語言規(guī)定了哪些通信被允許,哪些通信被制止,它應(yīng)該支持多種類型的應(yīng)用,還應(yīng)支持權(quán)利委派和身份鑒別。策略制定后被發(fā)布到網(wǎng)絡(luò)端點(diǎn)上。策略發(fā)布機(jī)制應(yīng)該保證策略在傳輸過程中的完整性和真實(shí)性。策略發(fā)布有多種方式,可以直接“推到終端系統(tǒng)上,可以由終端按需獲取,也可以以證書的形式提供應(yīng)用戶

18、。策略實(shí)施機(jī)制位于要保護(hù)的主機(jī)上,在處理出入的通信之前,它查詢本地策略再做出允許或制止的決定。分布式防火墻克制了傳統(tǒng)防火墻的缺陷,它的優(yōu)勢(shì)在于:在網(wǎng)絡(luò)部增加了另一層平安。有效抵御來自部的攻擊。消除網(wǎng)絡(luò)邊界上的通信瓶頸和單一故障點(diǎn)。支持基于加密和認(rèn)證的網(wǎng)絡(luò)應(yīng)用。與拓?fù)錈o關(guān),支持移動(dòng)計(jì)算。分布式防火墻的前兩個(gè)組件從本質(zhì)上說是平安授權(quán)問題。傳統(tǒng)的授權(quán)機(jī)制包括控制列表ACL和公鑰證書體系X.509、PKI。但是ACL不適用于開放、動(dòng)態(tài)的分布式環(huán)境,證書體系在授予權(quán)限、信任模式、委托權(quán)利等方面也不能很好地滿足分布式防火墻的要求。信任管理TrustManagement是解決分布式環(huán)境下授權(quán)、信任問題的一種

19、新思想,它提供了適合網(wǎng)絡(luò)應(yīng)用的開放、動(dòng)態(tài)、分布特性的平安解決框架。KeyNote是信任管理系統(tǒng)的一個(gè)實(shí)例。它提供了一種簡(jiǎn)練、靈活、易擴(kuò)展和富于表達(dá)能力的語言來描述平安策略SecurityPolicy和平安憑證(SecurityCredential)這種可編程的語言易讀、易寫,而且與應(yīng)用無關(guān),使KeyNote很容易與應(yīng)用系統(tǒng)集成。本地策略綁定了公鑰和直接授權(quán);遠(yuǎn)程策略經(jīng)DSA、RSA數(shù)字簽名后作為平安憑證,采用了與平安策略一樣的語法。平安憑證支持間接信任關(guān)系和權(quán)利委派,可以在不受信任的網(wǎng)絡(luò)上傳播、發(fā)布。因此,基于KeyNote實(shí)現(xiàn)防火墻的前兩個(gè)組件是可行而有效的。防火墻中應(yīng)用的KeyNote體系

20、構(gòu)造中效勞器進(jìn)程根據(jù)外來的連接請(qǐng)求,調(diào)用KeynoteAPI,將三元組(r,C,P提交給信任管理引擎,該引擎使用通用的、與應(yīng)用獨(dú)立的一致性驗(yàn)證算法,這種深度優(yōu)先算法采用遞歸的方式,試圖在本地或者LDAP效勞器上查找到至少一條能夠滿足請(qǐng)求的策略斷言,從而做出策略是否被滿足的判斷結(jié)果,并返回給效勞器進(jìn)程。實(shí)施策略的組件對(duì)進(jìn)出主機(jī)的通信都進(jìn)展了控制,不但可以保護(hù)主機(jī)應(yīng)對(duì)外來的威脅,而且可以防止非法用戶使用該主機(jī)網(wǎng)絡(luò),從而實(shí)現(xiàn)了雙向過濾的功能。我們?cè)赗edhatLinux7.2kernelver:2.4.7上開發(fā)、實(shí)現(xiàn)了分布式防火墻。Linux是當(dāng)前比擬流行的網(wǎng)絡(luò)效勞器平臺(tái),并且具有集成的、良好的平安

21、特性和庫,支持IPseGSSL.同時(shí),利用其開放的源代碼,我們可以修改核使之與KeyNote庫libkeynote。何樣是開放源代碼的)很好地協(xié)作。系統(tǒng)由三個(gè)組件構(gòu)成:核擴(kuò)展集、用戶級(jí)守候進(jìn)程和設(shè)備驅(qū)動(dòng)程序。我們的例主要著眼于對(duì)TCP連接的控制。(1)核擴(kuò)展KernelExtension。用戶使用connect(和accept(這兩個(gè)系統(tǒng)調(diào)用來創(chuàng)立向外的連接以及決定到來的連接請(qǐng)求。我們要根據(jù)策略對(duì)這兩個(gè)系統(tǒng)調(diào)用加以修改,對(duì)某些連接進(jìn)展過濾。策略上下文PolicyContext是包含與某一連接相關(guān)的所有信息的容器,這些信息包括發(fā)起連接的用戶ID,源IP地址、端口號(hào),目的IP地址、端口號(hào),等等。(

22、2)策略驅(qū)動(dòng)(PolicyDriver)。這里實(shí)現(xiàn)了一個(gè)偽設(shè)備驅(qū)動(dòng)/dev/policy作為核中被修改的系統(tǒng)調(diào)用與用戶空間的守候進(jìn)程直接通信的渠道。我們把該驅(qū)動(dòng)視為一個(gè)文件,它支持一般的文件操作,如open(),close(),read(),write(),ioctl()。(3)策略守候進(jìn)程PolicyDaemon。這是一個(gè)用戶級(jí)進(jìn)程,負(fù)責(zé)根據(jù)平安策略和平安憑證作出決策一一允許還是拒絕連接。我們先說明對(duì)外來連接accept(進(jìn)展過濾的工作流程。第一步:首先,操作系統(tǒng)啟動(dòng)策略守候進(jìn)程,并調(diào)用open翻開策略驅(qū)動(dòng)。策略守候進(jìn)程讀取本地的包含策略和憑證的文件當(dāng)然,也可以定制進(jìn)程啟動(dòng)時(shí)即從遠(yuǎn)程的LDA

23、P效勞器上下載、更新策略和憑證,opened初始化有關(guān)數(shù)據(jù)構(gòu)造。策略守候進(jìn)程調(diào)用read(),試圖從策略驅(qū)動(dòng)中讀取連接請(qǐng)求信息。如果驅(qū)動(dòng)中沒有請(qǐng)求信息,那么守候進(jìn)程阻塞。第二步:效勞器進(jìn)程收到了連接請(qǐng)求,首先調(diào)用accept(。)這個(gè)被修改正的系統(tǒng)調(diào)用形成策略上下文并提交到策略驅(qū)動(dòng)中。效勞器進(jìn)程阻塞。第三步:此時(shí),read()M回請(qǐng)求消息,策略守候進(jìn)程被喚醒。它讀取該消息,調(diào)用KeyNote的一致性檢查器pliancechecker根據(jù)本地策略和憑證進(jìn)展分析。如果未找到與此連接相關(guān)的策略,策略守候進(jìn)程就聯(lián)系遠(yuǎn)程的LDAP效勞器查找、下載相應(yīng)的憑證。假設(shè)策略許可即:找到策略或平安憑證,根據(jù)簽名算

24、法驗(yàn)證無誤,并且符合憑證斷言,那么允許該連接,假設(shè)在本地及遠(yuǎn)程效勞器上均沒有找到相應(yīng)的策略或憑證,或者與策略、憑證的斷言不符,那么拒絕之。策略守候進(jìn)程調(diào)用write(常自己的決策寫入策略驅(qū)動(dòng)中。第四步:accept()A策略驅(qū)動(dòng)中讀取策略守候進(jìn)程的決策,效勞器進(jìn)程被喚醒。假設(shè)決策允許,accept(返回非負(fù)的套接字描述符;否那么返回-1拒絕該連接請(qǐng)求。對(duì)系統(tǒng)向外發(fā)起連接的connect(進(jìn)展過濾的系統(tǒng)流程與此類似。其它兩個(gè)系統(tǒng)調(diào)用的功能是,close關(guān)閉偽設(shè)備驅(qū)動(dòng),會(huì)釋放已分配資源并禁用分布式防火墻;ioctl()用于核與守候進(jìn)程之間同步時(shí)的錯(cuò)誤處理。第三章LINUX防火墻的幾種常見功能由于每

25、一個(gè)用戶的要求和所處的環(huán)境都不一樣,LINUX防火墻會(huì)根據(jù)用的設(shè)置實(shí)現(xiàn)各種不同的功能。但一般說來,以下三種功能是大多數(shù)用戶最常用到的。3.1包過濾對(duì)數(shù)據(jù)包進(jìn)展過濾可以說是任何防火墻所具備的最根本的功能,而LINUX防火墻本身從某個(gè)角度也可以說是一種“包過濾防火墻。在LINUX防火墻中,操作系統(tǒng)核對(duì)到來的每一個(gè)數(shù)據(jù)包進(jìn)展檢查,從它們的中提取出所需要的信息,如源IP地址、目的IP地址、源端口號(hào)、目的端口號(hào)等,再與已建立的防火規(guī)那么逐條進(jìn)展比擬,并執(zhí)行所匹配規(guī)那么的策略,或執(zhí)行默認(rèn)策略,這個(gè)過程在圖1中已經(jīng)形象的表現(xiàn)出來。值得注意的是,在制定防火墻過濾規(guī)那么時(shí)通常有兩個(gè)根本的策略方法可供選擇:一個(gè)是

26、默認(rèn)允許一切,即在承受所有數(shù)據(jù)包的根底上明確地制止那些特殊的、不希望收到的數(shù)據(jù)包;還有一個(gè)策略就是默認(rèn)制止一切,即首先制止所有的數(shù)據(jù)包通過,然后再根據(jù)所希望提供的效勞去一項(xiàng)項(xiàng)允許需要的數(shù)據(jù)包通過。一般說來,前者使啟動(dòng)和運(yùn)行防火墻變得更加容易,但卻更容易為自己留下平安隱患。通過在防火墻外部接口處對(duì)進(jìn)來的數(shù)據(jù)包進(jìn)展過濾,可以有效地阻止絕大多數(shù)有意或無意地網(wǎng)絡(luò)攻擊,同時(shí),對(duì)發(fā)出的數(shù)據(jù)包進(jìn)展限制,可以明確地指定部網(wǎng)中哪些主機(jī)可以互聯(lián)網(wǎng),哪些主機(jī)只能享用哪些效勞或登陸哪些站點(diǎn),從而實(shí)現(xiàn)對(duì)部主機(jī)的管理。可以說,在對(duì)一些小型部局域網(wǎng)進(jìn)展平安保護(hù)和網(wǎng)絡(luò)管理時(shí),包過濾確實(shí)是一種簡(jiǎn)單而有效的手段。3.2代理LIN

27、UX防火墻的代理功能是通過安裝相應(yīng)的代理軟件實(shí)現(xiàn)的。它使那些不具備公共IP的部主機(jī)也能互聯(lián)網(wǎng),并且很好地屏蔽了部網(wǎng),從而有效保障了部主機(jī)的平安。為了清楚地描述這一重要功能的實(shí)現(xiàn)過程,特假設(shè)以下典型情況:steven為部網(wǎng)中一臺(tái)IP是勺主機(jī),其上安裝有IE5.0瀏覽器,并配置為使用防火墻主機(jī)8080作為代理。firewall就是我們討論的LINUX防火墻,有兩個(gè)網(wǎng)絡(luò)接口,分別是部接口eth1=192.168.04外部接口eth0=在日rewall主機(jī)上安裝有Web代理軟件“squid,并配置其代理端口為808Q為263的Web效勞器,IP為31Web效勞端口80。如果要從steven主機(jī)263的

28、主頁,其具體的通信過程所示:IE通過steven的非專用端口1110在102465535之間隨機(jī)生)與防火墻的代理端口8080建立連接,請(qǐng)求”頁面。squid代理接收到請(qǐng)求后,先查找域名”,得到地址3t(4)步驟圖中省略),然后通過防火墻端口1050與該地址的80端口建立一個(gè)連接,請(qǐng)求頁面。.263.ne瞰勞器接到請(qǐng)求后將頁面?zhèn)鹘osquid代理。防火墻代理得到頁面后,把數(shù)據(jù)復(fù)制到第一步中所建立的連接上,IE得到數(shù)據(jù)并將“頁面顯示出來。通過以上描述,可以清楚地了解到部主機(jī)、LINUX代理防火墻以及外部效勞器之間是如何進(jìn)展數(shù)據(jù)傳輸?shù)?。steven機(jī)發(fā)來的數(shù)據(jù)包經(jīng)由部接口eth1進(jìn)來后,首先承受IN

29、PUT鏈的“檢查:系統(tǒng)核從中提取出信息,與INPUT鏈中所有適用于eth1接口的過濾規(guī)那么逐個(gè)比擬,直到匹配通過。之后,該數(shù)據(jù)包被轉(zhuǎn)發(fā)給本地的代理進(jìn)程。同樣,代理進(jìn)程發(fā)送給遠(yuǎn)程Web效勞器的數(shù)據(jù)包在從防火墻外部接口發(fā)送出去之前,也要經(jīng)過OUTPUT鏈的“檢查,即與OUTPUT鏈中所有適用于eth0接口的規(guī)那么一一比擬。返回的過程正好與上述相反,在此就不再贅述。為了實(shí)現(xiàn)以上過程,我們必須在防火墻規(guī)那么腳本中添加以下規(guī)那么:ipchains-Ainput-iethl-ptcps1110d8080-jACCEPTipchains-Aoutput-ieth0-ptcp-s1050d3180-jACCE

30、PTipchains-Ainput-ieth0-ptcp!-ys3180d1050-jACCEPTipchains-Aoutput-ieth1-ptcp!-y-s8080d1110-jACCEPT從上文對(duì)代理功能的原理和實(shí)現(xiàn)的表達(dá)中,我們可以看出,LINUX防火墻實(shí)際上扮演了一個(gè)“代理網(wǎng)關(guān)的角色。部主機(jī)和遠(yuǎn)程效勞器分別都只與防火墻進(jìn)展連接,而真正的“起點(diǎn)和“終點(diǎn)之間卻毫無聯(lián)系。IP偽裝IP偽裝IPMasquerade是LINUX操作系統(tǒng)自帶的又一個(gè)重要功能。通過在系統(tǒng)核增添相應(yīng)的偽裝模塊,核可以自動(dòng)地對(duì)經(jīng)過的數(shù)據(jù)包進(jìn)展“偽裝,即修改中的源目的IP信息,以使外部主機(jī)誤認(rèn)為該包是由防火墻主機(jī)發(fā)出來

31、的。這樣做,可以有效解決使用部保存IP的主機(jī)不能互聯(lián)網(wǎng)的問題,同時(shí)屏蔽了部局域網(wǎng)。這一點(diǎn),與前面所講的代理所到達(dá)的目的是很類似的。steven主機(jī)的IE進(jìn)程直接與遠(yuǎn)程的Web效勞器建立一個(gè)連接。當(dāng)數(shù)據(jù)包到達(dá)防火墻的部接口后,照樣要例行INPUT鏈的檢查。之后,數(shù)據(jù)包被送到FORWARD鏈,承受系統(tǒng)核的“偽裝處理,即將中的源IP地址改為防火墻外部接口eth0的地址,并在系統(tǒng)中做下記錄,以便一會(huì)兒對(duì)其回應(yīng)包的目的IP進(jìn)展“恢復(fù)。這樣,當(dāng)該數(shù)據(jù)包順利從外部接口出來時(shí),其中源IP已被改為202.117.120.。遠(yuǎn)程效勞器會(huì)認(rèn)為這是從防火墻的合法地址發(fā)來的,從而對(duì)其做1出響應(yīng)。當(dāng)遠(yuǎn)程效勞器返回的回應(yīng)包

32、到達(dá)防火墻時(shí),先經(jīng)過INPUT鏈,然后會(huì)根據(jù)系統(tǒng)關(guān)于IP偽裝的記錄對(duì)數(shù)據(jù)包的目的IP進(jìn)展恢復(fù),即將改為最后再經(jīng)過OUTPUT鏈返回至ijsteven主機(jī)。為了實(shí)現(xiàn)這個(gè)過程,我們必須在防火墻規(guī)那么腳本中添加以下規(guī)那么:ipchains-Ainput-iethl-ptcp-s1110d3180-jACCEPTipchains-Aoutput-ieth0-ptcps1050-d3180-jACCEPTipchains-Ainput-ieth0-ptcp!-y-s3180-d1050-jACCEPTipchains-Aoutput-ieth1-ptcp!-ys3180-d1110-jACCEPTipc

33、hains-Aforward-ieth0s1110-d3180-jMASQ與代理功能比擬而言,IP偽裝不需要安裝相應(yīng)的代理軟件,數(shù)據(jù)包的偽裝對(duì)用戶來說都是“透明的,并且整個(gè)過程都是在IP層實(shí)現(xiàn),因此實(shí)現(xiàn)速度較快。缺點(diǎn)是不能對(duì)經(jīng)過的數(shù)據(jù)包作詳細(xì)的記錄。但一般說來,LINUX防火墻在實(shí)際的設(shè)置中常用到的三種功能。用戶在創(chuàng)立自己的防火墻規(guī)那么腳本時(shí),可以根據(jù)自己的需要將這三種功能組合起來實(shí)現(xiàn)。一個(gè)LINUX防火墻實(shí)例以下是我前一段時(shí)間為某辦公室搭建的LINUX防火墻的實(shí)際配置,給出以供參考。有兩個(gè)局域網(wǎng),LAN1地址:5/48為公共網(wǎng)絡(luò)IP,LAN2地址為/255.255.255.為部保存地址。0,

34、LINUX防火墻有兩個(gè)部接口:0接LAN1;接LAN2?,F(xiàn)對(duì)防火墻進(jìn)展配置,使LAN2的主機(jī)通過IP偽裝互聯(lián)網(wǎng),但只允許使用外部Web代理效勞器4勺1252端口。LAN1中的主機(jī)被限制使用幾種常用的互聯(lián)網(wǎng)效勞DNS、SMTP、POP3、HTTP和FTP。下面就是創(chuàng)立的防火墻規(guī)那么腳本:#/etc/rc.d/rc.firewall#!/bin/sheth0-External_interfaceeth1-LAN1_interfaceeth2-LAN2_interfaceechoStartingfirewalling.Flushanyexistingrulesfromallchainsipchain

35、s-F#Setthedefaultpolicytodenyipchains-PinputDENYipchains-PoutputREJECTipchains-PforwardREJECT#Enabletrafficontheloopbackinterfaceipchains-Ainput-ilo-jACCEPTipchains-Aoutput-ilo-jACCEPT#Enablethetrafficontheeth1ipchains-Ainput-ieth1-jACCEPTipchains-Aoutput-ieth1-jACCEPT#thetrafficontheeth2onlyenablli

36、ngusingtheWEBPROXYipchains-Ainput-ieth2-ptcp-s/241024:65535-d41252-jACCEPTipchains-Aoutput-ieth2-ptcp!-y-s41252-d/241024:65535-jACCEPT#Forwardingrulesipchains-Aforward-ieth0-s4/29-jACCEPTipchains-Aforward-ieth0-s/24-jMASQipchains-Aforward-ieth1-d4/29-jACCEPT#EnableoutgoingthepacketsfromLANontheExter

37、nal_Interfaceipchains-Aoutput-ieth0-jACCEPT#EnableiningsomeICMPmessagesoneth1.Dest_Unreachable,Service_Unavailableipchains-Ainput-ieth0-picmp-sany/03-d4/29-jACCEPT2.Time_Exceededipchains-Ainput-ieth0-picmp-sany/011-d4/29-jACCEPT3.Allowoutgoingpingstoanywhereipchains-Ainput-ieth0-picmp-sany/00-d4/29-

38、jACCEPT#EnableProxyof4:1252ipchains-Ainput-ieth0-ptcp!-y-s41252-jACCEPT#DNS(53)(DNS:)clientmodesipchains-Ainput-ieth0-pudp-s53-d4/291024:65535-jACCEPTipchains-Ainput-ieth0-ptcp!-y-s53-d4/291024:65535-jACCEPT#SMTP(25)EnablesendingmailthrougharemoteSMTPgatewayipchains-Ainput-ieth0-ptcp!-y-sany/025-d4/

39、291024:65535-jACCEPT#POP(110)-EnablereceivingmailfromaremotePOPserveripchains-Ainput-ieth0-ptcp!-y-sany/0110-d4/291024:65535-jACCEPT#HTTP(80)-EnableaccessingremoteWEBsitesasaclientipchains-Ainput-ieth0-ptcp!-y-sany/080-d4/291024:65535-jACCEPT#FTP(20,21)-EnableaccessingremoteFTPserversipchains-Ainput

40、-ieth0-ptcp!-y-sany/021-d4/291024:65535-jACCEPTipchains-Ainput-ieth0-ptcp-sany/020-d4/291024:65535-jACCEPTipchains-Ainput-ieth0-ptcp!-y-sany/01024:65535-d4/291024:65535-jACCEPTechodoneexit0第四章防火墻系統(tǒng)4.1防火墻系統(tǒng)總體設(shè)計(jì)linux系統(tǒng)下實(shí)現(xiàn)軟件防火墻的設(shè)計(jì)與應(yīng)用,實(shí)質(zhì)上就是基于主機(jī)的網(wǎng)絡(luò)平安解決方案。因此,我們完全可以選擇適宜的軟硬件平臺(tái)和相應(yīng)的防火墻設(shè)計(jì)原理,自己開發(fā)出一套能夠滿足要求的防火墻系統(tǒng)

41、。歸納起來這里要實(shí)現(xiàn)的防火墻需要滿足兩大要求:第一,必須能夠?qū)χ鳈C(jī)提供平安保護(hù),即對(duì)主機(jī)與局域網(wǎng)以外的主機(jī)進(jìn)展數(shù)據(jù)傳輸時(shí)實(shí)施平安保護(hù);第二,必須能夠提供良好的人機(jī)接口界面,具有容易操作、容易管理的優(yōu)點(diǎn)??紤]到現(xiàn)有硬件設(shè)備的限制,在保證滿足實(shí)驗(yàn)要求的環(huán)境下盡可能地簡(jiǎn)化了實(shí)驗(yàn)環(huán)境。因?yàn)樵摲阑饓ο到y(tǒng)是基于主機(jī)設(shè)計(jì)的,故只需要一個(gè)聯(lián)網(wǎng)的主機(jī)即可進(jìn)展實(shí)驗(yàn)。該系統(tǒng)是在linux環(huán)境下用c語言實(shí)現(xiàn)包過濾型軟件防火墻的設(shè)計(jì)與應(yīng)用,采用kylix開發(fā)工具進(jìn)展界面設(shè)計(jì)和數(shù)據(jù)庫連接。基于linux的個(gè)人防火墻系統(tǒng)主要具有以下功能:1全程動(dòng)態(tài)包過濾本防火墻要在linux下實(shí)現(xiàn)全程動(dòng)態(tài)包過濾功能,通過分析數(shù)據(jù)包的地址、

42、協(xié)議、端口對(duì)任何網(wǎng)絡(luò)連接當(dāng)前狀態(tài)進(jìn)展控制,從而提高系統(tǒng)的性能和平安性。2提供日志審計(jì)本防火墻配備了日志記錄系統(tǒng)和查詢工具,用于記錄系統(tǒng)管理、系統(tǒng)及針對(duì)平安策略的網(wǎng)絡(luò)情況。3防火墻數(shù)據(jù)庫的備份本防火墻制作防火墻過濾數(shù)據(jù)庫,并且管理員可以能動(dòng)地對(duì)該數(shù)據(jù)庫進(jìn)展設(shè)置。第五章基于linux的數(shù)據(jù)包捕獲模塊基于linux的數(shù)據(jù)包捕獲模塊構(gòu)造數(shù)據(jù)包捕獲模塊用于監(jiān)視和驗(yàn)證網(wǎng)絡(luò)流量情況,它可以截取或者閱讀網(wǎng)絡(luò)上OSI協(xié)議模型中各個(gè)協(xié)議層次上的數(shù)據(jù)包。本文所設(shè)計(jì)的數(shù)據(jù)包捕獲程序可以捕獲通過原始套接口(Socket為原始數(shù)據(jù)包(RawPacket)當(dāng)一個(gè)數(shù)據(jù)包到達(dá)網(wǎng)絡(luò)接口時(shí),數(shù)據(jù)包捕獲程序就直接從緩存區(qū)讀取捕獲的數(shù)

43、據(jù)包,以供數(shù)據(jù)分析和處理時(shí)調(diào)用。數(shù)據(jù)捕獲模塊的構(gòu)造如圖1所示:數(shù)據(jù)捕獲圖表1基于linux的數(shù)據(jù)包捕獲模塊原理分析1網(wǎng)卡設(shè)置原理在一個(gè)實(shí)際的系統(tǒng)中,數(shù)據(jù)的收發(fā)是由網(wǎng)卡來完成的,網(wǎng)卡接收到傳輸來的數(shù)據(jù),網(wǎng)卡的程序接收數(shù)據(jù)幀的目的mac地址,根據(jù)計(jì)算機(jī)上的網(wǎng)卡驅(qū)動(dòng)程序設(shè)置的接收模式判斷該不該接收,認(rèn)為不該接收就丟掉不管。而對(duì)于網(wǎng)卡來說一般有四種接收模式:播送模式組播模式、直接方式、混雜模式。數(shù)據(jù)包捕獲程序首先使網(wǎng)絡(luò)接口(網(wǎng)卡)處于混雜狀態(tài),從而可截獲網(wǎng)絡(luò)上的容,并且通過相應(yīng)的軟件處理,可以實(shí)時(shí)分析這些數(shù)據(jù)的容,為數(shù)據(jù)包過濾作準(zhǔn)備。2根本函數(shù)說明本文中在linux主機(jī)上用c語言編寫數(shù)據(jù)包捕獲程序,所

44、編寫的程序中用到很多l(xiāng)inux中的預(yù)定義函數(shù),在此節(jié)將對(duì)這些根本函數(shù)的功能和使用特點(diǎn)進(jìn)展說明。1ioctl函數(shù)定義ioctl()函數(shù)非常龐雜,它可以控制各種文件的屬性。它用于控制特殊文件的底層設(shè)備參數(shù),這些特殊文件通常是指終端、套接字和接口。ioctl函數(shù)原型為:intioctl(inthandle,intcmd,int*argdx,intargcx;)2socket函數(shù)定義常用的socket類型有兩種:流式socket(sock_stream)數(shù)據(jù)包式socket(sock_dgra流式是一種面向連接的socket,針對(duì)面向連接的tcp效勞應(yīng)用;數(shù)據(jù)報(bào)式socket是一種無連接的socket

45、,針對(duì)無連接的udp效勞應(yīng)用。socket函數(shù)原型為:intsocket(intdomain,inttype,intprotocol)3recvfrom()函數(shù)定義用recvfrom()函數(shù)來實(shí)現(xiàn)接收數(shù)據(jù)包,recvfrom()是具備“阻塞式i/o特性的函數(shù),能夠在沒有數(shù)據(jù)包到達(dá)的情況下暫時(shí)掛起等待,直至接收到數(shù)據(jù)包后,再激活轉(zhuǎn)入下步處理。recvfrom()函數(shù)的原型為:intrecvfrom(sockets,charfar*buf,intlen,intflags,structsockaddrfar*from,int*fromlen;)本函數(shù)從已連接套接口上接收數(shù)據(jù),并捕獲數(shù)據(jù)發(fā)送源的地址。

46、對(duì)于sock_stream類型的套接口,最多可以接收緩沖區(qū)大小個(gè)數(shù)據(jù)。如果套接口被設(shè)置為線接收帶外數(shù)據(jù)(選項(xiàng)為so_oobinline),且有帶外數(shù)據(jù)未讀入,那么返回帶外數(shù)據(jù)。應(yīng)用程序可通過調(diào)用ioctlsocket()白socatmark命令來確定是否有帶外數(shù)據(jù)待讀入。對(duì)于sock_streami共型套接口,忽略from和fromlen參數(shù)。4一些“字節(jié)順序轉(zhuǎn)換函數(shù)因?yàn)榫W(wǎng)絡(luò)和主機(jī)采用的存儲(chǔ)字節(jié)時(shí)存順序安排方式的差異,就存在“字節(jié)順序的問題。在網(wǎng)絡(luò)環(huán)境下存儲(chǔ)時(shí),高位字節(jié)存放在存的起始位置,而低字節(jié)那么存放在較高的位置。主機(jī)形式的存放順序恰好相反,低位字節(jié)存放在存的起始位置。這就需要以下相應(yīng)的字

47、節(jié)順序轉(zhuǎn)換函數(shù):inet_ntoa():將32位的網(wǎng)絡(luò)二進(jìn)制數(shù)值轉(zhuǎn)換為可讀十進(jìn)制形式的帶點(diǎn)分割符的 ip 地址。inet_addr(:) 將帶有分割符的ip地址轉(zhuǎn)換為32位的unsignedlong的格式。ntohs():將網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)換為32位的主機(jī)字節(jié)順序。ntohl():將網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)換成16位的主機(jī)字節(jié)順序。htonl():將32位u_long的值由主機(jī)字節(jié)順序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序。htons():將16位u_long的值由主機(jī)字節(jié)順序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序。本文設(shè)計(jì)的數(shù)據(jù)捕獲程序需要使用sock_packetS備,sock_packet只在基于linux的操作系統(tǒng)中有效定義。為此,美國(guó)

48、洛侖茲伯克利國(guó)家實(shí)驗(yàn)室編寫了專用于數(shù)據(jù)包截獲的api函數(shù)庫“l(fā)ibpcap。該函數(shù)的設(shè)計(jì)目標(biāo)是統(tǒng)一不同系統(tǒng)上所提供的用于數(shù)據(jù)包截獲的不同類型接口,并使得類似的高層應(yīng)用程序的編寫和移植變得簡(jiǎn)單有效,不再需要對(duì)每一個(gè)應(yīng)用都使用不同的依賴于具體系統(tǒng)的數(shù)據(jù)包截獲模塊。第六章數(shù)據(jù)包捕獲模塊設(shè)計(jì)數(shù)據(jù)包捕獲模塊設(shè)計(jì)流程我們先說明對(duì)外來連接accept(進(jìn)展過濾的工作流程。第一步:首先,操作系統(tǒng)啟動(dòng)策略守候進(jìn)程,并調(diào)用open翻開策略驅(qū)動(dòng)。策略守候進(jìn)程讀取本地的包含策略和憑證的文件當(dāng)然,也可以定制進(jìn)程啟動(dòng)時(shí)即從遠(yuǎn)程的LDAP效勞器上下載、更新策略和憑證,opened初始化有關(guān)數(shù)據(jù)構(gòu)造。策略守候進(jìn)程調(diào)用read

49、(),試圖從策略驅(qū)動(dòng)中讀取連接請(qǐng)求信息。如果驅(qū)動(dòng)中沒有請(qǐng)求信息,那么守候進(jìn)程阻塞。第二步:效勞器進(jìn)程收到了連接請(qǐng)求,首先調(diào)用accept。這個(gè)被修改正的系統(tǒng)調(diào)用形成策略上下文并提交到策略驅(qū)動(dòng)中。效勞器進(jìn)程阻塞。第三步:此時(shí),read(M回請(qǐng)求消息,策略守候進(jìn)程被喚醒。它讀取該消息,調(diào)用KeyNote的一致性檢查器pliancecheckeT根據(jù)本地策略和憑證進(jìn)展分析。如果未找到與此連接相關(guān)的策略,策略守候進(jìn)程就聯(lián)系遠(yuǎn)程的LDAP效勞器查找、下載相應(yīng)的憑證。假設(shè)策略許可即:找到策略或平安憑證,根據(jù)簽名算法驗(yàn)證無誤,并且符合憑證斷言,那么允許該連接,假設(shè)在本地及遠(yuǎn)程效勞器上均沒有找到相應(yīng)的策略或憑

50、證,或者與策略、憑證的斷言不符,那么拒絕之。策略守候進(jìn)程調(diào)用write()a自己的決策寫入策略驅(qū)動(dòng)中。第四步:acceptor策略驅(qū)動(dòng)中讀取策略守候進(jìn)程的決策,效勞器進(jìn)程被喚醒。假設(shè)決策允許,accept(返回非負(fù)的套接字描述符;否那么返回-1拒絕該連接請(qǐng)求。對(duì)系統(tǒng)向外發(fā)起連接的connect(進(jìn)展過濾的系統(tǒng)流程與此類似。其它兩個(gè)系統(tǒng)調(diào)用的功能是,close關(guān)閉偽設(shè)備驅(qū)動(dòng),會(huì)釋放已分配資源并禁用分布式防火墻;ioctl()用于核與守候進(jìn)程之間同步時(shí)的錯(cuò)誤處理。數(shù)據(jù)包捕獲模塊實(shí)現(xiàn)該數(shù)據(jù)包捕獲程序用c語言來編寫,程序中用到很多l(xiāng)inux網(wǎng)絡(luò)編程中的函數(shù)。1設(shè)置網(wǎng)絡(luò)接口為混雜模式網(wǎng)絡(luò)接口的混雜模式使

51、得一個(gè)網(wǎng)絡(luò)接口設(shè)備從只能讀取目標(biāo)地址為6字節(jié)mac地址的數(shù)據(jù)包,變?yōu)榭勺x取網(wǎng)絡(luò)播送媒體中的所有數(shù)據(jù)包。該局部通過兩次ioctl函數(shù)調(diào)用實(shí)現(xiàn):ioctl(sock,siocgifflags,&ifr)ifr.ifr_flags|=iff_promiscioctl(sock,siocgifflags,&ifr)第一次的ioctl函數(shù)調(diào)用,用來截獲ifr(structifreq)構(gòu)造中所含接口名稱所指接口的標(biāo)記。第一個(gè)參數(shù)是翻開的原始套接字描述符“sock,第二個(gè)參數(shù)是所要執(zhí)行的請(qǐng)求操作。第三個(gè)參數(shù)是接口請(qǐng)求數(shù)據(jù)構(gòu)造的地址指針,該構(gòu)造中包含了所以進(jìn)展請(qǐng)求操作的接口名稱值o我們通過將混合標(biāo)記(iff_

52、promisc)應(yīng)用到接口請(qǐng)求構(gòu)造的標(biāo)記位變量中來改變接口標(biāo)記位。操作符“|=將混合標(biāo)記符與原有的接口標(biāo)記進(jìn)展“或操作來設(shè)置新的接口標(biāo)記。獲得新的接口標(biāo)記后,將其設(shè)置到實(shí)際接口中。第二次的ioctl調(diào)用,將接口設(shè)備設(shè)置為混合模式。正如第一個(gè)ioctl調(diào)用是獲得網(wǎng)絡(luò)接口的標(biāo)記,這次調(diào)用是設(shè)置ifr構(gòu)造中修改正的新標(biāo)記寫到物理接口上。2翻開socket設(shè)備用socket函數(shù)來翻開socket設(shè)備。sock=socket(af_packet,sock_raw,htons(eth_p_all)domOW用af_packetjg夠既接收鏈路層也接收網(wǎng)絡(luò)層的數(shù)據(jù)包。3接收數(shù)據(jù)使用recvfrom()函數(shù)來

53、實(shí)現(xiàn)接收數(shù)據(jù)包:recvfrom(sock,(char*)buf,sizeof(buf),0,(structsockaddr*)&addr,&leni是從翻開的網(wǎng)絡(luò)插座socket讀取數(shù)據(jù)包的地方,但要注意,addr構(gòu)造有一個(gè)強(qiáng)制類型轉(zhuǎn)換,以適應(yīng)recvfrom()函數(shù)的語法要求,recvfrom()函數(shù)在成功讀取的情況下返回讀取的字節(jié)數(shù),否那么返回-1。4判斷指針該數(shù)據(jù)包捕獲模塊可以接收到的數(shù)據(jù)包都是原始數(shù)據(jù)包,它們的格式一般先是以太網(wǎng)數(shù)據(jù)幀的頭部,接著是arp或者ip數(shù)據(jù)包的頭部。ip數(shù)據(jù)包后緊跟著tcp或udp、icmp的頭部,最后才是真正要傳輸?shù)臄?shù)據(jù)。于是,在拆分ip數(shù)據(jù)包時(shí),先提取以太網(wǎng)數(shù)據(jù)幀的頭部,再提取ip數(shù)據(jù)包的頭部,然后分析tcp或udp、icmp數(shù)據(jù)包的頭部。最后,從數(shù)據(jù)包提取出需要的數(shù)據(jù)。第七章程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論