APP下载

基于XEN 云平台的网络安全实验教学

2013-07-19迪,薛政,潘

实验室研究与探索 2013年7期
关键词:网络拓扑交换机数据包

吴 迪,薛 政,潘 嵘

(中山大学 计算机科学系,广东 广州510006)

0 引 言

实验课程是网络安全教学的重要一环,学生对课本理论知识点进行相应的实验可以有效地增强对概念、原理的直观理解,而且这也培养了学生的实际动手操作能力。然而另一方面,很多网络安全实验都涉及多台主机并需要构建特定的网络拓扑结构,由于学生拥有的硬件资源有限,使得实验环境的构建成为阻碍网络安全教学的一大因素。

传统的解决方法是让学生去网络安全实验室进行相关实验,但实验室的硬件资源也是有限的,并且需要学生重新配置路由器、交换机、主机网卡等,这都会大大降低学生进行实验的效率。另一种方案是采用VMware 虚拟机进行实验[1-3]。VMware 是一款应用很广的虚拟化软件,用户可以在上面创建自己的虚拟机,虚拟网络等。在众多虚拟化软件中,VMware 相对容易安装使用,但其完全虚拟化的实现机制也带来了很多性能上的损耗。一般情况下4 GB 内存的物理机器用VMware 创建三台虚拟机就会感觉运行很不流畅,从这一点来说这种方案也只能勉强满足需求。

为了解决网络安全实验需求跟硬件资源限制这一矛盾,我们设计并实现了基于XEN[4-6]开源软件的网络安全实验云平台,向学生提供虚拟网络安全实验环境。不同于一般的只能面向单独虚拟主机的服务[7],XEN 实验云平台是面向虚拟网络的,申请创建的虚拟机可以组成一个特定的网络拓扑。本文给出一种基于XEN 云平台进行防火墙配置实验教学的实验实例,通过XEN 实验云平台提供的虚拟主机服务创建虚拟网络环境,然后对网络中某些节点的网络地址、路由表、iptables 进行配置,从而完成防火墙配置这个实验。学生通过浏览器申请远端的虚拟主机群,然后用SSH 远程到虚拟机上进行相关实验,在占用自身机器很少资源的情况下就能方便地搭建满足特定网络拓扑的集群。这跟使用VMware 的解决方案相比,它的优势在于:①几乎不用占用自身电脑的资源,创建的虚拟机数量不再受到本地机器性能的限制。②申请操作都在web 页面中完成,操作更加简单直观。据调查表明,面向虚拟网络的虚拟云服务非常新颖,而在云平台上组织网络安全实验更具有一定的独创性。我们的实践表明,XEN 实验云平台能大大简化网络安全实验环境的搭建,具有很强的扩展性和实用性。

2 XEN 实验云平台的设计与实现

2.1 XEN 虚拟化技术介绍

Xen 起源于2003 年剑桥大学的一个研究项目,之后成为一个开源社区驱动的软件项目[9]。Xen 使用了半虚拟化技术,通俗地理解就是说客户虚拟机系统清楚自身是运行在虚拟化的环境中,通过修改客户虚拟机的系统内核,客户虚拟机在执行一些特权指令的时候可以直接跟VMM 交互而非通过复杂的指令二进制翻译(VMware 等全虚拟化平台采用的策略),从而大大提高效率。另一方面,Xen 本身所占用的系统资源只占总资源的2%,最多也只有8%,这跟其它虚拟化产品通常20%的资源占用率相比优势明显。因为这些原因,XEN 把设计目标设定为在一台现代化的服务器上虚拟出100 台全系统的虚拟机,实践证明这是可以实现的,因为就算是一台性能一般的个人PC4 GB内存、普通4 核CPU,也能轻易地虚拟出二三十台虚拟主机。

2.2 XEN 实验云平台的体系架构

XEN 实验云平台以XEN 为底层虚拟化技术,编写Shell 脚本实现虚拟机、虚拟网络的自动化管理,提供给用户一个简单的Web 页面接口,屏蔽复杂的底层操作,让用户轻松地配置、创建、销毁虚拟机及虚拟网络。图1 描述了该平台的总体架构。

图1 XEN 云平台总体架构

整个系统采用B/S +R 结构,其中B/S 就是普通的网站架构,R 指用户远程到虚拟机的方式。下面对各部分的功能、配置以及所采用的技术进行简单的介绍。

(1) 用户。虚拟机申请使用者,通过Web 提交申请(包括虚拟机数量、配置、网络拓扑等),待Web 反馈虚拟机创建成功的信息后远程登录到虚拟机。

(2) Web 服务器。采用经典的Linux + Tomcat +Mysql+JSP 结构。初期由于负载均衡设计得比较简单,所以跟Web 服务器放在一起。Tomcat 接收来自用户的申请,JSP 做好申请的解析,根据后台物理机的负载情况把虚拟机的创建任务分发给负载较轻的机器,调用脚本完成创建及配置工作,然后把相关信息写入Mysql 数据库。最后把信息反馈到Web 前端。

