1. 程式人生 > >用iptables構建簡單DMZ防火牆

用iptables構建簡單DMZ防火牆

說明:一般被保護的內部網路可分成兩部分,一部分是內部通訊區,只允許內部使用者訪問,絕對禁止外部使用者訪問,另一部分是停火區DMZ,對外提供有條件的服務。前者是系統的核心子網,後者易受到外部的攻擊,是一個比較危險的子網環境。一方面要求嚴格保護內部子網,另一方面又要滿足DMZ對外提供服務的需要,因此,必須採用分別保護的策略,對上述兩個區域進行保護。兩個區域要儘量獨立,即使DMZ受到外部攻擊,內部子網仍處於防火牆的保護之下。
步驟1:環境構造
充當防火牆的機器是一臺支援iptables的Linux系統,實驗使用Centos6.5-i386裝有三塊網絡卡。
這裡寫圖片描述
一臺有三塊網絡卡的Linux系統主機稱為NAT:(作為網路防火牆)
eth0 : inet addr:10.33.1.142 (連線外網)
eth1: inet addr:192.168.5.125(連線內網的DMZ區)
eth2: inet addr:172.16.10.7 (連線內網的終端)
這裡寫圖片描述


根據實驗拓撲圖設定網路,使得主機NAT中eth0連上外網
這裡寫圖片描述
內網中設定DMZ伺服器的網路引數,將閘道器指向NAT主機的eth1
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
內網一臺測試主機,閘道器指向NAT主機的eth2
這裡寫圖片描述
步驟2:首先啟用路由的轉發功能
這裡寫圖片描述
設定iptables規則,寫在shell指令碼中並儲存執行
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
步驟3測試:(1)確保DMZ已經啟動HTTP服務和FTP伺服器:
這裡寫圖片描述
同時確保NAT主機上沒有提供httpd和vsftpd服務
這裡寫圖片描述
(2)測試內網主機172.16.10.8能否連線外網:
這裡寫圖片描述
(3)測試內網主機172.16.10.8能否訪問DMZ區中192.168.5.131的Web伺服器:
這裡寫圖片描述

(4)驗證內網主機172.16.10.8能訪問DMZ中192.168.5.131的FTP伺服器:
這裡寫圖片描述
(5)驗證外網不能訪問內網
這裡寫圖片描述
(6)驗證外網能訪問DMZ中的FTP伺服器:
這裡寫圖片描述
(7)驗證外網能訪問DMZ中的WEB伺服器:
這裡寫圖片描述
(8)驗證DMZ不可訪問外網且不可訪問內網
這裡寫圖片描述
這裡寫圖片描述
附:iptables指令碼

#!/bin/bash
modprobe ip_nat_ftp

#把ip_nat_ftp模組載入核心,實現對nat,ftp的支援功能

modprobe ip_conntrack_ftp

#把ip_conntrack_ftp模組載入核心實現對ftp會話的跟蹤

iptables -F
iptables -F -t nat iptables -F -t mangle

#以上3條分別清空filter,nat和mangle3張表

iptables -P INPUT DROP
iptables -P OUTPUT DROP

#設定INPUT,OUTPUT 鏈的預設策略為DROP

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

#放行遠端連線,這裡為了方便使用X-shell遠端連線,非必要策略

iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp  --icmp-type 0 -j ACCEPT

#放行ping請求,方便測試網路是否連通

iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -o eht0 -j SNAT --to-source 10.33.1.142

#內網需要自由地訪問外網。在這一策略中,防火牆需要進行源地址轉換。做SNAT,當位於內網網段172.16.0.0/16的客戶機訪問外網時,將其地址轉換為10.33.1.142

iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j DNAT --to-destination 192.168.5.131
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 21 -j DNAT --to-destination 192.168.5.131

#內網可以訪問DMZ ,此策略是為了方便內網使用者使用和管理DMZ中的伺服器。

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#開放DMZ中ftp服務資料連線的被動傳輸模式

iptables -A FORWARD -i eth0 -d 172.16.0.0/16 -p tcp --syn -j DROP

#阻止外網主機直接以內網IP網段作為目標地址訪問內網,一是為了安全,二是為了體現本例的nat功能

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT --to-destination 192.168.5.131
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.5.131

#外網可以訪問DMZ ,DMZ中的伺服器本身就是要給外界提供服務的,所以外網必須可以訪問DMZ。同時,外#網訪問DMZ需要由防火牆完成對外地址到伺服器實際地址的轉換。

iptables -A FORWARD -i eth1 -o eth0 -m state --state NEW -j DROP

#DMZ不能訪問外網 此條策略也有例外,比如DMZ中放置郵件伺服器時,就需要訪問外網,否則將不能正常工作

iptables -A FORWARD -i eth1 -o eth2 -m state --state NEW -j DROP

#DMZ不能訪問內網 ,如果違背此策略,則當入侵者攻陷DMZ時,就可以進一步進攻到內#網的重要資料。