linux搭建--centos使用qemu-kvm,libvirt搭建虚拟机,并搭建libvmi来虚拟机自省(四)

qemu版本:2.4.0.1
libvmi版本:0.10.1
libvirt版本:2.4.0

1、安装qemu

sudo yum install virt-viewer tigervnc -y
sudo yum install bc qemu-kvm libuuid-devel libaio-devel gcc zlib-devel glib2 glib2-devel libtool -y
wget http://download.qemu-project.org/qemu-2.4.0.1.tar.xz
tar xvfJ qemu-2.4.0.1.tar.xz
#下面这几步的目的是最新的libvmi里有对qemu2.4.0.1的补丁,虽然我们不使用新版的libvmi但是需要里面的patch。
git clone https://github.com/libvmi/libvmi
cd libvmi
cp libvmi/tools/qemu-kvm-patch/kvm-qemu-2.4.0.1-libvmi.patch qemu-2.4.0.1/
cd qemu-2.4.0.1
patch -p1 < ./kvm-qemu-2.4.0.1-libvmi.patch
./configure --prefix=/usr/ --target-list=x86_64-softmmu --disable-xen --enable-vnc --disable-spice --enable-kvm --enable-linux-aio --disable-docs --enable-vhost-net --disable-libiscsi --disable-smartcard-nss --enable-debug --enable-uuid
make 
sudo make install
ldconfig

2、安装libvirt

在安装前先删除系统自带的libvirt,一般在/usr/lib/下,不确定的可以查找一下:

find / -name libvirt-admin*
find / -name libvirt-lxc*
find / -name libvirt-qemu*
find / -name libvirt.so*

找到删除即可,然后安装:

sudo yum install yajl-devel libxml2-python libxml2-devel gnutls-devel device-mapper-devel python-devel libnl-devel libpciaccess-devel dnsmasq bison byacc flex pm-utils -y
sudo yum install xorg-x11-xauth xorg-x11-utils xorg-x11-fonts-* -y 
wget http://pkgs.fedoraproject.org/repo/pkgs/libvirt/libvirt-2.4.0.tar.xz/53ebd616857333fc3ce4dea3db986488/libvirt-2.4.0.tar.xz
tar xvfJ libvirt-2.4.0.tar.xz
cd libvirt-2.4.0
#./autogen.sh --system非常重要,可以让新安装的版本和系统发行版有相同路径,这样可以覆盖发行版,不会产生混淆
./autogen.sh --system  --localstatedir=/var --sysconfdir=/etc --enable-compile-warnings=error --with-dnsmasq-path=/usr/sbin/dnsmasq
make -j64 && make install && ldconfig
#使libvirt和python绑定
git clone https://github.com/libvirt/libvirt-python
cd libvirt-python
python setup.py build && sudo python setup.py install
#安装虚拟机管理工具
git clone https://github.com/rlaager/python-virtinst
cd python-virtinst
python setup.py build && sudo python setup.py install

完成上面两步安装后,启动libvirtd服务

systemctl start libvirtd

检测是否成功启动:

systemctl status libvirtd

要确定这一步没有报错

检查是否安装成功:
在这里插入图片描述
如果出现和pid file有关的问题,尝试用下面解决方法:

在这里插入图片描述
在这里插入图片描述

3、安装libvmi

yum install check-devel fuse-libs fuse-devel json-c-devel -y
wget https://github.com/libvmi/libvmi/archive/v0.10.1.tar.gz
tar zxf libvmi-0.10.1.tar.gz
cd libvmi-0.10.1
./autogen.sh
./configure --enable-xen=0
 make && make install && sudo ldconfig
 cp /usr/local/lib/pkgconfig/libvmi.pc /usr/share/pkgconfig
 cd ./tools/pyvmi
 python setup.py build && python setup.py install

4、 搭建网桥

yum install bridge-utils -y

备份网络配置文件,注意不要备份在当前目录下

cp /etc/sysconfig/network-scripts/ifcfg-eth1 ../ ifcfg-eth1_bk

ifcfg-eth1命名为ifcfg-br0 文件,

