Linux個人防火墻的設(shè)計與實現(xiàn)_第1頁
Linux個人防火墻的設(shè)計與實現(xiàn)_第2頁
Linux個人防火墻的設(shè)計與實現(xiàn)_第3頁
Linux個人防火墻的設(shè)計與實現(xiàn)_第4頁
Linux個人防火墻的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

.PAGE.xxxx《Linux個人防火墻的設(shè)計與實現(xiàn)》第1頁共21頁Linux個人防火墻的設(shè)計與實現(xiàn)學(xué)生__xxx指導(dǎo)xxx摘要防火墻在配置上能夠防止來自"外部"世界未經(jīng)授權(quán)的交互式登錄。這大大有助于防止破壞者登錄到你網(wǎng)絡(luò)中的計算機上。本課程設(shè)計介紹基于Netfilter/Iptables的包過濾防火墻的實現(xiàn)原理。對Linux系統(tǒng)、TCP/IP的相關(guān)知識及Iptables語法做了介紹。詳細(xì)介紹了Iptables命令的使用舉例,通過實例介紹了基于Netfilter/Iptables的包過濾防火墻的配置過程。關(guān)鍵詞網(wǎng)絡(luò)操作系統(tǒng);包過濾;Iptables;Netfilter;防火墻DesignandImplementThePersonalFirewallofLinuxStudentname:YUMing-yinAdvisor:HouLi-juanAbstractIntheconfigurationonthefirewalltopreventfromthe"external"worldofinteractiveunauthorizedlogin.Thiswillsignificantlyhelppreventspoilerstologintoyourcomputernetwork.Basedonthecurriculumdesign,introducedNetfilter/Iptablesfirewallpacketfilteringoftherealizationoftheprinciple.OnLinuxsystems,TCP/IPknowledgeandIptablessyntaxisintroduced.Iptablescommanddescribedindetailtheuseof,forexample,throughanexamplebasedontheNetfilter/Iptablesfirewall'spacketfilteringconfigurationprocess.KeywordsNetworkOS;PacketFilter;Iptbles;Netfilter;Firewall1引言1.1課程設(shè)計的意義對于因特網(wǎng)上的系統(tǒng),不管是什么情況,首先我們要明確一點:網(wǎng)絡(luò)是不安全的。雖然創(chuàng)建一個防火墻并不能保證系統(tǒng)100%安全[7],但卻是絕對有必要的。防火墻的目的就是將破壞網(wǎng)絡(luò)安全的人擋在你的網(wǎng)絡(luò)之外,使你可以順利完成自己的工作。LINUX是近幾年突出的一種操作系統(tǒng),以其公開的源代碼、強大穩(wěn)定的網(wǎng)絡(luò)功能和大量的免費資源受到業(yè)界的普遍贊揚。LINUX防火墻其實是操作系統(tǒng)本身所自帶的一個功能模塊。通過安裝特定的防火墻內(nèi)核,LINUX操作系統(tǒng)會對接收到的數(shù)據(jù)包按一定的策略進行處理。隨著Linux系統(tǒng)被越來越多地使用,安全問題成了關(guān)鍵。Linux防火墻技術(shù)也在不斷的發(fā)展,經(jīng)歷了Ipfw、Ipchains等過程。Iptables作為Linux防火墻的新一代繼承人,當(dāng)然也針對駭客不斷推陳出新的探測技術(shù)擬出一些因應(yīng)之道,那就是對封包的聯(lián)機狀態(tài),作出更詳細(xì)的分析,透過這樣的分析能對一些可能被駭客利用的弱點加以阻隔,另外也開發(fā)出真正的封包改寫能力,不需要透過其它程序的協(xié)助來仿真網(wǎng)址轉(zhuǎn)譯,除此之外,Iptables也獲得系統(tǒng)核心的直接支持,不需要像Ipchains那樣需要自行重新編譯核心。Iptables優(yōu)越的性能使它取代了Ipchains,成為網(wǎng)絡(luò)防火墻的主流,而Ipchains并未被淘汰,目前Ipchains已經(jīng)轉(zhuǎn)型成單機防火墻,在安裝新版Linux時,會自動被安裝啟用,以保護單機上未被使用的通訊端口[1]??傊?目前大部分國內(nèi)金融、商業(yè)等企業(yè)都采用Linux系統(tǒng),因此在Linux上配置防火墻有極其重要的意義,同時可以學(xué)習(xí)這一先進的技術(shù)與熟悉一個優(yōu)秀的操作平臺。1.2課程設(shè)計的目的本課程設(shè)計設(shè)主要目的是在Linux操作系統(tǒng)下完成基于Netfilter/Iptables的包過濾防火墻的設(shè)計與實現(xiàn)。Internet等網(wǎng)絡(luò)服務(wù)給人們的生活帶來極大便利的同時也存在很多隱患,學(xué)會基于Netfilter/Iptables的包過濾防火墻的配置就能在一定程度上有效地抵御來自網(wǎng)絡(luò)上的攻擊。通過完成課程設(shè)計的過程,學(xué)習(xí)包過濾防火墻的相關(guān)知識,同時也深化對這學(xué)期Linux課程的學(xué)習(xí)。1.3Linux防火墻的背景知識Linux是一個類UNIX的操作系統(tǒng)[5],它是由芬蘭赫爾辛基大學(xué)的學(xué)生LinusTorvalds于1991年創(chuàng)建并在因特網(wǎng)上發(fā)布,任何人只要遵守GPL版權(quán),都可以免費使用和修改Linux。實際上,GPL要求的是完全的軟件共享,你可從中獲利,但你不能占為己有。經(jīng)過因特網(wǎng)上的千千萬萬的志愿者對其的不斷修改,八年后的今天,Linux已經(jīng)變得強大無比!特別是去年下半年以來,IBM、Intel、Oracle、Sysbase、Borland,HP,SUN,Corel等商業(yè)軟件[6]廠商紛紛表示對Linux進行商業(yè)開發(fā)和技術(shù)支持,更使得Linux的商業(yè)價值越來越高。同時Linux將在兩個方向發(fā)展,即微型設(shè)備的嵌入式操作系統(tǒng)和桌面操作系統(tǒng)。IDC預(yù)測Linux將成為WindowsNT后的第二大操作系統(tǒng)[3]。Linux以它的高效性和靈活性著稱。它能夠在個人計算機上實現(xiàn)全部的UNIX特性,具有多任務(wù)、多用戶的功能。Linux可在GNU〔"不是UNIX"工程的縮寫公共許可權(quán)限下免費獲得,是一個符合POSIX標(biāo)準(zhǔn)的操作系統(tǒng)。Linux操作系統(tǒng)軟件包不僅包括完整的Linux操作系統(tǒng),而且還包括了文本編輯器、高級語言編譯器等應(yīng)用軟件。它還包括帶有多個窗口管理器的X-Windows圖形用戶界面,如同我們使用Windows一樣,允許我們使用窗口、圖標(biāo)和菜單對系統(tǒng)進行操作。包過濾防火墻用軟件查看所流經(jīng)的數(shù)據(jù)包的XX〔header,由此決定整個包的命運。它可能丟棄〔DROP這個包,可能接受〔ACCEPT這個包,也可能執(zhí)行其它更復(fù)雜的動作。Linux因其健壯性、可靠性、靈活性以及好象無限范圍的可定制性而在IT界倍受歡迎。Linux具有許多內(nèi)置的功能,使開發(fā)人員可以根據(jù)自己的需要定制其工具、行為和外觀而無需昂貴的第三方工具。Netfilter/IptablesIP信息包過濾系統(tǒng)是最新的解決方案,而且也是第一個集成到Linux內(nèi)核的解決方案。對于Linux系統(tǒng)管理員、網(wǎng)絡(luò)管理員以及家庭用戶〔他們想要根據(jù)自己特定的需求來配置防火墻,在防火墻解決方案上節(jié)省費用和對IP信息包過濾具有完全控制權(quán)來說,Netfilter/Iptables系統(tǒng)十分理想。Iptables是與最新的2.4.x版本Linux內(nèi)核集成的IP信息包過濾系統(tǒng)。如果Linux系統(tǒng)連接到因特網(wǎng)或LAN、服務(wù)器或連接LAN和因特網(wǎng)的代理服務(wù)器,則該系統(tǒng)有利于在Linux系統(tǒng)上更好地控制IP信息包過濾和防火墻配置。Iptables組件是一種工具,也稱為用戶空間〔userspace,它使插入、修改和除去信息包過濾表中的規(guī)則變得容易[2]。Iptables是復(fù)雜的,它集成到Linux內(nèi)核中。用戶通過Iptables可以對進出你的計算機的數(shù)據(jù)包進行過濾。通過Iptables命令設(shè)置來把守你的計算機網(wǎng)絡(luò)--哪些數(shù)據(jù)允許通過,哪些不能通過,哪些通過的數(shù)據(jù)進行記錄。2Netfilter/Iptables介紹2.1配置防火墻的filter表<1>查看本機關(guān)于IPTABLES的設(shè)置情況[rootlocalhostroot]#iptables-L–n<2>清除原有規(guī)則不管你在安裝linux時是否啟動了防火墻,如果你想配置屬于自己的防火墻,那就清除現(xiàn)在filter[8]的所有規(guī)則。[rootlocalhostroot]#iptables-F

