阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Xen安全架构sHype/ACM策略配置图文教程

138次阅读
没有评论

共计 17254 个字符,预计需要花费 44 分钟才能阅读完成。

实验要求

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 系统。

CloudStack 编译环境 XenServer 启动系统虚拟机失败 http://www.linuxidc.com/Linux/2013-08/88694.htm

禁止 CloudStack 删除 XenServer 原有虚拟机 http://www.linuxidc.com/Linux/2013-08/88693.htm

XenServer 中设置 Linux VM 从光驱引导 http://www.linuxidc.com/Linux/2013-07/87699.htm

开启并配置 Citrix XenServer 的 SNMP 服务 http://www.linuxidc.com/Linux/2013-01/78487.htm

重置 XenServer 本地磁盘 LVM 为 EXT3 格式 http://www.linuxidc.com/Linux/2013-11/92282.htm

在 Debian 上安装和配置 Xen  http://www.linuxidc.com/Linux/2010-04/25351.htm

Fedora 20 源码安装 Xen4.3.0  http://www.linuxidc.com/Linux/2015-04/116551.htm

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 命令。结果例如以下:

Xen 安全架构 sHype/ACM 策略配置图文教程

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 的终端命令行,例如以下图所看到的。

Xen 安全架构 sHype/ACM 策略配置图文教程

接着类似地创建 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 

Xen 安全架构 sHype/ACM 策略配置图文教程

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-04/129857p2.htm

 

第 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 三项增加到一个冲突集中。终于结果例如以下图所看到的:

Xen 安全架构 sHype/ACM 策略配置图文教程

选择菜单里的 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 策略。

Xen 安全架构 sHype/ACM 策略配置图文教程 

然后创建 domain1 虚拟机,保持 domain1 开启的同一时候,再启动 domain2 虚拟机:

xm create domain2.xm
xm create domain2.xm

这时我们会发现 domain2 虚拟机创建失败。例如以下图所看到的,提示 Error: Domain inconflict set with running domain? 

Xen 安全架构 sHype/ACM 策略配置图文教程 

这是因为在 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.linuxidc.com/Linux/2013-03/81303.htm

[3] XEND. http://wiki.xen.org/wiki/XEND

[4] Ubuntu 10.04(with grub2)安装 Xen 4.0.1. http://www.linuxidc.com/Linux/2011-07/39259.htm

[5] 怎么用 U 盘安装 Ubuntu. http://www.linuxidc.com/Linux/2014-10/108402.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/129857.htm

实验要求

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 系统。

CloudStack 编译环境 XenServer 启动系统虚拟机失败 http://www.linuxidc.com/Linux/2013-08/88694.htm

禁止 CloudStack 删除 XenServer 原有虚拟机 http://www.linuxidc.com/Linux/2013-08/88693.htm

XenServer 中设置 Linux VM 从光驱引导 http://www.linuxidc.com/Linux/2013-07/87699.htm

开启并配置 Citrix XenServer 的 SNMP 服务 http://www.linuxidc.com/Linux/2013-01/78487.htm

重置 XenServer 本地磁盘 LVM 为 EXT3 格式 http://www.linuxidc.com/Linux/2013-11/92282.htm

在 Debian 上安装和配置 Xen  http://www.linuxidc.com/Linux/2010-04/25351.htm

Fedora 20 源码安装 Xen4.3.0  http://www.linuxidc.com/Linux/2015-04/116551.htm

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 命令。结果例如以下:

Xen 安全架构 sHype/ACM 策略配置图文教程

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 的终端命令行,例如以下图所看到的。

Xen 安全架构 sHype/ACM 策略配置图文教程

接着类似地创建 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 

Xen 安全架构 sHype/ACM 策略配置图文教程

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-04/129857p2.htm

 

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计17254字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中