用iptales實(shí)現(xiàn)包過(guò)慮型防火墻_第1頁(yè)
用iptales實(shí)現(xiàn)包過(guò)慮型防火墻_第2頁(yè)
用iptales實(shí)現(xiàn)包過(guò)慮型防火墻_第3頁(yè)
用iptales實(shí)現(xiàn)包過(guò)慮型防火墻_第4頁(yè)
用iptales實(shí)現(xiàn)包過(guò)慮型防火墻_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、摘要:本文介紹linux2.4.x內(nèi)核中的防火墻工具-iptables的原理與配置,同時(shí)還給出了實(shí)際運(yùn)用的例子,在文章的最后歸納了iptables與ipchains的區(qū)別。一、 概述從1.1內(nèi)核開始,linux就已經(jīng)具有包過(guò)慮功能了,在2.0的內(nèi)核中我們采用ipfwadm來(lái)操作內(nèi)核包過(guò)慮規(guī)則。之后在2.2內(nèi)核中,采用了大家并不陌生的ipchains來(lái)控制內(nèi)核包過(guò)慮規(guī)則?,F(xiàn)在最新linux內(nèi)核版本是2.4.1,在2.4內(nèi)核中我們不再使用ipchains,而是采用一個(gè)全新的內(nèi)核包過(guò)慮管理工具-iptables。 這個(gè)全新的內(nèi)核包過(guò)慮工具將使用戶更易于理解其工作原理,更容易被使用,當(dāng)然也將具有更為強(qiáng)

2、大的功能。我們說(shuō)過(guò)iptables只是一個(gè)管理內(nèi)核包過(guò)慮的工具,iptables 可以加入、插入或刪除核心包過(guò)濾表格(鏈)中的規(guī)則。實(shí)際上真正來(lái)執(zhí)行這些過(guò)慮規(guī)則的是netfilter(Linux 核心中一個(gè)通用架構(gòu))及其相關(guān)模塊(如iptables模塊和nat模塊),下面我們一起來(lái)看看 netfilter的工作原理。二、 原理netfilter是Linux 核心中一個(gè)通用架構(gòu),它提供了一系列的"表"(tables),每個(gè)表由若干"鏈"(chains)組成,而每條鏈中可以有一條或數(shù)條規(guī)則(rule)組成。我們可以這樣來(lái)理解,netfilter是表的容器,表

3、是鏈的容器,而鏈又是規(guī)則的容器(如圖一所示)。系統(tǒng)缺省的表為"filter",該表中包含了INPUT、FORWARD和OUTPUT 3個(gè)鏈。每一條鏈中可以有一條或數(shù)條規(guī)則,每一條規(guī)則都是這樣定義的“如果數(shù)據(jù)包頭符合這樣的條件,就這樣處理這個(gè)數(shù)據(jù)包”。當(dāng)一個(gè)數(shù)據(jù)包到達(dá)一個(gè)鏈時(shí),系統(tǒng)就會(huì)從第一條規(guī)則開始檢查,看是否符合該規(guī)則所定義的條件: 如果滿足,系統(tǒng)將根據(jù)該條規(guī)則所定義的方法處理該數(shù)據(jù)包;如果不滿足則繼續(xù)檢查下一條規(guī)則。最后,如果該數(shù)據(jù)包不符合該鏈中任一條規(guī)則的話,系統(tǒng)就會(huì)根據(jù)該鏈預(yù)先定義的策略(policy)來(lái)處理該數(shù)據(jù)包。數(shù)據(jù)包在filter表中的流程如圖二所示。有數(shù)據(jù)

