APP下载

安全增强的多虚拟桌面系统设计与实现

2017-05-18许书彬

网络安全技术与应用 2017年5期
关键词:密级服务端访问控制

◆许书彬

(中国电子科技集团公司第五十四研究所 河北 050080)

安全增强的多虚拟桌面系统设计与实现

◆许书彬

(中国电子科技集团公司第五十四研究所 河北 050080)

随着虚拟化技术越来越成熟,越来越多的单位开始对部署多虚拟桌面系统显示出极大兴趣。然而,桌面虚拟化在带来极大便利的同时,安全隐患也更加隐蔽,如何防止了人为数据泄露,安全高效的管理多虚拟桌面成了一个重要问题。在本文中,设计并实现了一种基于安全增强的多虚拟桌面系统,该系统解决了多桌面显示,安全隔离和接入控制的问题,并且保障了系统的安全性。 最后,实验结果验证了该系统所具有的上述功能。

多虚拟桌面;安全隔离;访问控制; 数据安全

0 引言

随着云计算、移动办公等迅猛发展,时代在不断推动IT转型,企业信息化的规模和终端数量都给IT部门提出了更高要求,可以预见到IT将逐渐脱离传统的、静态的计算模式,转而迁移到动态的、灵活的、可扩展的基础架构。桌面虚拟化的战略价值与日俱增,利用虚拟化技术,实现桌面系统的集中管理,降低运维工作量,同时保障数据的安全性。从灵活高效的员工队伍到更低的办公成本,使桌面虚拟化成为一项关键的IT战略。

许多 IT公司都对桌面虚拟化技术表现出极大的兴趣,并为此投入了大量的人力和物力进行相关产品的开发。 比较有代表性的桌面虚拟化产品包括 Citrix公司的 XenDesktop,VMware公司的VMware View,Microsoft公司的MED-V,以及RedHat、HP等公司的非常优秀的产品.服务器虚拟化已经很成熟,大多数公司重点研究驱动程序,用来配合虚拟桌面传输协议,提高传输性能[1]。 虚拟桌面系统在降低运维成本、提高管理效率的同时,也带来了新的安全性问题和性能问题[2]。例如,虚拟桌面终端连接着含有企业所有敏感信息的数据中心,如何有效合理的对多终端桌面进行安全有效管理,成为了一个重要的问题[7,8]。

1 问题提出

目前虚拟桌面安全主要集中于服务端虚拟机和远程桌面协议研究,在虚拟桌面客户端方面,桌面安全则很少被提及。 虚拟桌面程序只能单一的显示一个虚拟桌面,当打开多个虚拟桌面时,管理这些虚拟桌面变得复杂起来,客户端无法对所有的虚拟桌面进行统一的管理。客户端在显示多个虚拟桌面时,虚拟桌面之间的业务数据无法保证隔离,尤其是多个桌面具有不同的密级时,这会影响到虚拟桌面的数据安全。

2 体系结构

多虚拟桌面系统的总体交互关系如图1所示,分为客户端、Broker代理、服务端。用户首先登陆到Broker代理系统,经过用户认证后获得虚拟桌面信息,之后调用多虚拟桌面程序通过SPICE协议[3]连接到远程服务端的虚拟机,并将虚拟桌面程序显示在多窗口程序中。用户在访问虚拟桌面时在客户端和服务端都需要对用户密级和虚拟桌面密级进行匹配,只有密级匹配时用户才能正确访问虚拟桌面。管理员用户可以登录到 Broker代理对用户进行管理,还可以通过虚拟机管理模块向服务端虚拟机发送操作请求。服务端通过XML-RPC Server响应代理端的请求并最终执行具体的虚拟机操作指令。

用户通过 Broker代理申请桌面资源的过程如下:(1)与Broker建立连接,向 Broker发送自己的身份信息;(2)Broker通过了用户身份认证后,会根据用户当前权限,将该用户的桌面信息返回给用户;(3)用户获得桌面资源信息后,根据自己的需求,选择一个虚拟桌面请求Broker启动该桌面;(4)Broker 接收到该请求后,会通过虚拟机管理模块在服务端启动对应的虚拟机,并将虚拟机的基本信息返回给用户;(5)用户获取虚拟机信息后,便尝试和服务端的虚拟机建立连接。当成功建立连接后,用户便可通过桌面传输协议与服务端进行通信。

在系统运行过程中,服务端会定期向 Broker代理发送服务端桌面资源信息,通过此种策略确保 Broker代理数据库的数据实时性。这样当用户请求桌面信息、或者管理员在进行桌面管理时都能够获取最新的桌面信息。

