APP下载

基于操作系统容器虚拟化技术的JBS模型的研究

2010-08-07吴革李健赖英旭

网络安全技术与应用 2010年4期
关键词:文件夹调用宿主

吴革 李健 赖英旭

北京工业大学计算机学院 北京 100124

0 引言

随着互联网的发展,软件网络化、云计算等技术越来越普及。越来越多的私有软件被放在公共计算平台上运行,软件之间的行为变得十分复杂,系统安全面临前所未有的挑战。

1 JBS模型实现细节

1.1 JBS虚拟机监视器

JBS模型是基于容器虚拟化技术(Container-based Operating System Virtualization),而不是完全虚拟化技术,不需要转换敏感指令,提供接近本地操作系统的效率。Linux版本 JBS模型实现主要是基于 Linux内核 2.6.22.19和Linux-VServer2.2.0.7。

JBS模型资源划分:CPU调度资源划分是通过复写标记桶(Token Bucket, TB)数据结构,提供硬件级别的CPU调度控制。在操作系统中,每更新一次时间票据(timer tick),都会减少进程所在的虚拟容器的TB的容量。I/O的资源共享通过使用分级标记桶(Hierarchical Token Bucket, HTB),每个HTB都有对应预定概率(reserved rate)和共享属性(share)。每个数据包发送出去都有自己的内核上下文Id属性,JBS模型通过计算包上的预定概率和共享属性,可以确定每个虚拟容器发送数据的次序和发送的数量,从而提供有效共享服务和预定服务。存储限制功能,分为磁盘存储限制和内存存储限制。对于内存存储限制,应用的技术如下:①最大可用的常驻内存(maximum resident set size,RSS);②可用内存页(number of anonymous memory have, ANON);③已经被应用的内存页,通过使用mlock方法和mlockall方法进行标记。对于磁盘存储限制,通过使用虚拟容器标识(XID)对文件系统进行标识,让运行于不同虚拟容器中的进程可以访问同一个宿主系统分区,而不能访问不同容器中的文件。

JBS模型安全隔离:JBS模型中的进程隔离主要是对宿主操作系统中的进程标识虚拟容器标识(XID),使每个进程的PID不再是全局名字空间,而是虚拟容器名字空间。JBS模型中的网络隔离主要是根据虚拟容器动态创建出的 IP地址进行隔离的。chroot命令在Linux系统中,被用于改变系统根目录位置,这会导致虚拟容器的根目录的变动。在JBS系统中,引用了虚拟容器根目录屏蔽技术(Chroot Barrier),使用一个特殊的文件属性(special file attribute),阻止退出虚拟容器根目录和修改它。现在的Linux兼容性系统中,并没有完全实现 POSIX兼容性标准。为了提供更安全的进程保护,JBS增强了Linux兼容性,通过使用虚拟容器上下文的掩码(mask)技术,来限制进程执行权限。

1.2 虚拟容器的应用

近来的大量研究主要贡献是通过检测虚拟环境中应用程序行为,来保护虚拟环境。相反,JBS模型更关注于虚拟容器间的交互,或者虚拟容器与远程主机之间交互。每初始化一个虚拟容器,就需要创建所对应的虚拟容器的根目录(root file system),每个虚拟容器都会被分配在某个统一分支文件名称空间下。

基于对已有的 UnionFS文件系统的研究,改进了现有Linux-VServer虚拟容器创建方法,应用统一名称空间的文件系统。例如,修改后的JBS模型内核的Debian操作系统中安装通用应用程序/bin/Apache和/bin/Firefox,这两个可执行文件和配置文件直接保存在宿主操作系统中。通过使用JBS远程虚拟容器管理工具,创建两个虚拟容器/JBS/vs1和/JBS/vs2,分别用来承载/bin/Apache和/bin/Firefox。Apache和Firefox应用程序在运行时都会产生临时文件(例如历史记录),并需要将临时文件或者程序结束产生的持久数据,保存在文件系统中。因此应用程序在虚拟容器环境下,会把数据分别保存到自己新创建出的文件夹下/JBS/vs1/.apache,/JBS/vs2/.Mozilla,/JBS/vs2/download中。Firefox临时文(例如密码,浏览历史)都保存在/JBS/vs2/.Mozilla文件夹中,下载的文件保存到/JBS/vs2/download文件夹中。Apache的logging日志保存在/JBS/vs1/.apache文件夹下。

从图1可以看出,Firefox和Apache应用程序都是保存在宿主主机中。当Firefox运行时,它会根据配置策略运行在虚拟容器 VS2中,容器中的虚拟操作系统的根节点是/JBS/VS2,/bin/Firefox是只读应用程序,不可以被修改,而根目录/JBS/VS2是可读可写的,因此Firefox应用程序会动态的创建两个文件夹JBS/VS2/.mozilla和/JBS/VS2/download),用来保存临时数据和持久数据。但是在虚拟容器 VS2中的Firefox并不能访问虚拟容器VS1中的数据,也就是不能访问/JBS/VS2文件夹。