4、包進(jìn)入系統(tǒng)時(shí),系統(tǒng)首先根據(jù)路由表決定將數(shù)據(jù)包發(fā)給哪一條鏈,則可能有三種情況:1. 如果數(shù)據(jù)包的目的地址是本機(jī),則系統(tǒng)將數(shù)據(jù)包送往INPUT鏈,如果通過(guò)規(guī)則檢查,則該包被發(fā)給相應(yīng)的本地進(jìn)程處理;如果沒(méi)通過(guò)規(guī)則檢查,系統(tǒng)就會(huì)將這個(gè)包丟掉;2. 如果數(shù)據(jù)包的目的地址不是本機(jī),也就是說(shuō),這個(gè)包將被轉(zhuǎn)發(fā),則系統(tǒng)將數(shù)據(jù)包送往FORWARD鏈,如果通過(guò)規(guī)則檢查,則該包被發(fā)給相應(yīng)的本地進(jìn)程處理;如果沒(méi)通過(guò)規(guī)則檢查,系統(tǒng)就會(huì)將這個(gè)包丟掉;3. 如果數(shù)據(jù)包是由本地系統(tǒng)進(jìn)程產(chǎn)生的,則系統(tǒng)將其送往OUTPUT鏈,如果通過(guò)規(guī)則檢查,則該包被發(fā)給相應(yīng)的本地進(jìn)程處理;如果沒(méi)通過(guò)規(guī)則檢查,系統(tǒng)就會(huì)將這個(gè)包丟掉。從以上我們可以

5、看出,netfilter比起以前的ipfwadm和ipchains思路上清晰了好多,也好理解了好多,這對(duì)于原先對(duì)ipfwadm和ipchains總是感到一頭霧水的用戶來(lái)說(shuō)無(wú)疑是一個(gè)福音。三、 準(zhǔn)備工作1. 系統(tǒng)需求netfilter要求內(nèi)核版本不低于2.3.5,在編譯新內(nèi)核時(shí),要求選擇和netfilter相關(guān)的項(xiàng)目。這些項(xiàng)目通常都是位于“Networking options”子項(xiàng)下。以2.4.0內(nèi)核為例,我們應(yīng)該選中的項(xiàng)目有:* Kernel/User netlink socket Routing messages <*> Netlink device emulation * Ne

6、twork packet filtering (replaces ipchains) .然后,在“IP: Netfilter Configuration ->”選中:<M> Connection tracking (required for masq/NAT) <M> FTP protocol support<M> IP tables support (required for filtering/masq/NAT)<M > limit match support <M> MAC address match support &l

7、t;M> Netfilter MARK match support <M> Multiple port match support <M> TOS match support <M> Connection state match support <M> Packet filtering<M> REJECT target support<M> Full NAT <M> MASQUERADE target support <M> REDIRECT target support <M>

8、Packet mangling <M> TOS target support <M> MARK target support <M> LOG target support<M> ipchains (2.2-style) support<M> ipfwadm (2.0-style) support其中最后兩個(gè)項(xiàng)目可以不選,但是如果你比較懷念ipchains或者ipfwadm,你也可以將其選中,以便在2.4內(nèi)核中使用ipchians 或ipfwadm。但是需要注意的是,iptables是和ipchians/ipfwadm相對(duì)立的,在使用i

9、ptables的同時(shí)就不能同時(shí)使用 ipchains/ipfwadm。編譯成功后,這些模塊文件都位于以下目錄中/lib/modules/2.4.0/kernel/net/ipv4/netfilter編譯2.4.0的新內(nèi)核時(shí)還應(yīng)該注意要在“Processor type and features”中選擇和你的CPU相對(duì)應(yīng)的正確的CPU選項(xiàng),否則新內(nèi)核可能無(wú)法正常工作。2. 載入模塊要使用iptables,還必須載入相關(guān)模塊??梢允褂靡韵旅钶d入相關(guān)模塊:#modprobe iptable_tablesmodprobe命令會(huì)自動(dòng)載入指定模塊及其相關(guān)模塊。iptables_filter模塊會(huì)在運(yùn)行時(shí)自

10、動(dòng)載入。三、 語(yǔ)法 1. 對(duì)鏈的操作建立一個(gè)新鏈 (-N)。 刪除一個(gè)空鏈 (-X)。 改變一個(gè)內(nèi)建鏈的原則 (-P)。 列出一個(gè)鏈中的規(guī)則 (-L)。 清除一個(gè)鏈中的所有規(guī)則 (-F)。 歸零(zero) 一個(gè)鏈中所有規(guī)則的封包字節(jié)(byte) 記數(shù)器 (-Z)。 2. 對(duì)規(guī)則的操作加入(append) 一個(gè)新規(guī)則到一個(gè)鏈 (-A)的最后。 在鏈內(nèi)某個(gè)位置插入(insert) 一個(gè)新規(guī)則(-I),通常是插在最前面。 在鏈內(nèi)某個(gè)位置替換(replace) 一條規(guī)則 (-R)。在鏈內(nèi)某個(gè)位置刪除(delete) 一條規(guī)則 (-D)。 刪除(delete) 鏈內(nèi)第一條規(guī)則 (-D)。 3. 指定源

