


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、linux防火墻的設(shè)置Linux防火墻配置(一)隨著In ternet規(guī)模的迅速擴(kuò)大,安全問(wèn)題也越來(lái)越重要,而構(gòu)建防火墻是 保護(hù)系統(tǒng)免受侵害的最基本的一種手段。雖然防火墻并不能保證系統(tǒng)絕對(duì)的安 全,但由于它簡(jiǎn)單易行、工作可靠、適應(yīng)性強(qiáng),還是得到了廣泛的應(yīng)用。本章 主要介紹與Linux系統(tǒng)緊密集成的iptables防火墻的工作原理、命令格式,以 及一些應(yīng)用實(shí)例。9.1 iptables防火墻介紹netfilter/iptables 是Linux系統(tǒng)提供的一個(gè)非常優(yōu)秀的防火墻工具,它 完全免費(fèi)、功能強(qiáng)大、使用靈活、占用系統(tǒng)資源少,可以對(duì)經(jīng)過(guò)的數(shù)據(jù)進(jìn)行非 常細(xì)致的控制。本節(jié)首先介紹有關(guān)iptable
2、s防火墻的基本知識(shí),包括netfilter 框架、iptables 防火墻結(jié)構(gòu)與原理、iptables命令格式等內(nèi)容。9.1.1 netfilter 框架Linux內(nèi)核包含了一個(gè)強(qiáng)大的網(wǎng)絡(luò)子系統(tǒng),名為netfilter,它可以為iptables內(nèi)核防火墻模塊提供有狀態(tài)或無(wú)狀態(tài)的包過(guò)濾服務(wù),如NAT IP偽裝等,也可以因高級(jí)路由或連接狀態(tài)管理的需要而修改IP頭信息。netfilter位于Linux網(wǎng)絡(luò)層和防火墻內(nèi)核模塊之間,如圖9-1所示。圖9-1 netfilter 在內(nèi)核中的位置雖然防火墻模塊構(gòu)建在Linux內(nèi)核,并且要對(duì)流經(jīng)IP層的數(shù)據(jù)包進(jìn)行處理, 但它并沒(méi)有改變IP協(xié)議棧的代碼,而是通過(guò)
3、netfilter模塊將防火墻的功能引入IP層,從而實(shí)現(xiàn)防火墻代碼和IP協(xié)議棧代碼的完全分離。netfilter 模塊的 結(jié)構(gòu)如圖9-2所示。IM1 1 in >IMiMi :MM亠uMa圖9-2 netfilter 結(jié)構(gòu)框架圖對(duì)IPv4協(xié)議來(lái)說(shuō),netfilter在IP數(shù)據(jù)包處理流程的5個(gè)關(guān)鍵位置定義了5個(gè)鉤子(hook)函數(shù)。當(dāng)數(shù)據(jù)包流經(jīng)這些關(guān)鍵位置時(shí),相應(yīng)的鉤子函數(shù)就被調(diào) 用。從圖9-2中可以看到,數(shù)據(jù)包從左邊進(jìn)入IP協(xié)議棧,進(jìn)行IP校驗(yàn)以后, 數(shù)據(jù)包被第一個(gè)鉤子函數(shù) PRE_ROUTING理,然后就進(jìn)入路由模塊,由其決定 該數(shù)據(jù)包是轉(zhuǎn)發(fā)出去還是送給本機(jī)。若該數(shù)據(jù)包是送給本機(jī)的,則
4、要經(jīng)過(guò)鉤子函數(shù)LOCAL_IN處理后傳遞給本機(jī)的上層協(xié)議;若該數(shù)據(jù)包應(yīng)該被轉(zhuǎn)發(fā),則它將被鉤子函數(shù)FORWARD理,然后還要經(jīng)鉤子函數(shù)POST_ROUTIN處理后才能傳輸?shù)骄W(wǎng)絡(luò)。本機(jī)進(jìn)程產(chǎn)生的數(shù)據(jù)包 要先經(jīng)過(guò)鉤子函數(shù)LOCAL_OU處理后,再進(jìn)行路由選擇處理,然后經(jīng)過(guò)鉤子函 數(shù)POST_ROUTING理后再發(fā)送到網(wǎng)絡(luò)。%說(shuō)明:內(nèi)核模塊可以將自己的函數(shù)注冊(cè)到鉤子函數(shù)中,每當(dāng)有數(shù)據(jù)包經(jīng)過(guò)該鉤子點(diǎn)時(shí),鉤 子函數(shù)就會(huì)按照優(yōu)先級(jí)依次調(diào)用這些注冊(cè)的函數(shù),從而可以使其他內(nèi)核模塊參與對(duì)數(shù)據(jù)包的 處理。這些處理可以是包過(guò)濾、 NAT以及用戶自定義的一些功能。9.1.2 iptables 防火墻內(nèi)核模塊netfil
5、ter框架為內(nèi)核模塊參與IP層數(shù)據(jù)包處理提供了很大的方便,內(nèi)核的防火墻模塊正是通過(guò)把自己的函數(shù)注冊(cè)到n etfilter的鉤子函數(shù)這種方式介入了對(duì)數(shù)據(jù)包的處理。這些函數(shù)的功能非常強(qiáng)大,按照功能來(lái)分的話主要有4種,包括連接跟蹤、數(shù)據(jù)包過(guò)濾、網(wǎng)絡(luò)地址轉(zhuǎn)換( NAT和對(duì)數(shù)據(jù)包進(jìn)行修改。 其中,NAT還分為SNATCH DNAT分別表示源網(wǎng)絡(luò)地址轉(zhuǎn)換和目的網(wǎng)絡(luò)地址轉(zhuǎn)換, 內(nèi)核防火墻模塊函數(shù)的具體分布情況如圖9-3所示。由圖9-3可以看出,防火墻模塊在 netfilter 的LOCAL_IN FORWARD LOCAL_OUT個(gè)位置分別注冊(cè)了數(shù)據(jù)包過(guò)濾函數(shù),數(shù)據(jù)包經(jīng)過(guò)這些位置時(shí),防火 墻模塊要對(duì)數(shù)據(jù)包進(jìn)
6、行過(guò)濾。這三個(gè)位置也稱為三條鏈,名稱分別為INPUTFORWARD OUTPUT它們共同組成了一張過(guò)濾表,每條鏈可以包含各種規(guī)則, 每一條規(guī)則都包含0個(gè)或多個(gè)匹配以及一個(gè)動(dòng)作。當(dāng)數(shù)據(jù)包滿足所有的匹配時(shí), 則過(guò)濾函數(shù)將執(zhí)行設(shè)定的動(dòng)作,以便對(duì)數(shù)據(jù)包進(jìn)行過(guò)濾的。圖9-3 iptables防火墻內(nèi)核模塊結(jié)構(gòu)框架圖%注意:這些規(guī)則的次序是很重要的,過(guò)濾函數(shù)對(duì)數(shù)據(jù)包執(zhí)行了某一規(guī)則動(dòng)作后,對(duì)數(shù)據(jù)包 的處理即告結(jié)束,即使這個(gè)數(shù)據(jù)包還滿足后面其他規(guī)則的所有匹配,也不會(huì)執(zhí)行那些規(guī)則所 設(shè)定的動(dòng)作。從圖9-3中可以看出,除了過(guò)濾表以外,在PRE_ROUTINGOCAL_OU和POST_ ROUTING :個(gè)位置各有
7、一條有關(guān)NAT的鏈,名稱分別為PREROUTINGOUTPU和 POSTROUTING它們組成了 NAT表。NAT鏈里面也可以包含各種規(guī)則,它指出了 如何對(duì)數(shù)據(jù)包的地址進(jìn)行轉(zhuǎn)換。此外,5個(gè)鉤子函數(shù)位置的mangle鏈還組成了一張mangle表,這個(gè)表的主 要功能是根據(jù)規(guī)則修改數(shù)據(jù)包的一些標(biāo)志位,例如 TTL、TOS等,也可以在內(nèi)核 空間為數(shù)據(jù)包設(shè)置一些標(biāo)志。防火墻內(nèi)的其他規(guī)則或程序(如 tc等)可以利用 這種標(biāo)志對(duì)數(shù)據(jù)包進(jìn)行過(guò)濾或高級(jí)路由。以上介紹的是iptables防火墻的內(nèi)部結(jié)構(gòu),Linux系統(tǒng)還提供了 iptables 防火墻的用戶接口,它可以在上述各張表所包含的鏈中添加規(guī)則,或者修改、
8、 刪除規(guī)則,從而可以根據(jù)需要構(gòu)建自己的防火墻。具體來(lái)說(shuō),用戶是通過(guò)輸入 iptables命令來(lái)實(shí)現(xiàn)上述功能的。9.1.3 iptables命令格式在RHEL 5中,iptables 命令由iptables-1.3.5-1.2.1 軟件包提供,默認(rèn) 時(shí),系統(tǒng)已經(jīng)安裝了該軟件包,因此,用戶可以直接輸入iptables命令對(duì)防火墻中的規(guī)則進(jìn)行管理。iptables命令相當(dāng)復(fù)雜,具體格式如下所示。iptables -t 表名v命令 鏈名規(guī)則號(hào)規(guī)則-j目標(biāo)-t選項(xiàng)用于指定所使用的表,iptables 防火墻默認(rèn)有filter 、nat和mangle 3張表,也可以是用戶自定義的表。表中包含了分布在各個(gè)位
9、置的鏈,iptables命令所管理的規(guī)則就是存在于各種鏈中的。該選項(xiàng)不是必需的,如果未指定一個(gè)具體的表,則默認(rèn)使用的是filter 表。命令選項(xiàng)是必須要有的,它告訴iptables要做什么事情,是添加規(guī)則、修 改規(guī)則還是刪除規(guī)則。有些命令選項(xiàng)后面要指定具體的鏈名稱,而有些可以省 略,此時(shí),是對(duì)所有的鏈進(jìn)行操作。還有一些命令要指定規(guī)則號(hào)。具體的命令 選項(xiàng)名稱及其與后續(xù)選項(xiàng)的搭配形式如下所示。示例1:-A v鏈名 v規(guī)則功能:在指定鏈的末尾添加一條或多條規(guī)則。示例2:-D v鏈名 v規(guī)則-D v鏈名 v規(guī)則號(hào)功能:從指定的鏈中刪除一條或多條規(guī)則??梢园凑找?guī)則的序號(hào)進(jìn)行刪除, 也可以刪除滿足匹配條件
10、的規(guī)則。示例3:-R v鏈名 v規(guī)則號(hào) v規(guī)則功能:在指定的鏈中用新的規(guī)則置換掉某一規(guī)則號(hào)的舊規(guī)則。示例4:-I v鏈名 規(guī)則號(hào)v規(guī)則功能:在給出的規(guī)則序號(hào)前插入一條或多條規(guī)則,如果沒(méi)有指定規(guī)則號(hào),則 默認(rèn)是1。示例5:-L 鏈名功能:列出指定鏈中的所有規(guī)則,如果沒(méi)有指定鏈,則所有鏈中的規(guī)則都將 被列出。示例6:-F 鏈名功能:刪除指定鏈中的所有規(guī)則,如果沒(méi)有指定鏈,則所有鏈中的規(guī)則都將 被刪除。示例7:-N 鏈名功能:建立一個(gè)新的用戶自定義鏈。示例8:-X 鏈名功能:刪除指定的用戶自定義鏈,這個(gè)鏈必須沒(méi)有被引用,而且里面也不包 含任何規(guī)則。如果沒(méi)有給出鏈名,這條命令將試著刪除每個(gè)非內(nèi)建的鏈。
11、示例9:-P 鏈名 目標(biāo)功能:為指定的鏈設(shè)置規(guī)則的默認(rèn)目標(biāo),當(dāng)一個(gè)數(shù)據(jù)包與所有的規(guī)則都不匹 配時(shí),將采用這個(gè)默認(rèn)的目標(biāo)動(dòng)作。示例10:-E 舊鏈名 新鏈名功能:重新命名鏈名,對(duì)鏈的功能沒(méi)有影響。以上是有關(guān)iptables命令格式中有關(guān)命令選項(xiàng)部分的解釋。iptables命令 格式中的規(guī)則部分由很多選項(xiàng)構(gòu)成,主要指定一些IP數(shù)據(jù)包的特征。例如,上一層的協(xié)議名稱、源IP地址、目的IP地址、進(jìn)出的網(wǎng)絡(luò)接口名稱等,下面列 出構(gòu)成規(guī)則的常見(jiàn)選項(xiàng)。-pv協(xié)議類型 >:指定上一層協(xié)議,可以是 icmp、tcp、udp和all-svIP地址/掩碼 > :指定源IP地址或子網(wǎng)。 -d<IP地址
12、腌碼:指定目的IP地址或子網(wǎng)。-i<網(wǎng)絡(luò)接口 > :指定數(shù)據(jù)包進(jìn)入的網(wǎng)絡(luò)接口名稱。 -0<網(wǎng)絡(luò)接口 >:指定數(shù)據(jù)包岀去的網(wǎng)絡(luò)接口名稱。%注意:上述選項(xiàng)可以進(jìn)行組合,每一種選項(xiàng)后面的參數(shù)前可以加“!,表示取反。對(duì)于-p選項(xiàng)來(lái)說(shuō),確定了協(xié)議名稱后,還可以有進(jìn)一步的子選項(xiàng),以指定 更細(xì)的數(shù)據(jù)包特征。常見(jiàn)的子選項(xiàng)如下所示。-p tcp -sport <port>:指定 TCP 數(shù)據(jù)包的源端口。-p tcp -dport <port>:指定TCP數(shù)據(jù)包的目的端口。 -p tcp -syn :具有SYN標(biāo)志的TCP數(shù)據(jù)包,該數(shù)據(jù)包要發(fā)起一個(gè)新的TCP連接。-
13、p udp -sport <port>:指定 UDP 數(shù)據(jù)包的源端口。-p udp -dport <port>:指定UDP數(shù)據(jù)包的目的端口。-p icmp -icmp-type <type>:指定 icmp 數(shù)據(jù)包的類型,可以是echo-reply、echo-request 等。上述選項(xiàng)中,port可以是單個(gè)端口號(hào),也可以是以port1:port2表示的端口范圍。每一選項(xiàng)后的參數(shù)可以加“! ”,表示取反。上面介紹的這些規(guī)則選項(xiàng)都是iptables內(nèi)置的,iptables軟件包還提供了 一套擴(kuò)展的規(guī)則選項(xiàng)。使用時(shí)需要通過(guò)-m選項(xiàng)指定模塊的名稱,再使用該模塊 提
14、供的選項(xiàng)。下面列出幾個(gè)模塊名稱和其中的選項(xiàng),大部分的選項(xiàng)也可以通過(guò)“!”取反。-m multiport -sports <port, port, 功能:指定數(shù)據(jù)包的多個(gè)源端口,也可以以port1:port2的形式指定一個(gè)端口范圍。功能:指定數(shù)據(jù)包的多個(gè)目的端口,也可以以port1:port2的形式指定一個(gè)端口范圍。-m multiport - ports <port, port,功能:指定數(shù)據(jù)包的多個(gè)端口,包括源端口和目的端口,也可以以 port1:port2的形式指定一個(gè)端口范圍。-m state -state <state>功能:指定滿足某一種狀態(tài)的數(shù)據(jù)包,stat
15、e可以是INVALID、ESTABLISHED NEW和RELATE等,也可以是它們的組合,用“,”分隔。-m connlimit -connlimit-above <n>功能:用于限制客戶端到一臺(tái)主機(jī)的TCP并發(fā)連接總數(shù),n是一個(gè)數(shù)值。-m mac -mac-source <address>功能:指定數(shù)據(jù)包的源 MAC地址,address是xx:xx:xx:xx:xx:xx 形式的48 位數(shù)。-m選項(xiàng)可以提供的模塊名和子選項(xiàng)內(nèi)容非常多,為iptables提供了非常強(qiáng)大、細(xì)致的功能,所有的模塊名和子選項(xiàng)可以通過(guò)“man iptables ”命令查看iptables命令的
16、手冊(cè)頁(yè)獲得。最后,iptables命令中的-j選項(xiàng)可以對(duì)滿足規(guī)則的數(shù)據(jù)包執(zhí)行指定的操作, 其后的“目標(biāo)”可以是以下內(nèi)容。 -j ACCEPT :將與規(guī)則匹配的數(shù)據(jù)包放行,并且該數(shù)據(jù)包將不再與其他規(guī)則匹配,而是跳向下一條鏈 繼續(xù)處理。 -j REJECT :拒絕所匹配的數(shù)據(jù)包,并向該數(shù)據(jù)包的發(fā)送者回復(fù)一個(gè)ICMP錯(cuò)誤通知。該處理動(dòng)作完成后,數(shù)據(jù)包將不再與其他規(guī)則匹配,而且也不跳向下一條鏈。 -j DROP :丟棄所匹配的數(shù)據(jù)包,不回復(fù)錯(cuò)誤通知。該處理動(dòng)作完成后,數(shù)據(jù)包將不再與其他規(guī)則匹 配,而且也不跳向下一條鏈。 -j REDIRECT :將匹配的數(shù)據(jù)包重定向到另一個(gè)位置,該動(dòng)作完成后,會(huì)繼續(xù)與
17、其他規(guī)則進(jìn)行匹配。-j LOG :將與規(guī)則匹配的數(shù)據(jù)包的相關(guān)信息記錄在日志( /var/log/message )中,并繼續(xù)與其他規(guī)則 匹配。-j <規(guī)則鏈名稱 >:數(shù)據(jù)包將會(huì)傳遞到另一規(guī)則鏈,并與該鏈中的規(guī)則進(jìn)行匹配。除了上述目標(biāo)動(dòng)作外,還有一些與NATt關(guān)的目標(biāo),將在9.4節(jié)中講述。所有的目標(biāo)也可以通過(guò)查看iptables 命令的手冊(cè)頁(yè)獲得。9.2 iptables 主機(jī)防火墻主機(jī)防火墻主要用于保護(hù)防火墻所在的主機(jī)免受外界的攻擊,當(dāng)一臺(tái)服務(wù)器為外界提供比較重要的服務(wù),或者一臺(tái)客戶機(jī)在不安全的網(wǎng)絡(luò)環(huán)境中使用時(shí), 都需要在計(jì)算機(jī)上安裝防火墻。本節(jié)主要介紹iptables主機(jī)防火墻規(guī)
18、則的配置, 包括iptables防火墻的運(yùn)行與管理、RHEL5默認(rèn)防火墻規(guī)則的解釋、用戶根據(jù) 需要添加自己的防火墻規(guī)則等內(nèi)容。9.2.1 iptables防火墻的運(yùn)行與管理RHEL 5默認(rèn)安裝時(shí),已經(jīng)在系統(tǒng)中安裝了 iptables 軟件包,可以用以下命 令查看。rootlocalhost # rpm -qa | grep iptablesiptables-1.3.5-1.2.1 iptables-ipv6-1.3.5-1.2.1#一般情況下,iptable開(kāi)機(jī)時(shí)都已經(jīng)默認(rèn)運(yùn)行,但與其他一些服務(wù)不同, iptables的功能是管理內(nèi)核中的防火墻規(guī)則,不需要常駐內(nèi)存的進(jìn)程。如果對(duì) 防火墻的配置做
19、了修改,并且想保存已經(jīng)配置的iptables 規(guī)則,可以使用以下命令。# /etc/rc.d/init.d/iptables save此時(shí),所有正在使用的防火墻規(guī)則將保存到 /etc/sysco nfig/iptables 文件 中,可以用以下命令查看該文件的內(nèi)容。# more /etc/sysconfig/iptables# Generated by iptables-save v1.3.5 on Fri Jan 16 14:58:31 2009*filter:INPUT ACCEPT 0:0:FORWARD ACCEPT 0:0:OUTPUT ACCEPT 2237:2371316:RH-
20、Firewall-1-INPUT - 0:0-A INPUT -j RH-Firewall-1-INPUT-A FORWARD -j RH-Firewall-1-INPUT-A RH-Firewall-1-INPUT -i lo -j ACCEPT-A RH-Firewall-1-INPUT -p icmp -m icmp -icmp-type any -j ACCEPT-A RH-Firewall-1-INPUT -p esp -j ACCEPT-A RH-Firewall-1-INPUT -p ah -j ACCEPT-A RH-Firewall-1-INPUT -d 5
21、1 -p udp -m udp -dport 5353 -j ACCEPT-A RH-Firewall-1-INPUT -p udp -m udp -dport 631 -j ACCEPT-A RH-Firewall-1-INPUT -p tcp -m tcp -dport 631 -j ACCEPT-A RH-Firewall-1-INPUT -m state -state RELATED,ESTABLISHED -j ACCEPT-A RH-Firewall-1-INPUT -p tcp -m state -state NEW -m tcp -dport 21 -j ACCEPT-A RH
22、-Firewall-1-INPUT -p tcp -m state -state NEW -m tcp -dport 22 -j ACCEPT-A RH-Firewall-1-INPUT -p tcp -m state -state NEW -m tcp -dport 80 -j ACCEPT-A RH-Firewall-1-INPUT -p tcp -m state -state NEW -m tcp -dport 25 -j ACCEPT-A RH-Firewall-1-INPUT -p tcp -m state -state NEW -m tcp -dport 808 -j ACCEPT
23、-A RH-Firewall-1-INPUT -p tcp -m state -state NEW -m tcp -dport 8080 -j ACCEPT可以看到,/etc/sysconfig/iptables文件中包含了一些iptables 規(guī)則,這些規(guī)則的形式與iptables 命令類似,但也有區(qū)別。%注意:一般不建議用戶手工修改這個(gè)文件的內(nèi)容,這個(gè)文件只用于保存啟動(dòng)iptables時(shí),需要自動(dòng)應(yīng)用的防火墻規(guī)則。以上看到的實(shí)際上是默認(rèn)安裝 RHEL 5時(shí)該文件中的內(nèi)容,其所確定的規(guī)則 的解釋見(jiàn)9.2.2小節(jié)。還有一種保存iptables 規(guī)則的方法是使用iptables-save 命令,
24、格式如下:# iptables-save > abc此時(shí),正在使用的防火墻規(guī)則將保存到abc文件中。如果希望再次運(yùn)行iptables,可以使用以下命令。# /etc/rc.d/init.d/iptables start上述命令實(shí)際上是清空防火墻所有規(guī)則后,再按/etc/sysco nfig/iptables文件的內(nèi)容重新設(shè)定防火墻規(guī)則。還有一種復(fù)原防火墻規(guī)則的命令如下:# iptables-restore < abc此時(shí),由iptables-save 命令保存在abc文件中的規(guī)則將重新載入到防火墻 中。如果使用以下命令,將停止iptables的運(yùn)行。# /etc/rc.d/init
25、.d/iptables stop上述命令實(shí)際上是清空防火墻中的規(guī)則,與“ iptables -F”命令類似。此 外,/etc/sysconfig目錄的iptables-config 文件是iptables 防火墻的配置文件,去掉注釋后的初始內(nèi)容和解釋如下:配置1:IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp"功能:當(dāng) iptables 啟動(dòng)時(shí),載入 ip_conntrack_netbios_ns和ip_conntrack_ftp 兩個(gè) iptables 模塊。配置2:IPTABLES_MODULES_U
26、NLOAD="yes"功能:當(dāng)iptables重啟或停止時(shí),是否卸載所載入的模塊,yes表示是。配置3:IPTABLES_SAVE_ON_STOP="no"功能:當(dāng)停止iptables時(shí),是否把規(guī)則和鏈保存到/etc/sysconfig/iptables文件,no 表示否。配置4:IPTABLES_SAVE_ON_RESTART="no"功能:當(dāng)重啟iptables時(shí),是否把規(guī)則和鏈保存到/etc/sysconfig/iptables文件,no 表示否。配置5:IPTABLES_SAVE_COUNTER="no"功
27、能:當(dāng)保存規(guī)則和鏈時(shí),是否同時(shí)保存計(jì)數(shù)值,no表示否。配置6:IPTABLES_STATUS_NUMERIC="yes"功能:輸出iptables狀態(tài)時(shí),是否以數(shù)字形式輸出IP地址和端口號(hào),yes 表示是。配置7:IPTABLES_STATUS_VERBOSE="no"功能:輸出iptables狀態(tài)時(shí),是否包含輸入輸出設(shè)備,no表示否。配置8:IPTABLES_STATUS_LINENUMBERS="yes"功能:輸出iptables狀態(tài)時(shí),是否同時(shí)輸出每條規(guī)則的匹配數(shù),yes表示922 RHEL 5開(kāi)機(jī)時(shí)默認(rèn)的防火墻規(guī)則在Linux
28、系統(tǒng)中,可以通過(guò)使用iptables 命令構(gòu)建各種類型的防火墻。RHEL 5操作系統(tǒng)默認(rèn)安裝時(shí),iptables防火墻已經(jīng)安裝,并且開(kāi)機(jī)后會(huì)自動(dòng)添加了 一些規(guī)則,這些規(guī)則實(shí)際上是由/etc/sysconfig目錄中的iptables文件決定的??梢酝ㄟ^(guò)“iptables-L”命令查看這些默認(rèn)添加的規(guī)則。# iptables -L#INPUT鏈中的規(guī)則Chain INPUT (policy ACCEPT)targetprot opt sourceRH-Firewall-1-INPUT all - anywhereChain FORWARD (policy ACCEPT) targetprotop
29、t sourceRH-Firewall-1-INPUT all - anywhereChain OUTPUT (policy ACCEPT) targetprotopt sourceChain RH-Firewall-1-INPUT (2 references)destinationanywhere# 規(guī)則 1# FORWARD鏈中的規(guī)則destinationanywhere#規(guī)則 2# OUTPUT鏈中的規(guī)則destination#自定義的 RH-Firewall-1-INPUT 鏈中的規(guī)則,被其他鏈引用兩次targetprot opt sourcedestinationACCEPTall
30、-anywhereanywhere#規(guī)則3ACCEPTicmp-anywhereanywhereicmp any#規(guī)則4ACCEPTesp -anywhereanywhere#規(guī)則5ACCEPTah-anywhereanywhere#規(guī)則6ACCEPTudp -anywhere51udp dpt:mdns#規(guī)則7ACCEPTudp -anywhereanywhereudp dpt:ipp#規(guī)則8ACCEPTtcp -anywhereanywheretcp dpt:ipp#規(guī)則9ACCEPT tcp - anywhere anywherestate NEW tcp dpt:ft
31、p# 規(guī)則 11ACCEPTtcp-anywhere anywherestate NEW tcp dpt:ssh#規(guī)則12ACCEPTtcp-anywhereanywherestate NEW tcp dpt:http #規(guī)則13ACCEPTtcp-anywhereanywherestate NEW tcp dpt:smtp #規(guī)則14REJECTall-anywhereanywhere reject-with icmp-host-prohibited# 規(guī)則 15#由于上面的iptables命令沒(méi)有用-t選項(xiàng)指明哪一張表,也沒(méi)有指明是哪一 條鏈,因此默認(rèn)列出的是filter 表中的規(guī)則鏈。由
32、以上結(jié)果可以看出,filter 表中總共有4條鏈。其中,INPUT FORWARD OUTPU鏈?zhǔn)莾?nèi)置的,而 RH-Firewall-1-INPUT 鏈?zhǔn)怯脩糇约禾砑拥摹? 規(guī)則列在前面列出的防水墻規(guī)則中,每一條規(guī)則列出了5項(xiàng)內(nèi)容。target列表示規(guī)則的動(dòng)作目標(biāo)。prot列表示該規(guī)則指定的上層協(xié)議名稱,all表示所有的協(xié) 議。opt列出了規(guī)則的一些選項(xiàng)。source列表示數(shù)據(jù)包的源IP地址或子網(wǎng),而 dest in atio n 列表示數(shù)據(jù)包的目的IP地址或子網(wǎng),any where表示所有的地址。 除了上述5列以外,如果存在,每一條規(guī)則的最后還要列出一些子選項(xiàng),如 RH-Firewall-1
33、-INPUT 鏈中的規(guī)則 4 等。如果執(zhí)行iptables 命令時(shí)加了 -v選項(xiàng),則還可以列出每一條規(guī)則當(dāng)前匹配 的數(shù)據(jù)包數(shù)、字節(jié)數(shù),以及要求數(shù)據(jù)包進(jìn)來(lái)和出去的網(wǎng)絡(luò)接口。如果加上-n選項(xiàng),則不對(duì)顯示結(jié)果中的IP地址和端口做名稱解析,直接以數(shù)字的形式顯示。 還有,如果加上“ -line- numbe”選項(xiàng),可以在第一列顯示每條規(guī)則的規(guī)則號(hào)。2 規(guī)則解釋INPUT鏈中的規(guī)則1其target列的內(nèi)容是RH-Firewall-1-INPUT ,opt列是 all , source和desti nation 列均為any where,表示所有的數(shù)據(jù)包都交給自定 義的RH-Firewall-1-INPUT
34、鏈去處理。FORWARD的規(guī)則2與規(guī)則1完全一樣。 OUTPU®中沒(méi)有規(guī)則。在自定義的RH-Firewall-1-INPUT 鏈中,列出了很多的規(guī)則,規(guī)則3表示接 收所有的數(shù)據(jù)包。需要注意的是,如果在iptables中加-v選項(xiàng)列出這條規(guī)則時(shí), 將會(huì)看到in列是lo,即要求數(shù)據(jù)包是從環(huán)回接口中進(jìn)來(lái)的,而不是任意網(wǎng)絡(luò)接口進(jìn)來(lái)的數(shù)據(jù)包都接收。規(guī)則4表示所有icmp數(shù)據(jù)包都接收,即其他計(jì)算機(jī)ping本機(jī)時(shí),予以接收, 而且在OUTPU鏈中沒(méi)有規(guī)則,因此本機(jī)的ICMP回復(fù)數(shù)據(jù)包也能順利地進(jìn)入網(wǎng) 絡(luò),被對(duì)方收到。規(guī)則5和規(guī)則6表示接收所有的esp和ah協(xié)議的數(shù)據(jù)包,這 兩種協(xié)議屬于IPv6協(xié)議
35、。規(guī)則7表示目的地址是51,目的端口是mdns的UDF數(shù)據(jù)包允許 通過(guò)。51是一種組播地址,mdns是端口號(hào)的一種名稱。如果執(zhí)行 iptables 命令時(shí)加了 -n選項(xiàng),則會(huì)顯示數(shù)字5353,它是組播地址的DNS端口。規(guī)則8和規(guī)則9表示允許所有目的端口是ipp的UDP和TCP數(shù)據(jù)包通過(guò),ipp 是端口 631的名稱解析,它是用于網(wǎng)絡(luò)打印服務(wù)的端口。規(guī)則10表示所有狀態(tài)是RELATED口 ESTABLISHE的數(shù)據(jù)包通過(guò),RELATE狀態(tài)表示數(shù)據(jù)包要新建一個(gè) 連接,而且這個(gè)要新建的連接與現(xiàn)存的連接是相關(guān)的,如FTP的數(shù)據(jù)連接。ESTABLISHE表示本機(jī)與對(duì)方
36、建立連接時(shí),對(duì)方回應(yīng)的數(shù)據(jù)包。規(guī)則11至規(guī)則14表示允許目的端口是ftp、ssh、http和smtp,狀態(tài)是NEW 的TCP數(shù)據(jù)包通過(guò),狀態(tài)為NEV即意味著這個(gè)TCP數(shù)據(jù)包將與主機(jī)發(fā)起一個(gè) TCP 連接。這幾條規(guī)則的端口對(duì)應(yīng)的都是最常見(jiàn)的網(wǎng)絡(luò)服務(wù),它們的端口號(hào)分別是 21、22、80和25。最后一條規(guī)則15表示拒絕所有的數(shù)據(jù)包,并向?qū)Ψ交貞?yīng) icmp-host-prohibited 數(shù)據(jù)包。3 補(bǔ)充解釋需要再次提醒的是,這些規(guī)則是有次序的。當(dāng)一個(gè)數(shù)據(jù)包進(jìn)入 RH-Firewall-1-INPUT 鏈后,將依次與規(guī)則3至規(guī)則15進(jìn)行比較。按照這些規(guī) 則的目標(biāo)設(shè)置,如果數(shù)據(jù)包能與規(guī)則3至14中的任
37、一條匹配,則該數(shù)據(jù)包將被接收。如果都不能匹配,則肯定能和規(guī)則15匹配,于是數(shù)據(jù)包被拒絕。由于RH-Firewall-1-INPUT 鏈?zhǔn)潜籌NPUT鏈調(diào)用的,如果要返回到INPUT鏈, 需要執(zhí)行名為RETURI的目標(biāo)動(dòng)作。%說(shuō)明:在FORWARD鏈中也調(diào)用了 RH-Firewall-1-INPUT鏈,即數(shù)據(jù)包如果不是發(fā)送給本機(jī)的,當(dāng)經(jīng)過(guò) FORWARD 鏈時(shí),還要進(jìn)入 RH-Firewall-1-INPUT 鏈,與規(guī)則3到規(guī)則15 再次進(jìn)行匹配。9.2.3管理主機(jī)防火墻規(guī)則可以有很多功能種類的防火墻,有些是安裝在某一臺(tái)主機(jī)上,主要用于保護(hù) 主機(jī)本身的安全;有些是安裝在網(wǎng)絡(luò)中的某一節(jié)點(diǎn),專門(mén)用于
38、保護(hù)網(wǎng)絡(luò)中其他 計(jì)算機(jī)的安全;也有一些可以為內(nèi)網(wǎng)的客戶機(jī)提供NAT服務(wù),使內(nèi)網(wǎng)的客戶機(jī)共用一個(gè)公網(wǎng)IP,以便節(jié)省IP地址資源。下面首先介紹一下主機(jī)防火墻的應(yīng)用 示例。當(dāng)一臺(tái)服務(wù)器為外界提供比較重要的服務(wù),或者一臺(tái)客戶機(jī)在不安全的網(wǎng)絡(luò) 環(huán)境中使用時(shí),都需要在計(jì)算機(jī)上安裝防火墻,以最大限度地防止主機(jī)受到外 界的攻擊。9.2.2小節(jié)介紹的開(kāi)機(jī)時(shí)默認(rèn)的防火墻設(shè)置非常典型,用戶可以根據(jù) 自己主機(jī)的功能關(guān)閉已經(jīng)開(kāi)放的端口,或者開(kāi)放更多的端口,以便允許符合更 多規(guī)則的數(shù)據(jù)包通過(guò)。例如,為了使主機(jī)能為外界提供telnet服務(wù),除了配置好tel net服務(wù)器外, 還需要開(kāi)放TCP23號(hào)端口。因?yàn)樵谀J(rèn)的防火墻配
39、置中,并不允許目的端口為 23的TCP數(shù)據(jù)包進(jìn)入主機(jī)。為了開(kāi)放 TCP23號(hào)端口,可以有兩種辦法,一種是 在RH-Firewall-1-INPUT鏈中加入相應(yīng)的規(guī)則,還有一種是把規(guī)則加到INPUT鏈中。但需要注意的是,規(guī)則是有次序的,如果使用以下命令,則是沒(méi)有效果 的。# iptables -A RH-Firewall-1-INPUT -p tcp -dport 23 -j ACCEPT上述命令執(zhí)行后,可以再次查看規(guī)則情況。# iptables -L -n -line-numberChain RH-Firewall-1-INPUT (2 references)destinationnum ta
40、rgetprot opt source11 ACCEPTtcp - /0/0 state NEW tcp dpt:8012ACCEPTtcp - O.O.O.O/O/0 state NEW tcp dpt:2513REJECTall - O.O.O.O/OO.O.O.O/O reject-with icmp-host-prohibited14ACCEPTtcp - O.O.O.O/OO.O.O.O/O tcp dpt:23#新添加的規(guī)則可以看到,新添加的規(guī)則位于最后的位置。 由于所有的數(shù)據(jù)包都可以與目標(biāo)動(dòng)作為REJECT勺規(guī)則號(hào)為13的規(guī)則匹配,而RE
41、JECT弋表的是拒絕,因此數(shù)據(jù)包到達(dá)新添加的規(guī)則前肯定已被丟棄,這條規(guī)則是不會(huì)被使用的。為了解決這13的前面。下面是個(gè)問(wèn)題,需要把上述規(guī)則插入到現(xiàn)有的規(guī)則中,要位于規(guī)則正確的開(kāi)放TCP23號(hào)端口的命令。# iptables -I RH-Firewall-1-INPUT 11 -p tcp -dport 23 -j ACCEPT以上命令中,“ -I RH-Firewall-1- INPUT11 ” 表示在 RH-Firewall-1-INPUT鏈原來(lái)的規(guī)則11前面插入一條新規(guī)則,規(guī)則內(nèi)容是接受目的端口為23的TCP數(shù)據(jù)包。為了刪除前面添加的無(wú)效規(guī)則,可以執(zhí)行以下命令。# iptables -D
42、RH-Firewall-1-INPUT 1515是第一次添加的那條無(wú)效規(guī)則此時(shí)的規(guī)則號(hào),也可能是其他的數(shù)值,可根據(jù)具體顯示結(jié)果加以改變。如果希望新加的規(guī)則與原來(lái)的規(guī)則 11、12等類似,可以執(zhí)行以下命令。# iptables -I RH-Firewall-1-INPUT 11 -m state -state NEW -p tcp -dport 23 -j ACCEPT以上是在RH-Firewall-1-INPUT鏈中添加規(guī)則,以開(kāi)放TCP23號(hào)端口。還有一種開(kāi)放TCP23號(hào)端口的方法是在INPUT鏈中添加規(guī)則,具體命令如下所示。# iptables -I INPUT 1 -p tcp -dpo
43、rt 23 -j ACCEPT# iptables -L -line-numberChain INPUT (policy ACCEPT)num targetprot optsourcedestination1 ACCEPTtcp - anywhere anywhere tcp dpt:telnet2 RH-Firewall-1-INPUT all - anywhere anywhere%注意:添加的規(guī)則也要位于原來(lái)規(guī)則2的前面,否則,任何數(shù)據(jù)包都匹配規(guī)則2,將會(huì)跳到RH-Firewall-1-INPUT 鏈,并且不再回來(lái)。因此,添加在規(guī)則2后面的規(guī)則都是無(wú)效的。前面介紹的是在RHEL5默認(rèn)防火
44、墻規(guī)則的基礎(chǔ)上添加用戶自己的防火墻規(guī) 則,以開(kāi)放TCP23號(hào)端口。在很多的時(shí)候,用戶可能希望從最初的狀態(tài)開(kāi)始, 構(gòu)建自己的防火墻。為了從零開(kāi)始設(shè)置iptables防火墻,可以用以下命令清空防火墻中所有的規(guī)則。# iptables -F然后再根據(jù)要求,添加自己的防火墻規(guī)則。一般情況下,保護(hù)防火墻所在主 機(jī)的規(guī)則都添加在INPUT內(nèi)置鏈中,以擋住外界訪問(wèn)本機(jī)的部分?jǐn)?shù)據(jù)包。本機(jī) 向外發(fā)送的數(shù)據(jù)包只經(jīng)過(guò) OUTPU鏈,一般不予限制。如果不希望本機(jī)為外界數(shù) 據(jù)包提供路由轉(zhuǎn)發(fā)功能,可以在 FORWARD中添加一條拒絕一切數(shù)據(jù)包通過(guò)的 規(guī)則,或者干脆在內(nèi)核中設(shè)置不轉(zhuǎn)發(fā)任何數(shù)據(jù)包。9.2.4常用的主機(jī)防火墻規(guī)
45、則當(dāng)設(shè)置主機(jī)防火墻時(shí),一般采取先放行,最后全部禁止的方法。也就是說(shuō), 根據(jù)主機(jī)的特點(diǎn),規(guī)劃出允許進(jìn)入主機(jī)的外界數(shù)據(jù)包,然后設(shè)計(jì)規(guī)則放行這些 數(shù)據(jù)包。如果某一數(shù)據(jù)包與放行數(shù)據(jù)包的規(guī)則都不匹配,則與最后一條禁止訪 問(wèn)的規(guī)則匹配,被拒絕進(jìn)入主機(jī)。下面列出一些主機(jī)防火墻中常用的iptables命令及其解釋,這些命令添加的規(guī)則都放在filter 表的INPUT鏈中。示例1:iptables -A INPUT -p tcp -dport 80 -j ACCEPT功能:允許目的端口為80的TCP數(shù)據(jù)包通過(guò)INPUT鏈。說(shuō)明:這種數(shù)據(jù)包一般是用來(lái)訪問(wèn)主機(jī)的Web服務(wù),如果主機(jī)以默認(rèn)的端口提供Web服務(wù),應(yīng)該用
46、這條規(guī)則開(kāi)放 TCP8C端口。iptables -A INPUT -s /24 -i ethO -j DROP功能:從接口 eth0進(jìn)來(lái)的、源IP地址的前3字節(jié)為192.168.1的數(shù)據(jù)包予 以丟棄。說(shuō)明:需要注意這條規(guī)則的位置,如果匹配這條規(guī)則的數(shù)據(jù)包同時(shí)也匹配前 面的規(guī)則,而且前面的規(guī)則是放行的,則這條規(guī)則對(duì)匹配的數(shù)據(jù)包將不起作用。示例3:iptables -A INPUT -p udp -sport 53 -dport 1024:65535 -j ACCEPT功能:在INPUT鏈中允許源端口號(hào)為 53,目標(biāo)端口號(hào)為1024至65535的UDP 數(shù)據(jù)包通過(guò)。說(shuō)明:這種
47、特點(diǎn)的數(shù)據(jù)包是當(dāng)本機(jī)查詢DNS時(shí),DNSK務(wù)器回復(fù)的數(shù)據(jù)包。示例4:iptables -A INPUT -p tcp -tcp-flags SYN,RST,ACK SYN -j ACCEPT功能:SYN RST ACK 3個(gè)標(biāo)志位中SYN位為1,其余兩個(gè)為0的TCP數(shù)據(jù) 包予以放行。符合這種特征的數(shù)據(jù)包是發(fā)起TCP連接的數(shù)據(jù)包。說(shuō)明:“ -tcp- flags ”子選項(xiàng)用于指定TCP數(shù)據(jù)包的標(biāo)志位,可以有SYN ACK FIN、RST UR&口 PSH共6種。當(dāng)這些標(biāo)志位作為“ -tcp- flags ”的參數(shù) 時(shí),用空格分成兩部分。前一部分列出有要求的標(biāo)志位,用“,”分隔;后一部 分列出要求值為1的標(biāo)志位,如果有多個(gè),也用“,”分隔,未在后一部分列出 的標(biāo)志位其值要求為0。%注意:這條命令因?yàn)榻?jīng)常使用,可以用-syn”代替-tcp- flags SYN,RST,ACK SYN ” 。示例5:iptables -A INPUT -p tcp -m multiport -dport 20:23,53,80,110 -j ACCEPT功能:接收目的端口為20至23、53、80和110號(hào)的TCP數(shù)據(jù)包。
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年上海晉元高級(jí)中學(xué)高一英語(yǔ)5月月考試題及答案
- 成長(zhǎng)路上的選擇議論文的作文15篇
- 2025至2030年中國(guó)傳感器專用雙路直流穩(wěn)壓電源行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國(guó)交直流點(diǎn)焊機(jī)行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國(guó)不銹鋼塑復(fù)合板行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國(guó)七層共擠PA薄膜行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國(guó)PVC-U排水管件行業(yè)投資前景及策略咨詢報(bào)告
- 宜昌市猇亭區(qū)事業(yè)單位2025年統(tǒng)一公開(kāi)招聘工作人員筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 2025至2030年中國(guó)靛紅酸酐行業(yè)市場(chǎng)發(fā)展?jié)摿巴顿Y策略研究報(bào)告
- 2025至2030年中國(guó)鈦合金加工設(shè)備行業(yè)市場(chǎng)調(diào)查研究及未來(lái)趨勢(shì)預(yù)測(cè)報(bào)告
- 水上交通行業(yè)安全培訓(xùn)
- 《院感培訓(xùn)護(hù)士》課件
- 幼兒園公開(kāi)課:大班語(yǔ)言《相反國(guó)》課件(優(yōu)化版)
- 醫(yī)院污泥處置管理制度
- 護(hù)坡混凝土施工方案
- 訂購(gòu)單模板(訂貨單模板)
- 施工組織設(shè)計(jì)施工方案報(bào)審表
- 3D掃描與模型重建
- 雅馬哈YS12編程手冊(cè)
- 縣政府工作調(diào)動(dòng)文件范本
- 5G(UE)中PDU會(huì)話建立流程(消息)
評(píng)論
0/150
提交評(píng)論