基於虛擬機環境的計算機網絡安全訪問控制系統的實驗(1)

一、實驗環境

本實驗的拓撲結構如下圖所示,本實驗存在以下系統:

image

實驗環境由一臺主機(Main Host)和兩個基於虛擬機技術實現的虛擬子網組成,主機安裝Linux操作系統,利用其iptables功能實現防火牆。通過虛擬機技術,主機同時充當兩個內網的交換機。路由器由一臺Nercore的無線路由器實現。DMZ區的服務器均安裝Linux系統,內網主機A、B均安裝Windows操作系統。具體配置如下:

1) 路由器的外網(WAN) IP地址爲59.78.51.3,內網(LAN)IP地址設置爲10.10.33.254,掩碼爲255.255.255.0。

2) 防火牆的3個接口eth0、eth1(vboxnet1)和eth2(vboxnet0)分別接路由器、內部網絡和DMZ區,即防火牆的3塊網卡分別與3個網段:10.10.33.0/24、192.168.33.0/24和192.168.22.0/24相連。

l eth0接口地址爲10.10.33.1,網關爲10.10.33.254,子網掩碼爲255.255.255.0。

l eth1(vboxnet1)接口地址爲192.168.33.254,子網掩碼爲255.255.255.0。

l eth2(vboxnet0)接口地址爲192.168.22.1,子網掩碼爲255.255.255.0。

3) 在DMZ區有對外提供服務的Web服務器和郵件服務器。其中Web服務器的IP地址爲192.168.22.41,Mail服務器的IP地址爲192.168.22.40,網關地址都爲192.168.22.1(即防火牆vboxnet0的地址)。內部主機A的IP地址爲192.168.33.40,網關地址爲192.168.33.254(即防火牆vboxnet1的地址),開放Telnet服務,並允許外部主機通過SNAT(靜態網絡地址轉換,Static Network Address Translation)技術進行遠程登陸。

4) 系統策略設計中涉及到主機或網絡地址的地方使用地址變量名,引用方式爲:$變量名。具體的地址變量及其取值爲:

Internal=’192.168.33.0/24’, DMZ=’192.168.1.0/24’

DNSServer=’202.120.2.101’, WWWServer=’ 202.120.2.102’

GlobalA=’10.10.33.100’, GlobalB=’10.10.33.101’

HostA=’192.168.33.40’, HostB=’192.168.33.41’

MailServer=’192.168.1.40’, WebServer=’192.168.1.41’

FireWall=’ 10.10.33.1’, HttpsServer=’216.239.63.83’

FtpServer=’202.38.97.230’, TelnetServer=’202.120.3.1’

二、實驗步驟

1. 構建系統及虛擬主機:

在本機上安裝Ubuntu 9.10系統,利用iptables軟件來實現防火牆的功能。正確安裝配置系統後,再安裝Virtualbox虛擬機軟件來構建虛擬的內網系統。在Virtualbox中新建了4臺主機,分別爲:DMZ-A-UBUNTU-Web,DMZ-B-UBUNTU-Mail,Internal-A-XP,Internal-B-XP,另有一臺Internal-B-98在實驗中沒有用到。

如下圖所示:

clip_image004

2. 配置防火牆及內網主機的網絡服務信息:

1)防火牆的eth0接口作爲拓撲圖中的eth0接口。在Virtualbox的網絡管理中新建了2個網絡適配器vboxnet0和vboxnet1。 vboxnet0對應與拓撲圖中的DMZ區的eth2,vboxnet1對應於拓撲圖中的內網的eth1。各網絡適配器的設置如實驗環境中所述。配置後信息如下圖所示:

clip_image006

2)DMZ-A-UBUNTU-Web這臺虛擬主機用來作爲DMZ區的web服務器。該虛擬主機的eth0網卡連接於防火牆的vboxnet0接口上,IP地址爲192.168.22.41/24,網關爲192.168.22.1。在該主機上安裝了apache程序,用來提供web服務,因爲本次實驗重點是要實踐對於防火牆的配置而不是web服務器的配置,所以在apache程序中僅僅使用了默認的缺省配置,監聽80端口,並使用了一張簡單的網頁來作爲主頁。該虛擬主機的網絡配置信息如下圖所示:

clip_image008