11、地址和目的地址通過(guò)-source/-src/-s來(lái)指定源地址(這里的/表示或者的意思,下同),通過(guò)-destination/-dst/-s來(lái)指定目的地址??梢允褂靡韵滤闹蟹椒▉?lái)指定ip地址:a. 使用完整的域名,如“”;b. 使用ip地址,如“”;c. 用x.x.x.x/x.x.x.x指定一個(gè)網(wǎng)絡(luò)地址,如“/”;d. 用x.x.x.x/x指定一個(gè)網(wǎng)絡(luò)地址,如“/24”這里的24表明了子網(wǎng)掩碼的有效位數(shù),這是 UNIX環(huán)境中通常使用的表示方法。缺省的子網(wǎng)掩碼數(shù)是32,也就是說(shuō)指定等效

12、于/32。 4. 指定協(xié)議可以通過(guò)-protocol/-p選項(xiàng)來(lái)指定協(xié)議,比如-p tcp。5. 指定網(wǎng)絡(luò)接口將可以使用-in-interface/-i或-out-interface/-o來(lái)指定網(wǎng)絡(luò)接口。需要注意的是,對(duì)于INPUT鏈來(lái)說(shuō),只可能有-i,也即只會(huì)有進(jìn)入的包;通理,對(duì)于OUTPUT鏈來(lái)說(shuō),只可能有-o,也即只會(huì)有出去的包。只有FORWARD鏈既可以有-i的網(wǎng)絡(luò)接口,也可以有-o的網(wǎng)絡(luò)接口。我們也可以指定一個(gè)當(dāng)前并不存在的網(wǎng)絡(luò)接口,比如ppp0,這時(shí)只有撥號(hào)成功后該規(guī)則才有效。6. 指定ip碎片在TCP/IP通訊過(guò)程中,每一個(gè)網(wǎng)絡(luò)接口都有一個(gè)最大傳輸單元(MT

13、U),這個(gè)參數(shù)定義了可以通過(guò)的數(shù)據(jù)包的最大尺寸。如果一個(gè)數(shù)據(jù)包大于這個(gè)參數(shù)值時(shí),系統(tǒng)會(huì)將其劃分成更小的數(shù)個(gè)數(shù)據(jù)包(稱之為ip碎片)來(lái)傳輸,而接收方則對(duì)這些ip碎片再進(jìn)行重組以還原整個(gè)包。但是再進(jìn)行包過(guò)濾的時(shí)候,ip碎片會(huì)導(dǎo)致這樣一個(gè)問(wèn)題:當(dāng)系統(tǒng)將大數(shù)據(jù)包劃分成ip碎片傳送時(shí),第一個(gè)碎片含有完整的包頭信息,但是后續(xù)的碎片只有包頭的部分信息,比如源地址,目的地址。因此假如我們有這樣一條規(guī)則:iptables -A FORWARD -p tcp -s /24 -d 00 -dport 80 -j ACCEPT并且這時(shí)的FORWARD的策略(policy)為

14、DROP時(shí),系統(tǒng)只會(huì)讓第一個(gè)ip碎片通過(guò),而丟掉其余的ip碎片,因?yàn)榈谝粋€(gè)碎片含有完整的包頭信息,可以滿足該規(guī)則的條件,而余下的碎片因?yàn)榘^信息不完整而無(wú)法滿足規(guī)則定義的條件,因而無(wú)法通過(guò)。我們可以通過(guò)-fragment/-f選項(xiàng)來(lái)指定第二個(gè)及其以后的ip碎片,比如以上面的例子為例,我們可以再加上這樣一條規(guī)則來(lái)解決這個(gè)問(wèn)題:iptables -A FORWARD -f -s /24 -d 00 -j ACCEPT但是需要注意的是,現(xiàn)在已經(jīng)有好多進(jìn)行ip碎片攻擊的實(shí)例(比如向Win98 NT4/SP5,6 Win2K發(fā)送大量的ip碎片進(jìn)行DoS攻擊),

