SAE-PentestAD est un projet conçu pour automatiser le déploiement d'un environnement de laboratoire Active Directory complet sur Proxmox VE. Il est destiné à des fins éducatives, notamment pour l'apprentissage et la pratique des techniques de pentesting en environnement Active Directory. Ce projet utilise Ansible pour l'orchestration et la configuration des machines virtuelles et des services.
Ce projet a été développé dans le cadre de la SAE (Situation d'Apprentissage et d'Évaluation) pour le BUT Réseaux et Télécommunications (Promotion 2024-2025). L'objectif principal est de fournir une infrastructure Active Directory réaliste et reproductible pour s'entraîner aux audits de sécurité et aux tests d'intrusion.
L'infrastructure déployée comprend :
- Plusieurs contrôleurs de domaine répartis dans différents domaines/forêts simulés.
- Des machines membres Windows (Core et GUI).
- Un serveur WSUS.
- Un serveur de fichiers SMB.
- Une configuration réseau SDN (Software Defined Network) avec plusieurs VNet.
- Un serveur VPN WireGuard pour un accès sécurisé au laboratoire.
- Déploiement automatisé : Création et configuration de l'ensemble du laboratoire via des playbooks Ansible.
- Gestion des templates Proxmox : Création et utilisation de templates Windows Server 2022 (Core et GUI).
- Configuration Active Directory : Promotion des contrôleurs de domaine, création d'unités d'organisation, utilisateurs, groupes, et relations d'approbation (simulées).
- Configuration réseau avancée : Mise en place de réseaux virtuels (VNet) isolés grâce à la fonctionnalité SDN de Proxmox.
- Déploiement de services additionnels : WSUS, serveurs de fichiers SMB.
- Accès VPN sécurisé : Configuration d'un serveur WireGuard avec génération des configurations client.
- Personnalisable : De nombreuses variables Ansible permettent d'adapter le déploiement à des besoins spécifiques (nombre de VMs, adresses IP, noms de domaine, etc.).
Avant de commencer, assurez-vous de disposer des éléments suivants :
- Serveur Proxmox VE : Version 8.x recommandée, avec suffisamment de ressources (CPU, RAM, stockage).
- Accès API Proxmox : Un utilisateur Proxmox avec les droits nécessaires pour créer/gérer des VMs, des templates, et la configuration SDN.
- Nœud de contrôle Ansible : Une machine (Linux recommandée, par exemple via WSL, ou une VM dédiée) avec Ansible installé (version 2.14 ou supérieure).
python3-proxmoxeretpython3-netaddr(ou les équivalents pip)- Collection
community.generalpour Ansible.
- Images ISO Windows Server : Nécessaires pour la création des templates initiaux (non inclus dans ce dépôt).
- Connexion Internet : Pour le téléchargement des paquets et des images ISO.
- Installation de Proxmox VE : Suivez la documentation officielle de Proxmox.
- Configuration du réseau Proxmox : Assurez-vous que votre
vmbr0(ou l'interface de management) est correctement configuré. Le projet configurera des VNets SDN par la suite. - Téléchargement des ISOs Windows : Placez les ISOs de Windows Server 2022 dans un stockage accessible par Proxmox (par exemple,
local:iso). Les scripts de création de template chercheront les ISOs dans le stockagelocal.
- Cloner le dépôt :
git clone https://github.com/NergYR/SAE-PentestAD.git cd SAE-PentestAD - Installer Ansible : Suivez les instructions d'installation d'Ansible pour votre système d'exploitation.
Exemple pour Debian/Ubuntu :
sudo apt update sudo apt install -y ansible python3-pip pip3 install proxmoxer netaddr ansible-galaxy collection install community.general
- (Optionnel) Utiliser Exegol : Ce projet inclut un script pour faciliter le déploiement d'un environnement Exegol préconfiguré pour le pentest AD.
Une fois dans le conteneur Exegol, clonez le dépôt à l'intérieur si ce n'est pas déjà fait.
wget https://raw.githubusercontent.com/NergYR/SAE-PentestAD/main/install_exegol.sh chmod +x install_exegol.sh ./install_exegol.sh ad
Le déploiement principal est géré par le playbook deploy_infra.yml.
-
Personnaliser les variables (si nécessaire) :
- Examinez et modifiez les variables dans
deploy_infra.yml(sectionvars_promptetvars) pour correspondre à votre environnement Proxmox et à vos préférences (IPs, noms, nombre de VMs, etc.). - Les informations d'identification Proxmox (
proxmox_api_user,proxmox_api_password) sont demandées interactivement ou peuvent être définies dans un fichier de variables Ansible Vault pour plus de sécurité.
- Examinez et modifiez les variables dans
-
Exécuter le playbook Ansible : Depuis la racine du projet cloné :
ansible-playbook deploy_infra.yml
Le playbook vous posera une série de questions pour configurer le déploiement (numéro d'établi, IPs, nombre de VMs, etc.).
Pour fournir les variables directement (par exemple, pour une exécution non interactive) :
ansible-playbook deploy_infra.yml -e "etabli=12 ip_vmbr0=192.168.48.192 ..."
Le déploiement peut prendre un certain temps en fonction des performances de votre serveur Proxmox et de votre connexion Internet.
Le projet est organisé comme suit :
deploy_infra.yml: Playbook Ansible principal pour le déploiement de toute l'infrastructure.roles/: Contient les rôles Ansible pour chaque composant de l'infrastructure.common_setup: Tâches de configuration communes (paquets, etc.).sdn_setup: Configuration des zones, VNets, et VZones SDN sur Proxmox.provisioning_ct_setup: (Optionnel) Déploiement d'un conteneur de provisioning.wireguard_server_setup: Installation et configuration d'un serveur WireGuard.windows_templates_management: Création des templates Windows Server 2022 Core et GUI.windows_vms_creation: Clonage et configuration initiale des VMs Windows.ad_controllers_configuration: Promotion des contrôleurs de domaine et configuration AD.inventory_utils: Tâches pour générer ou mettre à jour l'inventaire Ansible.
scripts/: Contient divers scripts PowerShell utilisés pour la configuration des VMs Windows (promotion DC, configuration WSUS, SMB, etc.).AutoDeployWindows/: Fichiers de configuration pour l'installation automatisée de Windows (autounattend.xml, sysprep) lors de la création des templates.conf_sdn/(implicite, fichiers*.cfgà la racine) : Fichiers de configuration pour le SDN (subnets.cfg,vnets.cfg,zones.cfg).terraform/: (Optionnel) Configuration Terraform pour une gestion alternative de l'infrastructure.README.md: Ce fichier.LICENSE: Fichier de licence du projet.- Scripts shell (
*.sh) à la racine : Utilitaires divers pour la gestion du lab (Ex:install_exegol.sh,cleanup_proxmox.sh).
Après un déploiement réussi, vous aurez un environnement Active Directory fonctionnel.
- Accès aux VMs : Utilisez la console Proxmox ou RDP (une fois configuré et les règles de pare-feu ajustées).
- Accès VPN : Les configurations client WireGuard sont générées dans le répertoire
roles/wireguard_server_setup/client_configs/(ou un chemin similaire défini dans le rôle). Utilisez ces fichiers pour vous connecter au VPN. - Inventaire Ansible : Un inventaire dynamique ou statique peut être généré pour interagir avec les VMs déployées via Ansible.
- Variables du Playbook : La plupart des aspects du déploiement peuvent être contrôlés via les variables dans
deploy_infra.yml. - Scripts PowerShell : Modifiez les scripts dans le dossier
scripts/pour ajuster les configurations spécifiques des services Windows. - Rôles Ansible : Pour des modifications plus profondes, vous pouvez adapter les tâches au sein des rôles Ansible.
- Vérifier les logs Ansible : Les messages d'erreur d'Ansible sont généralement très descriptifs. Augmentez la verbosité avec
-v,-vv, ou-vvv. - Problèmes de connexion WinRM : Assurez-vous que WinRM est correctement configuré sur les VMs Windows et que les pare-feu (Windows ou Proxmox) autorisent les connexions. Le playbook tente de configurer WinRM.
- Erreurs Proxmox API : Vérifiez que l'utilisateur API Proxmox dispose des permissions nécessaires.
- Espace disque insuffisant : Assurez-vous que votre stockage Proxmox dispose de suffisamment d'espace libre.
Ce projet est distribué sous la licence MIT. Voir le fichier LICENSE pour plus d'informations.
Développé pour la SAE Pentest Active Directory - BUT R&T 2e FA (Promotion 2024-2025). Dernière mise à jour : 16 mai 2025.