- 相關(guān)推薦
基于LINUX操作系統(tǒng) 的防火墻技巧及其具體實(shí)現(xiàn)
摘要 本文介紹了LINUX下常用的防火墻規(guī)矩配置軟件Ipchains;從實(shí)現(xiàn)原理、配置法子 以及功效特性的角度描繪了LINUX防火墻的三種功效;并給出了一個(gè)LINUX防火墻實(shí)例作為參考。
要害字 LINUX防火墻 ipchains 包過(guò)濾 代理 IP裝作
1 前言
防火墻作為網(wǎng)絡(luò)安全措施 中的一個(gè)首要組成部分,一直受到人們的廣泛關(guān)注。LINUX是這幾年一款異軍崛起的操作系統(tǒng) ,以其公開(kāi)的源代碼、強(qiáng)大穩(wěn)固的網(wǎng)絡(luò)功效和大宗的免費(fèi)資源受到業(yè)界的廣泛贊美 。LINUX防火墻其實(shí)是操作系統(tǒng) 本身所自帶的一個(gè)功效模塊。通過(guò)安裝特定的防火墻內(nèi)核,LINUX操作系統(tǒng) 會(huì)對(duì)接管到的數(shù)據(jù)包按必然的策略進(jìn)行處理 。而用戶所要做的,就是應(yīng)用特定的配置軟件(如ipchains)去定制適宜自己的“數(shù)據(jù)包處理 策略”。
2 LINUX防火墻配置軟件—Ipchains
Ipchains是LINUX 2.1及其以上版本中所帶的一個(gè)防火墻規(guī)矩管理程序。用戶可以應(yīng)用
它來(lái)建立 、編輯 、刪除系統(tǒng) 的防火墻規(guī)矩。但通常,需要 自己創(chuàng)立一個(gè)防火墻規(guī)矩腳本 /etc/rc.d/rc.firewall,并使系統(tǒng) 啟動(dòng)時(shí)主動(dòng)運(yùn)行這個(gè)腳本。
一個(gè)LINUX防火墻系統(tǒng) 的安全機(jī)制是通過(guò)Input、Output、Forward這三個(gè)“防火鏈”來(lái)實(shí)現(xiàn)的。而用戶正是應(yīng)用 ipchains在這三個(gè)“鏈”上分辨 創(chuàng)立一套“防火規(guī)矩 ”,來(lái)完成對(duì)到來(lái)數(shù)據(jù)包層層限制的目標(biāo),其組織結(jié)構(gòu) 如圖1所示。
其中,每個(gè)鏈都包孕一組由用戶創(chuàng)立的過(guò)濾規(guī)矩,數(shù)據(jù)包依次達(dá)到每個(gè)鏈,并對(duì)比其中的每條規(guī)矩,直到找出匹配規(guī)矩并履行相應(yīng)策略(如通過(guò)、回絕等),否則履行默認(rèn)策略。實(shí)際中,數(shù)據(jù)包在達(dá)到 Input鏈之前還要進(jìn)行測(cè)試和正常性反省,在到路由表之前還要被確定 是否被裝作,這些,在本圖中都被省略了。
Ipchains 經(jīng)常應(yīng)用的命令行款式如下:
Ipchains –A chain [–i interface] [–p protocol] [[!] -y]
[–s source-ip [port]] [-d destination-ip [port]] –j policy [-l]
對(duì)各選項(xiàng)的闡明如下表:
-A <chain> 添加一規(guī)矩到鏈尾。chain可為input、output、forward。
-i <interface> 指定本規(guī)矩實(shí)用的網(wǎng)絡(luò)接口。通常有eth0、eth1、lo、ppp0等。
-p <protocol> 指定本規(guī)矩實(shí)用的IP協(xié)議 ,如tcp、udp、icmp等。
[!] –y -y表明tcp握手中的連接 懇求標(biāo)記位SYN; ! –y 表現(xiàn)對(duì)該懇求的響應(yīng)。
-s src-ip [port] 指明數(shù)據(jù)包的源IP地址,port表現(xiàn)本規(guī)矩實(shí)用的端口號(hào)。
-d dst-ip [port] 指明數(shù)據(jù)包的目標(biāo) IP地址及端口號(hào)。
-j policy 指定本規(guī)矩對(duì)匹配數(shù)據(jù)包的處理 策略:ACCEPT、DENY或REJECT。
-l 在系統(tǒng) 日志/var/log/messages中記載 與該規(guī)矩匹配的數(shù)據(jù)包。
3 LINUX防火墻的幾種常見(jiàn)功效
由于每一個(gè)用戶的請(qǐng)求和所處的環(huán)境都不一樣,LINUX防火墻會(huì)根據(jù) 用戶的設(shè)置實(shí)現(xiàn)各種不同的功效。但一般說(shuō)來(lái),以下三種功效是大多數(shù)用戶最常用到的。
3.1 包過(guò)濾
對(duì)數(shù)據(jù)包進(jìn)行過(guò)濾可以說(shuō)是任何防火墻所具備的最根基的功效,而LINUX防火墻本身從某個(gè)角度也可以說(shuō)是一種“包過(guò)濾防火墻”。在LINUX防火墻中,操作系統(tǒng) 內(nèi)核對(duì)到來(lái)的每一個(gè)數(shù)據(jù)包進(jìn)行反省,從它們的包頭中提取出所需要 的信息,如源IP地址、目標(biāo) IP地址、源端口號(hào)、目標(biāo)端口號(hào)等,再與已建立 的防火規(guī)矩逐條進(jìn)行對(duì)比,并履行所匹配規(guī)矩的策略,或履行默認(rèn)策略,這個(gè)歷程在圖1中已經(jīng)形象的表現(xiàn) 出來(lái)。
值得注意的是,在制定 防火墻過(guò)濾規(guī)矩時(shí)通常有兩個(gè)根基的策略法子 可供選擇:一個(gè)是默認(rèn)容許一切,即在接管所有數(shù)據(jù)包的根基上明確 地阻撓那些特別的、不盼望收到的數(shù)據(jù)包;還有一個(gè)策略就是默認(rèn)阻撓一切,即首先阻撓所有的數(shù)據(jù)包通過(guò),然后再根據(jù) 所盼望供給的服務(wù)去一項(xiàng)項(xiàng)容許需要 的數(shù)據(jù)包通過(guò)。一般說(shuō)來(lái),前者使啟動(dòng)和運(yùn)行防火墻變得更加容易,但卻更容易為自己留下安全隱患。
通過(guò)在防火墻外部接口處對(duì)進(jìn)來(lái)的數(shù)據(jù)包進(jìn)行過(guò)濾,可以有效地禁止絕大多數(shù)有意或無(wú)意地網(wǎng)絡(luò)攻擊,同時(shí),對(duì)發(fā)出的數(shù)據(jù)包進(jìn)行限制,可以明確 地指定內(nèi)部網(wǎng)中哪些主機(jī)可以造訪互聯(lián)網(wǎng),哪些主機(jī)只能享用哪些服務(wù)或登陸哪些站點(diǎn),從而實(shí)現(xiàn)對(duì)內(nèi)部主機(jī)的管理?梢哉f(shuō),在對(duì)一些小型內(nèi)部局域網(wǎng)進(jìn)行安全保護(hù)和網(wǎng)絡(luò)管理時(shí),包過(guò)濾確鑿是一種簡(jiǎn)略而有效的手法。
3.2 代理
LINUX防火墻的代理功效是通過(guò)安裝相應(yīng)的****實(shí)現(xiàn)的。它使那些不具備公共IP的內(nèi)部主機(jī)也能造訪互聯(lián)網(wǎng),并且很好地屏蔽了內(nèi)部網(wǎng),從而有效保障了內(nèi)部主機(jī)的安全。為了明確地描繪這一首要功效的實(shí)現(xiàn)歷程,特假設(shè)以下范例情況 ,如圖2所示:
steven為內(nèi)部網(wǎng)中一臺(tái)IP是192.168.0.2的主機(jī),其上安裝有IE5.0涉獵器,并配置為應(yīng)用防火墻主機(jī)192.168.0.1:8080作為代理。firewall就是我們討論的LINUX防火墻,有兩個(gè)網(wǎng)絡(luò)接口,分辨 是內(nèi)部接口eth1=192.168.0.1、外部接口eth0=202.117.120.1。在firewall主機(jī)上安裝有Web****“squid”,并配置其代理端口為8080。www.263.net為263網(wǎng)站的Web服務(wù)器,IP為211.100.31.131,Web服務(wù)端口80。
如果要從steven主機(jī)造訪 263的主頁(yè),其具體的通信 歷程如圖中所示:
(1)IE通過(guò)steven的非專用端口1110 (在1024~65535之間隨機(jī)產(chǎn)生 )與防火墻的代理
端口8080建立 連接 ,懇求 “http://www.263.net”頁(yè)面。
(2)squid代理接管到懇求后,先查找域名“www.263.net”,得到地址211.100.31.131(該
步驟圖中省略),然后通過(guò)防火墻端口1050與該地址的80端口建立 一個(gè)連接 ,懇求頁(yè)面。
(3)www.263.net服務(wù)器接到懇求后將頁(yè)面?zhèn)鹘osquid代理。
(4)防火墻代理得到頁(yè)面后,把數(shù)據(jù)復(fù)制到(1)中所建立 的連接 上,IE得到數(shù)據(jù)并
將“www.263.net”頁(yè)面顯示出來(lái)。
通過(guò)以上描繪,可以明確地領(lǐng)會(huì) 到內(nèi)部主機(jī)、LINUX代理防火墻以及外部服務(wù)器之間是如何進(jìn)行數(shù)據(jù)傳輸?shù),那么,在LINUX防火墻內(nèi)部,那些“防火鏈”又是如何工作的呢?其工作歷程如圖3所示:
steven主機(jī)發(fā)來(lái)的數(shù)據(jù)包經(jīng)由內(nèi)部接口eth1進(jìn)來(lái)后,首先接管INPUT鏈的“反省 ”:系統(tǒng) 內(nèi)核從包頭中提取出信息,與INPUT鏈中所有實(shí)用于eth1接口的過(guò)濾規(guī)矩逐個(gè)對(duì)比,直到匹配通過(guò)。之后,該數(shù)據(jù)包被轉(zhuǎn)發(fā)給本地的代理歷程。同樣,代理歷程發(fā)送給遠(yuǎn)程Web服務(wù)器的數(shù)據(jù)包在從防火墻外部接口發(fā)送出去之前,也要經(jīng)過(guò)OUTPUT鏈的“反省 ”,即與OUTPUT鏈中所有實(shí)用于eth0接口的規(guī)矩一一對(duì)比。返回的歷程正好與上述相反,在此就不再贅述
為了實(shí)現(xiàn)以上歷程,我們必須 在防火墻規(guī)矩腳本中添加以下規(guī)矩:
ipchains –A input –i eth1 –p tcp –s 192.168.0.2 1110 –d 192.168.0.1 8080 –j ACCEPT
ipchains –A output –i eth0 –p tcp –s 202.117.120.1 1050 –d 211.100.31.131 80 –j ACCEPT
ipchains –A input –i eth0 –p tcp !-y –s 211.100.31.131 80 –d 202.117.120.1 1050 –j ACCEPT
ipchains –A output –i eth1 –p tcp ! –y –s 192.168.0.1 8080 –d 192.168.0.2 1110 –j ACCEPT
從上文對(duì)代理功效的原理和實(shí)現(xiàn)的敘述中,我們可以看出,LINUX防火墻實(shí)際上扮演了一個(gè)“代理網(wǎng)關(guān)”的角色。內(nèi)部主機(jī)和遠(yuǎn)程服務(wù)器分辨 都只與防火墻進(jìn)行連接 ,而真正的“起點(diǎn)”和“終點(diǎn)”之間卻毫無(wú)接洽。
3.3 IP裝作
IP裝作(IP Masquerade)是LINUX操作系統(tǒng) 自帶的又一個(gè)首要功效。通過(guò)在系統(tǒng) 內(nèi)核增長(zhǎng)相應(yīng)的裝作模塊,內(nèi)核可以主動(dòng)地對(duì)經(jīng)過(guò)的數(shù)據(jù)包進(jìn)行“裝作”,即修正包頭中的源目標(biāo) IP信息,以使外部主機(jī)誤覺(jué)得該包是由防火墻主機(jī)發(fā)出來(lái)的。這樣做,可以有效解決應(yīng)用內(nèi)部保存 IP的主機(jī)不能造訪互聯(lián)網(wǎng)的問(wèn)題,同時(shí)屏蔽了內(nèi)部局域網(wǎng)。這一點(diǎn),與前面所講的代理所達(dá)到 的目標(biāo)是很類似 的。
關(guān)于IP裝作在LINUX防火墻內(nèi)部的具體實(shí)現(xiàn)歷程,請(qǐng)看圖4。
仍以圖2中所示的范例情況 為例,steven主機(jī)的IE歷程直接與遠(yuǎn)程的Web服務(wù)器建立 一個(gè)連接 。當(dāng)數(shù)據(jù)包達(dá)到防火墻的內(nèi)部接口后,照樣要例行INPUT鏈的反省。之后,數(shù)據(jù)包被送到FORWARD鏈,接管系統(tǒng) 內(nèi)核的“裝作處理 ”,即將包頭中的源IP地址改為防火墻外部接口eth0的地址,并在系統(tǒng) 中做下記載 ,以便一會(huì)兒對(duì)其回應(yīng)包的目標(biāo) IP進(jìn)行“恢復(fù)”。這樣,當(dāng)該數(shù)據(jù)包順利從外部接口出來(lái)時(shí),其包頭中源IP已被改為202.117.120.1。遠(yuǎn)程服務(wù)器會(huì)覺(jué)得這是從防火墻的合法地址發(fā)來(lái)的,從而對(duì)其做出響應(yīng)。當(dāng)遠(yuǎn)程服務(wù)器返回的回應(yīng)包達(dá)到防火墻時(shí),先經(jīng)過(guò)INPUT鏈,然后會(huì)根據(jù) 系統(tǒng) 關(guān)于IP裝作的記載 對(duì)數(shù)據(jù)包的目標(biāo) IP進(jìn)行恢復(fù),即將202.117.120.1改為192.168.0.2,最后再經(jīng)過(guò)OUTPUT鏈返回到steven主機(jī)。
為了實(shí)現(xiàn)這個(gè)歷程,我們必須 在防火墻規(guī)矩腳本中添加以下規(guī)矩:
ipchains –A input –i eth1 –p tcp –s 192.168.0.2 1110 –d 211.100.31.131 80 –j ACCEPT
ipchains –A output –i eth0 –p tcp –s 202.117.120.1 1050 –d 211.100.31.131 80 –j ACCEPT
ipchains –A input –i eth0 –p tcp !-y –s 211.100.31.131 80 –d 202.117.120.1 1050 –j ACCEPT
ipchains –A output –i eth1 –p tcp ! –y –s 211.100.31.131 80 –d 192.168.0.2 1110 –j ACCEPT
ipchains –A forward –i eth0 –s 192.168.0.2 1110 –d 211.100.31.131 80 –j MASQ
與代理功效對(duì)比而言,IP裝作不需要 安裝相應(yīng)的****,數(shù)據(jù)包的裝作對(duì)用戶來(lái)說(shuō)都是“透明”的,并且全部歷程都是在IP層實(shí)現(xiàn),因此實(shí)現(xiàn)速度較快。錯(cuò)誤是不能對(duì)經(jīng)過(guò)的數(shù)據(jù)包作詳細(xì)的記載 。
以上介紹了LINUX防火墻在實(shí)際的設(shè)置中常用到的三種功效。但一般說(shuō)來(lái),用戶在創(chuàng)立自己的防火墻規(guī)矩腳本時(shí),可以根據(jù) 自己的需要 將這三種功效組合起來(lái)實(shí)現(xiàn)。
4 一個(gè)LINUX防火墻實(shí)例
以下是我前一段光陰為某辦公室搭建的LINUX防火墻的實(shí)際配置,給出以供參考。
有兩個(gè)局域網(wǎng),LAN1地址:202.117.120.65/255.255.255.248
為公共網(wǎng)絡(luò)IP,LAN2地址為192.168.0.0/255.255.255.0,為內(nèi)部保存地址。LINUX防火墻有兩個(gè)內(nèi)部接口:202.117.120.70接LAN1;192.168.0.1接LAN2。
現(xiàn)對(duì)防火墻進(jìn)行配置,使LAN2的主機(jī)通過(guò)IP裝作造訪互聯(lián)網(wǎng),但只容許應(yīng)用外部Web*****202.117.112.34的1252端口。LAN1中的主機(jī)被限制應(yīng)用幾種常用的互聯(lián)網(wǎng)服務(wù)(DNS、SMTP、POP3、HTTP和FTP)。
下面就是創(chuàng)立的防火墻規(guī)矩腳本:
#/etc/rc.d/rc.firewall
#!/bin/sh
# eth0---External_interface
# eth1---LAN1_interface
# eth2---LAN2_interface
echo "Starting firewalling . . ."
#Flush any existing rules from all chains
ipchains -F
#Set the default policy to deny
ipchains -P input DENY
ipchains -P output REJECT
ipchains -P forward REJECT
#Enable traffic on the loopback interface
ipchains -A input -i lo -j ACCEPT
ipchains -A output -i lo -j ACCEPT
#Enable the traffic on the eth1
ipchains -A input -i eth1 -j ACCEPT
ipchains -A output -i eth1 -j ACCEPT
#the traffic on the eth2 only enablling using the WEB PROXY
ipchains -A input -i eth2 -p tcp -s 192.168.0.0/24 1024:65535 -d 202.117.112.34 1252 -j ACCEPT
ipchains -A output -i eth2 -p tcp ! -y -s 202.117.112.34 1252 -d 192.168.0.0/24 1024:65535 -j ACCEPT
#Forwarding rules
ipchains -A forward -i eth0 -s 202.117.120.64/29 -j ACCEPT
ipchains -A forward -i eth0 -s 192.168.0.0/24 -j MASQ
ipchains -A forward -i eth1 -d 202.117.120.64/29 -j ACCEPT
#Enable outgoing the packets from LAN on the External_Interface
ipchains -A output -i eth0 -j ACCEPT
#Enable incoming some ICMP messages on eth
# 1.Dest_Unreachable,Service_Unavailable
ipchains -A input -i eth0 -p icmp -s any/0 3 -d 202.117.120.64/29 -j ACCEPT
# 2.Time_Exceeded
ipchains -A input -i eth0 -p icmp -s any/0 11 -d 202.117.120.64/29 -j ACCEPT
# 3.Allow outgoing pings to anywhere
ipchains -A input -i eth0 -p icmp -s any/0 0 -d 202.117.120.64/29 -j ACCEPT
#Enable Proxy of 202.117.112.34:1252
ipchains -A input -i eth0 -p tcp ! -y -s 202.117.112.34 1252 -j ACCEPT
#DNS (53) (DNS:202.117.112.3)—client modes
ipchains -A input -i eth0 -p udp -s 202.117.112.3 53 -d 202.117.120.64/29 1024:65535 -j ACCEPT
ipchains -A input -i eth0 -p tcp ! -y -s 202.117.112.3 53 -d 202.117.120.64/29 1024:65535 -j ACCEPT
#SMTP(25)Enable sending mail through a remote SMTP gateway
ipchains -A input -i eth0 -p tcp ! -y -s any/0 25 -d 202.117.120.64/29 1024:65535 -j ACCEPT
#POP(110)--Enable receiving mail from a remote POP server
ipchains -A input -i eth0 -p tcp ! -y -s any/0 110 -d 202.117.120.64/29 1024:65535 -j ACCEPT
#HTTP(80) --Enable accessing remote WEB sites as a client
ipchains -A input -i eth0 -p tcp ! -y -s any/0 80 -d 202.117.120.64/29 1024:65535 -j ACCEPT
#FTP(20,21) --Enable accessing remote FTP servers
ipchains -A input -i eth0 -p tcp ! -y -s any/0 21 -d 202.117.120.64/29 1024:65535 -j ACCEPT
ipchains -A input -i eth0 -p tcp -s any/0 20 -d 202.117.120.64/29 1024:65535 -j ACCEPT
ipchains -A input -i eth0 -p tcp ! -y -s any/0 1024:65535 -d 202.117.120.64/29 1024:65535 -j ACCEPT
echo "done"
exit 0
5 收?qǐng)稣Z(yǔ)
本文偏重從防火墻內(nèi)部工作歷程的角度分辨 對(duì)LINUX防火墻的包過(guò)濾、代理以及IP裝作功效進(jìn)行了分析,同時(shí)涉及到了一些網(wǎng)絡(luò)配置、用ipchains具體實(shí)現(xiàn)等方面的內(nèi)容。文末給出的實(shí)例已在實(shí)際中調(diào)試通過(guò)。
參考文獻(xiàn)
1 Robert L.Ziegler,《Linux防火墻》國(guó)民郵電出版社,2000.10
2 W.Richard Stevens,《TCP/IP詳解 卷一:協(xié)議 》機(jī)械工業(yè)出版社,2000.4.1
3 Rusty Russell,“Linux IPCHAINS-HOWTO”,netfilter.samba.org,Jul 4,2000
5 Rawn Shah,“Using your old Pentiums and Linux to create a Firewall”,Independent
6 technologist and freelance journalist,September,1999
【基于LINUX操作系統(tǒng) 的防火墻技巧及其具體實(shí)現(xiàn)】相關(guān)文章:
基于minigui的網(wǎng)真機(jī)界面的實(shí)現(xiàn)08-05
淺談企業(yè)并購(gòu)中的管理協(xié)同效應(yīng)及其實(shí)現(xiàn)論文(精選5篇)04-29
ARM Linux啟動(dòng)過(guò)程分析06-17
試論誠(chéng)信及其價(jià)值06-01
試析基于勝任素質(zhì)的薪酬模式構(gòu)建01-03
基于戰(zhàn)略治理的企業(yè)環(huán)境風(fēng)險(xiǎn)研究08-28
隱私權(quán)及其探究06-03
韓愈的師說(shuō)及其影響10-19