15、因此允許ip碎片通過(guò)是有安全隱患的,對(duì)于這一點(diǎn)我們可以采用iptables的匹配擴(kuò)展來(lái)進(jìn)行限制,但是這又會(huì)影響服務(wù)質(zhì)量,我們將在下面討論這個(gè)問(wèn)題。7. 指定非可以在某些選項(xiàng)前加上!來(lái)表示非指定值,比如“-s -! /32”表示除了以外的ip地址,“-p -! tcp”表示除了tcp以外的協(xié)議。8. TCP匹配擴(kuò)展通過(guò)使用-tcp-flags選項(xiàng)可以根據(jù)tcp包的標(biāo)志位進(jìn)行過(guò)濾,該選項(xiàng)后接兩個(gè)參數(shù):第一個(gè)參數(shù)為要檢查的標(biāo)志位,可以是SYN, ACK,F(xiàn)IN,RST,URG,PSH的組合,可以用ALL指定所有標(biāo)志位;第二個(gè)參數(shù)是標(biāo)志位值為1的標(biāo)志。比如你

16、要過(guò)濾掉所有SYN標(biāo)志位為1的 tcp包,可以使用以下規(guī)則:iptables -A FORWARD -p tcp -tcp-flags ALL SYN -j DROP選項(xiàng)-syn是以上的一種特殊情況,相當(dāng)于“-tcp-flags SYN,RST,ACK SYN”的簡(jiǎn)寫。9. mac匹配擴(kuò)展可以使用-m選項(xiàng)來(lái)擴(kuò)展匹配內(nèi)容。使用-match mac/-m mac匹配擴(kuò)展可以用來(lái)檢查ip數(shù)據(jù)包的源mac地址。只要在-mac-source后面跟上mac地址就可以了。比如:iptables -A FORWARD -m mac -mac-source 00:00:BA:A5:7D:12 -j DROP需要

17、注意的是一個(gè)ip包在經(jīng)過(guò)路由器轉(zhuǎn)發(fā)后,其源mac地址已經(jīng)變成了路由器的mac地址。 10. limit匹配擴(kuò)展limit擴(kuò)展是一個(gè)非常有用的匹配擴(kuò)展。使用-m nat 來(lái)指定,其后可以有兩個(gè)選項(xiàng):-limit avg: 指定單位時(shí)間內(nèi)允許通過(guò)的數(shù)據(jù)包的個(gè)數(shù)。單位時(shí)間可以是/second、/minute、/hour、/day或使用第一個(gè)字母,比如5/second和5/s是一樣的,都是表示每秒可以通過(guò)5個(gè)數(shù)據(jù)包,缺省值是3/hour。-limit-burst number:指定觸發(fā)事件的閥值,缺省值是5??雌饋?lái)好像有點(diǎn)復(fù)雜,就讓我們來(lái)看一個(gè)例子:假設(shè)又如下的規(guī)則:iptables -A INPUT

18、 -p icmp -m limit -limit 6/m -limit-burst 5 -j ACCEPTiptables -P INPUT DROP然后從另一部主機(jī)上ping這部主機(jī),就會(huì)發(fā)生如下的現(xiàn)象:首先我們可以看到前四個(gè)包的回應(yīng)都很正常,然后從第五個(gè)包開始,我們每10秒可以收到一個(gè)正常的回應(yīng)。這是因?yàn)槲覀冊(cè)O(shè)定了單位時(shí)間(在這里是每分鐘)內(nèi)允許通過(guò)的數(shù)據(jù)包的個(gè)數(shù)是每分鐘6個(gè),也即每10秒鐘一個(gè);其次我們又設(shè)定了事件觸發(fā)閥值為5,所以我們的前四個(gè)包都是正常的,只是從第五個(gè)包開始,限制規(guī)則開始生效,故只能每10秒收到一個(gè)正?;貞?yīng)。假設(shè)我們停止ping,30秒后又開始ping,這時(shí)的現(xiàn)象是:前

