基于虚拟机环境的计算机网络安全访问控制系统的实验(1)

一、实验环境

本实验的拓扑结构如下图所示,本实验存在以下系统:

实验环境由一台主机(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在实验中没有用到。

如下图所示:

2. 配置防火墙及内网主机的网络服务信息:

1)防火墙的eth0接口作为拓扑图中的eth0接口。在Virtualbox的网络管理中新建了2个网络适配器vboxnet0和vboxnet1。 vboxnet0对应与拓扑图中的DMZ区的eth2,vboxnet1对应于拓扑图中的内网的eth1。各网络适配器的设置如实验环境中所述。配置后信息如下图所示:

2)DMZ-A-UBUNTU-Web这台虚拟主机用来作为DMZ区的web服务器。该虚拟主机的eth0网卡连接于防火墙的vboxnet0接口上,IP地址为192.168.22.41/24,网关为192.168.22.1。在该主机上安装了apache程序,用来提供web服务,因为本次实验重点是要实践对于防火墙的配置而不是web服务器的配置,所以在apache程序中仅仅使用了默认的缺省配置,监听80端口,并使用了一张简单的网页来作为主页。该虚拟主机的网络配置信息如下图所示:

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端口。该虚拟主机的网络配置信息如下图所示:

4)Internal-A-XP虚拟主机作为内网中的主机A。该虚拟主机的eth0网卡连接与防火墙的vboxnet1接口上,IP地址为192.168.33.40/24,网关地址为:192.168.133.254。该虚拟机作为内网主机,要能够正常的访问外网的资源,并提供了telnet服务,允许外网主机远程登录。该虚拟主机的网络信息配置如下图所示:

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的配置规则都写入到脚本中,运行脚本即可轻松导入这些规则。脚本内容请参见附录,截图如下所示:

在终端中运行脚本,如下图所示:

脚本成功运行后查看当前iptables中的规则,如下图所示:

4. 配置路由器的规则:

路由器的外网地址为59.78.51.3/24,内网地址为10.10.33.254/24,如下图所示:

登录路由器的管理界面,进行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

如下图所示:

三、实验测试结果

1. 内网主机访问外网服务的测试:

1)测试内网是否可以使用http服务。在内网主机A上使用ie浏览器访问

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

测试结果:成功。

2) 测试是否可以使用https服务。在内网主机A上使用ie浏览器访问

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

测试结果:成功。

3) 测试是否可以使用telnet服务。在内网主机A上使用cmd的telnet连接bbs.sjtu.edu.cn,如下图所示:

测试结果:成功。

4) 测试内网是否可以使用ftp服务。在内网主机A上使用cmd的ftp连接public.sjtu.edu.cn,如下图所示:

测试结果:成功。

2. 外网主机访问内网服务的测试:

1) 外网主机是否可以访问DMZ区web服务器的测试。用外网主机的ie浏览器打开http://59.78.51.3,如下图所示:

测试结果:成功。

2) 外网主机是否可以使用DMZ区的邮件服务器的SMTP服务的测试。用外网主机的cmd的telnet 连接 59.78.51.3 25,如下图所示:

测试结果:成功。

3) 外网主机是否可以使用DMZ区的邮件服务器的POP3服务的测试。用外网主机的cmd的telnet连接 59.78.51.3 110,如下图所示:

测试结果:成功。

4) 外网主机是否可以访问内网主机A的telnet服务测试。使用外网主机的cmd的telnet连接59.78.51.3 23,如下图所示:

测试结果:成功。

综上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]"

你可能感兴趣的:(IT科技,实验报告,网络)