图1 总体交互关系示意图

2.1 多虚拟桌面客户端

多虚拟桌面客户端是用户与远程桌面交互的主要组件,接收Broker代理传递的桌面参数信息,发起虚拟桌面连接,负责向用户呈现多虚拟桌面显示,除此之外还需要保证虚拟桌面的安全隔离.客户端体系结构如图2所示。

图2 客户端体系结构

从图2看出,客户端主要包括多虚拟桌面显示、虚拟桌面安全隔离、虚拟桌面访问控制等功能。多虚拟桌面显示将多个虚拟桌面显示在同一个窗口中,实现多个虚拟桌面统一管理的功能。多虚拟桌面显示主要包括窗口布局管理、桌面自适应显示、桌面模式切换等,其中桌面自适应显示包括桌面检测、桌面位置分配、运行虚拟桌面程序等.虚拟桌面安全隔离通过建立不同的容器,将虚拟桌面程序运行在容器内实现虚拟桌面安全运行的功能。容器隔离主要通过四个层面实现,包括 PID隔离、网络隔离、UTS隔离、IPC通信隔离.虚拟桌面访问控制则涉及到客户端和服务端,需要在客户端和服务端同时进行,主要包括密级获取、密级匹配、结果处理。多虚拟桌面系统客户端程序基于 Spice-gtk客户端开发,Spice-gtk客户端基于GTK图形开发工具实现,通过使用各种GTK widget控件将远程虚拟桌面信息显示在客户端窗口中。

结构体struct _MulDesktopWindow是窗口管理和窗口布局的主要结构,包括主控件win插件和插座控件socket[MAX_DT]数组;成员plug_pop数组和plug_exist数组用于协调多虚拟桌面显示模式;struct spice_properties结构体数组用于保存已打开虚拟桌面的参数;struct msgbuf s_msg用于从客户端代理接收虚拟桌面参数,其中结构体m_info包含虚拟桌面的IP地址和端口信息。

[4,5]可知虚拟桌面作为虚拟机实际运行的资源载体,其安全性势必关系着整个系统能否平稳运行。客户端将多个虚拟桌面程序显示在同一个多桌面窗口程序中,无法保证虚拟桌面程序之间的业务数据隔离。多虚拟桌面系统利用 Linux Namespace[6]机制创建不同的容器并将虚拟桌面程序运行在不同的容器内,可以确保不同的桌面程序运行在不同的系统环境下,保证虚拟桌面程序的进程隔离、网络隔离等,实现多虚拟桌面之间的安全防护。

虚拟桌面安全隔离从四个方面实现虚拟桌面安全运行,包括进程PID隔离、IPC通信隔离、UTS系统环境隔离、网络环境隔离。虚拟桌面安全隔离功能主要是建立包括PID命名空间、IPC命名空间、UTS命名空间、网络命名空间的容器,并在容器内运行虚拟桌面程序,当虚拟桌面程序关闭时需要将容器删除,并进行一些清理工作。

根据命名空间标记建立容器后,需要设置容器内的运行环境信息,包括网络环境和系统信息环境。网络环境信息包括容器内虚拟网卡设备的 IP地址、路由等,系统环境信息用于容器的标识,包括容器的系统状态信息。建立容器之后,容器内虚拟桌面程序整体的运行环境如图3所示。

图3 容器内运行环境

运行于容器内的虚拟桌面程序所处在的系统信息为容器内所独有的,虚拟桌面程序通过内部虚拟网络设备对 eth0、veth1与外部网络通信,且虚拟桌面程序所在的网络环境具有独立的协议栈和路由表。容器内虚拟桌面程序进行进程通信时将使用容器内的 IPC通信资源,包括消息队列、信号量、共享内存等.在容器内虚拟桌面程序独立分配进程PID,且从1开始.通过对容器内虚拟桌面程序不同层次的隔离,保证了不同容器之间虚拟桌面程序相互不可见,不可进行进程通信,因此实现了容器内虚拟桌面的安全运行。

Broker代理与服务端通过XML-RPC机制进行通信, 并采用HTTP传输协议传输XML格式的消息.XML消息定义简单,可以同时传送、处理、返回复杂的数据结构。

Broker Agent通信模块负责与服务端进行通信,当用户需要连接某个虚拟桌面时,Broker代理通过网络通信向虚拟桌面服务端发出控制消息来启动虚拟桌面.除此之外Broker Agent通信模块还会向服务端发送虚拟机创建、虚拟机关闭、虚拟机暂停等命令,供服务端进行虚拟机管理。通信过程中出现的错误,如消息格式不符或消息收发超时等,由错误处理子模块进行处理。Broker Agent 模块与服务端通信时的处理过程如图4所示。