清除預(yù)設(shè)表filter中的所有規(guī)則鏈的規(guī)則。[rootlocalhostroot]#iptables-X

清除預(yù)設(shè)表filter中使用者自定鏈中的規(guī)則。<3>設(shè)定預(yù)設(shè)規(guī)則[rootlocalhostroot]#iptables-pINPUTDROP[rootlocalhostroot]#iptables-pOUTPUTACCEPT[rootlocalhostroot]#iptables-pFORWARDDROP<4>添加規(guī)則首先添加INPUT鏈,INPUT鏈的默認(rèn)規(guī)則是DROP,所以我們就寫需要ACCETP<通過>的鏈。為了能采用遠(yuǎn)程SSH登陸,我們要開啟22端口[rootlocalhostroot]#iptables-AINPUT-ptcp--dport22-jACCEPT[rootlocalhostroot]#iptables-AOUTPUT-ptcp--sport22-jACCEPT如果開啟了web服務(wù)器,OUTPUT設(shè)置成DROP的話,同樣也要添加一條鏈:[rootlocalhostroot]#iptables-AOUTPUT-ptcp--sport80-jACCEPT如果做了WEB服務(wù)器,開啟80端口[rootlocalhostroot]#iptables-AINPUT-ptcp--dport80-jACCEPT如果做了郵件服務(wù)器,開啟25110端口[rootlocalhostroot]#iptables-AINPUT-ptcp--dport110-jACCEPT[rootlocalhostroot]#iptables-AINPUT-ptcp--dport25-jACCEPT如果做了FTP服務(wù)器,開啟21端口[rootlocalhostroot]#iptables-AINPUT-ptcp--dport21-jACCEPT[rootlocalhostroot]#iptables-AINPUT-ptcp--dport20-jACCEPT如果做了DNS服務(wù)器,開啟53端口[rootlocalhostroot]#iptables-AINPUT-ptcp--dport53-jACCEPT2.2配置防火墻的NAT表<1>查看本機關(guān)于NAT的設(shè)置情況[rootlocalhostroot]#iptables-tnat–L<2>添加規(guī)則添加基本的NAT[8]地址轉(zhuǎn)換,我們只添加DROP鏈.因為默認(rèn)鏈全是ACCEPT。防止外網(wǎng)用內(nèi)網(wǎng)IP欺騙[roottpsysconfig]#iptables-tnat-APREROUTING-ieth0-s.0/8-jDROP[roottpsysconfig]#iptables-tnat-APREROUTING-ietDROP非法連接[rootlocalhostroot]#iptables-AINPUT