19、兩個(gè)包是正常的,從第三個(gè)包開始丟包,這是因?yàn)樵谶@里我的允許一個(gè)包通過(guò)的周期是10秒,如果在一個(gè)周期內(nèi)系統(tǒng)沒(méi)有收到符合條件的包,系統(tǒng)的觸發(fā)值就會(huì)恢復(fù)1,所以假如我們30秒內(nèi)沒(méi)有符合條件的包通過(guò),系統(tǒng)的觸發(fā)值就會(huì)恢復(fù)到3,假如5個(gè)周期內(nèi)都沒(méi)有符合條件的包通過(guò),系統(tǒng)都觸發(fā)值就會(huì)完全恢復(fù)。不知道你明白了沒(méi)有,歡迎你來(lái)信討論。11. LOG目標(biāo)擴(kuò)展netfilter缺省的目標(biāo)(也就是一旦滿足規(guī)則所定義以后系統(tǒng)對(duì)數(shù)據(jù)包的處理方法)有:ACEEPT:接收并轉(zhuǎn)發(fā)數(shù)據(jù)包DORP:丟掉數(shù)據(jù)包目標(biāo)擴(kuò)展模塊提供了擴(kuò)展的目標(biāo)。LOG目標(biāo)提供了記錄數(shù)據(jù)包的功能。該目標(biāo)擴(kuò)展有以下幾個(gè)參數(shù): -log-level:指定記錄信

20、息的級(jí)別,級(jí)別有debug、info、notice、warning、err、crit、alert、emerg分別對(duì)應(yīng)7到0的數(shù)字。其含義請(qǐng)參看syslog.conf的man手冊(cè)。-log-prefix:后接一個(gè)最長(zhǎng)為30個(gè)字符的字符串,該字符串將出現(xiàn)在每一條日志的前面。12. REJECT目標(biāo)擴(kuò)展該目標(biāo)擴(kuò)展完全和DORP標(biāo)準(zhǔn)目標(biāo)一樣,除了向發(fā)送方返回一個(gè)“port unreachable”的icmp信息外。還有其他一些擴(kuò)展是常用的,如果你想了解可以參考Packet-Filtering-HOWTO。當(dāng)然,最直接獲得幫助的辦法是查看 iptables的在線幫助,比如想得到關(guān)于mac匹配擴(kuò)展的幫助可

21、以執(zhí)行“iptables -m mac -help”命令,想得到LOG目標(biāo)擴(kuò)展的幫助可以執(zhí)行“iptables -j LOG -help”命令。四、 iptables使用實(shí)例首先讓我們看一下服務(wù)器/客戶機(jī)的交互原理。服務(wù)器提供某特定功能的服務(wù)總是由特定的后臺(tái)程序提供的。在TCP/IP網(wǎng)絡(luò)中,常常把這個(gè)特定的服務(wù)綁定到特定的TCP或UDP端口。之后,該后臺(tái)程序就不斷地監(jiān)聽(listen)該端口,一旦接收到符合條件的客戶端請(qǐng)求,該服務(wù)進(jìn)行TCP握手后就同客戶端建立一個(gè)連接,響應(yīng)客戶請(qǐng)求。與此同時(shí),再產(chǎn)生一個(gè)該綁定的拷貝,繼續(xù)監(jiān)聽客戶端的請(qǐng)求。舉一個(gè)具體的例子:假設(shè)網(wǎng)絡(luò)中有一臺(tái)服務(wù)器A(IP地址為1

22、.1.1.1)提供WWW服務(wù),另有客戶機(jī)B()、C ()。首先,服務(wù)器A運(yùn)行提供WWW服務(wù)的后臺(tái)程序(比如Apache)并且把該服務(wù)綁定到端口80,也就是說(shuō),在端口80進(jìn)行監(jiān)聽。當(dāng)B 發(fā)起一個(gè)連接請(qǐng)求時(shí),B將打開一個(gè)大于1024的連接端口(1024內(nèi)為已定義端口),假設(shè)為1037。A在接收到請(qǐng)求后,用80端口與B建立連接以響應(yīng) B的請(qǐng)求,同時(shí)產(chǎn)生一個(gè)80端口綁定的拷貝,繼續(xù)監(jiān)聽客戶端的請(qǐng)求。假如A又接收到C的連接請(qǐng)求(設(shè)連接請(qǐng)求端口為1071),則A在與C建立連接的同時(shí)又產(chǎn)生一個(gè)80端口綁定的拷貝繼續(xù)監(jiān)聽客戶端的請(qǐng)求。如下所示,因?yàn)橄到y(tǒng)是以源地址、源端口、目的地址、

