参考:http://www.ibm.com/developerworks/cn/aix/systemmaga/8/New_Way_Secure_Cloud/index.html(tboot)
https://en.wikipedia.org/wiki/Trusted_Execution_Technology(txt技术)
tboot简介:
为什么会使用到这种技术请参考第一个链接。
tboot全称trusted boot翻译过来就是可信的引导,它是基于txt(trusted Excution Technology)技术对要启动的宿主系统进行可信的检测,具体的技术实现细节参考以上两个链接。既然要对系统启动进行检测,那么显然,tboot要在内核启动之前启动,因为我这里的系统是借助于grub引导,所以我的实验是修改grub.conf从而更换启动顺序,如果有用其他程序引导的,请根据实际情况修改。
txt技术需要硬件支持,而且依赖于vt和vt-d技术,所以开启功能时也需要开启这两个,还有一个是tpm(trusted platform module可信平台模块),这个用来保存软件的指纹信息,每次软件启动时都会检测并对比这些指纹信息是否一致,从而判断是否存在风险。
tboot的安装使用:
1.开启txt技术的功能
bios选项位于:Advanced-->Processor Configuration-->Intel(R) TXT
vt和vt-d:Advanced-->Processor Configuration--> Intel(R) Virtualization Technology 和 Intel(R)VT for Direct I/O
tpm:Security -->TPM administartive Control
2.内核支持
[[email protected] ~]# grep -i -E "txt|tcg|iommu|virtual|tpm" /boot/config-2.6.32-431.el6.x86_64 查看
CONFIG_HAVE_INTEL_TXT=y
CONFIG_GART_IOMMU=y
CONFIG_CALGARY_IOMMU=y
# CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT is not set
CONFIG_AMD_IOMMU=y
CONFIG_AMD_IOMMU_STATS=y
CONFIG_IOMMU_HELPER=y
CONFIG_IOMMU_API=y
CONFIG_TCG_TPM=y
CONFIG_TCG_TIS=y
CONFIG_TCG_NSC=m
CONFIG_TCG_ATMEL=m
CONFIG_TCG_INFINEON=m
# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
CONFIG_FB_VIRTUAL=m
# CONFIG_DEBUG_VIRTUAL is not set
# CONFIG_IOMMU_DEBUG is not set
# CONFIG_IOMMU_STRESS is not set
ONFIG_INTEL_TXT=y
CONFIG_VIRTUALIZATION=y
CONFIG_TCG_TPM=y
3.安装tboot
yum install tboot -y
4.修改grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /tboot.gz logging=vga,serial,memory
module /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=c492ad38-5c04-46e2-bddb-7b05428e16fa rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
module /initramfs-2.6.32-431.el6.x86_64.img
module /WSM_SINIT_100407_rel.bin
这里grub引导程序首先加载tboot.gz,而元贝的kernel和initrd都改为以模块方式启动,WSM_SINIT_100407_rel.bin是当前系统的SINIT AC模块,需要到硬件供应商那去索取,也可以选择不要这个模块的功能,不进行加载
5.获取可信平台的所有权
modprobe tpm_infineon #这个是tpm的硬件驱动,有的是tpm_tis等
tcsd #启动tpm守护进程
6.查看txt执行状态
txt_stat 部分结果如下:
***********************************************************
TXT measured launch: TRUE
secrets flag set: TRUE
***********************************************************
libvirt简介:参考:http://libvirt.org/
假设这么一种场景:我们不懂英语,而又想跟美国人做交易,那么我们有什么方法解决呢?一种是我们自学英语,这无疑是比较浪费时间的;而另一种就是请个翻译过来,这个就快捷多了。
libvirt的角色就是类似于上述场景的翻译,上层用户空间直接和hypervisor打交道会比较复杂,而libvirt则是屏蔽了底层hypervisor的细节,为上层管理工具提供了一个统一的,较稳定的接口(api)。而且这个libvirt还是上述场景中精通多种语言的翻译,支持多种虚拟化方案,比如kvm、xen、LXC等等。
libvirt的几个重要概念如下:
节点(node):其实就是一个物理机器,上面可能运行多个虚拟机
hypervisor:也称vmm,就是kvm,xen等实现虚拟化的软件
domain:就是一个虚拟机,也称为instance(实例)
libvirt的安装:
yum install libyajl yajl-devel libxml* device-mapper* libpciaccess-devel libnl-devel -y
wget http://libvirt.org/sources/libvirt-2.5.0.tar.xz
tar xf libvirt-2.5.0.tar.xz
cd libvirt-2.5.0
./configure --help
./configure --prefix=/usr/local/libvirt
make && make install
libvirt的安装很简单,主要是configure 会提示缺少很多库,此时可以 yum list all |grep "lib_keyword" 查看库的关键字,查找对应的库安装即可,yum里面是我的系统缺少的,总结出来以供参考。