-mstate--stateINVALID-jDROP[rootlocalhostroot]#iptables-AOUTPUT

-mstate--stateINVALID-jDROP[rootlocalhostroot]#iptables-AFORWARD-mstate--stateINVALID-jDROP允許所有已經(jīng)建立的和相關(guān)的連接[rootlocalhostroot]#iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT[rootlocalhostroot]#iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT[rootlocalhostroot]#iptables-AOUTPUT-mstate--stateESTABLISHED,RELATED-jACCEPT[rootlocalhostroot]#/etc/rc.d/init.d/iptablessave這樣就可以寫到/etc/sysconfig/iptables文件里,寫入后把防火墻重起一下,才能起作用。[rootlocalhostroot]#serviceiptablesrestart2.3Iptables的結(jié)構(gòu)Iptables一般由指定表〔table、指定鏈〔chains、指定操作命令〔command、指定規(guī)則匹配器〔matcher、指定目標(biāo)動作〔target等構(gòu)成,如圖2.1所示。圖2.1Iptables結(jié)構(gòu)圖Iptables的指令結(jié)構(gòu)如圖2.2所示。圖2.2Iptables的指令結(jié)構(gòu)圖2.4Iptables的規(guī)則要素一條Iptables規(guī)則基本上應(yīng)該包含5個要素:1、指定表〔table2、指定操作命令〔command3、指定鏈〔chains4、指定規(guī)則匹配器〔matcher5、指定目標(biāo)動作〔target2.5Iptables工具的調(diào)用語法Iptables的語法通??梢院喕癁橄旅娴男问剑篒ptables[-ttable]CMD[chain][rule-matcher][-jtarget]其中:tables為表名,CMD為操作命令,chain為鏈名,rule-matcher為規(guī)則匹配器,target為目標(biāo)動作。Iptables軟件包提供了兩個命令分別用于保存和恢復(fù)規(guī)則集。可以使用下在的命令轉(zhuǎn)儲在內(nèi)存中的內(nèi)核規(guī)則集。其中/etc/sysconfig/Iptables是Iptables守護進程調(diào)用的默認(rèn)規(guī)則集文件:#/sbin/Iptables-save>;/etc/sysconfig/Iptables

