使用netfilteriptables構(gòu)建防火墻_第1頁
使用netfilteriptables構(gòu)建防火墻_第2頁
使用netfilteriptables構(gòu)建防火墻_第3頁
使用netfilteriptables構(gòu)建防火墻_第4頁
使用netfilteriptables構(gòu)建防火墻_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、如何使用 netfilter/iptables構(gòu)建防火墻對(duì)于 internet上的系統(tǒng),不管是什么情況都要明確一點(diǎn):網(wǎng)絡(luò)是不安全的。因此,雖然創(chuàng)建一個(gè)防火墻并不能保證系統(tǒng)100安全,但卻是絕對(duì)必要的。linux提供了一個(gè)非常優(yōu)秀的防火墻工具netfilter/iptables。它完全免費(fèi)、 功能強(qiáng)大、 使用靈活、 可以對(duì)流入和流出的信息進(jìn)行細(xì)化控制,且可以在一臺(tái)低配置機(jī)器上很好地運(yùn)行。本文將簡(jiǎn)單介紹使用netfilter/iptables實(shí)現(xiàn)防火墻架設(shè)和internet連接共享等應(yīng)用。netfilter/iptabels應(yīng)用程序,被認(rèn)為是linux 中實(shí)現(xiàn)包過濾功能的第四代應(yīng)用程序。netfi

2、lter/iptables包含在 2.4 以后的內(nèi)核中,它可以實(shí)現(xiàn)防火墻、nat (網(wǎng)絡(luò)地址翻譯)和數(shù)據(jù)包的分割等功能。netfilter工作在內(nèi)核內(nèi)部,而iptables則是讓用戶定義規(guī)則集的表結(jié)構(gòu)。 netfilter/iptables從 ipchains和 ipwadfm( ip 防火墻管理)演化而來,功能更加強(qiáng)大。下文將netfilter/iptabels統(tǒng)一稱為iptables??梢杂?iptables為 unix 、linux 和 bsd個(gè)人工作站創(chuàng)建一個(gè)防火墻,也可以為一個(gè)子網(wǎng)創(chuàng)建防火墻以保護(hù)其它的系統(tǒng)平臺(tái)。iptales只讀取數(shù)據(jù)包頭,不會(huì)給信息流增加負(fù)擔(dān),也無需進(jìn)行驗(yàn)證。要想

3、獲得更好的安全性,可以將其和一個(gè)代理服務(wù)器(比如squid )相結(jié)合。基本概念典型的防火墻設(shè)置有兩個(gè)網(wǎng)卡:一個(gè)流入,一個(gè)流出。iptables讀取流入和流出數(shù)據(jù)包的報(bào)頭,將它們與規(guī)則集(ruleset )相比較,將可接受的數(shù)據(jù)包從一個(gè)網(wǎng)卡轉(zhuǎn)發(fā)至另一個(gè)網(wǎng)卡,對(duì)被拒絕的數(shù)據(jù)包,可以丟棄或按照所定義的方式來處理。通過向防火墻提供有關(guān)對(duì)來自某個(gè)源地址、到某個(gè)目的地或具有特定協(xié)議類型的信息包要做些什么的指令,規(guī)則控制信息包的過濾。通過使用iptables系統(tǒng)提供的特殊命令iptables建立這些規(guī)則,并將其添加到內(nèi)核空間特定信息包過濾表內(nèi)的鏈中。關(guān)于添加、去除、編輯規(guī)則的命令,一般語法如下:iptabl

4、es -t table command match target 1表( table )-t table選項(xiàng)允許使用標(biāo)準(zhǔn)表之外的任何表。表是包含僅處理特定類型信息包的規(guī)則和鏈的信息包過濾表。有三個(gè)可用的表選項(xiàng):filter、nat 和 mangle。該選項(xiàng)不是必需的,如果未指定,則filter作為缺省表。各表實(shí)現(xiàn)的功能如表1 所示。表 1 三種表實(shí)現(xiàn)的功能2命令( command )command部分是 iptables命令最重要的部分。它告訴 iptables命令要做什么, 例如插入規(guī)則、將規(guī)則添加到鏈的末尾或刪除規(guī)則。表2 是最常用的一些命令及例子。表 2 命令的功能和樣例3匹配( mat

5、ch)iptables命令的可選match 部分指定信息包與規(guī)則匹配所應(yīng)具有的特征(如源地址、目的地址、 協(xié)議等) 。匹配分為通用匹配和特定于協(xié)議的匹配兩大類。這里將介紹可用于采用任何協(xié)議的信息包的通用匹配。表3 是一些重要且常用的通用匹配及示例說明。表 3 通用匹配及示例說明4目標(biāo)( target)目標(biāo)是由規(guī)則指定的操作,對(duì)與那些規(guī)則匹配的信息包執(zhí)行這些操作。除了允許用戶定義的目標(biāo)之外,還有許多可用的目標(biāo)選項(xiàng)。表4 是常用的一些目標(biāo)及示例說明。除表 4 外,還有許多用于建立高級(jí)規(guī)則的其它目標(biāo),如log 、redirect 、mark 、mirror和 masquerade等。表 4 目標(biāo)及示

