防火墻作為一種網絡或系統之間強制實行訪問控制的機制,是確保網絡安全的重要手段。針對不同的需求和應用環境,可以量身定制出不同的防火墻系統。防火墻大到可由若干路由器和堡壘主機構成,也可小到僅僅是網絡操作系統上一個防火墻軟件包所提供的包過濾功能。 在眾多網絡防火墻產品中,Linux操作系統上的防火墻軟件特點顯著。首先是Linux操作系統作為一個類Unix網絡操作系統,在系統的穩定性、健壯性及價格的低廉性方面都獨具優勢。更為重要的是,Linux不但本身的源代碼完全開放,而且系統包含了建立Internet網絡環境所需要的所有服務軟件包,如Apache Web服務器、DNS服務器、Mail服務器、Database服務器等。同樣,基于Linux的防火墻軟件不但具有強大的功能,而且大部分都是開放軟件。
隨著Internet的飛速發展,安全問題越來越重要。利用Linux構建企業網深受中小企業的青睞,而利用Linux構建企業網的防火墻系統也成為眾多中小企業的理想選擇。 Linux 內核從1.1版本開始,就已經具備包過濾功能。在2.0內核中,開始采用Ipfwadm來操作內核的包過濾規則。到2.2版本時,Linux內核采用了 Ipchains來控制內核的包過濾規則。發展到2.4.x時,Ipchains被一個全新的包過濾管理工具Iptables所替代。新發布的2.6版內核也在安全方面進行了改進。因此,無論擁有哪個版本的Linux內核,無論選擇哪個版本的Linux來構建自己的企業網,都可以利用現有的系統構建出一個理想實用的防火墻。 防火墻系統可分為包過濾型、應用級網關(也叫代理服務器型防火墻)和電路級網關三種基本類型。
Linux提供的防火墻軟件包內置于Linux內核中,是一種基于包過濾型的防火墻實現技術。其中心思想是根據網絡層IP包頭中的源地址、目的地址及包類型等信息來控制包的流向。更徹底的過濾則是檢查包中的源端口、目的端口以及連接狀態等信息。 Netfilter是Linux核心中一個通用架構,用于擴展各種服務的結構化底層服務。它提供一系列的表(tables),每個表由若干鏈(chains)組成,而每條鏈中可以由一條或數條規則(rule)組成。它可以和其它模塊(如iptables模塊和nat模塊)結合起來實現包過濾功能。Iptables是一個管理內核包過濾的工具,可以加入、插入或刪除核心包過濾表格中的規則。實際上真正來執行這些過濾規則的是Netfilter 。
硬件平臺:
① R.H linux9.0系統pc一臺(FireWall)三個8139 TP-LINK 網卡
Eth0(IP:218.197.93.115)
Eth1(IP:192.168.1.1)
Eth2(IP:192.168.2.1)
② R.H linux9.0系統pc一臺B(SERVER)一個8139 TP-LINK 網卡
C(IP:192.168.1.2)
③ 筆記本A一臺雙系統(windows Xp和R.H linux9.0)一個8139網卡,Cute-ftp軟件一套
A(IP:192.168.2.2)
④windows Xp系統pc一臺一個8139網卡,Cute-ftp軟件一套
B(IP:218.197.93.161)
⑤RJ45交叉線若干
實驗目的:
一> 實現FireWall的NAT功能讓A能訪問WAN(218.197.93.254)
二>在SERVER上開啟ftp,web服務(簡單的)使得A,B正常訪問C
三>開啟防火墻
1. 內網可以訪問外網
內網的用戶顯然需要自由地訪問外網。在這一策略中,防火墻需要進行源地址轉換。
2. 內網可以訪問DMZ
此策略是為了方便內網用戶使用和管理DMZ中的服務器。
3. 外網不能訪問內網
很顯然,內網中存放的是內部數據,這些數據不允許外網的用戶進行訪問。
4.外網可以訪問DMZ
DMZ中的服務器本身就是要給外界提供服務的,所以外網必須可以訪問DMZ。同時,外網訪問DMZ需要由防火墻完成對外地址到服務器實際地址的轉換。
5.DMZ不能訪問內網
很明顯,如果違背此策略,則當入侵者攻陷DMZ時,就可以進一步進攻到內網的重要數據。
6.DMZ不能訪問外網
DMZ中的服務器專門用于給外界提供服務的,所以外網必須可以訪問DMZ,而DMZ中的服務器則不允許主動訪問外網。
實驗步驟:
一>實現路由功能:
首先來配置eth0。給這個網絡接口分配地址218.197.93.115,運行下列命令:
# ifconfig eth0 218.197.93.115 netmask 255.255.255.0
為了使這個地址不再計算機重新啟動后消失,編輯/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
增加一條靜態路由:
# route add -net 218.197.93.0 netmask 255.255.255.0
接下來,配置eth1,eth1與192.168.1.0網段相連,分配給它的地址是192.168.1.1,使用ifconfig命令為它配置參數:
# 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
增加一條靜態路由:
# route add -net192.168.1.0 netmask 255.255.255.0
最后配置eth2,它連接192.168.2.0網段,分配的IP地址是192.168.2.1,執行下列命令:
# 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
增加一條靜態路由:
# route add -net 192.168.2.0 netmask 255.255.255.0
這樣網絡中就有三條靜態路由記錄了:
# 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
還要為系統增加一條缺省路由,因為缺省的路由是把所有的數據包都發往它的上一級網關,因此增加如下的缺省路由記錄:
# route add default gw 218.197.93.254
這樣系統的靜態路由表建立完成,它的內容是
# 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服務:
#service httpd start
#service vsftpd start
三>在防火墻上初始化設置
◆防火墻上初始化
#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
◆最后一步,要增加系統的IP轉發功能,執行如下命令打開ip轉發功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
四>在防火墻上實現端口地址映射:
◆允許A機器訪問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向內部發送已建立連接的包和相關連接的包。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 218.197.93.115
◆允許WAN發往www,ftp服務器的包并把對網關的www,ftp請求轉發到內部的www,ftp服務器上。
#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不能訪問A,B
iptables -A FORWARD -s 192.168.1.0/24 –d 0.0.0.0/0 -i eth1 -j DROP