要恢復(fù)原來的規(guī)則庫,需使用命令:#/sbin/Iptables-restore</etc/sysconfig/Iptables為了使得用Iptables命令配置的規(guī)則在下次啟動機器時還能被使用,有兩種方法:1、使用Iptables的啟動腳本實現(xiàn)。Iptables的啟動腳/etc/rc.d/init.d/Iptables每次啟動時都使用/etc/sysconfig/Iptables所提供的規(guī)則進行規(guī)則恢復(fù),并可以使用如下的命令保存規(guī)則:#serviceIptablessave2、在自定義腳本中用Iptables命令直接創(chuàng)建規(guī)則集??梢灾苯佑肐ptables命令編寫一個規(guī)則腳本,并在啟動時執(zhí)行這個腳本。例如:若規(guī)則腳本的文件名為/etc/fw/rules,則可以在啟動腳本/etc/rd.d/init.d/rc.local中加入下面的代碼:if[-x/etc/fw/rules];then/etc/fw/rules;fi;這樣,機器每次啟動時即可執(zhí)行該規(guī)則腳本。如果使用此種方式,建議使用ntsysv命令關(guān)閉系統(tǒng)的Iptables守護進程。2.6Iptables的優(yōu)點1、Iptables允許建立狀態(tài)〔stateful防火墻,就是在內(nèi)存中保存穿過防火墻的每條連接。這種模式對于有效地配置FTP和DNS以及其它網(wǎng)絡(luò)服務(wù)是必要的。2、Iptables能夠過濾TCP標(biāo)志任意組合報文,還能夠過濾MAC地址。3、系統(tǒng)日志比ipchains更容易配置,擴展性也更好。4、對于網(wǎng)絡(luò)地址轉(zhuǎn)換〔NetworkAddressTranslation和透明代理的支持,Netfilter更為強大和易于使用。5、Iptables能夠阻止某些DOS攻擊,例如SYS洪泛攻擊。3防火墻的配置及操作命令3.1鏈的基本操作1、清除所有的規(guī)則。通常在開始配置包過濾防火墻之初清除所有的規(guī)則,重新開配置,以免原有的規(guī)則影響新的設(shè)定。使用如下命令[9]進行:清除預(yù)設(shè)表filter中所有規(guī)則鏈中的規(guī)則:#Iptables–F清除預(yù)設(shè)表filter中使用者自定義鏈中的規(guī)則:#Iptables–X將指定鏈所有規(guī)則的包字節(jié)記數(shù)器清零:#Iptables–Z2、設(shè)置鏈的默認(rèn)策略。一般地,配置鏈的默認(rèn)策略有兩種方法?!?允許所有的包,然后再禁止有危險的包通過防火墻。即"沒有被拒絕的都允許"。這種方法對于用戶而言比較靈活方便,但對系統(tǒng)而言,容易引起嚴(yán)重的安全問題。為此,應(yīng)該使用如下的初始化命令:#Iptables-PINPUTACCEPT#Iptables-POUTPUTACCEPT#Iptables-PFORWARDACCEPT〔2禁止所有的包,然后再根據(jù)需要的服務(wù)允許特定的包通過防火墻。即"沒有明確允許的都被拒絕"。這種方法最安全,但不太方便。為了使得系統(tǒng)有足夠的安全性,一般采用此種策略進行Iptables防火墻[10]的配置。為此,應(yīng)該使用如下的初始化命令:#Iptables-PINPUTDROP#Iptables-POUTPUTDROP#Iptables-PFORWAEDDROP列出表/鏈中的所有規(guī)則。包過濾防火墻只使用filter表,此表為默認(rèn)的表,因此可以使用下面的命令列出filter表中所有規(guī)則:#Iptables–L使用上面的命令時,Iptables將逆向解析IP地址,這將發(fā)費很多時間,從而造成信息出來的非常慢。為了解決這個問題,可以使用下面的帶有-n參數(shù)的命令〔-n參數(shù)用于顯示數(shù)字化的地址和端口:#Iptables-L–n向鏈中添加規(guī)則。下面的語句用于開放網(wǎng)絡(luò)接口:#Iptables-AINPUT-ilo-jACCEPT#Iptables-AOUTPUT-olo-jACCEPT#Iptables-A

INPUT-i