6、例說明應(yīng)用 iptables與 ipchains和 ipfwadm 不同的是, iptables可以配置有狀態(tài)的防火墻。iptables可以檢測(cè)到源地址和目的地址、源端口和目的端口及流入數(shù)據(jù)包的順序,即iptables記住了在現(xiàn)有連接中, 哪些數(shù)據(jù)包已經(jīng)被允許接收。這使得暫時(shí)性的端口只有在需要時(shí)才會(huì)被打開,并且會(huì)拒絕所有永久性占用端口的請(qǐng)求,大大地加強(qiáng)了安全性。同時(shí), 那些被更改了報(bào)頭的數(shù)據(jù)包, 即使包含有一個(gè)被允許的目的地址和端口,也會(huì)被檢測(cè)到并被丟棄。此外, 有狀態(tài)的防火墻能夠指定并記住為發(fā)送或接收信息包所建立連接的狀態(tài)。防火墻可以從信息包的連接跟蹤狀態(tài)獲得該信息。在決定新的信息包過濾時(shí),

7、防火墻所使用的這些狀態(tài)信息可以增加其效率和速度。1啟動(dòng)和停止iptables 下面將正式使用iptables來創(chuàng)建防火墻。啟動(dòng)和停止iptables的方法取決于所使用的 linux 發(fā)行版,可以先查看所使用linux 版本的文檔。一般情況下, iptables已經(jīng)包含在linux 發(fā)行版中, 運(yùn)行 iptables -version來查看系統(tǒng)是否安裝了iptables。在 red hat 9.0中,安裝的版本是iptables v1.2.7a。如果系統(tǒng)沒有安裝iptables,則可以從下載。2查看規(guī)則集上面僅對(duì)iptables的用法做了一個(gè)簡(jiǎn)單介紹,使用中可以運(yùn)

8、行man iptables來查看所有命令和選項(xiàng)的完整介紹,或者運(yùn)行iptables -help來查看一個(gè)快速幫助。要查看系統(tǒng)中現(xiàn)有的iptables規(guī)劃集,可以運(yùn)行以下命令:iptables -list 下面是沒有定義規(guī)劃時(shí)iptables的樣子:chain input (policy accept) target prot opt source destination chain forward (policy accept) target prot opt source destination chain output (policy accept) target prot opt sou

9、rce destination 如上例所示,每一個(gè)數(shù)據(jù)包都要通過三個(gè)內(nèi)建的鏈(input、output 和 forward)中的一個(gè)。filter是最常用的表,在filter表中最常用的三個(gè)目標(biāo)是accept 、drop 和 reject 。drop 會(huì)丟棄數(shù)據(jù)包,不再對(duì)其進(jìn)行任何處理。reject 會(huì)把出錯(cuò)信息傳送至發(fā)送數(shù)據(jù)包的主機(jī)。圖 1 red hat 9.0中安全設(shè)置的gui工具在 red hat 9.0中,提供一個(gè)gui程序來讓用戶對(duì)系統(tǒng)的安裝級(jí)別進(jìn)行簡(jiǎn)單的配置。該工具的啟動(dòng)方法是:主選單系統(tǒng)設(shè)置安全工具(如圖 1 所示) 。在此將安全級(jí)別設(shè)為“高級(jí)”,并選擇使用默認(rèn)的防火墻規(guī)則。點(diǎn)

10、擊確定后,再用iptables -list顯示,發(fā)現(xiàn)iptables與沒有定義規(guī)則前已經(jīng)有很大不同,如下所示:rootworkstation root# iptables -list chain input (policy accept) target prot opt source destination rh-lokkit-0-50-input all - anywhere anywhere chain forward (policy accept) target prot opt source destination rh-lokkit-0-50-input all - anywhere

