GuestOS安装指南与基于xen的隐蔽通道配置Version0Revision128th,Apr,2010DraftContact:bareshift@gmail.
com(editor)qingnishen@ss.
pku.
edu.
cn(advisor)WorkInProgressThisdocumentisanintermediatedraftforcommentonlyandissubjecttochangewithoutnotice.
Readersshouldnotdesignproductsbasedonthisdocument.
TVGCONFIDENTIALCopyrightTVGinPekingUniversity2007-2017可信虚拟化课题组文档计划Version0Revision01DraftTVGCONFIDENTIALCopyright2008TrustedVirtualizationGroup,Incorporated.
DisclaimerTHISSPECIFICATIONISPROVIDED"ASIS"WITHNOWARRANTIESWHATSOEVER,INCLUDINGANYWARRANTYOFMERCHANTABILITY,NONINFRINGEMENT,FITNESSFORANYPARTICULARPURPOSE,ORANYWARRANTYOTHERWISEARISINGOUTOFANYPROPOSAL,SPECIFICATIONORSAMPLE.
Withoutlimitation,TCGdisclaimsallliability,includingliabilityforinfringementofanyproprietaryrights,relatingtouseofinformationinthisspecificationandtotheimplementationofthisspecification,andTCGdisclaimsallliabilityforcostofprocurementofsubstitutegoodsorservices,lostprofits,lossofuse,lossofdataoranyincidental,consequential,direct,indirect,orspecialdamages,whetherundercontract,tort,warrantyorotherwise,arisinginanywayoutofuseorrelianceuponthisspecificationoranyinformationherein.
Nolicense,expressorimplied,byestoppelsorotherwise,toanyTVGorTVGmemberintellectualpropertyrightsisgrantedherein.
ExceptthatalicenseisherebygrantedbyTVGtocopyandreproducethisspecificationforinternaluseonly.
ContacttheTrustedComputingGroupatwww.
trustedcomputinggroup.
orgforinformationonspecificationlicensingthroughmembershipagreements.
Anymarksandbrandscontainedhereinarethepropertyoftheirrespectiveowners.
可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftTVGCONFIDENTIALRevisionHistoryVersionCommentTableofContents可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftTVGCONFIDENTIAL1ScopeandAudience.
12准备环境.
22.
1RHEL的安装.
22.
2ftp的配置.
22.
3CentOS的准备32.
4网络环境的配置.
33GuestOS的安装.
53.
1磁盘映像文件的准备53.
2获知本地ip.
53.
3开始半虚拟安装.
53.
4复制GuestOS.
153.
5创建和陷入domU154隐蔽通道场景的建立.
174.
1本隐蔽通道原理.
17模块的加载17内存映射的建立.
17缓冲区的结构18虚拟设备的操作函数.
18写操作18读操作18同步.
19模块的卸载194.
2源程序的获取194.
3编译与装载.
204.
4写入和读取.
204.
5查看信息205存在的问题.
215.
1容易出现内核错误215.
2容易陷入假死状态216参考资料.
22可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage1of22TVGCONFIDENTIAL1ScopeandAudience本文档主要以centos为例介绍如何安装GuestOS,并介绍如何在虚拟环境下配置隐蔽通道场景.
如果在vmware中,GuestOS的速度太慢,建议在物理平台上搭建xen系统.
测试平台的配置如下:VMware7.
0.
0HardwarePlatformx86_32HostOSRHEL5.
4HostOSKernelVersion2.
6.
18GuestOSGccVersion4.
1.
2GuestOSCentOS5.
3可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage2of22TVGCONFIDENTIAL2准备环境2.
1RHEL的安装RHEL的安装文件可以从https://www.
redhat.
com/apps/download下载.
在vmware7.
0上安装RHEL时,不要选择从映像文件安装,那样vmware会屏蔽掉xen的安装,自动无人值守的安装完RHEL.
我们需要选择以后安装操作系统.
RHEL的安装过程中,在软件包选择期间选择virtualization.
这样就会安装xen系统.
另外需要自定义安装ftp服务,以供ftp运行.
2.
2ftp的配置在安装CentOS前,我们需要配置ftp服务器,因为半虚拟安装只能通过网络而无法通过本地数据.
首先修改/etc/passwd文件中ftp的登陆路径:#vi/etc/passwd可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage3of22TVGCONFIDENTIAL在服务管理中开启vsftpd:2.
3CentOS的准备CentOS可以由http://mirror.
centos.
org/centos/5/isos/i386/获得因为RHEL在xen环境下不支持vmwaretools,我们需要将CentOS由iso导入RHEL系统.
则CentOS的安装光盘会位于/media/centos5.
3xxx2.
4网络环境的配置由于我们是从ftp安装GuestOS,因此需要确保桥接脚本打开.
#cd/etc/xen#vixend-config.
sxp可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage4of22TVGCONFIDENTIAL可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage5of22TVGCONFIDENTIAL3GuestOS的安装3.
1磁盘映像文件的准备创建一个大小为4G的映像文件:3.
2获知本地ip记录下本机的ip地址,以供安装命令输入.
注意,不能使用127.
0.
0.
1,因为桥接后的domU地址必然与dom0不同.
3.
3开始半虚拟安装.
这里ftp地址请输入刚才记下的本地ip.
需要注意的是在vmware里在xen下安装GuestOS会非常慢,请耐心等待.
语言只能选择English:[root@linux~]#ddif=/dev/zeroof=/disk2/xen/centos5.
imgbs=1Mcount=4096[root@linux~]#chcon-txen_image_t/disk2/xen/centos5.
img[root@linux~]#ifconfig[root@linux~]#virt-install-ncentos5_virt-r256>-f/disk2/xen/centos5.
img--nographics>-lftp://192.
168.
x.
x/media/centos5.
3xxx#-n:后面接你的domain-U的名称,这个名称的配置文件会被主动建立在/etc/xen底下#-r:后面接要给这个domain-U的内存容量,目前至少需要256MB才能够执行#-f:后面接的就是要给domain-U的映像文件#--nographics:不使用图形界面来安装#-l:后面接安装服务器的来源.
安装服务器的写法为:#NFS时:nfs:主机的IP:可以安装的目录#WWW时:http://主机的IP/实际的/完整目录#FTP时:ftp://主机的IP/实际的完整目录可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage6of22TVGCONFIDENTIAL这里我们只需要ipv4,并且打开DHCP,有关ipv6的选项都可以不选:可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage7of22TVGCONFIDENTIAL警告信息,确认格式化:使用tab键进行切换,用enter确认.
用costomlayout自定义磁盘分割:新建两个分卷:可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage8of22TVGCONFIDENTIAL可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage9of22TVGCONFIDENTIAL确认:可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage10of22TVGCONFIDENTIAL选择grup作为bootloader:控制台的驱动设备,默认:可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage11of22TVGCONFIDENTIAL我们不需要grub密码,留空:Bootloader配置,默认:可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage12of22TVGCONFIDENTIAL把bootloader安装在MBR:网络配置中也可以去掉ipv6的支持.
其他选项默认:可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage13of22TVGCONFIDENTIAL时区任意选择,root密码需要设置:可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage14of22TVGCONFIDENTIAL安装包,不能选择gnome/KDE等图形界面.
另外这里需要进入自定义设置,安装源文件支持,gcc开发环境,vi:需要等待很久,重启后登陆:可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage15of22TVGCONFIDENTIAL我们暂且关闭这个domU,来复制映像文件创建第二个GuestOS.
3.
4复制GuestOS首先,复制映像文件.
然后,复制和修改配置文件.
修改其中的domU名称,uuid,映像文件路径,mac地址3.
5创建和陷入domU[root@linux~]#poweroff[root@linux~]#cd/etc/xen[root@linux~]#cpcentos-virtcentos2-virt[root@linux~]#vicentos2-virt[root@linux~]#cd/disk2/xen[root@linux~]#cpcentos.
imgcentos2.
img[root@linux~]#xmcreatecentos-virt[root@linux~]#xmcreatecentos2-virt可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage16of22TVGCONFIDENTIAL新开两个终端,分别陷入两个domU.
至此,两个GuestOS安装完毕.
[root@linux~]#xmconsolecentos-virt[root@linux~]#xmconsolecentos2-virt可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage17of22TVGCONFIDENTIAL4隐蔽通道场景的建立4.
1本隐蔽通道原理Xen原谅GuestOS对内存分配/虚拟物理内存表:MachineFrameNumbertoPseudo-physicalFrameNumbertable-的越界访问,所以任何GuestOS都可以对mfn2pfn表进行修改.
流程图如下:模块的加载虚拟驱动的挂载通过staticintxencc_init(void)函数实现,用misc_register(&xencc_dev)注册杂项设备,调用init_ring_buffer()进行缓冲区初始化工作.
内存映射的建立下面程序要建立虚拟内存和物理内存的对应关系.
这通过allocate_mfn()函数实现:函数首先用alloc_pages()给程序分配一定的内存页,然后通过page_to_pfn(pt)获得页的虚拟内存地址pfn,再通过pfn_to_mfn(pfn)获得内存的物理地址mfn.
由此获得pfn和mfn的对应关系.
可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage18of22TVGCONFIDENTIAL缓冲区的结构缓冲通过mmu_update_t结构实现,内容包括:标记,同步,数据大小标记,剩余数据大小标记和数据区.
初始化部分如下:if(ixencc_fops={.
owner=THIS_MODULE,.
read=xencc_read,//读取.
write=xencc_write,//写入.
open=xencc_open,//打开,在这里没有用处,置空只进行DBG.
release=xencc_release,//释放,无用.
};写操作根据刚才创建的内存页的多少,写函数会调用mfn_cc_write()写最大长度的数据,mfn_cc_write()则会创建mmu_update_t结构并对其值进行设置然后调用HYPERVISOR_mmu_update()将上述数据存入映射表,同初始化时的步骤.
然后调用wait_read(),等待对方读取.
当收到ack信息后继续读取,直到rest=0,则接收完毕.
读操作首先,读方要用pfn_tag_find()函数遍历指定的内存映射表范围来寻找标记(tag),然后读取对应的数据并设置同步信息来通知写进程继续发送,直到发送完毕.
可信虚拟化课题组文档计划TVGCopyrightVersion0Revision01DraftPage19of22TVGCONFIDENTIAL同步每当写操作完成时,写模块就将自己一方的ack的值修改,初始时,ack=0,以后当ack!
=1时,置ack=1,或当ack!
=2时,置ack=2.
读操作一方会侦测到这种修改并把修改后的值记录,当记录下的这个值和现在表里的值相等时继续等待,当不等时开始读数据,读取完以后将自己方的ack值改为刚收到的ack值.
写操作会等待读操作完成,当探测到对方的ack值等于刚才自己变换后的ack值时,说明对方已经收到,可以继续发送.
直到rest=0,发送完成.
模块的卸载卸载模块首先调用misc_deregister()注销驱动,然后用kfree()清除缓冲区,则卸载完毕.
hostslim美国独立日活动正在进行中,针对一款大硬盘荷兰专用服务器:双E5-2620v2/4x 1TB SATA硬盘,活动价60美元月。HostSlim荷兰服务器允许大人内容,不过只支持电汇、信用卡和比特币付款,商家支持7天内退款保证,有需要欧洲服务器的可以入手试试,记得注册的时候选择中国,这样不用交20%的税。hostslim怎么样?HostSlim是一家成立于2008年的荷兰托管服务器商,...
PIGYun是成立于2019年的国人商家,提供香港、韩国和美西CUVIP-9929等机房线路基于KVM架构的VPS主机,本月商家针对韩国首尔、美国洛杉矶CUVIP-AS29、GIA回程带防御等多条线路VPS提供6-8.5折优惠码,优惠后韩国首尔CN2混合BGP特惠型/美国洛杉矶GIA回程带10Gbps攻击防御VPS主机最低每月14.4元起。下面列出几款不同机房VPS主机配置信息,请留意不同优惠码。...
Webhosting24是一家始于2001年的意大利商家,提供的产品包括虚拟主机、VPS、独立服务器等,可选数机房包括美国洛杉矶、迈阿密、纽约、德国慕尼黑、日本、新加坡、澳大利亚悉尼等。商家VPS主机采用AMD Ryzen 9 5950X CPU,NVMe磁盘,基于KVM架构,德国机房不限制流量,网站采用欧元计费,最低年付15欧元起。这里以美国机房为例,分享几款套餐配置信息。CPU:1core内存...