图4 Broker Agent 通信

首先Broker代理收到用户请求后,使用XML标记语言将用户请求封装在XML结构的消息内;之后Broker代理向服务端发送该XML消息,消息的内容包括虚拟机创建、虚拟机管理、虚拟机开启等;服务端接收到 Broker代理的请求后接收消息,并对消息内容进行识别;通过识别XML消息内容,得到Broker代理的具体请求操作,如虚拟机创建、虚拟机关闭等;服务端识别Broker代理的请求后调用Libvirt API函数执行具体的操作,并将结果信息封装发送给Broker代理端;Broker代理接收到操作结果进行下一步操作。

2.2 服务端虚拟机管理

服务端作为虚拟机资源池,负责响应 Broker代理发送过来的操作指令,并管理所有虚拟机。服务端使用KVM作为虚拟机管理器(Virtual Machine Manager,VMM),确保虚拟机安全、稳定运行。服务端虚拟机管理功能基于 Python实现,并利用Libvirt API函数和XML-RPC机制响应代理端虚拟机操作指令,其操作示意图如图5所示。

从图5 可以看出,当Broker代理接收到用户的资源请求后,会根据本地数据库中存储的服务端虚拟桌面信息,生成服务端能够识别的虚拟机参数配置信息。之后 Broker代理将该配置信息以XML格式将信息发送给服务端,再由服务端利用虚拟机管理工具完成最终的虚拟机操作。

图5 服务端虚拟机示意图

2.3 虚拟桌面访问控制

虚拟桌面访问控制过程中,本系统通过用户、虚拟桌面、密级比较策略将系统中的用户与虚拟桌面联系起来.管理员用户通过为用户和虚拟桌面分配相应密级、调用访问控制判决策略实现整个过程的安全访问控制。在虚拟桌面访问控制过程中,安全访问控制分为三个模块,分别是密级信息获取模块,密级判决模块,结果处理模块.三个模块通过相互配合来维护系统内信息安全。模块之间的协同工作过程如图6所示。

图6 密级访问控制

用户访问虚拟桌面之前,由密级获取模块获得用户密级,图中所示用户密级为3。管理员用户在创建虚拟桌面后,需要为虚拟桌面授予相应密级。从图中可以看出,虚拟桌面A、B、C、D的桌面密级分别为1、2、3、4。当用户访问虚拟桌面时,首先调用IPSec协议数据封装模块将用户密级封装在IPSec数据包中,并向服务端发起连接;服务端接收到客户端连接请求后,对IPSec协议数据进行解析,得到用户密级信息;服务端获得用户请求连接的虚拟桌面信息后,调用密级获取模块获取相应虚拟桌面的密级;最后服务端将获得的用户密级和虚拟桌面密级进行判决,判断用户是否可以访问该虚拟桌面。若用户密级小于等于虚拟桌面密级,则用户访问成功;若用户密级大于虚拟桌面密级时,则用户访问失败.客户端在收到服务端发送的数据后对 IPSec数据包进行解析得到虚拟桌面的密级,并通过密级匹配模块比较用户密级和虚拟桌面密级。当虚拟桌面密级大于或者等于用户密级时客户端程序才会接收服务端虚拟桌面数据,否则拒绝接收。

3 系统测试以及性能评价

在多虚拟桌面系统设计与实现的基础上,本章将对系统整体运行效果和系统性能进行测试。首先,本章围绕系统安装环境和测试工具展开,介绍了多虚拟桌面系统各个部分的安装环境和性能测试工具;其次详细介绍了系统的整体运行效果,包括Broker代理和多虚拟桌面客户端,随后验证虚拟桌面安全运行;最后,本章将对多虚拟桌面客户端进行性能测试,主要从桌面性能、CPU、内存、网络等方面进行分析。

3.1 实验环境

多虚拟桌面系统运行在三台机器上,分别为客户端、Broker代理、服务端。客户端机器运行多虚拟桌面窗口程序,并访问Broker代理获得桌面信息;代理端机器运行Broker代理,负责系统管理;服务端是虚拟桌面的数据中心,运行不同类型的虚拟机。多虚拟桌面系统的安装环境见表1 。

表1 多虚拟桌面系统安装环境

3.2 多虚拟桌面客户端