eth0-jACCEPT#Iptables-AOUTPUT-oeth0-jACCEPT#Iptables-AFORWARD-ieth0-jACCEPT#Iptables-AFPRWAED-oeth0-jACCEPT使用用戶自定義鏈。下面是一個用戶自定義鏈的創(chuàng)建、修改和調(diào)用的簡單命令序列:#Iptables-Ncustom#Iptables-Acustom-s0/0-d0/0-picmp-jDROP#Iptables-AINPUT-s0/0-d0/0-jcustom首先使用帶-N參數(shù)的Iptables命令新建了一個名為custom的用戶定義鏈。然后使用帶-A參數(shù)的命令添加了一條用戶自定義的堵截規(guī)則,該規(guī)則丟棄全部的ICMP包。最后向默認(rèn)的INPUT鏈加入一條規(guī)則,使所有的包都由custom自定義鏈處理。結(jié)果全部的ICMP包都將被丟棄。3.2設(shè)置基本的規(guī)則匹配下面舉例說明Iptables的基本規(guī)則匹配〔忽略目標(biāo)動作:指定協(xié)議匹配#Iptables-AINPUT-ptcp匹配指定協(xié)議之外的所有協(xié)議#Iptables-AINPUT-p!tcp指定地址匹配指定匹配的主機#Iptables-AINPUT-s指定匹配的網(wǎng)絡(luò)#Iptables-AINPUT-s/24匹配指定主機之外的地址。#Iptables-AFORWARD-s!匹配指定網(wǎng)絡(luò)之外的網(wǎng)絡(luò)#Iptables-AFORWARD-s!/24指定網(wǎng)絡(luò)接口匹配。指定單一的網(wǎng)絡(luò)接口匹配。#Iptables-AINPUT-ieth0#Iptables-AFORWARD-oeth0指定同類型的網(wǎng)絡(luò)接口匹配#Iptables-AFORWARD-oppp+指定端口匹配指定單一的端口匹配。#Iptables-AINPUT-ptcp-sportwww#Iptables-AINPUT-ptcp-sport80#Iptables-AINPUT-ptcp-sport53#Iptables-AINPUT-pudp-dport53匹配指定端口之外的端口。#Iptables-AINPUT-ptcp-dport!22匹配指定端口的范圍。#Iptables-AINPUT-ptcp-soprt22:80匹配ICMP端口和ICMP類型。#Iptables-AINPUT-picmp--icmp-type8指定ip碎片在TCP/IP通信過程中,每一個網(wǎng)絡(luò)接口都有一個最大的傳輸單元〔MTU,這個參數(shù)定義了可以通過的數(shù)據(jù)包的最大尺寸。如果一個數(shù)據(jù)包大于這個參數(shù)值時,系統(tǒng)會將其劃分成更小的數(shù)個數(shù)據(jù)包〔稱之為ip碎片來傳輸,而接收方則對這些ip碎片[9]再進行重組以還原整個包。但是在進行包過濾的時候,ip碎片會導(dǎo)致這樣一個問題:當(dāng)系統(tǒng)將大數(shù)據(jù)包劃分成ip碎片傳送時,第一個碎片含有完整的XX信息〔IP+TCP、UDP和ICMP,但是后續(xù)的碎片只有XX的部分信息〔如源地址、目的地址。因此,檢查后面的ip碎片的頭部〔就像有TCP、UDP和ICMP一樣是不可能的。假如有這樣一條規(guī)則:并且這時的FORWARD的策略〔policy為DROP時,系統(tǒng)只會讓第一個ip碎片通過,而丟掉其余的ip碎片,因為第一個碎片含有完整的XX[11]信息,可以滿足該規(guī)則的條件,而余下的碎片因為XX信息不完整而無法滿足規(guī)則定義的條件,因而無法通過??梢酝ㄟ^-fragment/-f選項來指定第二個及其以后的ip碎片,以上面的例子為例,我們可以再加上這樣一條規(guī)則來解決這個問題:但是需要注意的是,現(xiàn)在已經(jīng)有許多進行ip碎片攻擊的實例〔例如向Win98NT4SP5,6Win2K發(fā)送大量的ip碎片進行DOS攻擊,因此允許ip碎片通過是有安全隱患的,對于這一點可以采用Iptables的匹配擴展來進行限制。3.3設(shè)置擴展的規(guī)則匹配要獲得匹配的簡要說明,可以使用如下的命令:#Iptables-mname_of_match–help下面舉例說明Iptables的擴展規(guī)則匹配〔忽略目標(biāo)動作:匹配多個源端口。#Iptables-AINPUT-ptcp-mmultiport-source-port22,53,80,110匹配多個目的端口#Iptables-AINPUT-ptcp-mmultiport-destionation-port22,53,80,110匹配多個端口〔無論源源端口還是目的端口。#Iptables-AINPUT-ptcp-mmultiport-port22,53,80,110指定TCP匹配擴展通過使用-tcp-flags選項可以根據(jù)tcp包的標(biāo)志位進行過濾,該選項后接兩個參數(shù):第一個參數(shù)為要檢查的標(biāo)志位,可以是SYN、ACK、FIN、URG、PSH的組合,可以用ALL指定所有標(biāo)志位:第二個參數(shù)是標(biāo)志位值為1的標(biāo)志#Iptables-AINPUT-ptcp-tcp-flagsSYN,FIN,ACKSYN表示SYN、ACK、FIN的標(biāo)志都要被檢查,但是只有設(shè)置了SYN的才匹配。#Iptables-AINPUT-ptcp-tcp-flagsALLSYN,ACK表示ALL〔SYN,ACK,FIN,RST,URG,PSH的標(biāo)志都要被檢查,但是只有設(shè)置了SYN和ACK的才匹配。選項-syn是以上的一種特殊情況,相當(dāng)于"--tcp-flagsSYN,RST,ACKSYN"的簡寫。#Iptables-ptc-synlimit速率匹配擴展指定單位時間內(nèi)允許通過的數(shù)據(jù)包的個數(shù)。單位時間可以是/second、/minute、/hour、/day或使用第一個字母。例如:#Iptables-AINPUT-mlimit-limit300/hour表示限制每小時允許通過300個數(shù)據(jù)包。指定觸發(fā)事件的閥值。使用-limit-burst指定觸發(fā)事件的閥值〔默認(rèn)是5,用來比對瞬間大量數(shù)據(jù)包的數(shù)量。#Iptables-AINPUT-mlimit-limit-burst10上面的例子是用來比對一次同時涌入的封包是否超過10個,超過此上限的包將被直接丟棄。同時指定速率限制和觸發(fā)閥值。#Iptables-AINPUT-picmp-mlimit-limit3/m-limit-burst3假設(shè)均勻通過,平均每分鐘3個,那么觸發(fā)閥值burst保持為3個,如果每分鐘通過的包的數(shù)目小于3,那么觸發(fā)閥值burst將在每個周期〔若每分鐘允許通過3個,則周期數(shù)為20秒后加1,但最大值為3。每分鐘要通過的包的數(shù)量如果超過3,那么觸發(fā)閥值burst將減掉超出的數(shù)值,例如第二分鐘有4個包,那么觸發(fā)閥值burst變成2,同時4個包都可以通過,第三分鐘有6個包,則只能通過5個,觸發(fā)閥值burst將變成0。之后,每分鐘如果包數(shù)小于等于3,則觸發(fā)閥值burst將加1,如果每分鐘包數(shù)大于3,觸發(fā)閥值burst將逐漸減小最終維持為0。即每分鐘所允許的最大包數(shù)量為限制速率〔本例為3加上當(dāng)前的觸發(fā)閥值burst數(shù)。在任何情況下,都可以保證3個包通過,觸發(fā)閥值burst相當(dāng)于是允許額外的包數(shù)量。基于狀態(tài)的匹配擴展

