Déploiement automatisé d'un honeypot via OpenTofu + Ansible sur Proxmox.
git clone → tofu apply → ansible-playbook → honeypot opérationnel
- Un serveur Proxmox avec accès API
- OpenTofu installé sur votre machine (voir ci-dessous)
- Une paire de clés SSH générée sur votre poste
# Télécharger le script d'installation
curl --proto '=https' --tlsv1.2 -fsSL https://get.opentofu.org/install-opentofu.sh -o install-opentofu.sh
# Donner les droits d'exécution
chmod +x install-opentofu.sh
# Lancer l'installation
./install-opentofu.sh --install-method deb
# Nettoyer
rm -f install-opentofu.shPour toute autre distribution, consultez la documentation officielle.
git clone https://codeberg.org/ben1348/HoneyCorr_TFE.git
cd HoneyCorr_TFECopiez le fichier générique et remplissez-le avec vos informations :
cp opentofu/terraform.tfvars.generic opentofu/terraform.tfvarsÉditez ensuite terraform.tfvars avec les valeurs suivantes :
| Variable | Description |
|---|---|
proxmox_url |
URL de votre serveur Proxmox (ex: https://10.1.0.10:8006) |
proxmox_token |
Token API de votre utilisateur Proxmox |
proxmox_node |
Nom du nœud Proxmox cible |
vms |
Dictionnaire des VMs à créer (voir exemple ci-dessous) |
ssh_key |
Contenu de votre clé publique SSH (~/.ssh/id_rsa.pub) |
vm_user |
Nom d'utilisateur à créer sur les VMs |
proxmox_url = "your url"
proxmox_token = "userproxmox@pve!yourtoken"
proxmox_node = "yourname"
vms = {
"honeypots10" = { vm_id = 100, ip = "10.1.10.10", gateway = "10.1.10.254", cores = 1, memory = 1024, vlan_id = 10 }
"honeypots11" = { vm_id = 101, ip = "10.1.10.11", gateway = "10.1.10.254", cores = 1, memory = 1024, vlan_id = 10 }
"honeypots12" = { vm_id = 102, ip = "10.1.10.12", gateway = "10.1.10.254", cores = 1, memory = 1024, vlan_id = 10 }
"honeypots20" = { vm_id = 200, ip = "10.1.20.10", gateway = "10.1.20.254", cores = 1, memory = 1024, vlan_id = 20 }
"honeypots30" = { vm_id = 300, ip = "10.1.30.10", gateway = "10.1.30.254", cores = 1, memory = 1024, vlan_id = 30 }
}
ssh_key = "your public key"
vm_user = "honeycorr"
⚠️ Le fichierterraform.tfvarsest listé dans le.gitignoreet ne sera jamais commité. Ne partagez jamais votre token Proxmox.
# Initialiser OpenTofu
tofu init
# Vérifier le plan
tofu plan
# Appliquer
tofu applycd ansible
# Vérifier la connectivité
ansible -i inventory/hosts.ini all -m ping
# Lancer le playbook
ansible-playbook -i inventory/hosts.ini playbooks/honeypots.ymlHoneyCorr_TFE/
├── main.tf # VMs Proxmox (ton code actuel)
├── ansible.tf # null_resource qui trigger Ansible
├── variables.tf
├── terraform.tfvars
├── templates/
│ ├── cloud-init.yaml.tftpl
│ └── inventory.ini.tftpl # Template inventaire
└── ansible/
├── inventory.ini # Généré par OpenTofu
├── ansible.cfg
├── playbooks/
│ └── site.yml # Entry point
└── roles/
├── honeypot/ # Déploie les faux services
├── log_collector/ # Configure Promtail → Loki → Grafana
└── firewall_sync/ # Envoie les IPs au firewall
Ce projet est réalisé dans le cadre d'un TFE (Travail de Fin d'Études).