(3) 物理机。这是虚拟机实际创建和运行的地方。目前的基本硬件配置是4 核CPU(i3-2100)、4 GB内存、500 GB 硬盘,共有4 台同配置的物理机构成后端集群。Xen 环境是3.1.0 版本的linux 内核(也就是Domain 0 内核,这需要重新编译以支持Xen[10])加上4.1.2 版本的Xen。物理机在平台体系中的职责是根据Web 服务器传递过来的命令执行相应脚本,在本机完成虚拟机的创建、配置、销毁等工作。

(4) 虚拟交换机。这是Xen 虚拟出来的设备,用于对生成的虚拟机进行网络划分,依靠这些交换机,虚拟机组成的网络拓扑变得非常灵活。

2.3 通过XEN 实验云平台构建虚拟网络

虚拟网络是由虚拟交换机、虚拟主机、虚拟网卡、DHCP 服务器等构成的一个集合,其中虚拟交换机处于核心地位,如果两台虚拟机连接到了同一台虚拟交换机,那么它们就位于同一个子网。根据需求的不同,XEN 提供了3 种虚拟交换机的工作模式[11]:

(1) NAT 模式。连接到这个网桥下的虚拟机,都是通过共用主机的IP 地址来与外网连通。外网中的计算机不能连接到该网桥下的虚拟机。

(2) Routed 模式。虚拟交换机通过物理主机的外网网卡直接连到物理服务器所在的网络,在这种模式下每一台虚拟机都具有独立的外部IP,跟物理服务器同一层网络的计算机可以访问到这些虚拟机。

(3) Isolated 模式。在这种模式下,连接到同一虚拟交换机的虚拟机可以互相通信,但与外部网络处于完全断开的关系。

以上提到的3 种虚拟机工作模式在不同应用上各有优劣势,就XEN 云平台的需求而言,自由配置网络拓扑的要求决定了不能用Routed 模式,hosting 的应用目的决定了不能使用Isolated 模式,剩下的NAT 模式虽然不能完全契合我们的需求,但是此处的最佳选择。

根据Xen 的网络虚拟化方式[12-13],结合NAT 模式的组网技术,设计出XEN 云平台的虚拟网络架构,如图2 所示。

图2 XEN 云平台网络架构图

在图2 中,peth0 其实就是物理网卡,也即一般linux 启动后的eth0,这里Xen 做了一个重命名,然后把系统默认启动的第一个网桥命名为eth0. 网桥这个概念

其实就是前文提到的虚拟交换机,用它可以方便地架设子网。

在我们的设计中,物理主机使用系统默认生成的eth0 网桥,属于Routed 模式。而其它虚拟机则都连到一个或多个NAT 模式的网桥,从而形成特定的网络拓扑。

3 XEN 实验云平台中虚拟网络拓扑的生成

在本节中,先分析XEN 云平台创建一台虚拟机的流程,然后分析防火墙配置实验所要求的网络拓扑图,基于此我们将在XEN 云平台上创建这个虚拟网络。

3.1 虚拟机生成流程分析

单台虚拟机的创建流程,如图3 所示。一台虚拟机从用户申请创建到后台完成创建工作并通知用户,可以分为以下几个步骤:

(1)用户通过浏览器填写虚拟机配置表单,并提交。

(2)Web 服务器接受虚拟机创建任务,如果该用户在平台中已经拥有了虚拟机,那么就把这个创建任务分配到那些虚拟机所在的服务器,如果是一个新用户,那么就选择负载比较轻的服务器并把创建任务交给它。

(3)根据用户提交的IP、MASK 计算出子网网段,如果平台中还没有这个网段,那么就调用脚本创建相应的子网,如果已经有了这个网段,检测是否存在IP冲突。

(4)在选定的服务器调用虚拟机创建脚本,这些脚本完成的任务包括环境检测、虚拟机生成、虚拟机场景化、虚拟机远程隧道的建立等。

(5)创建成功后,Web 服务器返回消息给用户,并提供给用户一个远程连接该虚拟机的接口。

图3 虚拟机创建流程图

3.2 自定义网络拓扑生成

为了更好地理解如何在XEN 实验云平台上创建虚拟网络,我们将配置如图4 所示的实验网络拓扑图,其中m2 是m1 和m3 的网关,m2 连接到Internet。