11、 anywhere chain output (policy accept) target prot opt source destination . 現(xiàn)實(shí)中一般不使用這個(gè)gui 工具,因?yàn)樗墓δ苡邢蓿膊粔蛲该鳌?相比較而言, suse 9.0 中相應(yīng)的配置工具要好得多,它可以在gui下對(duì)防火墻進(jìn)行更加細(xì)化的配置(比如增加了 ip 轉(zhuǎn)發(fā)和偽裝等功能的配置)。盡管這樣,一般還是自己來增加和刪除規(guī)則。圖 2 suse 9.0中 yast配置工具中的防火墻設(shè)置3增加規(guī)則本例中的規(guī)則將會(huì)阻止來自某一特定ip 范圍內(nèi)的數(shù)據(jù)包,因?yàn)樵搃p 地址范圍被管理員懷疑有大量惡意攻擊者在活動(dòng):# iptable

12、s -t filter -a input -s 123.456.789.0/24 -j drop 也可以很輕易地阻止所有流向攻擊者ip 地址的數(shù)據(jù)包,該命令稍有不同:# iptables -t filter -a output -d 123.456.789.0/24 -j drop 注意這里的a選項(xiàng),如前所述,使用它說明是給現(xiàn)有的鏈添加規(guī)則。4刪除規(guī)則網(wǎng)絡(luò)上的惡意攻擊者總是在變化的,因此需要不斷改變ip。假設(shè)一個(gè)網(wǎng)上攻擊者轉(zhuǎn)移到新的 ip 地址,而其老的 ip 地址被分配給一些清白的用戶,那么這時(shí)這些用戶的數(shù)據(jù)包將無法通過你的網(wǎng)絡(luò)。這種情況下,可以使用帶-d 選項(xiàng)的命令來刪除現(xiàn)有的規(guī)則:# i

13、ptables -t filter -d output -d 123.456.789.0/24 -j drop 5缺省的策略創(chuàng)建一個(gè)具有很好靈活性、可以抵御各種意外事件的規(guī)則需要大量的時(shí)間。對(duì)于那些沒有時(shí)間這樣做的人,最基本的原則是“先拒絕所有的數(shù)據(jù)包,然后再允許需要的”。下面來為每一個(gè)鏈設(shè)置缺省的規(guī)則:# iptables -p input drop # iptables -p forward drop # iptables -p output accept 這里選項(xiàng) -p 用于設(shè)置鏈的策略,只有三個(gè)內(nèi)建的鏈才有策略。這些策略可以讓信息毫無限制地流出,但不允許信息流入。很多時(shí)候需要接收外部信

14、息,則可使用以下命令:# iptables -t filter -a input -s 123.456.789.0/24 -j accept 6syn的使用不能關(guān)閉所有端口,也不能只指定某些端口處于打開狀態(tài),那么怎樣才能設(shè)置一個(gè)有效的規(guī)則,既可以允許普通用戶正常通過,又可以阻止惡意攻擊者訪問網(wǎng)絡(luò)呢?剛開始使用iptables的人可以充分利用syn 標(biāo)識(shí)來阻止那些未經(jīng)授權(quán)的訪問。iptables只檢測(cè)數(shù)據(jù)包的報(bào)頭,事實(shí)上,除iptables以外,很多其它有用的數(shù)據(jù)包分析都是基于報(bào)頭的。比如,在進(jìn)行web沖浪時(shí),一個(gè)請(qǐng)求從你的pc發(fā)送至其它地方的web服務(wù)器上, 該服務(wù)器會(huì)響應(yīng)請(qǐng)求并發(fā)回一個(gè)數(shù)據(jù)包

15、,同時(shí)得到你系統(tǒng)上的一個(gè)臨時(shí)端口。與響應(yīng)請(qǐng)求不同的是, 服務(wù)器并不關(guān)心所傳送的內(nèi)容。可以利用這種特點(diǎn)來設(shè)置規(guī)則,讓它阻止所有沒有經(jīng)過你系統(tǒng)授權(quán)的tcp連接:# iptables -t filter -a input -i eth0 -p tcp -syn -j drop 這里的 -i指的是網(wǎng)卡, -p 則是指協(xié)議, -syn則表示帶有syn 標(biāo)識(shí)設(shè)置的tcp數(shù)據(jù)包。syn用于初始化一個(gè)tcp連接,如果自己機(jī)器上沒有運(yùn)行任何服務(wù)器,別人也就不會(huì)向你發(fā)送 syn數(shù)據(jù)包。7有狀態(tài)的數(shù)據(jù)包的檢測(cè)前邊的例子把每一個(gè)數(shù)據(jù)包看成是獨(dú)立的,而不是相互關(guān)聯(lián)的,依靠的是數(shù)據(jù)包的頭信息。 iptables會(huì)檢查數(shù)據(jù)