每個網(wǎng)絡(luò)連接包括以下信息:源地址、目的地址、源端口、目的湍口,稱為套接字對〔socketpairs;協(xié)議類型、連接狀態(tài)〔TCP協(xié)議和超時時間等。防火墻把這些信息稱為狀態(tài)〔stateful,能夠檢測每個連接狀態(tài)的防火墻叫作狀態(tài)包過濾防火墻。它除了能夠完成簡單包過濾防火墻的包過濾工作外,還在自己的內(nèi)存中維護一個跟蹤連接狀態(tài)的表,比簡單包過濾防火墻具有更大的安全性。Iptables與ipchains的不同之處在于Iptables可以使用連接狀態(tài)信息,創(chuàng)建基于包的狀態(tài)的規(guī)則匹配。Iptables-mstate-state[!]state[state,state,state]其中,state表是一個用逗號分割的列表,用來指定的連接狀態(tài)可以是如下的4種:NEW:該包想要開始一個連接〔重新連接或?qū)⑦B接重定向。RELATED:該包是屬于某個已經(jīng)建立連接[4]所建立的新連接。例如:FTP的數(shù)據(jù)傳輸連接和控制連接之間就是RELATED關(guān)系。ESTABLISHED:該包屬于某個已經(jīng)建立的連接。INVALID:該包不匹配于任何連接,通常這些包會被DROP。例如:在INPUT鏈添加一條規(guī)則,匹配已經(jīng)建立的連接或由已經(jīng)建立的連接所建立的新連接。即匹配所有的TCP回應(yīng)包。#Iptables-AINPUT-mstate-stateRELATED,ESTABLISHED在INPUTP鏈添加一條規(guī)則,匹配所有從非eth0接口來的連接請求包。#Iptables-AINPUT-mstate-stateNEW-i!eth0又如,對于ftp連接可以使用下面的連接跟蹤:被動ftp連接模式。#Iptables-AINPUT-ptcp-sport1024:--dport1024:-mstate-stateESTABLES-jACCEPT#Iptables-AOUTPUT-ptcp-sport1024:--dport1024:-mstate-stateESTABLISHED,RELATED-jACCEPT主動ftp連接模式。#Iptables-AINPUT-ptcp-sport20-mstate-stateESTABLISHED,RELATED-jACCEPT-mstate-stateESTABLISHED-jACCEPTToS匹配擴展所有數(shù)據(jù)包的首部都有一個稱為服務(wù)類型的專用字段。該字段用于當(dāng)數(shù)據(jù)包經(jīng)過路由器時區(qū)分優(yōu)先順序。使用ToS字段,可以使用某種類型的數(shù)據(jù)包優(yōu)先于其它的數(shù)據(jù)包。有標(biāo)記的數(shù)據(jù)包在路由器中進行不同的處理。設(shè)置ToS字段的工作是在網(wǎng)絡(luò)層進行的。有關(guān)ToS的具體工作過程請參??糝FC1349。在數(shù)據(jù)包中設(shè)置ToS字段的主要原因是:對不同類型的數(shù)據(jù)包加以區(qū)分,從而在流量較高的網(wǎng)絡(luò)上減少網(wǎng)絡(luò)擁塞。數(shù)據(jù)包的ToS字段用一個字節(jié)表示。此字節(jié)的高3位舍棄不用,最低位使用固定值0,因此,有效位共有4個。有效位分別用來控制數(shù)據(jù)包的最小延時,最大吞吐量,最大可靠度和最小成本。其中最小延時:用于減少數(shù)據(jù)包從路由到達(dá)主機的時間。最大吞吐量:用于提高數(shù)據(jù)傳輸量。適用于FTP數(shù)據(jù)端口,大文件傳輸和大量的POP3傳輸。最大可靠度:用來試圖減少數(shù)據(jù)重傳。最小成本:通常只在商業(yè)產(chǎn)品中使用。要創(chuàng)建與ToS字段匹配的規(guī)則,可以使用下面的語法:Iptables[-ttable]CMD[chain]-mtostos_value[-jtarget],其中tos_value可以是0x02、0x04、0x06、0x08、0x10。3.4設(shè)置目標(biāo)擴展要獲得目標(biāo)的簡要說明,可以使用如下的命令:#Iptables-jname_of_TARGET-help目標(biāo)擴展由內(nèi)核模塊組成,而且Iptables的一個可選擴展提供了新的命令行選項。在幾個擴展是包含在默認(rèn)netfilter發(fā)布中的。1、設(shè)置包的ToS值。為了設(shè)置數(shù)據(jù)包的ToS值,需要使用ToS目標(biāo)擴展。設(shè)置ToS的值,只能對FORWARD、OUTPUT和PREROUTING鏈進行。語法如下:Iptables[-ttable]CMD[chain][rule-matcher]-jTOS-set-tostos_value其中tos_value可以是0x02、0x04、0x06、0x08、0x10。2、日志記錄,Iptables使用新的目標(biāo)擴展LOG來實現(xiàn)日志記錄。LOG目標(biāo)用syslogd記錄此包并繼續(xù)傳播。LOG目標(biāo)擴展還可以使用如下的一些參數(shù):log-level--跟蹤一個級別名稱或數(shù)字。合適的名字是‘debug’、‘info’、‘notice’、‘warning’、‘err’、‘crit’、‘a(chǎn)lert’和‘emerg’,相當(dāng)于數(shù)字7到0。參考syslog.conf的手冊可獲取這些級別的說明。默認(rèn)是‘warning’。log-prefix——跟蹤一個最多29個字符的字符串,它被寫入到log信息的開始處,這樣可以方便地使用grep對日志進行過濾。另外,在使用LOG目標(biāo)擴展的同時,還可以使用limitmatch,這樣可以使記錄有用日志的同時確保日志記錄不會變得冗長。下面是使用LOG目標(biāo)擴展的一些例子:#Iptables-AFORWARD-mtcp-ptcp-jLOG#Iptables-AFORWARD-micmp-picmp-sportecho-reply-jLOG4防火墻的設(shè)計與實現(xiàn)4.1網(wǎng)絡(luò)結(jié)構(gòu)假設(shè)內(nèi)部網(wǎng)有有效的Internet地址。為了將內(nèi)部網(wǎng)段/24與Internet隔離,在內(nèi)部網(wǎng)絡(luò)和Internet之間使用了包過濾防火墻。防火墻的網(wǎng)接口是eth1<54>,防火墻的Internet接口是eth0<54>。加外,內(nèi)網(wǎng)中有3臺服務(wù)器對外提供服務(wù),如圖4.1所示。分別為:WWW服務(wù)器:IP地址為51FTP服務(wù)器:IP地址為52E-mail服務(wù)器:IP地址為53圖4.1網(wǎng)絡(luò)拓?fù)鋱D4.2防火墻的實現(xiàn)要求1、允許網(wǎng)絡(luò)接口相連接的網(wǎng)絡(luò)之間相互通信。2、從網(wǎng)絡(luò)發(fā)往internet的數(shù)據(jù)包被偽裝成IP地址54。3、網(wǎng)絡(luò)上的任何主機可以使用internet的任何服務(wù)〔Web,E-mail,Ftp等。4、拒絕從防火墻的internet接口〔eth0進行的欺騙攻擊〔即黑客把防火墻作為默認(rèn)網(wǎng)關(guān),偽裝成內(nèi)部網(wǎng)IP,進入內(nèi)部網(wǎng)絡(luò),并進行日志記錄。5、拒絕全部從eth0進入的ICMP通信。6、允許internet用戶訪問網(wǎng)絡(luò)中的DNS服務(wù)、WEB服務(wù)、FTP服務(wù)〔其它服務(wù)禁止如telnet等。4.3防火墻的實現(xiàn)原理包過濾器操作的基本過程如下,器工作流程圖如圖4.2所示:包過濾規(guī)則必須被包過濾設(shè)備端口存儲起來。當(dāng)包到達(dá)端口時,對包報頭進行語法分析。大多數(shù)包過濾設(shè)備只檢查IP、TCP、或UDP報頭中的字段。包過濾規(guī)則已特殊的方式存儲。應(yīng)用于包的規(guī)則的順序與包過濾器規(guī)則存儲順序必須相同。若一條規(guī)則阻止包傳輸或接收,則此包不被允許。若一條規(guī)則允許包傳輸或接收,則此包可以被繼續(xù)處理。若包不滿足任何一條規(guī)則,則此包被阻止。圖4.2包過濾操作流程圖數(shù)據(jù)包在Filter表中的流程圖如圖4.3所示,數(shù)據(jù)包的過濾過程如圖4.4所示。有數(shù)據(jù)包進入系統(tǒng)時,系統(tǒng)首先根據(jù)路由表決定將數(shù)據(jù)包發(fā)給哪一條鏈,則可能有3種情況:<1>如果數(shù)據(jù)包的目的地址是本機,則系統(tǒng)將數(shù)據(jù)包送往INPUT鏈,如果通過規(guī)則檢查,則該數(shù)據(jù)包發(fā)給相應(yīng)的本地進程處理;如果沒有通過規(guī)則檢查,系統(tǒng)就會將這個包丟棄。<2>如果數(shù)據(jù)包的目的地址不是本機,也就是說,這個包將被轉(zhuǎn)發(fā),則系統(tǒng)將數(shù)據(jù)包送往FORWARD鏈,如果通過規(guī)則檢查,則該包被發(fā)給相應(yīng)的本地進程處理;如果沒有通過規(guī)則檢查,系統(tǒng)就會將這個包丟棄。<3>如果數(shù)據(jù)包是由本地系統(tǒng)進程產(chǎn)生的,則系統(tǒng)將其送往OUTPUT鏈,如果通過規(guī)則檢查,則該包被發(fā)給相應(yīng)的本地進程處理;如果沒有通過規(guī)則檢查,系統(tǒng)就會將這個包丟棄。圖4.3數(shù)據(jù)包在Filter表中的處理流程圖圖4.4信息包過濾過程示意圖4.4防火墻的建立過程此防火墻主要是對內(nèi)部的各種服務(wù)器提供保護。下面采用編輯并執(zhí)行可執(zhí)行腳本的方法建立此防火墻。其截圖如圖4.5所示,具本過程如下:圖4.5RedHat9.0中的安全設(shè)置截圖基本規(guī)則的配置#!/sbin/bash在屏幕上顯示信息:echo"StartingIptablesrules..."開啟內(nèi)核轉(zhuǎn)發(fā)功能echo"1">;/proc/sys/net/ipv4/ip_forward定義變量:IPT=/sbin/IptablesWWW-SERVER=51FTP-SERVER=52EMAIL-SERVER=53IP_RANGE="/24"刷新所有的鏈的規(guī)則:$IPT–F首先禁止轉(zhuǎn)發(fā)任何包,然后再一步步設(shè)置允許通過的包,所以首先設(shè)置防火墻FORWARD鏈的策略為DROP。$IPT-PFORWARDDROP下面設(shè)置關(guān)于服務(wù)器的包過濾規(guī)則,由于服務(wù)器/客戶機交互是雙向的,所以不僅僅要設(shè)置數(shù)據(jù)包,出去的規(guī)則,還要設(shè)置數(shù)據(jù)包返回的規(guī)則。<1>WWW服務(wù)服務(wù)端口為80,采用tcp或udp協(xié)議,規(guī)則為eth0=>;允許目的為內(nèi)部網(wǎng)WWW服務(wù)器的包:$IPT-AFORWARD-ptcp-d$WWW-SERVER-dportwww-ieth0-jACCEPT<2>FTP服務(wù)服務(wù)端口為21,數(shù)據(jù)端口20,FTP的傳輸模式有主動和被動之分,FTP服務(wù)采用tcp協(xié)議,規(guī)則為eth0=>;僅允許目的為內(nèi)部網(wǎng)ftp服務(wù)器的包$IPT-AFORWARD-ptcp-d$FTP-SERVER-dportftp-ieth0-jACCEPT<3>EMAIL服務(wù)包含兩個協(xié)議,一個是smtp,另一個是pop3,出于安全性考慮,通常只提供對內(nèi)的pop3服務(wù),所以在這里我們只考慮對smtp的安全性問題。smtp端口為25,采用tcp協(xié)議,規(guī)則為etho=>;僅允許目的為E-mail服務(wù)器的smtp請求。$IPT-AFORWARD-ptcp-d$EMAIL-SERVER-dportsmtp-ieth

溫馨提示

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

評論

0/150

提交評論