mv ifcfg-eth1 ifcfg-br0

修改device和name,增加type:

DEVICE=br0
TYPE=Bridge
NAME=br0

重新创建ifcfg-eth1

BOOTPROTO=none
NAME=eth1
DEVICE=eth1
ONBOOT=yes
BRIDGE=br0

然后重启网络服务

systemctl restart network

由于我的网卡是eth1,如果你还有多个网卡,以此类推即可

4、安装虚拟机

mkdir /var/data/images/
mkdir /var/data/isoes
#将镜像放到/var/data/isoes下,/var/data/images下存放虚拟机磁盘
qemu-img create -f qcow2 /var/data/images/ubuntu1204.qcow2 20G
#具体参数就不介绍了,注意虚拟机内存不要太大,2G即可,否则后面libvmi将内存溢出。
virt-install --virt-type=kvm --name=u1204 --ram=2048 --vcpus=1 --hvm --cdrom=/var/data/isoes/ubuntu-12.04-server-amd64.iso  --network=bridge=br0,model=virtio --graphics vnc,listen=0.0.0.0 --disk path=/var/data/images/ubuntu1204.qcow2,size=20,bus=virtio,format=qcow2

安装虚拟机直到成功
可以用virsh list --all查看安装完成的虚拟机

5、配置libvmi

虚拟机安装成功后,需要配置libvmi.conf

touch /etc/libvmi.conf

如何配置libvmi.conf在LibVMI Installation Instructions有介绍。依次完成就好,没有坑。
配置完成后,可以测试一下:
文件pslist.py:

#!/usr/bin/env python
import pyvmi
import sys
def get_os_params(vmi):
    ostype = vmi.get_ostype()
    if ostype.lower() == "windows":
        return get_windows_params(vmi)
    elif ostype.lower() == "linux":
        return get_linux_params(vmi)
    else:
        print("Sorry, {} ostype is not supported in this example yet.".format(
            ostype))
        exit(1)
def get_linux_params(vmi):
    tasks_offset = vmi.get_offset("linux_tasks")
    name_offset = vmi.get_offset("linux_name") - tasks_offset
    pid_offset = vmi.get_offset("linux_pid") - tasks_offset
    list_head = vmi.translate_ksym2v("init_task")
    return (tasks_offset, name_offset, pid_offset, list_head)
def get_windows_params(vmi):
    tasks_offset = vmi.get_offset("win_tasks")
    name_offset = vmi.get_offset("win_pname") - tasks_offset
    pid_offset = vmi.get_offset("win_pid") - tasks_offset
    list_head = vmi.read_addr_ksym("PsInitialSystemProcess")
    return (tasks_offset, name_offset, pid_offset, list_head)
def processes(vmi):
    tasks_offset, name_offset, pid_offset, list_head = get_os_params(vmi)
    next_process = vmi.read_addr_va(list_head + tasks_offset, 0)
    list_head = next_process
    while True:
        procname = vmi.read_str_va(next_process + name_offset, 0)
        pid = vmi.read_32_va(next_process + pid_offset, 0)
        next_process = vmi.read_addr_va(next_process, 0)
        if (pid < 1<<16):
            yield pid, procname
        if (list_head == next_process):
            break

def main(argv):
    vmi = pyvmi.init(argv[1], "complete")
    if vmi.get_access_mode() == 'file':
        print("Process listing for File {}".format(vmi.get_name()))
    else:
        print("Process listing for VM {}".format(vmi.get_name()))
    for pid, procname in processes(vmi):
        print "[%5d] %s" % (pid, procname)

if __name__ == "__main__":
    main(sys.argv)

执行 python pylist.py [vm_name],这里vm_name是我们在第4步中安装虚拟机设置的name,而且切记在第4步中虚拟机内存不要开太大,建议2G即可。如果正常输出,则以上所有步骤都搭建成功!
之后可以使用libvmi的github提供的使用volatility来进行虚拟机自省。

参考:
libvirt官网:https://libvirt.org/
libvmi官网:http://libvmi.com/
libvmi最新github项目:https://github.com/libvmi/libvmi

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值