3)DMZ-B-UBUNTU-Mail這臺虛擬主機用來作爲DMZ區的郵件服務器。該虛擬主機的eth0網卡連接於防火牆的vboxnet0接口上,IP地址爲192.168.22.40/24,網關爲192.168.22.1。在該虛擬機上安裝了postfix+sasl+courier-pop等軟件來提供郵件服務功能。郵件功能依舊使用了非常簡單的設置,其中SMTP服務使用25號端口,pop3服務使用110端口。該虛擬主機的網絡配置信息如下圖所示:

clip_image010

4)Internal-A-XP虛擬主機作爲內網中的主機A。該虛擬主機的eth0網卡連接與防火牆的vboxnet1接口上,IP地址爲192.168.33.40/24,網關地址爲:192.168.133.254。該虛擬機作爲內網主機,要能夠正常的訪問外網的資源,並提供了telnet服務,允許外網主機遠程登錄。該虛擬主機的網絡信息配置如下圖所示:

clip_image012

5)Internal-B-XP這臺虛擬主機作爲內網中的主機B。該虛擬主機的eth0網卡連接與防火牆的vboxnet1接口上,IP地址爲192.168.33.41/24,網關地址爲:192.168.133.254。該主機與Internal-A-XP類似,但是不需要開通本機的telnet服務。配置情況在此略過。

3. 配置防火牆的iptables規則:

以下爲一些主要的配置規則及說明:

1) echo 1 >/proc/sys/net/ipv4/ip_forward //啓動轉發功能

2) //設置默認狀態

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT ACCEPT

3) iptables -A INPUT -i lo -j ACCEPT //允許接收lo上的數據包

iptables -A INPUT -i $DInt -j ACCEPT //允許接收內網上的數據包

iptables -A INPUT -i $DDMZ -j ACCEPT //允許接收DMZ區上的數據包

iptables -A INPUT -i $DExt -m state --state ESTABLISHED,RELATED -j ACCEPT

4) iptables -A FORWARD -s $Internal -j ACCEPT//允許轉發從內網來的數據包

iptables -A FORWARD -d $HostA -j ACCEPT//允許轉發到內網主機A的數據包

iptables -A FORWARD -d $DMZ -j ACCEPT//允許轉發到DMZ區的數據包

iptables -A FORWARD -s $DMZ -j ACCEPT//允許轉發從DMZ區來的數據包

iptables -A FORWARD -i $DExt -m state --state ESTABLISHED,RELATED -j ACCEPT

5) //以下爲轉發出去的數據包做SNAT(源地址轉換)的規則樣例

iptables -t nat -A POSTROUTING -o $DExt -s $Internal -p udp --dport 53 -j SNAT --to $FireWall //DNS服務

iptables -t nat -A POSTROUTING -o $DExt -s $Internal -p tcp --dport 80 -j SNAT --to $FireWall //http服務

iptables -t nat -A POSTROUTING -o $DExt -s $Internal -p tcp --dport 23 -j SNAT --to $FireWall //telnet服務

iptables -t nat -A POSTROUTING -o $DExt -s $Internal -p tcp --dport 443 -j SNAT --to $FireWall //https服務

iptables -t nat -A POSTROUTING -o $DExt -s $Internal -p tcp --dport 21 -j SNAT --to $FireWall //ftp服務

iptables -t nat -A POSTROUTING -o $DExt -s $DMZ -p tcp -j SNAT --to $FireWall//DMZ區提供的服務

1) //以下爲接受到的數據包做DNAT(目的地址轉換)的規則樣例

iptables -t nat -A PREROUTING -i $DExt -d $FireWall -p tcp --dport 80 -j DNAT --to $WebServer:80 //http服務

iptables -t nat -A PREROUTING -i $DExt -d $FireWall -p tcp --dport 23 -j DNAT --to $HostA:23 //telnet服務

iptables -t nat -A PREROUTING -i $DExt -d $FireWall -p tcp --dport 25 -j DNAT --to $MailServer:25 //SMTP服務

iptables -t nat -A PREROUTING -i $DExt -d $FireWall -p tcp --dport 110 -j DNAT --to $MailServer:110 //pop3服務

以下爲本次實驗中用到的普通包過濾防火牆的規則(不包含狀態),包括過濾規則和nat:

序號

源IP

源端口

目的IP

目的端口

協議

方向

動作

1

Any

Any

$FireWall

80

TCP

單向

Permit

2

Any

Any

$FireWall

23

TCP

單向

Permit

3

Any

Any

$FireWall

25

TCP

單向

Permit

4

Any

Any

$FireWall

110

TCP

單向

Permit

5

$FireWall

Any

$DNSServer

53

UDP

單向

Permit

6

$FireWall

Any

Any

80

TCP

單向

Permit

7

$FireWall

Any

Any

443

TCP

單向

Permit

8

$FireWall

Any

Any

21

TCP

單向

Permit

9

$FireWall

Any

Any

23

TCP

單向

Permit

10

$DMZ

80

Any

Any

TCP

單向

Permit

11

$DMZ

25

Any

Any

TCP

單向

Permit

12

$DMZ

110

Any

Any

TCP

單向

Permit

13

$Internal

Any

Any

Any

TCP

單向

Permit

14

Any

Any

Any

Any

TCP

雙向

Reject

15

Any

Any

Any

Any

UDP

雙向

Reject

(注:本表格式爲任務中所要求的,但既要求了要列出nat的規則又沒有給出nat的相關信息選項。所以本表中內容與實際所使用的規則可能會有一定的出入,一切以後文所附的腳本文件中的實際使用規則爲準。)

以上所有iptables的配置規則都寫入到腳本中,運行腳本即可輕鬆導入這些規則。腳本內容請參見附錄,截圖如下所示:

clip_image014

在終端中運行腳本,如下圖所示:

clip_image016

腳本成功運行後查看當前iptables中的規則,如下圖所示:

clip_image018

4. 配置路由器的規則:

路由器的外網地址爲59.78.51.3/24,內網地址爲10.10.33.254/24,如下圖所示:

clip_image020

登錄路由器的管理界面,進行NAT規則的配置,主要有以下4條規則:

ID

服務名稱

內網服務器地址

協議

外部端口

內部端口

1

TELNET

10.10.33.1

TCP

23

23

2

HTTP

10.10.33.1

TCP

80

80

3

SMTP

10.10.33.1

TCP

25

25

4

POP3

10.10.33.1

TCP

110

110

如下圖所示:

clip_image022

三、實驗測試結果

1. 內網主機訪問外網服務的測試:

1)測試內網是否可以使用http服務。在內網主機A上使用ie瀏覽器訪問

http://g.cn 。如下圖所示:

clip_image024

測試結果:成功。

2) 測試是否可以使用https服務。在內網主機A上使用ie瀏覽器訪問

https://reader.google.com,如下圖所示:

clip_image026

測試結果:成功。

3) 測試是否可以使用telnet服務。在內網主機A上使用cmd的telnet連接bbs.sjtu.edu.cn,如下圖所示:

clip_image028

測試結果:成功。

4) 測試內網是否可以使用ftp服務。在內網主機A上使用cmd的ftp連接public.sjtu.edu.cn,如下圖所示:

clip_image030

測試結果:成功。

2. 外網主機訪問內網服務的測試:

1) 外網主機是否可以訪問DMZ區web服務器的測試。用外網主機的ie瀏覽器打開http://59.78.51.3,如下圖所示:

clip_image032

測試結果:成功。

2) 外網主機是否可以使用DMZ區的郵件服務器的SMTP服務的測試。用外網主機的cmd的telnet 連接 59.78.51.3 25,如下圖所示:

clip_image034

測試結果:成功。

3) 外網主機是否可以使用DMZ區的郵件服務器的POP3服務的測試。用外網主機的cmd的telnet連接 59.78.51.3 110,如下圖所示:

clip_image036

測試結果:成功。

4) 外網主機是否可以訪問內網主機A的telnet服務測試。使用外網主機的cmd的telnet連接59.78.51.3 23,如下圖所示:

clip_image038

測試結果:成功。

綜上1.2.中的測試,說明內網主機也都可以訪問DNS服務器來獲取域名解析服務也成功了。所以,所有任務都完成了。

四、實驗中遇到的問題