23、目的端口來(lái)標(biāo)識(shí)一個(gè)連接的,所以在這里每個(gè)連接都是唯一的。服務(wù)器 客戶端連接1:a.b.c.1:80 <=> a.b.c.4:1037連接2:a.b.c.1:80 <=> a.b.c.7:1071每一種特定的服務(wù)都有自己特定的端口,一般說(shuō)來(lái)小于1024的端口多為保留端口,或者說(shuō)是已定義端口,低端口分配給眾所周知的服務(wù)(如WWW、 FTP等等),從512到1024的端口通常保留給特殊的UNIX TCP/IP應(yīng)用程序,具體情況請(qǐng)參考/etc/services文件或 RFC1700。 假設(shè)網(wǎng)絡(luò)環(huán)境如下:某一單位,租用DDN專線上網(wǎng),網(wǎng)絡(luò)拓?fù)淙缦拢?-+ | 內(nèi)部網(wǎng)段 | eth

24、1+-+eth0 DDN| +-|firewall|<=>Internet | | +-+-+eth0: 54eth1: 54以上的IP地址都是Internet上真實(shí)的IP,故沒(méi)有用到IP欺騙。并且,我們假設(shè)在內(nèi)部網(wǎng)中存在以下服務(wù)器:www服務(wù)器: 1ftp服務(wù)器: 2email服務(wù)器: 3下面我們將用iptables一步一步地來(lái)建立我們的包過(guò)濾防火墻,需要說(shuō)明的是,在這個(gè)例子中,我們主要是對(duì)內(nèi)部的各種服務(wù)器提供保護(hù)。 1. 在/etc/

25、rc.d/目錄下用touch命令建立firewall文件,執(zhí)行chmod u+x firewll以更改文件屬性 ,編輯 /etc/rc.d/rc.local文件,在末尾加上 /etc/rc.d/firewall 以確保開機(jī)時(shí)能自動(dòng)執(zhí)行該腳本。2. 刷新所有的鏈的規(guī)則#!/bin/shecho "Starting iptables rules."#Refresh all chains/sbin/iptables -F3. 我們將首先禁止轉(zhuǎn)發(fā)任何包,然后再一步步設(shè)置允許通過(guò)的包。所以首先設(shè)置防火墻FORWARD鏈的策略為DROP:/sbin/iptables -P FORWAR

26、D DROP4.設(shè)置關(guān)于服務(wù)器的包過(guò)慮規(guī)則:在這里需要注意的是,服務(wù)器/客戶機(jī)交互是有來(lái)有往的,也就是說(shuō)是雙向的,所以我們不僅僅要設(shè)置數(shù)據(jù)包出去的規(guī)則,還要設(shè)置數(shù)據(jù)包返回的規(guī)則,我們先建立針對(duì)來(lái)自Internet數(shù)據(jù)包的過(guò)慮規(guī)則。WWW服務(wù):服務(wù)端口為80,采用tcp或udp協(xié)議。規(guī)則為:eth0=>允許目的為內(nèi)部網(wǎng)WWW服務(wù)器的包。#Define HTTP packets#Allow www request packets from Internet clients to www servers/sbin/iptables -A FORWARD -p tcp -d 198.168.80

27、.11 -dport www -i eth0 -j ACCEPTFTP服務(wù):FTP服務(wù)有點(diǎn)特別,因?yàn)樾枰獌蓚€(gè)端口,因?yàn)镕TP有命令通道和數(shù)據(jù)通道。其中命令端口為21,數(shù)據(jù)端口為20,并且有主動(dòng)和消極兩種服務(wù)模式,其消極模式連接過(guò)程為:FTP客戶端首先向FTP服務(wù)器發(fā)起連接請(qǐng)求,三步握手后建立命令通道,然后由FTP服務(wù)器請(qǐng)求建立數(shù)據(jù)通道,成功后開始傳輸數(shù)據(jù),現(xiàn)在大多數(shù)FTP客戶端均支持消極模式,因?yàn)檫@種模式可以提高安全性。FTP服務(wù)采用tcp協(xié)議。規(guī)則為:eth0=>僅允許目的為內(nèi)部網(wǎng)ftp服務(wù)器的包。#Define FTP packets#Allow ftp request packet

28、s from Internet clients to Intranet ftp server /sbin/iptables -A FORWARD -p tcp -d 2 -dport ftp -i eth0 -j ACCEPTEMAIL服務(wù):包含兩個(gè)協(xié)議,一是smtp,一是pop3。出于安全性考慮,通常只提供對(duì)內(nèi)的pop3服務(wù),所以在這里我們只考慮針對(duì)smtp的安全性問(wèn)題。smtp端口為21,采用tcp協(xié)議。eth0=>僅允許目的為email服務(wù)器的smtp請(qǐng)求。#Define smtp packets#/sbin/iptables -A FORWARD -p t

