搭建基於netfilter/iptables的防火牆實驗環境(轉)

amyz發表於2007-08-13
搭建基於netfilter/iptables的防火牆實驗環境(轉)[@more@]

  防火牆作為一種網路或系統之間強制實行訪問控制的機制,是確保網路安全的重要手段。針對不同的需求和應用環境,可以量身定製出不同的防火牆系統。防火牆大到可由若干路由器和堡壘主機構成,也可小到僅僅是網路作業系統上一個防火牆軟體包所提供的包過濾功能。 在眾多網路防火牆產品中,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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-955572/,如需轉載,請註明出處,否則將追究法律責任。

相關文章