这是一个简单的网络拓扑,分析上面的实验拓扑图,再结合XEN Cloud Platform虚拟网络的特点,可以给出这样的分析:m1、m2、m3构成一个子网vmnet1,而且m1、m3 只属于这个子网,m2 可以连接到外部网络,那么它必须还属于另外一个子网vmnet2。vmnet1 不可以连接到外部网络,vmnet2 则通过NAT 连接到外网。虽然默认情况下生成的每个子网都是NAT 模式的,这个跟vmnet1 的要求不符,但是通过对虚拟机进行路由、网关的简单设置可以实现这样的要求。具体做法就是删除m1、m3 默认的default 路由(此路由项的默认网关为vmnet1 中的虚拟交换机),然后添加一条以m2 为网关的default 路由。

图4 网络实验拓扑图

根据以上的分析,我们在XEN 云平台上建立满足如图5 所示的拓扑虚拟机群。

图5 虚拟机群拓扑图

根据上面的拓扑图,我们在Web 界面完成相应的配置表单(虚拟机发行版本类型、内存、主机名、root 密码等可以根据情况填写,IP/MASK 对需要按照拓扑图填写)。提交表单,虚拟机创建成功后,我们就可以通过SSH 访问虚拟网络中的虚拟主机了。

4 基于XEN 云平台的网络安全实验

在本节中,我们将通过防火墙实验作为一个实例来演示如何使用XEN 实验云平台。防火墙[14]是一项协助确保信息安全的服务,它会依照特定的规则,允许或是限制传输的数据通过,在网络安全领域扮演着举足轻重的角色。在防火墙配置这个实验中,学生通过linux 下的iptables 工具配置防火墙规则,从而实现NAT 服务、特定包过滤等功能。通过这个实验,学生可以更直观地理解到防火墙的工作机理,以及iptables的配置方法。在实验过程中,学生还需要进行Wireshark 抓包,并进行数据包的分析。按照上一节内容创建一个类似图4 的虚拟网络,然后在实验中完成以下内容:

(1)在m2 上配置带POSTROUTING 的NAT 服务,实现内部IP 地址隐藏。并只允许HTTP 请求通过。

(2)在m2 配置只接受或发送(不转发)ssh 和ping数据包的过滤服务。

(3)在m3 配置只允许m1 的HTTP 请求通过服务。

(4)根据实验情况回答以下问题:①自己组织语言描述iptables 是怎么工作的?②为什么iptables 需要内核 的 支 持?③iptables 中 的 INPUT、OUTPUT、FORWARD 三条链有什么区别?④iptables 中的DROP、REJECT、ACCEPT 三种处理有什么区别?⑤考虑iptables 的鲁棒性、效率、功能,它有哪些优势?⑥Linux 中还有哪些可以替代iptables 的程序包?

4.1 在m2 上配置带POSTROUTING 的NAT 服务

基本的虚拟网络已经在第三节创建好了,接下来的工作就要在m2 配置NAT 服务,具体的操作远程登录到m2,然后用root 用户执行如下命令[15]:

iptables ——flush

iptables ——table nat ——flush

iptables ——delete-chain

iptables ——table nat ——delete-chain

iptables ——table nat ——append POSTROUTING——out-interface eth0-j MASQUERADE

iptables ——append FORWARD ——in-interface eth1-j ACCEPT

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

其中:第1 到第4 条命令用于清除FILTER 跟NAT 两个表中的规则以及自定义的链;第5 条用于在nat 表POSTROUTING 链上加上一条规则,这条规则使得从eth0 这个网口出去的流量包都会进行地址隐藏;第6 条往filter 表里添加一条规则,使得从eth1 这个网口进来的流量包都可以进行转发;第7 条是打开m2系统的ip 包转发功能。

实验进行到这里,m2 已经实现了内网IP 地址隐藏功能,也就是说m1 和m3 可以ping 通外部IP 地址,但反过来是不行的。为了在m2 实现只允许HTTP 请求通过的功能,我们还需要设置数据包过滤规则,一般情况下HTTP 服务监听的是80 端口,所以我们可以设置这样的iptables 转发规则:

iptables ——append FORWARD ——in-interface eth1-j DROP

iptables ——append FORWARD ——ininterfaceeth1-p tcp-dport 80-j ACCEPT

这两句合在一起的意义是除了目标端口是80(http 监听端口)的请求,其它请求都不予转发,也就实现了m2 只允许m1 和m3 进行HTTP 请求的功能。

4.2 在m2 配置只接受或发送ssh 和ping 数据包的过滤服务

要实现这一功能我们可以分步考虑,由于只开放两种服务,所以我们可以先把所有服务都禁用,然后再开通ssh 和ping 两种服务。

关闭所有的服务可以采用下面的命令:

iptables ——append FORWARD-j DROP

iptables ——appendINPUT-j DROP

iptables ——appendOUTPUT -j DROP

接下来开启ssh 服务,ssh 使用tcp 这个传输层协议,默认监听端口号为22,所以我们可以通过以下命令来开启服务:

iptables -I INPUT -i eth1-p tcp ——dport 22 -j ACCEPT