1. 在virtualbox中,自行設置的2個網絡適配器vboxnet0和vboxnet1,每次重新啓動系統後再運行virtualbox時,vboxnet0依舊在的,而vboxnet1卻沒有了,需要重新添加設置。用的權限應該沒有問題,因爲vboxnet0也是自己添加的也是一直存在的,所以可能是軟件的問題或者我係統上的一些問題。至今未解決,但是只需要每次都重新設置即可,所以問題不大。

2. 在實驗任務的要求中,DMZ區的IP地址應該是192.168.1.1/24的,在寢室裏自行測試的過程中,也沒有發現任何問題,實驗可以成功完成。但是到了實驗室裏進行檢查時,發現外網無法訪問內網的服務器。檢查了一會覺得應該沒有問題的,除了路由器的外網地址是在實驗室裏重新獲取的,其他內網的設置以及防火牆規則的配置應該都是一樣的。所以我想唯一會發生問題的應該就只有路由器的這個外網地址了。登錄到路由器的管理界面一看,自動獲取到的外網地址是192.168.1.31/24,與DMZ區的IP地址在同一個網段裏。雖然似乎外網IP和DMZ的IP之間沒有直接的聯繫,內網是一個相對封閉的系統,應該不會有影響纔對。但是考慮到本次實驗在防火牆和路由器上都設置了較多的nat規則和路由表,可能也就產生了影響(比如導致ARP表混亂之類的),所以決定將DMZ區的IP地址換掉。於是就換成了前文中所述的192.168.33/24。然後重新設置了服務器的網絡信息,修改了iptables規則後重新再來,外網成功的訪問到了內網服務。實驗成功。這個問題,雖然沒有將問題的原因完全搞清楚(需要做一些實驗來研究原因),但是問題的所在,大致起因以及解決的辦法都有了,也就達到了基本的目的,以後也可以做相應的預防了。

五、實驗心得

本次實驗做下來,對於我來說真的是受益匪淺。通過本次實驗不光讓我鞏固了以前學習的有關的網絡知識,更是通過實踐,加深了對於這些知識的理解,並通過找到與解決問題的方法,對構建一個安全的中小型網絡有了全新的理解。爲了完成本次實驗,我至少又學習到了以下這些技術:

1) 在linux系統上架設郵件服務器。包括smtp、pop3、webmail等的具體實現方法以及安全登錄認證的方法。

2) 使用無線路由器上的路由表與NAT表的功能。因爲沒有複雜的內網結構也沒有內網服務器,所以這些功能重來沒有用過,現在終於能用了。

3) 使用iptables實現防火牆功能。還記得在網管部的面試時,主考官問我知道linux下的防火牆嗎,我答出了iptables但卻不知道其具體的應用方法,當時感到非常遺憾,現在也算如願以償,都已經有了實踐經驗了。

當然,最大的心得體會就是在學習中遇到難題要勤查資料勤討論。看的資料多了才能發現前人的經驗,討論的多了才能深刻的瞭解問題避免看問題的侷限性。通過本次的實驗,我再次的發現了iptables的強大,作爲一箇中小型網絡的應用,只要一臺linux主機+iptables就完全能夠勝任防火牆的功能了,而不需要再去購買專用的昂貴的防火牆設備。所以,儘管實驗結束了,我學習iptables還遠遠不會結束,本次實驗也只是用到了它強大功能中的冰山一角而已,還有更多的功能留待我們去挖掘。而且,另一方面我們也可以在寫腳本上下功夫,即怎樣利用簡單的腳本文件來方便的配置及管理iptables的規則,因爲畢竟iptables的命令用起來還是比較麻煩的,有太多複雜參數,我們可以利用腳本來簡化一下常用操作或者改變參數的形式使其更方便使用。

最後,感謝陳老師以及各位助教在我們實驗中的巨大幫助,有了你們,我們才能學的更快學的更好。

六、對本課程的建議

