防火墻作為一種網(wǎng)絡(luò)或系統(tǒng)之間強(qiáng)制實(shí)行訪問(wèn)控制的機(jī)制,是確保網(wǎng)絡(luò)安全的重要手段。針對(duì)不同的需求和應(yīng)用環(huán)境,可以量身定制出不同的防火墻系統(tǒng)。防火墻大到可由若干路由器和堡壘主機(jī)構(gòu)成,也可小到僅僅是網(wǎng)絡(luò)操作系統(tǒng)上一個(gè)防火墻軟件包所提供的包過(guò)濾功能。 在眾多網(wǎng)絡(luò)防火墻產(chǎn)品中,Linux操作系統(tǒng)上的防火墻軟件特點(diǎn)顯著。首先是Linux操作系統(tǒng)作為一個(gè)類Unix網(wǎng)絡(luò)操作系統(tǒng),在系統(tǒng)的穩(wěn)定性、健壯性及價(jià)格的低廉性方面都獨(dú)具優(yōu)勢(shì)。更為重要的是,Linux不但本身的源代碼完全開放,而且系統(tǒng)包含了建立Internet網(wǎng)絡(luò)環(huán)境所需要的所有服務(wù)軟件包,如Apache Web服務(wù)器、DNS服務(wù)器、Mail服務(wù)器、Database服務(wù)器等。同樣,基于Linux的防火墻軟件不但具有強(qiáng)大的功能,而且大部分都是開放軟件。
隨著Internet的飛速發(fā)展,安全問(wèn)題越來(lái)越重要。利用Linux構(gòu)建企業(yè)網(wǎng)深受中小企業(yè)的青睞,而利用Linux構(gòu)建企業(yè)網(wǎng)的防火墻系統(tǒng)也成為眾多中小企業(yè)的理想選擇。 Linux 內(nèi)核從1.1版本開始,就已經(jīng)具備包過(guò)濾功能。在2.0內(nèi)核中,開始采用Ipfwadm來(lái)操作內(nèi)核的包過(guò)濾規(guī)則。到2.2版本時(shí),Linux內(nèi)核采用了 Ipchains來(lái)控制內(nèi)核的包過(guò)濾規(guī)則。發(fā)展到2.4.x時(shí),Ipchains被一個(gè)全新的包過(guò)濾管理工具Iptables所替代。新發(fā)布的2.6版內(nèi)核也在安全方面進(jìn)行了改進(jìn)。因此,無(wú)論擁有哪個(gè)版本的Linux內(nèi)核,無(wú)論選擇哪個(gè)版本的Linux來(lái)構(gòu)建自己的企業(yè)網(wǎng),都可以利用現(xiàn)有的系統(tǒng)構(gòu)建出一個(gè)理想實(shí)用的防火墻。 防火墻系統(tǒng)可分為包過(guò)濾型、應(yīng)用級(jí)網(wǎng)關(guān)(也叫代理服務(wù)器型防火墻)和電路級(jí)網(wǎng)關(guān)三種基本類型。
Linux提供的防火墻軟件包內(nèi)置于Linux內(nèi)核中,是一種基于包過(guò)濾型的防火墻實(shí)現(xiàn)技術(shù)。其中心思想是根據(jù)網(wǎng)絡(luò)層IP包頭中的源地址、目的地址及包類型等信息來(lái)控制包的流向。更徹底的過(guò)濾則是檢查包中的源端口、目的端口以及連接狀態(tài)等信息。 Netfilter是Linux核心中一個(gè)通用架構(gòu),用于擴(kuò)展各種服務(wù)的結(jié)構(gòu)化底層服務(wù)。它提供一系列的表(tables),每個(gè)表由若干鏈(chains)組成,而每條鏈中可以由一條或數(shù)條規(guī)則(rule)組成。它可以和其它模塊(如iptables模塊和nat模塊)結(jié)合起來(lái)實(shí)現(xiàn)包過(guò)濾功能。Iptables是一個(gè)管理內(nèi)核包過(guò)濾的工具,可以加入、插入或刪除核心包過(guò)濾表格中的規(guī)則。實(shí)際上真正來(lái)執(zhí)行這些過(guò)濾規(guī)則的是Netfilter 。
硬件平臺(tái):
① R.H linux9.0系統(tǒng)pc一臺(tái)(FireWall)三個(gè)8139 TP-LINK 網(wǎng)卡
Eth0(IP:218.197.93.115)
Eth1(IP:192.168.1.1)
Eth2(IP:192.168.2.1)
② R.H linux9.0系統(tǒng)pc一臺(tái)B(SERVER)一個(gè)8139 TP-LINK 網(wǎng)卡
C(IP:192.168.1.2)
③ 筆記本A一臺(tái)雙系統(tǒng)(windows Xp和R.H linux9.0)一個(gè)8139網(wǎng)卡,Cute-ftp軟件一套
A(IP:192.168.2.2)
④windows Xp系統(tǒng)pc一臺(tái)一個(gè)8139網(wǎng)卡,Cute-ftp軟件一套
B(IP:218.197.93.161)
⑤RJ45交叉線若干
實(shí)驗(yàn)?zāi)康模?/STRONG>
一> 實(shí)現(xiàn)FireWall的NAT功能讓A能訪問(wèn)WAN(218.197.93.254)
二>在SERVER上開啟ftp,web服務(wù)(簡(jiǎn)單的)使得A,B正常訪問(wèn)C
三>開啟防火墻
1. 內(nèi)網(wǎng)可以訪問(wèn)外網(wǎng)
內(nèi)網(wǎng)的用戶顯然需要自由地訪問(wèn)外網(wǎng)。在這一策略中,防火墻需要進(jìn)行源地址轉(zhuǎn)換。
2. 內(nèi)網(wǎng)可以訪問(wèn)DMZ
此策略是為了方便內(nèi)網(wǎng)用戶使用和管理DMZ中的服務(wù)器。
3. 外網(wǎng)不能訪問(wèn)內(nèi)網(wǎng)
很顯然,內(nèi)網(wǎng)中存放的是內(nèi)部數(shù)據(jù),這些數(shù)據(jù)不允許外網(wǎng)的用戶進(jìn)行訪問(wèn)。
4.外網(wǎng)可以訪問(wèn)DMZ
DMZ中的服務(wù)器本身就是要給外界提供服務(wù)的,所以外網(wǎng)必須可以訪問(wèn)DMZ。同時(shí),外網(wǎng)訪問(wèn)DMZ需要由防火墻完成對(duì)外地址到服務(wù)器實(shí)際地址的轉(zhuǎn)換。
5.DMZ不能訪問(wèn)內(nèi)網(wǎng)
很明顯,如果違背此策略,則當(dāng)入侵者攻陷DMZ時(shí),就可以進(jìn)一步進(jìn)攻到內(nèi)網(wǎng)的重要數(shù)據(jù)。
6.DMZ不能訪問(wèn)外網(wǎng)
DMZ中的服務(wù)器專門用于給外界提供服務(wù)的,所以外網(wǎng)必須可以訪問(wèn)DMZ,而DMZ中的服務(wù)器則不允許主動(dòng)訪問(wèn)外網(wǎng)。
實(shí)驗(yàn)步驟:
一>實(shí)現(xiàn)路由功能:
首先來(lái)配置eth0。給這個(gè)網(wǎng)絡(luò)接口分配地址218.197.93.115,運(yùn)行下列命令:
# ifconfig eth0 218.197.93.115 netmask 255.255.255.0
為了使這個(gè)地址不再計(jì)算機(jī)重新啟動(dòng)后消失,編輯/etc/sysconfig/network-scripts/ifcfg-eth0文件,
DEVICE = eth0
ONBOOT = yes
BROADCAST = 218.197.93.255
NETWORK = 218.197.93.0
NETMASK = 255.255.255.0
IPADDR = 218.197.93.115
增加一條靜態(tài)路由:
# route add -net 218.197.93.0 netmask 255.255.255.0
接下來(lái),配置eth1,eth1與192.168.1.0網(wǎng)段相連,分配給它的地址是192.168.1.1,使用ifconfig命令為它配置參數(shù):
# ifconfig eth1 192.168.1.1 netmask 255.255.255.0
編輯/etc/sysconfig/network-scripts/ifcfg-eth1文件,
DEVICE = eth1
ONBOOT = yes
BROADCAST = 192.168.1.255
NETWORK = 192.168.1.0
NETMASK = 255.255.255.0
IPADDR = 192.168.1.1
增加一條靜態(tài)路由:
# route add -net192.168.1.0 netmask 255.255.255.0
最后配置eth2,它連接192.168.2.0網(wǎng)段,分配的IP地址是192.168.2.1,執(zhí)行下列命令:
# ifconfig eth2 192.168.2.1 netmask 255.255.255.0
- 5 -
編輯/etc/sysconfig/network-scripts/ifcfg-eth2文件
DEVICE = eth2
ONBOOT = yes
BROADCAST = 192.168.2.255
NETWORK = 192.168.2.0
NETMASK = 255.255.255.0
IPADDR = 192.168.2.1
增加一條靜態(tài)路由:
# route add -net 192.168.2.0 netmask 255.255.255.0
這樣網(wǎng)絡(luò)中就有三條靜態(tài)路由記錄了:
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
218,197.93.115 *255.255.255.0U 0 0 0 eth0
192.168.1.0*255.255.255.0U 0 0 0 eth1
192.168.2.0*255.255.255.0U 0 0 0 eth2
還要為系統(tǒng)增加一條缺省路由,因?yàn)槿笔〉穆酚墒前阉械臄?shù)據(jù)包都發(fā)往它的上一級(jí)網(wǎng)關(guān),因此增加如下的缺省路由記錄:
# route add default gw 218.197.93.254
這樣系統(tǒng)的靜態(tài)路由表建立完成,它的內(nèi)容是
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
218,197.93.115 *255.255.255.0U 0 0 0 eth0
192.168.1.0*255.255.255.0U 0 0 0 eth1
192.168.2.0*255.255.255.0U 0 0 0 eth2
default218.197.93.254 0.0.0.0 UG 0 0 0 eth0
二>在C上開啟www,ftp服務(wù):
#service httpd start
#service vsftpd start
三>在防火墻上初始化設(shè)置
◆防火墻上初始化
#service iptables stop
#iptables -F
#iptables -t nat -F
#iptables -X
#iptables -t nat -X
#iptables -Z
#iptables -t nat -Z
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -P FORWARD DROP
#iptables -t nat -P POSTROUTING DROP
#service iptables start
◆最后一步,要增加系統(tǒng)的IP轉(zhuǎn)發(fā)功能,執(zhí)行如下命令打開ip轉(zhuǎn)發(fā)功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
四>在防火墻上實(shí)現(xiàn)端口地址映射:
◆允許A機(jī)器訪問(wèn)WAN
iptables -A FORWARD -s 192.168.2.0/24 -i eth2 -j ACCEPT
◆A往C的包都允許
iptables -A FORWARD -s 192.168.2.0/24 -d 192.168.1.0/24 -i eth2 -j ACCEPT
◆WAN往A的包都不允許
iptables -t nat -A PREROUTING -s 0.0.0.0/0 -d 192.168.2.0/24 -i eth0 -j DROP
◆允許WAN向內(nèi)部發(fā)送已建立連接的包和相關(guān)連接的包。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 218.197.93.115
◆允許WAN發(fā)往www,ftp服務(wù)器的包并把對(duì)網(wǎng)關(guān)的www,ftp請(qǐng)求轉(zhuǎn)發(fā)到內(nèi)部的www,ftp服務(wù)器上。
#iptables -t nat -A PREROUTING -p tcp --dport 80 -d 218.197.93.115 -s 0.0.0.0/0 -i eth0 -j DNAT --to 192.168.1.2
#iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 192.168.1.2 -i eth0 --dport 80 -j ACCEPT
#iptables -A FORWARD -p tcp -d 0.0.0.0/0 -s 192.168.1.2 -i eth1 --sport 80 ! --syn -j ACCEPT
#iptables -t nat -A PREROUTING -p tcp --dport 20,21 -d 218.197.93.115 -s 0.0.0.0/0 -i eth0 -j DNAT --to 192.168.1.2
#iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 192.168.1.2 -i eth0 --dport 20,21 -j ACCEPT
#iptables -A FORWARD -p tcp -d 0.0.0.0/0 -s 192.168.1.2 -i eth1 --sport 20,21 ! --syn -j ACCEPT
#iptables -t nat -A PREROUTING -s 0.0.0.0/0 -d 192.168.1.0/24 -i eth0 -j DROP
C不能訪問(wèn)A,B
iptables -A FORWARD -s 192.168.1.0/24 –d 0.0.0.0/0 -i eth1 -j DROP