Xen安全架构sHype/ACM策略配置图文教程
实验要求
1. 熟悉Xen虚拟化平台部署;
2. Xen sHype/ACM安全架构中的Simple TE和Chinese Wall策略及事实上现机制的分析与验证。
第1章 Xen环境部署
1.1 版本号选择
因为Ubuntu使用广泛。软件包易于下载。我们选择Ubuntu系统进行Xen部署。
可选择的LTS系统例如以下[1]:
1)Ubuntu 10.04系统採用的是Linux 2.6.32内核,因为Linux 3.0下面内核不支持Xen[2],须要又一次编译内核。较为费时费力,内核编译后支持Xen 4.0;
2)Ubuntu 12.04系统採用Linux 3.2+内核,支持Xen 4.1;Xen从4.1開始将xm工具集列为deprecated[3]。而进行ACM/sHype策略方面的配置利用xm工具实现较为方便;
3)Ubuntu 12.04系统採用Linux 3.2+内核。支持Xen 4.2。从Xen 4.2開始,不再支持ACM安全模块。因此不合适。
4)Ubuntu 14.04系统採用Linux 3.13+内核,支持Xen 4.4;
5)Ubuntu 15.04系统採用Linux 3.19.3内核,支持Xen 4.5,Xen从4.5開始取消xm工具集(xend),用xl工具集进行取代[3]。
综合以上几点原因,Xen环境採用Ubuntu 12.04 x64部署较为合适,Xen版本号选择4.1,可是本文选择的是Ubuntu 14.04 x64 + Xen 4.1的组合,事实证明也是能够成功安装的。
依据文章[4]中的建议,应该选择64-bit的Ubuntu安装较为合理。
因此我们的安装镜像最后确定为ubuntu-14.04-desktop-amd64.iso。
因为Xen的dom0系统支持的显卡有限。不支持VMware Workstation虚拟机中的默认显卡,在安装Xen后重新启动会导致系统黑屏,无法使用。因此此实验不能选择VMware虚拟机,仅仅能选择物理机上安装Ubuntu进行实验。
利用[5]中的教程进行Ubuntu 14.04 LTS x64的U盘安装盘的制作。再利用该安装盘进行安装就可以。假设是与Windows双系统,则须要用EasyBCD恢复引导菜单,通过引导菜单进入Ubuntu系统。
1.2 Xen源代码下载及安装依赖包
因为Xen公布的二进制安装包默认不含有XSM功能,开启XSM功能必须改变编译选项并进行又一次编译。
因此本文须要从Xen源代码进行安装。
从2013年2月開始,Xen源代码採用git进行管理。其git库地址为:
git://xenbits.xen.org/xen.git
源代码下载採用的命令是:
git clone git://xenbits.xen.org/xen.git
cd xen
git checkout stable-4.1
编译须要用到git,须要提前安装好:
apt-get install git
接着安装依赖包:
apt-get install bcc bin86 gawk bridge-utils iproutelibcurl3 libcurl4-openssl-dev bzip2 module-init-tools transfig tgif texinfotexlive-latex-base texlive-latex-recommended texlive-fonts-extratexlive-fonts-recommended pciutils-dev mercurial build-essential make gcclibc6-dev zlib1g-dev python python-dev python-twisted libncurses5libncurses5-dev patch libvncserver-dev libsdl-dev libjpeg62-dev iasl libbz2-deve2fslibs-dev git-core uuid-dev ocaml libx11-dev bison flex binutils xorg-devudev gettext libgcrypt11-dev libssl-dev pciutils libglib2.0-dev gcc-multilib fakeroot pkg-config libpci-devcrash crash kexec-tools makedumpfile
1.3 Xen源代码编译
1)在Xen 4.0以后,XSM有ACM和FLASK两个模块,默认都不开启,须要选择当中一个。然后进行编译,其Config.mk文件内容例如以下:
XSM_ENABLE ?= n
FLASK_ENABLE ?= n
ACM_SECURITY ?= n
2)从Xen 4.2開始,FLASK成为默认的XSM模块,当启用XSM时默认启用FLASK,而ACM默认不启动。其Config.mk文件内容例如以下:
XSM_ENABLE ?= n
FLASK_ENABLE ? = $(XSM_ENABLE)
因为本文採用的版本号是Xen4.1,因此须要依照下面命令改动Config.mk:
XSM_ENABLE ?= y
FLASK_ENABLE ?= n
ACM_SECURITY ? = y
然后执行例如以下命令进行编译:
make dist或make xen tools stubdom
make install-xen
make install-toolsPYTHON_PREFIX_ARG="--install-layout=deb"
make install stubdom
1.4 改动/etc/modules
改动/etc/modules文件,加入下面行:
xen-evtchn
xen-gntdev
xen-netback
xen-blkback
xenfs
blktap
1.5 加入Lib搜索路径
改动/etc/ld.so.conf.d/libc.conf文件,加入例如以下几行:
/usr/local/lib(已有)
/lib64
/usr/lib
/usr/lib64
执行ldconfig命令使改动生效。
1.6 改动grub启动项
步骤一:改动/etc/default/grub文件,将GRUB_TIMEOUT=10改动为GRUB_TIMEOUT=-1,将GRUB_HIDDEN_TIMEOUT=0改动为GRUB_HIDDEN_TIMEOUT=10。
步骤二:运行update-grub。
对于Ubuntu 14.04在/boot/grub/grub.cfg中能自己主动生成’Ubuntu, with Xen hypervisor’启动项。不须要像在Ubuntu 12.04中一样自己手动再配置。
重新启动系统。
1.7 測试Xen环境
首先启动xend:
//首先启动xencommons
service xencommons start
//启动xend之前关闭网卡启动xend之后重新启动网卡(假设不这样做会提示出错。原因暂不详)
ifconfig eth0 down
service xend start
ifconfig eth0 up
接着执行xm list命令。结果例如以下:
Name ID Mem VCPUs State Time(s)
Domain-0 0 15610 8 r----- 1305.5
改动/etc/xen/xend-config.sxp文件,去掉xend-unix-server no的凝视,并改为xend-unix-server yes,去掉xend-unix-path/var/lib/xend/xend-socket的凝视。
1.8 创建虚拟机
首先。须要制作虚拟机的磁盘文件,输入下面命令创建10GB的磁盘文件
dd if=/dev/zero of=vm1disk bs=1k seek=10000kcount=0
mkfs -t ext3 vm1disk
(当须要回复确认时,回答y)
mount -o loop vm1disk /mnt
cp -ax /{root,dev,var,etc,usr,bin,sbin,lib} /mnt
mkdir /mnt/{proc,sys,home,tmp}
然后对/mnt/etc/fstab,/mnt/etc/hostname进行自己定义的改动,这里省略不做改动。
umount /mnt
此时,虚拟机磁盘文件vm1disk就已创建完成,用类似的方式创建vm2disk。
接着,编辑虚拟机配置文件/root/domain1.xm,其内容例如以下所看到的:
kernel= "/boot/vmlinuz-3.13.0-24-generic.efi.signed"
memory = 512
name = "domain1"
dhcp = "dhcp"
disk = ['tap:aio:/root/vm1disk,sda1,w']
root = "/dev/sda1 ro xencons=tty"
最后,执行命令:
xm createdomain1.xm
正常情况下,虚拟机domain1应该已经启动。
通过xm console domain1命令能够打开虚拟机domain1的终端命令行,例如以下图所看到的。
接着类似地创建domain2.xm。再执行xm create domain2.xm启动domain2虚拟机。
1.9 測试ACM/sHype环境
改动/etc/xen/xend-config.sxp。添加(xsm_module_name acm)。否则,ACM策略类型将被觉得不支持(未指定使用的xsm类型),出错标识为执行xm getpolicy命令,提示Supported security subsystems : None。改动源码中的xend-config.sxp似乎没有效果,仅仅能改动编译后的文件。
执行xensec_toolgetpolicy命令,结果例如以下,则说明ACM/sHype环境至此就搭建完毕了。
在Windows上安装Python 2.7 x64和wxPython 3.0 x64 for Python 2.7,当中wxPython的下载页面例如以下:http://www.wxpython.org/download.php#msw
相同在Ubuntu上安装wxPython:
apt-get install python-wxgtk2.8 python-wxtools
执行下面命令,假设能出现下图所看到的界面,说明策略配置工具安装完成。
python /usr/sbin/xensec_ezpolicy
第2章 ACM策略配置
在xensec_ezpolicy里,点击New Orgbutton。新增加三个组织:A-Bank、B-Bank和AutoCorp,而且在A-Bank下创建两个部门:SecurityUnderwriting和MarketAnalysis。然后选中__UNLABELED__、A-Bank和B-Bank三项,点击Create run-time exclusion rulefrom selectionbutton,将其增加到一个冲突集中,接着用类似方法将__UNLABELED__、A-Bank.MarketAnalysis和A-Bank.SecurityUnderwriting三项增加到一个冲突集中。终于结果例如以下图所看到的:
选择菜单里的File ->Save as Xen ACM Security Policy …将策略文件保存到路径:/etc/xen/acm-security/policies/mytest-security_policy.xml
该文件终于内容例如以下所看到的:
<?xml version="1.0" encoding="UTF-8"? >
<!-- Auto-generated by ezPolicy -->
<SecurityPolicyDefinition xmlns="http://www.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com ../../security_policy.xsd ">
<PolicyHeader>
<PolicyName>mytest</PolicyName>
<Date>Tue Jun 09 14:41:58 2015</Date>
<Version>1.0</Version>
</PolicyHeader> <SimpleTypeEnforcement>
<SimpleTypeEnforcementTypes>
<Type>SystemManagement</Type>
<Type>__UNLABELED__</Type>
<Type>A-Bank</Type>
<Type>A-Bank.SecurityUnderwriting</Type>
<Type>A-Bank.MarketAnalysis</Type>
<Type>B-Bank</Type>
<Type>AutoCorp</Type>
</SimpleTypeEnforcementTypes>
</SimpleTypeEnforcement> <ChineseWall priority="PrimaryPolicyComponent">
<ChineseWallTypes>
<Type>SystemManagement</Type>
<Type>__UNLABELED__</Type>
<Type>A-Bank</Type>
<Type>A-Bank.SecurityUnderwriting</Type>
<Type>A-Bank.MarketAnalysis</Type>
<Type>B-Bank</Type>
<Type>AutoCorp</Type>
</ChineseWallTypes> <ConflictSets>
<Conflict name="RER">
<Type>__UNLABELED__</Type>
<Type>A-Bank</Type>
<Type>B-Bank</Type>
</Conflict>
<Conflict name="RER">
<Type>__UNLABELED__</Type>
<Type>A-Bank.MarketAnalysis</Type>
<Type>A-Bank.SecurityUnderwriting</Type>
</Conflict>
</ConflictSets>
</ChineseWall> <SecurityLabelTemplate>
<SubjectLabels bootstrap="SystemManagement">
<VirtualMachineLabel>
<Name>SystemManagement</Name>
<SimpleTypeEnforcementTypes>
<Type>SystemManagement</Type>
<Type>__UNLABELED__</Type>
<Type>A-Bank</Type>
<Type>A-Bank.SecurityUnderwriting</Type>
<Type>A-Bank.MarketAnalysis</Type>
<Type>B-Bank</Type>
<Type>AutoCorp</Type>
</SimpleTypeEnforcementTypes>
<ChineseWallTypes>
<Type>SystemManagement</Type>
</ChineseWallTypes>
</VirtualMachineLabel> <VirtualMachineLabel>
<Name>__UNLABELED__</Name>
<SimpleTypeEnforcementTypes>
<Type>__UNLABELED__</Type>
</SimpleTypeEnforcementTypes>
<ChineseWallTypes>
<Type>__UNLABELED__</Type>
</ChineseWallTypes>
</VirtualMachineLabel> <VirtualMachineLabel>
<Name>A-Bank</Name>
<SimpleTypeEnforcementTypes>
<Type>A-Bank</Type>
</SimpleTypeEnforcementTypes>
<ChineseWallTypes>
<Type>A-Bank</Type>
</ChineseWallTypes>
</VirtualMachineLabel> <VirtualMachineLabel>
<Name>A-Bank.SecurityUnderwriting</Name>
<SimpleTypeEnforcementTypes>
<Type>A-Bank.SecurityUnderwriting</Type>
</SimpleTypeEnforcementTypes>
<ChineseWallTypes>
<Type>A-Bank</Type>
<Type>A-Bank.SecurityUnderwriting</Type>
</ChineseWallTypes>
</VirtualMachineLabel> <VirtualMachineLabel>
<Name>A-Bank.MarketAnalysis</Name>
<SimpleTypeEnforcementTypes>
<Type>A-Bank.MarketAnalysis</Type>
</SimpleTypeEnforcementTypes>
<ChineseWallTypes>
<Type>A-Bank</Type>
<Type>A-Bank.MarketAnalysis</Type>
</ChineseWallTypes>
</VirtualMachineLabel> <VirtualMachineLabel>
<Name>B-Bank</Name>
<SimpleTypeEnforcementTypes>
<Type>B-Bank</Type>
</SimpleTypeEnforcementTypes>
<ChineseWallTypes>
<Type>B-Bank</Type>
</ChineseWallTypes>
</VirtualMachineLabel> <VirtualMachineLabel>
<Name>AutoCorp</Name>
<SimpleTypeEnforcementTypes>
<Type>AutoCorp</Type>
</SimpleTypeEnforcementTypes>
<ChineseWallTypes>
<Type>AutoCorp</Type>
</ChineseWallTypes>
</VirtualMachineLabel>
</SubjectLabels> <ObjectLabels>
<ResourceLabel>
<Name>SystemManagement</Name>
<SimpleTypeEnforcementTypes>
<Type>SystemManagement</Type>
</SimpleTypeEnforcementTypes>
</ResourceLabel> <ResourceLabel>
<Name>__UNLABELED__</Name>
<SimpleTypeEnforcementTypes>
<Type>__UNLABELED__</Type>
</SimpleTypeEnforcementTypes>
</ResourceLabel> <ResourceLabel>
<Name>A-Bank</Name>
<SimpleTypeEnforcementTypes>
<Type>A-Bank</Type>
</SimpleTypeEnforcementTypes>
</ResourceLabel> <ResourceLabel>
<Name>A-Bank.SecurityUnderwriting</Name>
<SimpleTypeEnforcementTypes>
<Type>A-Bank.SecurityUnderwriting</Type>
</SimpleTypeEnforcementTypes>
</ResourceLabel> <ResourceLabel>
<Name>A-Bank.MarketAnalysis</Name>
<SimpleTypeEnforcementTypes>
<Type>A-Bank.MarketAnalysis</Type>
</SimpleTypeEnforcementTypes>
</ResourceLabel> <ResourceLabel>
<Name>B-Bank</Name>
<SimpleTypeEnforcementTypes>
<Type>B-Bank</Type>
</SimpleTypeEnforcementTypes>
</ResourceLabel> <ResourceLabel>
<Name>AutoCorp</Name>
<SimpleTypeEnforcementTypes>
<Type>AutoCorp</Type>
</SimpleTypeEnforcementTypes>
</ResourceLabel>
</ObjectLabels>
</SecurityLabelTemplate>
</SecurityPolicyDefinition>
下一步。关闭全部虚拟机,在命令行里运行下面命令,使刚才编辑的策略生效。
xm resetpolicy
xm setpolicy ACM mytest
以下,给domain1和domain2分别设置A-Bank和B-Bank的标签:
xm addlabel A-Bank dom domain1.xm
xm addlabel B-Bank dom domain2.xm
接着,给虚拟磁盘文件设置A-Bank和B-Bank的标签:
xm addlabel A-Bank res tap:aio:/root/vm1disk
xm addlabel B-Bank res tap:aio:/root/vm2disk
设置结果如图所看到的。
这样才干保证虚拟机domain1能訪问磁盘文件vm1disk,虚拟机domain1能訪问磁盘文件vm1disk,虚拟机才会创建成功,从而验证了STE策略。
然后创建domain1虚拟机,保持domain1开启的同一时候,再启动domain2虚拟机:
xm create domain2.xm
xm create domain2.xm
这时我们会发现domain2虚拟机创建失败。例如以下图所看到的,提示Error: Domain inconflict set with running domain?
这是因为在ChineseWall策略里,虚拟机domain1的标签为A-Bank,虚拟机domain2的标签为B-Bank,而A-Bank和B-Bank在同一个利益冲突类(Run-time Exclustion Rules)中,因此无法同一时候在同一个主机中执行。
第3章 遇到的错误与解决方式
1. 编译tools时失败,提示check_python_devel函数检查失败。是个bug
解决方式:改动/xen/tools/check/check_python_devel文件。去掉里面的验证
2. 编译tools时失败。提示undefinedreference to symbol 'timer_settime@@GLIBC_2.3.3
解决方式:依照http://stackoverflow.com/questions/18286738/undefined-reference-to-symbol-timer-settimeglibc-2-3-3里的说明。将/xen/tools/ioemu-remote/Makefile.target里的LIBS+=-lm改动为LIBS+=-lz
-lrt –lm
3. 编译tools时失败,提示xg_main.c:181:52:error: 'ulong' undeclared (first use in this
function)
解决方式:參照http://lists.xen.org/archives/html/xen-devel/2012-12/msg00429.html
改动/xen/tools/debugger/gdbsx/xg/xg_main.c。在文件开头增加#include <sys/types.h>
4. 编译tools时失败,提示ocamlfind:command not found
解决方式:apt-getinstall ocaml-findlib
5. 编译tools时失败,提示Error:Unbound module Xenbus
解决方式:改动/xen/tools/ocaml/xenstored/connection.ml里的Line:118,把那三行凝视掉。加入let is_backend_mmap con =false
6. Ubuntu怎样进行视频录制
解决方式:利用kazam进行视频录制。用法例如以下:
apt-get install kazam
apt-get install pulseaudio
pulseaudio //打开pulseaudioserver
kazam //执行视频录制软件
第4章 參考资料
[1] List of Ubuntu releases. http://en.wikipedia.org/wiki/List_of_Ubuntu_releases#Table_of_versions
[2] Ubuntu12.04安装Xen4. http://www.cppblog.com/LIULIANG/archive/2012/09/21/191481.html
[3] XEND. http://wiki.xen.org/wiki/XEND
[4] Ubuntu 10.04 (with grub2)安装 Xen 4.0.1. http://www.codesky.net/article/201107/174124.html
[5] 怎么用u盘安装ubuntu. http://jingyan.baidu.com/article/a3761b2b66fe141577f9aa51.html
Xen安全架构sHype/ACM策略配置图文教程的更多相关文章
- tomcat是什么?Tomcat 下载、安装、配置图文教程
你用浏览器上网的所有操作,所有请求发送给服务器(tomcat),服务器通过请求,找相应的逻辑处理程序(jsp或servelet或java类,就是有关java语言的所有可以处理逻辑的代码,其中包括访问后 ...
- win7下IIS的安装和配置 图文教程
转自 http://www.jb51.net/article/29787.htm 最近工作需要IIS,自己的电脑又是Windows7系统,找了下安装的方法,已经安装成功.在博客里记录一下,给需要的 ...
- MySQL5.7免安装版配置图文教程
MySQL5.7免安装版配置图文教程 更新时间:2017年09月06日 10:22:11 作者:吾刃之所向 我要评论 Mysql是一个比较流行且很好用的一款数据库软件,如下记录了我学习总结的 ...
- Zend Server 安装与配置图文教程
Zend Server是一款专业的PHP Web开发应用服务器,一些初次接触并使用此程序的朋友可能不太了解安装方法,本文为您提供了Zend Server 安装与配置图文教程,欢迎大家阅读,并提出自己的 ...
- JDK下载安装与环境变量配置图文教程【超详细】
JDK下载安装与环境变量配置图文教程[超详细] 创建时间:2019年11月13日11时02分 文章目录 1. JDK介绍 1.1 什么是JDK? 1.2 JDK版本介绍 2. JDK下载与安装 3.w ...
- Apache Tomcat下载、安装、配置图文教程
本文已迁移到我的个人网站 http://www.wshunli.com 文章地址: http://www.wshunli.com/2016/03/19/Tomcat安装配置/ (整理截图.安装过程更加 ...
- SDK?JDK?JDK 下载、安装、配置图文教程
什么是软件开发工具包(SDK) 开发一个软件,需要经过编辑.编译.调试.运行几个过程. 编辑:使用编程语言编写程序代码的过程. 编译:如上一节所讲,就是将编写的程序进行翻译. 调试:程序不可能一次 ...
- Jrebel6.3.3破解,配置图文教程
JRebel是个很好的开发工具,我在网上找了好久都没有找到很详细的教程,破解与配置教程千篇一律,步骤不详细.编写这篇教程,综合网络上的知识,加上了自己的理解与详细图文步骤. 安装 一般最新的插件是没有 ...
- 【风马一族_mysql】MySQL免安装版环境配置图文教程
mysql存放在某一个磁盘中(笔者使用E盘) 配置系统变量 打开 电脑的属性 点击 高级系统设置 选择 高级 点击 环境变量 选择 系统变量 点击 变量Path,追加 值 E:\mysql-5.6.2 ...
随机推荐
- Informatica9.6.1在Linux Red Hat 5.8上安装遇到的有关问题整理_3
3.Repository Service启动后的页面编码问题 1)错误信息: 2)原因分析及解决步骤 原因分析: informatica产品安装背后AdminConsole的Code page默认为U ...
- invalid initialization of non-const reference of type与discards qualifiers
参数传递 函数参数的传递是初始化语义:用调用者的实参去初始化函数的形参,如果参数是对象,需要调用该类的拷贝构造函数,如果没有显式定义的拷贝构造函数,则执行默认的按成员拷贝 ...
- Axis,axis2,Xfire以及cxf对比
http://ws.apache.org/axis/ http://axis.apache.org/axis2/java/core/ http://xfire.codehaus.org/ http:/ ...
- zend+xdebug单步调试
也允许使用第三方调试工具,今天以PHP教程形式分享如何使用zend studio配置Xdebug来调试PHP程序. 使用Xdebug在zend studio中调试PHP源码之前,请务必安装配置Xdeb ...
- 使用c++11改写loki的TypeList
最近看了C++11的一些特性,最感兴趣的是可变模板参数,自动类型推断和匿名函数. Loki中的TypeList,是需要递归定义的,并且需要一个NullType作为尾节点. 可变模板参数使得实现Type ...
- 设计模式 策略-Strategy,装饰-Decorator,观察者-Observer
重温了Head First 3个设计模式.提炼一下思想,笔记如下. 策略-Strategy 当一个类或类族中重复实现某些同类的方法(behavior)时,考虑使用策略模式. 该模式是将Behavior ...
- <System.ServiceModel>
實例: <system.serviceModel> <diagnostics performanceCounters="All" /> < ...
- Canvas 2D绘制抗锯齿的1px线条
当绘制1像素的线条时,发现多条线明显存在着粗细不均的问题,线条带有明显的锯齿. 事实上,Canvas的绘制线条指令都存在这个状况,如lineTo,arcTo,strokeRect. 解决方案是将Can ...
- mysql根据时间查询前一天数据
MySql数据库如何根据时间查询前一天的数据?本文整理了几个解决方法,有需要的朋友参考下. 本节内容:用MySql怎么根据时间查询前一天的数据. 例1: 代码示例: select * from t ...
- 精美&创意的WordPress新发主题集合
今天我整理了一些精美&创意的WordPress新发主题,它们基本上都融合了最新的设计理念,从简约到响应式,应有尽有. Engo – Smart & Minimal WordPress ...