16、包的源和目的ip 地址、源和目的端口、流入數(shù)據(jù)包的順序號(hào)、tcp先后順序的信息及頭標(biāo)記(syn 、ack 、fin、rst等)的狀態(tài), 即它會(huì)跟蹤整個(gè)連接會(huì)話,從而使整個(gè)過濾過程是相互關(guān)聯(lián)的。8共享一個(gè)internet連接網(wǎng)絡(luò)地址翻譯和ip 偽裝都可以實(shí)現(xiàn)多臺(tái)主機(jī)共享一個(gè)internet連接,這個(gè)局域網(wǎng)可以是 linux 和 windows系統(tǒng)組成的多系統(tǒng)局域網(wǎng)。假設(shè)現(xiàn)在有一臺(tái)機(jī)器,配有兩個(gè)網(wǎng)卡, 其中 eth0 為“公共”網(wǎng)卡,eth1 為“私有”網(wǎng)卡,即eth0 被分配了一個(gè)靜態(tài)的、可路由的ip 地址,而eth1 被分配了一個(gè)私有的、不能路由的ip,該 ip 是屬于該局域網(wǎng)子網(wǎng)的。要實(shí)現(xiàn)上

17、述功能,需要向nat 和 filter表中添加一些鏈:# iptables -t nat -a postrouting -o eth0 -j masquerade # iptables -t filter -a forward -i eth0 -o eth1 -m state -state related,established -j accept # iptables -t filter -a forward -i eth1 -o eth0 -j accept 這顯示了有狀態(tài)的數(shù)據(jù)包檢測(cè)的價(jià)值。請(qǐng)注意,這里是如何實(shí)現(xiàn)流入數(shù)據(jù)包只有在屬于一個(gè)已經(jīng)存在的連接時(shí)才被允許,而所有來自局域網(wǎng)內(nèi)流向外的

18、數(shù)據(jù)包則都允許通過。第一條規(guī)則讓所有流出的信息看起來都是來自防火墻機(jī)器的,而并不會(huì)顯示出防火墻后面還有一個(gè)局域網(wǎng)。下面的命令為forward和 postrouting鏈設(shè)置缺省的策略,在使用偽裝時(shí),有一個(gè)缺省的 postrouting drop策略非常重要,否則就可能有心懷惡意的用戶突破網(wǎng)關(guān)后偽裝自己的身份。# iptables -t filter -p forward drop # iptables -t nat -p postrouting drop 下面的命令為撥號(hào)連接設(shè)置,它可以動(dòng)態(tài)地分配ip 地址:# iptables -t nat -a postrouting -o ppp0 -j

19、 masquerade 9運(yùn)行服務(wù)器時(shí)的情況有時(shí)也會(huì)把服務(wù)器放置在防火墻后面,這時(shí)iptables就需要知道從哪兒通過數(shù)據(jù)包,設(shè)置如下所示:# iptables -t nat -a prerouting -i eth0 -p tcp -dport 80 -j dnat -to 0:80 # iptables -t nat -a prerouting -i eth0 -p tcp -dport 25 -j dnat -to 1:25 10規(guī)則的保存到現(xiàn)在為止,所有的例子都是在命令行中進(jìn)行的。在測(cè)試新的規(guī)則時(shí),這是一種很好的方式, 但一旦測(cè)試結(jié)果令人滿意

20、,就可以將它們保存為腳本??梢允褂?iptables-save 命令來實(shí)現(xiàn):$ iptables-save iptables-script 信息包過濾表中的所有規(guī)則都被保存在文件iptables-script中。無論何時(shí)再次引導(dǎo)系統(tǒng),都可以使用iptables-restore命令將規(guī)則集從該腳本文件恢復(fù)到信息包過濾表?;謴?fù)命令如下所示:$ iptables-restore iptables-script 如果愿意在每次引導(dǎo)系統(tǒng)時(shí)自動(dòng)恢復(fù)該規(guī)則集,則可以將上面指定的這條命令放到任何一個(gè)初始化shell腳本中。下面的例子并不是一個(gè)完整的腳本,它只是描述了如何使用變量及提供了一些附加的規(guī)則樣例。#!/bin/sh #為變量賦值iptables=/sbin/iptables lan_net=/24 iface= eth0 lo_iface=lo lo_ip= #加載所需的內(nèi)核/sbin/modprobe ip_conntrack /sbin/modprobe iptable_nat #缺省情況下, ip 轉(zhuǎn)發(fā)都處于不可用狀態(tài),將其設(shè)置為可用狀態(tài):echo 1 /proc/sys/net/ipv4/ip_forward #使 ip 的動(dòng)態(tài)分配功能可用echo 1 /proc/sys/net/ipv4/ip_dy

溫馨提示

  • 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)論