日期:2011-12-31 17:28:00  来源:本站整理

若何判断Linux能否运行在虚拟机上[服务器安全]

赞助商链接



  本文“若何判断Linux能否运行在虚拟机上[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在有些奸商会把虚拟机当作独立服务器卖,这里简单介绍一下市面上常用虚拟技术(包含容器技术)的辨别小本领.

判断 OpenVZ/Xen PV/UML

判断 OpenVZ/Xen PV/UML 是最简单的,直接查抄 /proc 下的相关目录和文件便可以知道,比方 OpenVZ VPS 上会有 /proc/vz 这个文件;Xen PV 虚拟机上会有 /proc/xen/ 这个目录,并且目录下有一些东西;UML 上打印 /proc/cpuinfo 会找到 UML 标志.写了一个简单的 Python 脚本来检测:

#!/usr/bin/python
# check if a linux system running on a virtual machine (openvz/xen pv/uml)
import sys, os

def main():
if os.getuid() != 0:
print "must be run as root"
sys.exit(0)

# check OpenVZ/Virtuozzo
if os.path.exists("/proc/vz"):
if not os.path.exists("/proc/bc"):
print "openvz container"
else:
print "openvz node"

# check Xen
if os.path.exists("/proc/xen/capabilities"):
if (os.path.getsize("/proc/xen/capabilities") > 0):
print "xen dom0″
else:
print "xen domU"

# check User Mode Linux (UML)
f = open("/proc/cpuinfo", "r"); t = f.read(); f.close()
if (t.find("UML") > 0):
print "uml"

if __name__=="__main__":
main()

判断 VMware/Xen HVM/KVM

假如利用的是 VMware/Xen HVM/KVM 这样的全虚拟就更难判断一些,最精确的办法是读取 CPUID 来判断,Xen 源代码下面有一段检测能否是 Xen 的 C 语言代码 tools/misc/xen-detect.c,这段代码供应了一个很好的例子,重写了代码,用宏替换了函数,增添了对 VMware 和 KVM 的辨认,用 gcc 编译后便可以运行:

/*
* check if a linux system running on a virtual machine (vmware/xen hvm/kvm)
*/
#include stdio.h
#include string.h

#define HYPERVISOR_INFO 0×40000000

#define CPUID(idx, eax, ebx, ecx, edx) \
asm volatile ( \
"test %1,%1 ; jz 1f ; ud2a ; .ascii \"xen\" ; 1: cpuid" \
: "=b" (*ebx), "=a" (*eax), "=c" (*ecx), "=d" (*edx) \
: "0″ (idx) );

int main(void)
{
unsigned int eax, ebx, ecx, edx;
char string[13];

CPUID(HYPERVISOR_INFO, &eax, &ebx, &ecx, &edx);
*(unsigned int *)(string+0) = ebx;
*(unsigned int *)(string+4) = ecx;
*(unsigned int *)(string+8) = edx;

string[12] = 0;
if (strncmp(string, "XenVMMXenVMM", 12) == 0) {
printf("xen hvm\n");
} else if (strncmp(string, "VMwareVMware", 12) == 0) {
printf("vmware\n");
} else if (strncmp(string, "KVMKVMKVM", 12) == 0) {
printf("kvm\n");
} else
printf("bare hardware\n");

return
  以上是“若何判断Linux能否运行在虚拟机上[服务器安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 若何判断Linux能否运行在虚拟机上
  • 若何判断电脑网络能否有问题的办法
  • 教大家若何判断网站织梦DedeCms版本的办法
  • Sql Server中若何判断表大概数据库的存在
  • js若何判断fck的内容能否为空
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .