CIA_
< Déploiement & sécurisation d'une infrastructure hybride avec Proxmox />
CLOUD INFRASTRUCTURE ARCHITECTS  ·  SOUTENANCE FINALE  ·  03 JUILLET 2026
Équipe : Oumar Abdallah Abakar · Aadi · Abderrahmane · Adrien · Théo-Selim · Hamid Bennacef
Agenda

Sommaire

01

Contexte & objectifs

La mission CIA, les besoins du client et les contraintes du projet.

02

Architecture

Design HLD/LLD, plan d'adressage et stack technologique.

03

Réseau & sécurité

VPN, pare-feu pfSense, bastion et gestion des secrets.

04

Services

IPAM NetBox, observabilité, DNS et site interne.

05

Automatisation

Infrastructure as Code : Ansible, Vault, Git.

06

Démonstration live

Démo en direct de l'infrastructure déployée.

{EPITECH}CIA · Soutenance finale
Module T-NSA-810

Contexte & mission

En tant que Cloud Infrastructure Architects, un client nous demande de concevoir, déployer et sécuriser une infrastructure hybride complète, reposant sur deux sites Proxmox interconnectés par VPN, avec une approche scalable pour ajouter de nouveaux sites.

2
sites Proxmox
on-premises + remote
5
services essentiels
VPN, pare-feu, adressage IP,
supervision & web interne
3
piliers
sécurité · automatisation · observabilité
{EPITECH}01 · Contexte
Cahier des charges

Objectifs principaux

Infra hybride

Deux sites Proxmox : on-premises + remote.

Interconnexion

VPN site-to-site chiffré entre les sites.

Sécurité périmétrique

pfSense + filtrage + kill switch.

Accès distant

Bastion host sur le Site 2.

IPAM automatisé

NetBox synchronisé automatiquement.

Observabilité

Logs & métriques centralisés.

Service interne

Site web accessible en interne uniquement.

Évolutivité

Architecture prête pour de nouveaux sites.

{EPITECH}01 · Objectifs
Règles du jeu

Contraintes & livrables

// CONTRAINTES NON NÉGOCIABLES

  • !3 VMs maximum par site Proxmox.
  • !Stacks activement maintenues par la communauté.
  • !Aucun serveur exposé directement sur Internet.
  • !Coupure d'urgence (kill switch) sans empêcher la reprise.

// LIVRABLES DE SOUTENANCE

  • ✓Document technique détaillé (captures).
  • ✓Code versionné : configs réseau + logs.
  • ✓Coffre de secrets (Vault).
  • ✓Schéma final + DRP / runbook.
{EPITECH}01 · Contraintes
// PARTIE 01
Architecture
& design
High-Level Design

Architecture globale

SITE 1On-premises · cœur192.168.10.0/24
pfSense · FW · NAT · DNS · VPN
Observabilité · Grafana · Prometheus · Loki · Node Exporter
Vault + NetBox + Nginx · VM mutualisée
VPN site-to-site
IPsec IKEv2 · chiffré
SITE 2Remote · exposition minimale192.168.20.0/24
pfSense · client VPN · FW
Bastion SSH · clés · Fail2ban · rebond
Support · DNS Unbound · NTP Chrony · Node Exporter
🔒 0 serveur exposé sur Internet 🐧 VMs Ubuntu Server 24.04 LTS 📡 Métriques & logs → Site 1 (Prometheus/Loki) ⚡ Kill switch = coupure interface VPN
{EPITECH}02 · Architecture
Low-Level Design

Plan d'adressage

RéseauPlageRôleHôtes clés
LAN Site 1192.168.10.0/24Réseau interne — supervision & gestionpfSense .1 · Observabilité .102 · Services .103
LAN Site 2192.168.20.0/24Réseau interne distantpfSense .1 · Bastion .10 · DNS/NTP .20
Tunnel S2SIPsec IKEv2Interconnexion chiffrée S1 ↔ S2pfSense ↔ pfSense
VPN distant10.8.0.0/24OpenVPN client-to-site (admins)Serveur sur pfSense S1

Les deux LAN se voient comme un même réseau privé à travers le tunnel, tout en restant isolés d'Internet par les pare-feux.

{EPITECH}02 · LLD
Core stack

Stack technologique

Proxmox VE
Virtualisation bare-metal — héberge les VMs.
OpenVPN / IPsec
VPN chiffré : client-to-site + site-to-site.
pfSense®
pfSense
Routeur / pare-feu FreeBSD — filtrage.
NetBox
IPAM/DCIM — source de vérité, via API.
Grafana · Prometheus · Loki
Node Exporter → Prometheus → Grafana · logs via Loki.
Ansible
IaC Ansible-only — idempotent, secrets via Vault.
{EPITECH}02 · Stack
// PARTIE 02
Réseau
& sécurité
Interconnexion sécurisée

VPN — OpenVPN vs IPsec

CritèreOpenVPN — client-to-siteIPsec — site-to-site
AuthentificationCertificats (CA + certificats)Clé partagée (PSK) / certificats
FonctionnementClient / serveurPair-à-pair (sites égaux)
PortsUDP 1194UDP 500 (IKE) + 4500 (NAT-T)
ProtocoleSSL/TLSIKEv2
Usage retenuAccès admins distantsLiaison entre les 2 sites

Choix justifié par le besoin : OpenVPN pour l'utilisateur distant (flexible, auth forte), IPsec pour l'interconnexion de sites (performances kernel).

{EPITECH}03 · VPN
Sécurité périmétrique

Pare-feu pfSense & kill switch

  • ✓Filtrage de tous les flux entrants/sortants + NAT.
  • ✓Règles par interface : WAN · LAN · OpenVPN · IPsec.
  • ✓DNS forwarding intégré entre les deux sites.
  • ✓OpenVPN intégré nativement — aucun agent en plus.

Kill switch — coupure d'urgence

En cas d'incident, l'interconnexion est coupée instantanément en désactivant l'interface VPN sur pfSense.

→ Stoppe la propagation sans empêcher la reprise : la config reste intacte, réactivation en un clic.

Firewall → Rules → WAN Firewall → Rules → LAN Firewall → Rules → IPsec VPN → IPsec → Tunnels
{EPITECH}03 · pfSense
Accès distant sécurisé · Site 2

Bastion host

Unique point d'entrée SSH externe. Le pare-feu redirige WAN:2222 → :22 vers le bastion (192.168.20.10), qui sert de point de rebond (ProxyJump Ansible) vers les machines internes.

Clés SSH

Authentification par clé uniquement — pas de mot de passe.

Fail2ban

Blocage auto des tentatives suspectes.

Journalisation

Sessions tracées · métriques Node Exporter :9101.

Rebond

ProxyJump Ansible vers les hôtes internes.

{EPITECH}03 · Bastion
HashiCorp Vault

Gestion des secrets

Aucun secret n'est stocké en clair. Mots de passe et clés API sont centralisés dans HashiCorp Vault (9 secrets), et récupérés dynamiquement par Ansible.

CentralisationRotationAccès contrôléZéro secret en dur
# vault — serveur sur le Site 1
api_addr = "http://192.168.10.103:8200"

$ export VAULT_ADDR='http://192.168.10.103:8200'
$ vault kv get secret/proxmox/api
====== Data ======
token_id = ansible@pve
token_secret = ********************
{EPITECH}03 · Vault
// PARTIE 03
Services
& exploitation
Gestion automatisée des IPs

IPAM — NetBox

NetBox est notre source de vérité pour le plan d'adressage IP : 2 sites, 6 équipements documentés, exploités comme inventaire par Ansible.

  • ✓Plan d'adressage centralisé des 2 sites.
  • ✓Exposé via API REST — inventaire pour Ansible.
  • ✓Documentation des préfixes & 6 devices.
# netbox — source de vérité IPAM (API REST)
$ curl -s netbox/api/ipam/ip-addresses/ \
  -H "Authorization: Token ********"
192.168.10.103/24 → services-s1
192.168.20.10/24 → bastion-s2
→ 2 sites · 6 devices · inventaire Ansible
{EPITECH}04 · NetBox
Supervision centralisée · Site 1

Observabilité

Chaque VM embarque Node Exporter (métriques) et Promtail (logs). Prometheus scrape et Loki agrège sur le Site 1 ; le Site 2 est exposé via un NAT dédié — contournement du blocage IPsec pour le scraping.

Prometheus

Collecte & stockage des métriques :9090.

Grafana

Dashboards & alerting :3000.

Loki + Promtail

Agrégation & recherche des logs.

Node Exporter

Agent métriques sur chaque VM :9100.

⚙️ Remplace ELK — choix assumé (empreinte ressources) 4 alertes actives · CPU / RAM / Disk / Down S2 → NAT WAN :9101 / :9102
{EPITECH}04 · Observabilité
Résolution croisée

DNS forwarding

Le DNS permet la résolution croisée entre les deux sites via le tunnel VPN : chaque site résout les noms de l'autre comme s'ils étaient locaux.

Unbound (VM-S2-03)

Résolveur DNS :53 · stub-resolver systemd désactivé.

Via le tunnel

S1 ↔ S2 — résolution privée, jamais exposée.

Chrony (NTP)

Synchro ntp.ubuntu.com — logs & certificats cohérents.

{EPITECH}04 · DNS
Service interne · Nginx

Site web interne

Un site web est hébergé par Nginx :8080 (VM Services du Site 1), accessible uniquement depuis les réseaux privés — bloqué depuis le WAN (deny by default).

  • ✓Accès filtré par pfSense aux seuls LAN.
  • ✓Atteignable depuis S1 et S2 via le tunnel.
  • ✓Ports distincts — aucun conflit de services.
{EPITECH}04 · Web interne
Automatisation · GitOps

Infrastructure as Code

Idempotence

Rejeu sûr — changed=0 sur 3 exécutions.

Ansible

Orchestre les 4 VMs · contrôleur WSL Ubuntu.

Vault

Secrets récupérés dynamiquement au déploiement.

Git

Tout versionné — traçabilité & reproductibilité.

$ ansible-playbook site.yml # 4 VMs : bastion, dns/ntp, vault, web…
$ ansible-playbook site.yml --check # idempotence : changed=0
→ git commit -m "infra: site 2 bastion + ipsec" # source of truth
{EPITECH}04 · IaC
// PARTIE 04
Démonstration
live

Merci_

Des questions ?

// projet CIA · infrastructure hybride Proxmox · T-NSA-810

01 / 26
← → naviguer · F plein écran · O vue d'ensemble