29、cp -d 3 -dport smtp -i eth0 -j ACCEPT5. 設(shè)置針對(duì)Intranet客戶的過(guò)慮規(guī)則:在本例中我們的防火墻位于網(wǎng)關(guān)的位置,所以我們主要是防止來(lái)自Internet的攻擊,不能防止來(lái)自Intranet的攻擊。假如我們的服務(wù)器都是基于linux的,也可以在每一部服務(wù)器上設(shè)置相關(guān)的過(guò)慮規(guī)則來(lái)防止來(lái)自Intranet的攻擊。對(duì)于Internet對(duì)Intranet客戶的返回包,我們定義如下規(guī)則。#Define packets from Internet server to Intranet#/sbin/iptables -A FORWARD -p

30、tcp -s 0/0 -sport ftp-data -d /24 -i eth0 -j ACCEPT/sbin/iptables -A FORWARD -p tcp -d /24 ! -syn -i eth0 -j ACCEPT/sbin/iptables -A FORWARD -p udp -d /24 -i eth0 -j ACCEPT說(shuō)明:第一條允許Intranet客戶采用消極模式訪問(wèn)Internet的FTP服務(wù)器;第二條接收來(lái)自Internet的非連接請(qǐng)求tcp包;最后一條接收所有udp包,主要是針對(duì)oicq等使

31、用udp的服務(wù)。6. 接受來(lái)自整個(gè)Intranet的數(shù)據(jù)包過(guò)慮,我們定義如下規(guī)則:#Define packets from Internet server to Intranet server#/sbin/iptables -A FORWARD -s /24 -i eth1 -j ACCEPT7. 處理ip碎片我們接受所有的ip碎片,但采用limit匹配擴(kuò)展對(duì)其單位時(shí)間可以通過(guò)的ip碎片數(shù)量進(jìn)行限制,以防止ip碎片攻擊。#Define fregment rule#/sbin/iptables -A FORWARD -f -m limit -limit 100/s -li

32、mit-burst 100 -j ACCEPT說(shuō)明:對(duì)不管來(lái)自哪里的ip碎片都進(jìn)行限制,允許每秒通過(guò)100個(gè)ip碎片,該限制觸發(fā)的條件是100個(gè)ip碎片。8. 設(shè)置icmp包過(guò)濾icmp包通常用于網(wǎng)絡(luò)測(cè)試等,故允許所有的icmp包通過(guò)。但是黑客常常采用icmp進(jìn)行攻擊,如ping of death等,所以我們采用limit匹配擴(kuò)展加以限制:#Define icmp rule#/sbin/iptables -A FORWARD -p icmp -m limit -limit 1/s -limit-burst 10 -j ACCEPT說(shuō)明:對(duì)不管來(lái)自哪里的icmp包都進(jìn)行限制,允許每秒通過(guò)一個(gè)包,

33、該限制觸發(fā)的條件是10個(gè)包。通過(guò)以上個(gè)步驟,我們建立了一個(gè)相對(duì)完整的防火墻。只對(duì)外開放了有限的幾個(gè)端口,同時(shí)提供了客戶對(duì)Internet的無(wú)縫訪問(wèn),并且對(duì)ip碎片攻擊和icmp的ping of death提供了有效的防護(hù)手段。以下是完整的腳本文件內(nèi)容,希望通過(guò)這個(gè)實(shí)例能是對(duì)iptables的用法有所了解:#!/bin/shecho "Starting iptables rules."#Refresh all chains/sbin/iptables -F#Define HTTP packets#Allow www request packets from Internet

34、clients to www servers/sbin/iptables -A FORWARD -p tcp -d 1 -dport www -i eth0 -j ACCEPT#Define FTP packets#Allow ftp request packets from Internet clients to Intranet ftp server /sbin/iptables -A FORWARD -p tcp -d 2 -dport ftp -i eth0 -j ACCEPT#Define smtp packets#/sbin/iptables -A FORWARD -p tcp -d 3 -dport smtp -i eth0 -j ACCEPT#Define packets fr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論