多虚拟桌面客户端负责与服务端虚拟机进行连接,向用户呈现多个虚拟桌面。多虚拟桌面客户端从 Broker代理接收虚拟桌面激活请求并获得虚拟桌面参数,包括IP地址和端口号等信息,之后调用多桌面显示程序将虚拟桌面显示在多虚拟桌面客户端上四个虚拟桌面同时显示的效果如图7所示,四个桌面分屏显示在多窗口程序的不同位置中。多虚拟桌面客户端还包括桌面模式切换,包括单桌面模式与多桌面模式。用户可以在多桌面模式下,单击单个虚拟桌面,让其弹出多虚拟桌面窗口,之后单独操作该虚拟桌面。

3.3 桌面访问控制

桌面访问控制基于IPSec协议实现,在客户端和服务端均需要对IPSec协议进行处理。用户连接虚拟桌面时,客户端需要将用户密级封装在IPSec协议的保留字段内;服务端发送桌面数据时,根据桌面的端口号获得桌面密级信息,并在IPSec协议保留字段内封装桌面密级。以用户xiaoli为例,其密级为1,当访问密级为2的虚拟桌面vm1时,在客户端截取数据包,可以看到发送和接收的数据包分别封装了用户xiaoli和桌面的密级信息,如图8、图9所示,其中客户端IP地址为10.4.10.198,服务端IP地址为10.4.10.197。

从图8第二条数据包可以看出,用户连接虚拟桌面时,客户端向服务端发送数据包,在客户端发送数据时,将用户密级1封装在IPSec协议AH头的保留字段内;由图8第一条数据包可以看出,用户接收服务端发送的虚拟桌面数据时,服务端将桌面密级信息封装在IPSec协议的AH头的保留字段内。

图7 多虚拟桌面客户端

图8 用户密级封装

图9 桌面密级封装

通过IPSec协议封装用户和桌面密级,在客户端和服务端分别对数据包进行控制,确保只有密级匹配时用户才可以访问虚拟桌面,当低密级用户访问高密级桌面时访问被拒绝.如图10所示,用户libin的密级为2,当访问密级为2的虚拟桌面winxp时访问成功,当访问密级为1的桌面win7时,访问被拒绝。

图10 桌面访问控制

4 结束语

随着虚拟化技术和云计算技术的发展,越来越多的公司和个人希望通过桌面虚拟化技术来代替传统PC的使用。 基于上述背景,通过研究多虚拟桌面基础设施技术,设计实现了多虚拟桌面系统,分析多虚拟桌面系统的系统架构,研究多虚拟桌面系统的多桌面显示和虚拟桌面安全隔离问题,并通过实验测试多虚拟桌面系统的性能。多虚拟桌面系统是一个基本的虚拟桌面管理系统,当进一步扩大系统规模时,还有很多工作需要进行,比如服务端虚拟机统一管理,Broker代理性能提升等。除此之外,一系列实验表了多虚拟桌面系统的可行性和有效性,同时也发现客户端添加容器机制对系统网络性能影响比较大,如何进一步优化网络性能也是下一步需要进行的工作。

参考文献:

[1]Sridharan Mukundan, Calyam Prasad, Venkataraman Aishwarya, et al. Defragmentation of Resources in Virtual Desktop Clouds for Cost-Aware Utility-Optimal Allocation[A].IEEE International Conference on Utility and Cloud Computing[C],2011.

[2]石勇,郭煜,韩臻.一种高效的虚拟桌面可信保证机制[J].四川大学学报, 2014.

[3]RedHat. Spice remotecomputing protocol definition[EB/OL] ,www.spice-space.org/docs/spice_protocol.pdf, 2015-12-01

[4]Deborah A.Frincke, Richard Ford. Sandboxing and Virtualization[J]. The IEEE computer and reliability societies,2011.

[5]D.V Rajdeep, Raja Reddy, Kakadia Dharmesh.Virtualizaiton vs Containerization to support PaaS[A]. International Conference on Cloud Engineering[C]. 2014.

[6]Biederman E.W. Multiple Instances of the Global Linux Namespace[J], Linux Symposium, 2006.

[7]孙宇,陈煜欣.桌面虚拟化及其安全技术研究[J].信息安全与通信保密,2012.

[8]李黎明杨记.KVM 虚拟桌面系统在军事领域应用的安全问题研究[J].计算机光盘软件与应用,2013.

猜你喜欢

密级服务端访问控制
如何做好国有企业密级档案的管理工作
基于区块链技术的多密级数据安全存储系统设计
新时期《移动Web服务端开发》课程教学改革的研究
在Windows Server 2008上创建应用
ONVIF的全新主张:一致性及最访问控制的Profile A
动态自适应访问控制模型
浅析云计算环境下等级保护访问控制测评技术
大数据平台访问控制方法的设计与实现
文件密级标识全程管控系统的设计与实现
密级“совершенно секретно”是“绝密”还是“机密”?