Déploiement de vos templates Kali-linux avec Cloud-init, sous Proxmox VE
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