iptables -I OUTPUT -o eth1-p tcp ——sport 22 -j ACCEPT

Ping 服务不能通过端口号进行设置,但是ping 使用了ICMP 这种比较特殊的网络层协议,可以通过允许这一种协议的数据包通过来开启ping 服务:

iptables -I INPUT -i eth1-p icmp -j ACCEPT

iptables -I OUTPUT -o eth1-p icmp -j ACCEPT

4.3 在m2 配置只允许m1 的HTTP 请求通过的服务二级标题

首先我们需要对前面设置的FILTER 表进行冲洗,删除之前设定的过滤规则:

iptables ——flush

iptables ——delete-chain

然后我们配置阻断所有数据包的iptables 规则,这里使用的方法跟4.2 一样:

iptables ——append FORWARD -j DROP

iptables ——appendINPUT -j DROP

iptables ——appendOUTPUT -j DROP

接下来就是设定m1 到外部网络的HTTP 数据包转发功能,由于m3 的数据包需要被完全阻断,而m1和m3 的数据包都是通过eth1 这个网卡进入m2 的,所以这里不能用网卡进行数据包来源的划分,做法是在iptables 规则中直接指定源IP 地址:

iptables ——append FORWARD -s 192. 168. 10.11-p tcp -dport 80 -j ACCEPT

至此,我们详细介绍了基于XEN 云平台的防火墙实验的整个过程。实验的顺利进行验证了平台的实用性,同时也说明了使用XEN 实验云平台进行网络安全实验教学的可行性。

5 结 语

针对网络安全课程实验教学中学生硬件资源的限制,本文在分析了常用的实验室实验方案及VMware实验方案的不足,在此基础上提出了一种基于云平台的解决方案。XEN 实验云平台是由我们设计开发的一个面向学生提供虚拟主机服务的平台,学生可以在上面方便地创建自己的虚拟网络,在消耗本地计算资源很少的情况下完成网络安全实验。本文介绍了使用XEN 云平台进行网络安全实验的教学方法,我们发现该方法具有很强实用性和可扩展性,并且可以推广到其它网络安全实验的教学,比如IPSec 实验等。

[1] 吕 峰,杨 宏. 基于VMware 虚拟网络计算机实验室的构建[J]. 电脑编程技巧与维护,2009(16):32-33.

[2] 兰聪花. VMware 虚拟机技术在计算机实践教学中的应用[J].考试周刊,2008(11):166-167.

[3] 栾 勇. 应用虚拟机进行计算机教学的优越性[J]. 电脑知识与技术,2009(21):5985-5986.

[4] Bhatia N,Vetter J S. Virtual Cluster Management with Xen[M].Lecture Notes in Computer Science,Springer Berlin/Heidelberg,2008:185-194.

[5] Clark B,Deshane T. Xen and the Art of Repeated Research[C]//Proceedings of the 2004 USEIX Annual Technical Conference.2004:135-144.

[6] Govindan S,Nath A R,Das A,et al. Xen and Co.:Communicationaware CPU Scheduling for Consolidated Xen-based Hosting Platforms[C]//Proceedings of the 3rdInternational Conference on Virtual Execution Environments.2007:126-136.

[7] 徐 永. 基于XEN 的弹性云平台的研究[D]. 武汉:武汉理工大学,2010.

[8] Paul Barham,Boris Dragovic. Xen and the Art of Virtualization. In SOSP,2003.

[9] 石 磊,邹德清,金 海. XenVirtualization Technology[M]. 武汉:华中科技大学出版社,2009:2-32.

[10] Giorgos Kappes. Installing and Using Xen[DB/OL]. http://www.cs.uoi.gr/ ~gkappes/tutorials/ xen_guide.pdf,2012.

[11] XenNetworking,http://wiki. xensource. com/xenwiki/XenNetworking.

[12] 杨林凤. 基于XEN 网络虚拟化的性能研究[D]. 上海:复旦大学,2010.

[13] Apparao P,Makineni S,Newell D. Characterization of network processing overheads in Xen[C]//Proceeding of the Second International Workshop on Virtualization Technology in Distributed Computing,2006.

[14] 维基百科. Firewall 概 念[EB/OL],http://en. wikipedia. org/wiki/Firewall.

[15] Iptables 指南,http://www. frozentux. net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html.

猜你喜欢

网络拓扑交换机数据包
基于通联关系的通信网络拓扑发现方法
能量高效的无线传感器网络拓扑控制
SmartSniff
修复损坏的交换机NOS
使用链路聚合进行交换机互联
劳斯莱斯古斯特与魅影网络拓扑图
基于多任务异步处理的电力系统序网络拓扑分析
PoE交换机雷击浪涌防护设计
罗克韦尔自动化交换机Allen-Bradley ArmorStratix 5700
视觉注意的数据包优先级排序策略研究