图1 名字空间

如果运行Firefox时,因为程序中的bug,导致下载了木马程序(Trojan horse)kill,将被保存到/JBS/VS2/bin文件夹下。当Apache运行时,运行在/JBS/VS1虚拟容器中,并不会触发/JBS/VS2/bin目录下的kill木马程序。当应用程序运行完成之后,JBS模型会应用文件对比技术,发现/JBS/VS2/bin的文件变动,从而检测出木马入侵。

JBS模型不仅仅提供入侵检测,木马查杀,系统安全等功能,而且为操作系统更新程序也提高很大便利。通过使用Linux系统的自动更新程序(例如:Debian操作系统的apt-get和Red hat的yum),更新宿主操作系统的应用程序。当虚拟容器运行时,会调用宿主操作系统最新版本的应用程序程序。

2 JBS系统测试

本文为了测试JBS模型的性能,选择4个比较常用应用软件进行测试:HTTP服务器Apache,桌面文本编辑器gedit,浏览器Firefox,还有版本管理工具SVN。通过测量系统调用的数量,来分析JBS模型对性能的改进。

2.1 系统调用对比测试

本文选择使用Kprobes作为内核检测工具,用于检测和记录系统调用。对比宿主操作系统,虚拟容器中的应用程序,所做操作相同。测试包括四个环节:①使用 gedit编辑一个文件,读取500个字节,写入600个字节,将一文章拷贝粘贴到另一篇文章中,总共操作花费了1分钟。②使用Firefox去访问北京工业大学网站(http://www.bjut.edu.cn),点击所有导航,最后回到首页。③使用 Apache服务,提供静态网站服务,将 bjut.edu.cn网站抓取下来,放在本地,使用 wget请求页面,5秒钟一次,一共1分钟;④最后测试SVN版本管理工具,使用SVN客户端应用程序,上传总共20个文件,总共10Mbit。每个应用程序都是单独运行在虚拟容器中或者主机中的,所有其他非必要服务和程序,在测试的时候都是关闭的。测试结果如图2所示,从图2中可以明显看出虚拟容器需要记录的系统调用的数量有了明显的下降。这是因为虚拟容器可以看成一个特殊的应用程序,它包括所有属于它的进程和线程。而实际操作系统,它在同一个时间会处理多个系统事件,远远超过了虚拟容器需要处理的事件。

2.2 启动对比测试

测试应用程序启动时需要记录的系统调用和必须记录的系统调用。当应用程序启动时,会加载必须的他所需的静态库和其他资源文件。为了提高测试的真实性,在运行这些测试程序之前,修改它们的默认配置:Firefox默认首页为空白页,gedit直接打开,Apache和SVN的配置最小化启动。测试结果如图3所示。

从图3可以看出,Apache和SVN必须记录的系统事件很少,接近于零。通过使用只读应用程序运行方式,减少系统调用的记录数量。

图3与图2是不能相互比较的,图2是多个软件交互之后得出的测量结果。如果打开Firefox 10次的话,JBS模型需要记录系统调用是 5000次,而本地操作系统需要记录的次数就是44000次,比例超过1比8。

3 结束语

本文提出一个通用的软件交互检测模型 JBS,基于Linux-VServer]进行扩展,增加对统一名字空间文件系统的支持,实现了操作系统容器虚拟监测环境COSVME。解决虚拟容器中的软件交互检测和系统资源隔离的问题。

通过应用JBS模型,让系统调用记录降低到原来的1/8。对比通用系统调用记录系统,证明本文提出的通用JBS模型,明显减少了记录应用程序的系统调用的数量,并提高了监测性能。因为基于Linux操作系统,JBS模型也具有了支持不同硬件平台的特性。

JBS模型作为一种通用性软件交互检测模型,可以被应用于多种硬件平台,检测不同类型的应用程序。它可以被应用于软件审查,入侵检测,系统分析和系统恢复等系统安全方面研究。

[1] Linux-VServer: http://linux-vserver.org/Paper.

[2] Soltesz,S., Pötzl, H.,Fiuczynski,M. E.,Bavier,A.,and Peterson,L.Container-based operating system virtualization: a scalable,high-performance alternative to hypervisors[C]. In Proceedings of the ACM Sigops/Eurosys European Conference on Computer Systems (EuroSys '07),Lisbon, Portugal,March 2007.

猜你喜欢

文件夹调用宿主
病原体与自然宿主和人的生态关系
龟鳖类不可能是新冠病毒的中间宿主
核电项目物项调用管理的应用研究
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
基于系统调用的恶意软件检测技术研究
挂在墙上的文件夹
抓住自然宿主
不容忽视的空文件夹
人乳头瘤病毒感染与宿主免疫机制