Déploiement de vos templates Kali-linux avec Cloud-init, sous Proxmox VE

Page content

Le déploiement de vos machines virtuelles KVM via Cloud-init, permet de gagner en souplesse et en rapidité, d’autant plus si vous couplez cette méthode au système de template proposé par Proxmox.

Mais que faire si votre distribution n’inclue pas Cloud-init dans ses prebuild (qcow2,raw,…).

C’est tout l’objet de cet article, nous verrons donc comment rendre, pour l’exemple, la célèbre distribution de pentesting et de forensic Kali-linux ‘compatible’ avec Cloud-init.

Création du futur template Kali-linux

 qm create 103 \
    --name template-kalilinux \
    --agent 1 \
    --memory 4096 \
    --bios seabios \
    --sockets 1 --cores 4 \
    --cpu host \
    --net0 virtio,bridge=vmbr0 \
    --scsihw virtio-scsi-single

Récupération de l’image QEMU prebuild de Kali linux

wget -P /mnt/pve/DS418/template/iso/ https://cdimage.kali.org/kali-2023.1/kali-linux-2023.1-qemu-amd64.7z
7z x /mnt/pve/DS418/template/iso/kali-linux-2023.1-qemu-amd64.7z

Modification de l’image pour le support de Cloud-init

Check des paquets nécessaires

apt install -y libguestfs-tools p7zip-full

Ajout de Cloud-init à l’image Kali :

virt-customize -a /mnt/pve/DS418/template/iso/kali-linux-2023.1-qemu-amd64.qcow2 --install cloud-init

Nous en profiterons pour installer l’agent QEMU, et activé SSH (ce dernier n’étant pas actif par défaut sous Kali) :

virt-customize -a /mnt/pve/DS418/template/iso/kali-linux-2023.1-qemu-amd64.qcow2 --install qemu-guest-agent
virt-customize -a /mnt/pve/DS418/template/iso/kali-linux-2023.1-qemu-amd64.qcow2 --run-command 'systemctl enable ssh.service'

Importation de l’image disque

qm importdisk 103 /mnt/pve/DS418/template/iso/kali-linux-2023.1-qemu-amd64.qcow2 local-btrfs --format qcow2
# Il ne vous restera plus qu'a procéder à l'attachement du disk depuis l'interface web
# Une alternative en seule ligne de commande pour l'import et l'attachement
qm set 103 --scsi0 local-btrfs:0,import-from=/mnt/pve/DS418/template/iso/kali-linux-2023.1-qemu-amd64.qcow2

Configuration de Cloud-init

Ajout du disque Cloud-init

qm set 103 --ide0 local-btrfs:cloudinit

Définition du boot order

qm set 103 --boot c --bootdisk scsi0

Ajout de l’interface VGA pour l’acces console

La documentation nous recommande de configurer l’interface en sérial, comme suit :

qm set 103 --serial0 socket --vga serial0

Mais nous allons privilègier une méthode alternative (afin de rendre Kali accessible depuis NoVNC):

qm set 103 --vga std

Convertion de la VM en template

qm template 103

Définition des paramètres Cloud-init

qm set 103 --ciuser USER --cipassword PASSWORD 
qm set 103 --sshkey /PATH/TO/YOUR/key.pub
qm set 103 --ipconfig0 ip=192.168.2.12/24,gw=192.168.2.1

Déploiement à partir du template

Il ne vous reste plus qu’à cloner à l’envie votre template Kali-linux, à noter cependant que si modifier la Configuration du template ou d’un de vos clone ne pas oublier de régénérer l’image Cloud-init.

qm clone 103 104 --full 1 --name kali-104

Ressources :