Pnet和EVE镜像制作
制作一个新的Linux的qemu镜像
可能需要安装 KVM 镜像管理工具 libguestfs-tools
,包含 guestfish 等
-
创建一个目录
mkdir /opt/unetlab/addons/qemu/Linux-xxx
-
将 ISO 镜像上传到新建的目录中
-
重命名 ISO 镜像名为
cdrom.iso
-
创建一个新的镜像
/opt/qemu/bin/qemu-img create -f qcow2 virtioa.qcow2 30G
,大小为30G -
在 lab 中添加一个 Node ,选择新建的镜像
-
开启后做进行将系统安装到
qcow2
镜像中,然后关闭 Node -
删除
cdrom.iso
-
Pnet 在 Web 打开 lab 后 , 测边栏的
System status
可直接找到 Node 对应的缓存路径NODE_SESSION_WORKSPACE
cd /opt/unetlab/tmp/1/2
-
EVE 在 Web 打开 lab 后 , 侧边栏的
Status
中找到 POD ID ,Lab Detatls
中找到 lab ID , 编辑 Node 可找到 Node IDcd /opt/unetlab/tmp/POD ID/lab UUID/Node ID/
如cd /opt/unetlab/tmp/0/3491e0a7-25f8-46e1-b697-ccb4fc4088a2/8/
-
通过命令将修改提交 :
/opt/qemu/bin/qemu-img commit virtioa.qcow2
- qemu 对外提供了一个 socket 接口,称为 qemu monitor,通过该接口,可以对虚拟机实例的整个生命周期进行管理,
/opt/unetlab/tmp/0/3491e0a7-25f8-46e1-b697-ccb4fc4088a2/8/
目录下保存着变动内容的文件,通过monitor.sock
接口与源镜像进行通信
- qemu 对外提供了一个 socket 接口,称为 qemu monitor,通过该接口,可以对虚拟机实例的整个生命周期进行管理,
-
压缩镜像
cd /opt/unetlab/addons/qemu/Linux-xxx
virt-sparsify --compress virtioa.qcow2 compressvirtioa.qcow2
mv virtioa.qcow2 virtioa.qcow2.bak
mv compressvirtioa.qcow2 virtioa.qcow2
- 擦除 (Wipe) Node 启动后可正常使用则可删除原有的镜像了
rm virtioa.qcow2.bak
-
打包镜像
cd ..
tar -zcf linux-xxx.tgz linux-xxx/
将Vulnhub靶场制作成qemu镜像
- 通过
file
检查 Vulnhub 靶场镜像的文件类型
file Warzone2.ova
Warzone2.ova: POSIX tar archive
文件类型为 : POSIX tar archive
- 使用 tar 解压
tar -xf Warzone2.ova
ls ./Warzone2
Warzone2.ovf
Warzone2-disk002.vmdk
Warzone2.mf
- 将
.vmdk
文件使用qemu-img
转化为qcow2
格式的镜像
qemu-img convert -O qcow2 Warzone2-disk002.vmdk virtioa.qcow2
- 在
/opt/unetlab/addons/qemu
创建以Vulnhub-
开通的目录
mkdir /opt/unetlab/addons/qemu/Vulnhub-Warzone2
- 将镜像文件复制到新建的目录下
- 将模板文件放到指定的目录中
- 修复权限
模板文件内容
# Copyright (c) 2016, Andrea Dainese
# Copyright (c) 2018, Alain Degreffe
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the UNetLab Ltd nor the name of EVE-NG Ltd nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---
type: qemu
description: Vulnhub
name: Vulnhub
cpulimit: 1
icon: Server_WEB.png
cpu: 2
ram: 4096
ethernet: 1
eth_name:
- eth0
eth_format: eth{0}
console: vnc
shutdown: 1
qemu_arch: x86_64
qemu_version: 2.12.0
qemu_nic: virtio-net-pci
qemu_options: -machine type=pc,accel=kvm -vga virtio -usbdevice tablet -boot order=cd
...
qemu设备添加硬盘
在镜像所在目录创建新的硬盘
这样添加的硬盘有个缺点,当保存数据到该硬盘后,需要提交修改才能在其他 Node 中被访问,参考镜像制作过程
- 新建硬盘文件
-f qcow2
指定创建格式 ,raw
格式的硬盘不支持快照
cd /opt/unetlab/addons/qemu/linux-test/
qemu-img create -f qcow2 virtiob.qcow2 10G
- 擦除现有的 Node 开启后,新建分区,格式化即可使用了
添加任意位置的虚拟磁盘镜像
镜像只需要是qemu支持的格式就行
- 创建硬盘文件
qemu-img create -f qcow2 /opt/vdisk/data.qcow2 10G
- 编辑 Node 的
QEMU custom options
,添加内容 :-drive file=/opt/vdisk/data.qcow2,index=1,media=disk,if=virtio
,注意用空格与前方内容隔开index=1
为硬盘通道,从 0 开始,0已被系统盘镜像占用,往后排即可if=virtio
为硬盘接口类型,Linux 直接就支持 virtio 类型的接口,Windows 如果有安装驱动也可识别,若未安装可改未if=ide
添加多个光驱
先关闭需要添加光驱的节点,编辑 Node 的 QEMU custom options
,添加内容 : -drive file=/opt/vdisk/xxx.iso,index=0,media=cdrom
若镜像目录下已存在 cdrom.iso
那这个 iso
将会自动被挂载到 ide
接口的 2
通道上,其他新建的可使用类推的通道。