我覺得信安科創這門課程的學習方法設計的十分合理。先是用半學期的時間學習理論基礎知識,然後用半學期的時間來做實驗。通過實驗來鞏固以前學的知識,所謂學以致用,不光能使同學們更好的掌握這些知識,也從實戰的角度出發,使同學們對網絡知識有了更深入一步的瞭解。能夠稍微改進的地方在於,從我個人感覺出發,在本課程學習的內容中可以更深入一些。比如說關於WatchGuard防火牆產品的實驗可以壓得更緊湊些,一次實驗可以做兩次的內容甚至更多。因爲一個現成的防火牆產品的應用還是比較簡單的,看說明書看參考資料之類的是很容易理解的,其實每次實驗都做的很快,每次實驗也都有一些操作是重複的,放在一起做,只要比較下不同規則的效果就行了,不光可以更快的熟悉防火牆的功能也可以深入的理解下不同規則的作用。然後,我覺得應該花更多的時間讓同學們自己搭建實驗環境來進行實驗。比如說利用真實環境構架一個小型的局域網,然後配置iptables的防火牆信息等,模擬各種網絡拓撲情況及安全策略的設置,從實際的網絡狀況中發現問題解決問題,這樣可以更貼近實戰,也能夠通過發現問題來學習到更多的知識。這樣一切從實戰出發給了同學們更多的發揮自己想象力創造力的機會,能夠激發同學們的學習熱情,比死板的一項項的學習防火牆功能要好的多。

七、附錄

腳本文件init.sh:

#!/bin/sh

Internal='192.168.33.0/24'

DMZ='192.168.1.0/24'

DNSServer='202.120.2.101'

WWWServer=' 202.120.2.102'

GlobalA='10.10.33.100'

GlobalB='10.10.33.101'

HostA='192.168.33.40'

HostB='192.168.33.41'

MailServer='192.168.1.40'

WebServer='192.168.1.41'

FireWall='10.10.33.1'

HttpsServer='216.239.63.83'

FtpServer='202.38.97.230'

TelnetServer='202.120.3.1'

DExt='eth0'

DInt='vboxnet1'

DDMZ='vboxnet0'

echo "Enable IP Forwarding..."

echo 1 >/proc/sys/net/ipv4/ip_forward

echo "Starting iptables rules..."

/sbin/modprobe iptable_filter

/sbin/modprobe ip_tables

/sbin/modprobe iptable_nat

/sbin/modprobe ip_nat_ftp

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_conntrack_h323

/sbin/modprobe ip_nat_h323

echo "Clean..."

iptables -F INPUT

iptables -F FORWARD

iptables -F OUTPUT

iptables -F POSTROUTING -t nat

iptables -F PREROUTING -t nat

echo "Setting Default..."

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT ACCEPT

echo "Adding rules..."

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -i $DInt -j ACCEPT

iptables -A INPUT -i $DDMZ -j ACCEPT

iptables -A INPUT -i $DExt -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -s $Internal -j ACCEPT

iptables -A FORWARD -d $HostA -j ACCEPT

iptables -A FORWARD -d $DMZ -j ACCEPT

iptables -A FORWARD -s $DMZ -j ACCEPT

iptables -A FORWARD -i $DExt -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -o $DExt -s $Internal -p udp --dport 53 -j SNAT --to $FireWall

#iptables -t nat -A POSTROUTING -o $DExt -s $Internal -p tcp --dport 53 -j SNAT --to $FireWall

iptables -t nat -A POSTROUTING -o $DExt -s $Internal -p tcp --dport 80 -j SNAT --to $FireWall

iptables -t nat -A POSTROUTING -o $DExt -s $Internal -p tcp --dport 23 -j SNAT --to $FireWall

iptables -t nat -A POSTROUTING -o $DExt -s $Internal -p tcp --dport 443 -j SNAT --to $FireWall

iptables -t nat -A POSTROUTING -o $DExt -s $Internal -p tcp --dport 21 -j SNAT --to $FireWall

iptables -t nat -A POSTROUTING -o $DExt -s $DMZ -p tcp -j SNAT --to $FireWall

#iptables -t nat -A PREROUTING -i $DExt -d $GlobalA -p tcp --dport 80 -j DNAT --to $HostA:80

iptables -t nat -A PREROUTING -i $DExt -d $FireWall -p tcp --dport 80 -j DNAT --to $WebServer:80

iptables -t nat -A PREROUTING -i $DExt -d $FireWall -p tcp --dport 23 -j DNAT --to $HostA:23

iptables -t nat -A PREROUTING -i $DExt -d $FireWall -p tcp --dport 25 -j DNAT --to $MailServer:25

iptables -t nat -A PREROUTING -i $DExt -d $FireWall -p tcp --dport 110 -j DNAT --to $MailServer:110

echo "Iptables Setting ... [OK]"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章