🔍
📚 Documentation Technique

AllInOne — Réseau & GPO

Procédures réseau, politiques GPO, cours théoriques et schémas. Tout en un seul endroit.

📡

DHCP Relay

Cisco, Windows Server RRAS et MikroTik.

Réseau
🛡️

Politiques GPO

10 procédures : blocage, déploiement, MDP, mappage…

10 procédures
🔤

Cours Réseau

Acronymes, ports, OSI, IP, VLAN, routage et plus.

12 chapitres
⚡

VLANs Cisco

Configuration complète avec commandes et schémas.

Cours
Schéma de la maquette

La maquette comporte 3 réseaux distincts reliés par 1 routeur. Le serveur DHCP est positionné dans le LAN1 (192.168.0.0/24) et distribue des adresses aux machines des LAN2 et LAN3 via le relay.

ℹ️ Adressage : LAN1 : 192.168.0.0/24 (plage .100–200)  |  LAN2 : 172.16.0.0/24 (plage .100–200)  |  LAN3 : 10.0.0.0/24 (plage .100–200)
01
Configurer les ports du routeur
▼

Ouvrir le routeur → onglet IConfig → section INTERFACE. Sélectionner chaque interface GigabitEthernet et lui attribuer :

  • GigabitEthernet0/0 → IP 10.0.0.254 / 255.255.255.0  (vers LAN3)
  • GigabitEthernet1/0 → IP 172.16.0.254 / 255.255.255.0  (vers LAN2)
  • GigabitEthernet2/0 → IP 192.168.0.254 / 255.255.255.0  (vers LAN1 / serveur)

Pour chaque interface : cocher Port Status → On ①③, saisir l'adresse IPv4 ④ et le masque ⑤.

02
Configurer l'IP statique du serveur DHCP
▼

Ouvrir Server0 → onglet Desktop → IP Configuration. Sélectionner Static et renseigner :

  • IPv4 Address : 192.168.0.1 ②
  • Subnet Mask : 255.255.255.0
  • Default Gateway : 192.168.0.254 ③  (interface du routeur côté LAN1)
03
Configurer les plages DHCP sur le serveur
▼

Ouvrir Server0 → onglet Services ① → DHCP ②. Activer le service ③. Créer 3 pools en remplissant les champs puis cliquer sur Add ⑨ pour chaque :

Pool Name ④ Default Gateway ⑤ Start IP ⑥ Subnet Mask ⑦ Max Users ⑧
LAN2172.16.0.254172.16.0.100255.255.255.0101
LAN310.0.0.25410.0.0.100255.255.255.0101
serverPool192.168.0.254192.168.0.100255.255.255.0101
⚠️ La Default Gateway de chaque pool doit correspondre à l'IP du routeur sur ce réseau, pas l'IP du serveur.
04
Configurer le relay en CLI sur le routeur
▼

Ouvrir Router0 → onglet CLI. Appliquer ip helper-address sur chacune des 3 interfaces (côté LAN2 et LAN3 uniquement — pas côté serveur) :

Router>enable
Router#configure terminal

② Interface GigabitEthernet 2/0 (vers LAN2) :

Router(config)#interface gigabitEthernet 2/0
Router(config-if)#ip helper-address 192.168.0.1
Router(config-if)#end

③ Interface GigabitEthernet 1/0 (vers LAN3) :

Router(config)#interface gigabitEthernet 1/0
Router(config-if)#ip helper-address 192.168.0.1
Router(config-if)#end

④ Interface GigabitEthernet 0/0 (vers LAN3) :

Router(config)#interface gigabitEthernet 0/0
Router(config-if)#ip helper-address 192.168.0.1
Router(config-if)#end
⚠️ ip helper-address 192.168.0.1 = adresse IP du serveur DHCP. À répéter sur toutes les interfaces côté clients.
05
Passer les PC en DHCP et vérifier
▼

Sur chaque PC client (PC0 à PC5) → onglet Desktop → IP Configuration → sélectionner DHCP. La configuration IP doit se faire automatiquement :

  • PC du LAN2 → reçoivent une IP 172.16.0.1xx avec gateway 172.16.0.254
  • PC du LAN3 → reçoivent une IP 10.0.0.1xx avec gateway 10.0.0.254
  • PC du LAN1 → reçoivent une IP 192.168.0.1xx avec gateway 192.168.0.254
✅ Si tous les PC obtiennent une IP dans la bonne plage, le DHCP Relay fonctionne correctement.

Le routage dynamique RIP (Routing Information Protocol) permet à plusieurs routeurs de s'échanger automatiquement leurs tables de routage. Contrairement au routage statique, il n'est pas nécessaire de déclarer manuellement chaque réseau distant sur chaque routeur — RIP s'en charge.

Dans cet exemple on part d'une topologie simple : 3 réseaux reliés par 2 routeurs, puis on voit comment étendre la logique à un schéma plus complexe.

Schéma de la maquette
ℹ️ Adressage de l'exemple : LAN gauche : 172.16.1.0/24  |  Lien inter-routeurs : 10.0.0.0/30  |  LAN droit : 172.16.2.0/24
01
Configurer les interfaces de chaque routeur
▼

Ouvrir chaque routeur → onglet Config → section INTERFACE. Attribuer une IP à chaque port utilisé :

  • Port côté LAN → IP de la passerelle du LAN (ex: 172.16.1.254 / 255.255.255.0)
  • Port côté lien inter-routeurs → IP dans le sous-réseau de transit (ex: 10.0.0.1 / 255.255.255.252)

Pour chaque interface : cocher Port Status → On ③, saisir l'IPv4 ④ et le masque ⑤.

⚠️ Le lien entre les deux routeurs utilise un masque /30 (255.255.255.252) car seules 2 adresses hôtes sont nécessaires.
02
Configurer les PC en adressage statique
▼

Sur chaque PC → onglet Desktop → IP Configuration → Static. Renseigner :

  • IPv4 Address ② : une IP libre dans le LAN du PC (ex: 172.16.1.1)
  • Subnet Mask ③ : 255.255.255.0
  • Default Gateway ④ : l'IP du routeur côté ce LAN (ex: 172.16.1.254)
03
Activer RIP v2 sur chaque routeur en CLI
▼

Ouvrir chaque routeur → onglet CLI. Activer RIP et déclarer tous les réseaux directement connectés au routeur (pas les réseaux distants — RIP s'en charge automatiquement).

Exemple pour le routeur de gauche (connecté au LAN 172.16.1.0 et au lien 10.0.0.0) :

Router>enable
Router#configure terminal
Router(config)#router rip
Router(config-router)#version 2
Router(config-router)#no auto-summary
Router(config-router)#network 10.0.0.0
Router(config-router)#network 172.16.1.0
Router(config-router)#end
⚠️ no auto-summary est indispensable en RIP v2 pour éviter que les sous-réseaux soient résumés automatiquement et perdent leur précision.
⚠️ On déclare uniquement les réseaux locaux du routeur. RIP propagera ensuite les routes aux autres routeurs automatiquement.

Répéter la même procédure sur le routeur de droite en adaptant les réseaux déclarés (lien inter-routeurs + LAN droit).

04
Topologie complexe — plusieurs routeurs
▼

Sur une maquette avec davantage de routeurs, la logique reste identique : chaque routeur déclare uniquement ses propres réseaux. RIP se charge de propager les routes à l'ensemble du réseau.

Le routeur central (hub) n'a pas besoin de déclarer les réseaux des bords — il déclare seulement ses liens directs. Les "réseaux de secours" (liens de backup) peuvent également ne pas être déclarés s'ils ne servent qu'en failover.

Exemple pour le routeur du milieu dans une topologie maillée :

Router(config-router)#network 10.0.0.4
Router(config-router)#network 10.0.0.12
Router(config-router)#network 10.0.0.16
Router(config-router)#network 10.0.0.8
05
BONUS — Configurer les passerelles en CLI
▼

Il est aussi possible de configurer les interfaces du routeur entièrement en ligne de commande plutôt que via l'onglet Config. À faire pour chaque port :

Router#configure terminal
Router(config)#interface gigabitEthernet 1/0  ← port à configurer
Router(config-if)#ip address 192.168.0.254 255.255.255.0  ← IP + masque
Router(config-if)#no shutdown  ← activer le port
Router(config-if)#exit
...
Router(config-if)#end
Router#copy running-config startup-config  ← sauvegarder
✅ Après configuration, tester avec un ping depuis un PC vers un PC d'un autre LAN. Si la réponse arrive, RIP fonctionne et les routes sont bien propagées.
01
Topologie réseau
▼

Objectif : distribuer des IPs à plusieurs sous-réseaux depuis un serveur DHCP centralisé via MikroTik.

ether1 → PC-DIR-01ether2 → PC-IT-01ether3 → PC-PROD-01ether4 → SRV-DHCP
⚠️ Toutes les cartes réseau de chaque sous-réseau doivent être ajoutées à la VM MikroTik avant de commencer.
02
Vérifier les interfaces
▼
interface print
03
Configuration IP des interfaces
▼

Entrez dans la fonction des adresses IP, puis ajoutez la passerelle de chaque sous-réseau :

ip address
add address=192.168.50.1/28 interface=ether1
add address=192.168.60.1/28 interface=ether2
add address=192.168.70.1/28 interface=ether3

Vérifiez :

ip address print
⚠️ Le MikroTik DOIT avoir une IP sur chaque interface pour être la passerelle de chaque sous-réseau.
04
Configuration DHCP Relay
▼
N'oubliez pas de configurer le DHCP sur le serveur Windows
/ip dhcp-relay
add name=relay-dir interface=ether1 dhcp-server=192.168.50.66
add name=relay-it interface=ether2 dhcp-server=192.168.50.66
add name=relay-prod interface=ether3 dhcp-server=192.168.50.66
✅ Le MikroTik relaie toutes les requêtes DHCP vers le serveur centralisé.
05
Règle pare-feu ping (ICMPv4)
▼
Pare-feu Windows → Règles entrantes → Nouvelle règle → Personnalisée → Tous les programmes → ICMPv4 → Autoriser → Nom : Autorisation_ping
💡
Tips MikroTik CLI
▼
Quand vous faites ip dhcp-relay print et que vous voyez un X à coté du numéro activer le avec enable suivi du numero
TAB → afficher les commandes disponibles
ip address disable numbers=0
ip address remove numbers=0
ip dhcp-relay enable 0
✅ Pour accéder à Winbox depuis l'hôte, laissez le Default Switch en premier dans la liste des adaptateurs réseau VM.
01
Installer le rôle
▼
Gestionnaire de serveur → Gérer → Ajouter des rôles et fonctionnalités → Serveur DHCP

Finalisez la configuration post-installation (autoriser le serveur DHCP dans AD).

02
Créer une étendue
▼
Outils d'administration → DHCP → IPv4 → Nouvelle étendue

Définissez la plage (ex: 192.168.1.100–200), le masque, la passerelle et le DNS. Activez l'étendue.

03
Tester
▼
ipconfig /release && ipconfig /renew
✅ Le client doit obtenir une adresse dans la plage configurée.
01
Créer la GPO
▼

Créez et nommez la GPO Desactivation_CMD. Liez-la à l'OU concernée.

02
Naviguer vers le paramètre
▼
Configuration utilisateur → Stratégies → Modèles d'administration → Système → Désactiver l'accès à l'invite de commande
03
Configurer et activer
▼

Activez, sélectionnez Oui pour désactiver également les scripts CMD, puis appliquez.

⚠️ "Oui" bloque aussi les fichiers .bat et .cmd.
04
Appliquer
▼
gpupdate /force
✅ Les utilisateurs ne peuvent plus ouvrir cmd.exe.
01
Créer la GPO
▼

Créez Desactivation_Powershell et liez-la à l'OU cible.

02
Naviguer vers le paramètre
▼
Configuration utilisateur → Stratégies → Modèles d'administration → Système → Ne pas exécuter les applications Windows spécifiées
03
Ajouter les exécutables
▼

Activez, cliquez sur Afficher et ajoutez :

powershell.exepowershell_ise.exepwsh.exe
04
Appliquer
▼
gpupdate /force
✅ Les trois variantes de PowerShell sont bloquées.
01
Préparer le fichier MSI
▼

Utilisez un fichier .MSI et placez-le dans un dossier partagé via UNC :

\\srv-dc-01\SYSVOL\TSSR.lab\scripts
⚠️ Chemin UNC réseau obligatoire — pas un chemin local.
02
Créer la GPO
▼

Créez une GPO nommée Logiciels.

Configuration d'ordinateur → Stratégies → Paramètres du logiciel → Installation de logiciel

Clic droit → Nouveau → Package → sélectionnez le .MSI via UNC → Attribué.

03
Déployer sur les clients
▼
gpupdate /force

Répondez O pour redémarrer.

✅ Le logiciel s'installe automatiquement au redémarrage.
04
Mettre à jour un logiciel
▼

Ajoutez le nouveau .MSI, allez dans ses Propriétés → Mise à niveau → Désinstaller et réinstaller.

⚠️ Même logiciel, version différente — sinon les deux s'installent en parallèle.
01
Raccourci pour une OU spécifique
▼

Créez une GPO liée à l'OU cible (ex: OU Commercial) nommée Raccourci Bureau.

Configuration utilisateur → Préférences → Paramètres Windows → Raccourcis

Clic droit → Nouveau raccourci. Remplissez les champs :

Nom : Dossier CommercialType : Objet système de fichiersEmplacement : Bureau

Renseignez le chemin UNC du dossier partagé dans Chemin d'accès cible.

02
Raccourci pour tous les utilisateurs
▼

Créez Raccourci_Fermeture_Session liée au domaine / OU machines, dans Configuration ordinateur.

03
Appliquer
▼
gpupdate /force
✅ Le raccourci apparaît sur le bureau à la prochaine connexion.
01
Héberger le fond d'écran
▼

Placez l'image dans SYSVOL :

\\srv-dc-01\SYSVOL\TSSR.lab\scripts\fond_ecran.jpg

Sinon accordez la permission Lecture aux Ordinateurs du domaine sur le dossier choisi.

02
GPO — Copie du fichier
▼
Configuration d'ordinateur → Préférences → Paramètres Windows → Fichiers → Nouveau

Dans Commun, cochez Appliquer une fois et ne pas réappliquer.

03
Configurer le papier peint
▼
Configuration utilisateur → Stratégies → Modèles d'administration → Bureau → Bureau → Papier peint du Bureau

Activez et indiquez le chemin local de l'image.

04
Tester
▼
gpupdate /force

Déconnectez puis reconnectez-vous.

01
Créer la GPO
▼

Créez Interdiction_Modification_Fond_Ecran liée à l'OU Direction.

02
Configurer le paramètre
▼
Configuration utilisateur → Stratégies → Modèles d'administration → Panneau de configuration → Personnalisation → Empêcher de modifier l'arrière-plan du Bureau

Activez et appliquez.

⚠️ Nécessite qu'un fond d'écran GPO soit déjà actif sur l'OU.
01
Créer la GPO
▼

Créez Mappage_Lecteur liée au domaine ou à une OU.

02
Créer le lecteur réseau
▼
Configuration utilisateur → Préférences → Paramètres Windows → Mappage de lecteur

Clic droit → Nouveau lecteur mappé. Configurez la lettre et le chemin UNC.

03
Ciblage par groupe de sécurité
▼

Dans Commun → Ciblage au niveau des éléments → Nouvel élément → Groupe de sécurité. Ajoutez vos groupes GG :

gg_commercialgg_informatique

F6 sur une ligne pour passer l'opérateur en OU.

04
Suppression automatique si hors groupe
▼

Créez un 2e lecteur (même lettre, mode Supprimer). Même ciblage mais N'est pas (F8). Pour les groupes suivants : ET N'est pas.

✅ Le lecteur disparaît automatiquement si l'utilisateur quitte le groupe.
05
Appliquer
▼
gpupdate /force
01
Créer et configurer la GPO
▼

Créez Masquer_Lecteur_C. Naviguez vers :

Configuration utilisateur → Modèles d'administration → Composants Windows → Explorateur de fichiers → Masquer ces lecteurs spécifiés dans Poste de travail

Activez et choisissez Restreindre au lecteur C uniquement.

⚠️ Masqué mais toujours accessible via C:\ dans la barre d'adresse.
02
Désactiver complètement l'accès (optionnel)
▼
Empêcher l'accès aux lecteurs à partir du Poste de travail

Même chemin, paramètre juste en dessous. Activez avec l'option C.

03
Appliquer
▼
gpupdate /force
✅ Le lecteur C disparaît de l'Explorateur.
01
Créer et configurer la GPO
▼

Créez Message_Ouverture_Session. Naviguez vers :

Configuration d'ordinateur → Stratégies → Paramètres Windows → Paramètres de sécurité → Stratégies locales → Options de sécurité

Configurez :

Titre du message d'ouverture de sessionTexte du message

Renseignez le titre et le corps du message.

02
Appliquer
▼
gpupdate /force
✅ Le message apparaît sur l'écran de connexion.
01
Accéder à la GPO
▼
Configuration d'ordinateur → Stratégies → Paramètres Windows → Paramètres de sécurité → Stratégies de compte → Stratégie de mot de passe

Utilisez la Default Domain Policy ou une GPO dédiée liée à la racine du domaine.

02
Configurer les paramètres MDP
▼
Longueur minimaleComplexité activéeDurée de vie maximaleHistorique des MDP

Recommandation : 12 car. min, complexité ON, 90 jours, 10 MDP mémorisés.

03
Stratégie de verrouillage de compte
▼

Dans la catégorie Stratégie de verrouillage du compte :

Seuil : 5 tentativesDurée : 30 min
⚠️ Doit obligatoirement être sur une GPO liée à la racine du domaine.

À quoi sert le DHCP ?

DHCP signifie Dynamic Host Configuration Protocol. C'est un protocole réseau qui permet à un serveur d'attribuer automatiquement une configuration réseau à chaque appareil qui se connecte, sans aucune intervention manuelle.

Sans DHCP, il faudrait configurer à la main sur chaque PC : l'adresse IP, le masque de sous-réseau, la passerelle par défaut et les serveurs DNS. Sur un réseau de 200 postes, c'est vite ingérable.

🖥️
Adresse IP
Ex : 192.168.1.42 — l'identité de la machine sur le réseau
🔲
Masque de sous-réseau
Ex : 255.255.255.0 — délimite la partie réseau et hôte
🚪
Passerelle par défaut
Ex : 192.168.1.1 — le routeur pour sortir du réseau local
🔍
Serveur(s) DNS
Ex : 8.8.8.8 — traduit les noms de domaine en IPs
✅ Le DHCP fonctionne sur le port UDP 67 (serveur) et UDP 68 (client). C'est un protocole de la couche Application du modèle OSI.

La notion de bail (lease)

Le DHCP n'attribue pas une IP définitivement — il la loue pour une durée limitée appelée bail (en anglais : lease). Par défaut, cette durée est souvent de 8 heures sur un réseau local, ou 24 heures voire plus selon la configuration.

Quand le bail expire, la machine doit en demander un nouveau. Si elle est toujours connectée, elle renouvelle généralement le même bail (même IP) auprès du même serveur. Cela permet au serveur de récupérer les IPs des machines déconnectées pour les réattribuer.

⚠️ Si un PC est éteint pendant plusieurs jours et que son bail a expiré, il peut recevoir une adresse IP différente à son retour. C'est pourquoi les serveurs et imprimantes ont généralement des IPs statiques ou des réservations DHCP.

Le processus DORA — Les 4 étapes de l'attribution

Quand un appareil se connecte au réseau et a besoin d'une IP, il suit un échange en 4 messages avec le serveur DHCP, que l'on résume par l'acronyme DORA :

D
DISCOVER Client → Broadcast

Le client n'a pas encore d'IP. Il envoie un message en broadcast (vers 255.255.255.255) sur tout le réseau pour signaler sa présence et demander une configuration.

Il dit en quelque sorte : "Je viens de me connecter, y a-t-il un serveur DHCP disponible ?"

Source IP : 0.0.0.0 (le client n'a pas encore d'IP) Dest IP : 255.255.255.255 (broadcast — tout le réseau) Message : DHCP Discover Contient : adresse MAC du client, nom d'hôte
O
OFFER Serveur → Client (broadcast)

Le serveur DHCP reçoit le Discover. Il réserve provisoirement une adresse IP libre dans son étendue et répond avec une proposition de configuration complète.

Il dit : "Je suis disponible, voici une IP que je te propose avec le masque, la passerelle et la durée du bail."

Source IP : 192.168.1.1 (IP du serveur DHCP) Dest IP : 255.255.255.255 (broadcast — le client n'a toujours pas d'IP) Message : DHCP Offer Contient : IP proposée (ex: 192.168.1.42), masque, passerelle, DNS, durée du bail, IP du serveur DHCP
R
REQUEST Client → Broadcast

Le client reçoit l'Offer (il peut en recevoir plusieurs si plusieurs serveurs DHCP existent). Il choisit une offre et diffuse en broadcast un message de demande officielle pour confirmer son choix.

Il dit : "J'accepte l'offre du serveur 192.168.1.1, je demande officiellement l'IP 192.168.1.42."

Ce message est encore en broadcast pour que les autres serveurs DHCP (s'il y en a) sachent que leur offre a été refusée et puissent libérer leur réservation.

Source IP : 0.0.0.0 (toujours pas d'IP confirmée) Dest IP : 255.255.255.255 (broadcast) Message : DHCP Request Contient : IP demandée (192.168.1.42), IP du serveur choisi
A
ACKNOWLEDGE Serveur → Client

Le serveur DHCP reçoit le Request, confirme l'attribution de l'IP et envoie l'Acknowledge avec toute la configuration finale. Le client peut maintenant utiliser l'IP.

Il dit : "C'est confirmé, l'IP 192.168.1.42 t'est attribuée pour 8 heures. Voici ta configuration complète."

Source IP : 192.168.1.1 (serveur DHCP) Dest IP : 192.168.1.42 (maintenant en unicast vers le client) Message : DHCP Acknowledge (ACK) Contient : IP confirmée, masque, passerelle, DNS, début et fin du bail, options supplémentaires
✅ Après l'ACK, le client configure son interface réseau et est opérationnel. La configuration est visible avec ipconfig /all sous Windows.

Résumé visuel — DORA en un coup d'œil

💻 CLIENT
(0.0.0.0)
✅ IP configurée !
D — DISCOVER ──▶
broadcast "qui est là ?"
◀── O — OFFER
"voici une IP : 192.168.1.42"
R — REQUEST ──▶
"j'accepte cette IP !"
◀── A — ACK
"confirmé, bail = 8h"
🖥️ SERVEUR
(192.168.1.1)

Renouvellement du bail

Le processus DORA complet ne se produit qu'à la première connexion ou après expiration totale du bail. Pour le renouvellement, le client utilise un échange simplifié :

  • À 50% de la durée du bail : le client envoie directement un Request (en unicast) au serveur pour renouveler.
  • À 87,5% de la durée : si pas de réponse, il tente un broadcast vers n'importe quel serveur DHCP.
  • À 100% : bail expiré — le client recommence un DORA complet depuis zéro.
# Forcer la libération et le renouvellement sous Windows : ipconfig /release # Envoie un DHCP Release au serveur (libère l'IP) ipconfig /renew # Relance un DORA complet pour obtenir une nouvelle IP
✅ ipconfig /all affiche la date et l'heure exactes de début et de fin du bail DHCP actuel (Bail obtenu / Bail expirant).

Le modèle OSI (Open Systems Interconnection) est un cadre conceptuel qui définit comment les systèmes réseau communiquent et envoient des données d'un expéditeur à un destinataire.

Le modèle est utilisé pour décrire chaque composant de la communication de données afin d'établir des règles et des normes pour les applications et l'infrastructure réseau.

🌐 Informatique Web

WWW
World Wide Web
HTTP / HTTPS
HyperText Transfer Protocol / Secure
DNS
Domain Name System
IP
Internet Protocol Address
URL
Uniform Resource Locator
FQDN
Fully Qualified Domain Name
ex: www.c2rt.org
TLD
Top Level Domain — extension (.org)
SLD
Second Level Domain — nom unique (c2rt)

🔒 Sécurité & Confidentialité

VPN
Virtual Private Network
SSL / TLS
Secure Sockets Layer / Transport Layer Security
WPA
Wi-Fi Protected Access
PSK
Pre-Shared Key
TKIP
Temporal Key Integrity Protocol
AES
Advanced Encryption Standard

📧 Messagerie Électronique

SMTP
Simple Mail Transfer Protocol
POP
Post Office Protocol
IMAP
Internet Message Access Protocol

🌐 Réseaux Informatiques

TCP
Transmission Control Protocol
Moins rapide qu'UDP mais plus sécurisé
UDP
User Datagram Protocol
Plus rapide que TCP, perte de paquets possible
VLAN
Virtual Local Area Network
Wi-Fi
Wireless Fidelity
MAC
Media Access Control
NAT
Network Address Translation
IP Public
PAT
Port Address Translation
IP + Port
DHCP
Dynamic Host Configuration Protocol
SSID
Service Set Identifier
ISP
Internet Service Provider
Ticket TGT
Ticket Granting Ticket
Preuve d'identité numérique Kerberos — évite la réauthentification répétée
SAM
Security Accounts Manager
Authentification hors domaine
NTDS
New Technology Directory Services
Authentification sur domaine Active Directory
UNC
Universal Naming Convention
Format \\serveur\dossier pour ressources réseau

💻 Composants Matériels

CPU
Central Processing Unit
GPU
Graphics Processing Unit
RAM
Random Access Memory
ROM
Read-Only Memory
SSD / HDD
Solid State Drive / Hard Disk Drive
BIOS / UEFI
Basic Input/Output System / Unified Extensible Firmware Interface
PSU
Power Supply Unit
MB
Motherboard

☁️ Virtualisation & Cloud

VM
Virtual Machine
VPS
Virtual Private Server
Hypervisor
Gestionnaire de machines virtuelles
FTP / SFTP
File Transfer Protocol / Secure
PortProtocoleDescriptionTCP/UDP
20FTPFile Transfer Protocol — Data TransferTCP
21FTPFile Transfer Protocol — Command ControlTCP
22SSHSecure ShellTCP
23TELNETRemote Login ServiceTCP
25SMTPSimple Mail Transfer ProtocolTCP
53DNSDomain Name SystemTCP/UDP
67DHCPDHCP — ServeurUDP
68DHCPDHCP — ClientUDP
80HTTPHypertext Transfer ProtocolTCP
88KERBEROSNetwork Authentication ServiceTCP/UDP
110POP3Post Office ProtocolTCP
143IMAPInternet Message Access ProtocolTCP
161SNMPSimple Network Management ProtocolUDP
389LDAPLightweight Directory Access ProtocolTCP/UDP
443HTTPSHTTP Secure (HTTP over TLS/SSL)TCP
445SMBServer Message BlockTCP
465SMTPSSMTP over SSL/TLSTCP
500ISAKMPInternet Security Association and Key Management ProtocolUDP
636LDAPSLDAP over SSL/TLSTCP
853DNS over TLSDNS over TLSTCP
993IMAPSIMAP over SSL/TLSTCP
995POP3SPOP3 over SSL/TLSTCP

Présentation — Qu'est-ce que le FSRM ?

01
Présentation du FSRM
▼

Le FSRM (File Server Resource Manager) est un rôle Windows Server qui permet de gérer finement l'utilisation de l'espace disque sur les serveurs de fichiers.

Il prend en charge trois grandes fonctionnalités :

Gestion des quotasFiltrage de fichiersRapports de stockage

La section Gestion de quota dans la console FSRM se divise en deux parties :

SectionRôle
QuotasAffiche les règles actives — quotas déjà appliqués sur des répertoires
Modèles de quotasPermet de créer, visualiser ou modifier des modèles réutilisables
02
Types de quotas — conditionnel vs inconditionnel
▼

FSRM propose deux modes de quota :

TypeComportementUsage recommandé
Quota conditionnel
(souple)
L'utilisateur peut dépasser la limite. L'administrateur reçoit une alerte, mais l'écriture n'est pas bloquée. Surveillance, sensibilisation des utilisateurs
Quota inconditionnel
(strict)
Toute écriture est bloquée dès que la limite est atteinte. L'utilisateur ne peut plus stocker de nouveaux fichiers. Contrôle strict de l'espace disque en production
🚨 Avec un quota inconditionnel, si un utilisateur atteint la limite pendant une session de travail, toute tentative d'enregistrement échouera. Prévoyez des alertes dès 80% pour laisser le temps de réagir.

Alertes & Reporting

03
Actions déclenchées aux seuils
▼

FSRM peut déclencher automatiquement différentes actions lorsqu'un seuil de quota est atteint (par exemple à 80%, 90% ou 100%).

ActionDescription
📧 Notification e-mailAlerte l'administrateur et/ou l'utilisateur concerné
📊 Rapport de stockageGénère automatiquement un rapport d'utilisation
📋 Observateur d'événementsEnregistre un événement dans les journaux Windows (supervision)
⚙️ Exécution d'une commandeLance un script ou un programme (ex : extension automatique du quota)

Modèles de quotas

04
Modèles de quotas — principe
▼

Un modèle de quota définit la limite, le type (conditionnel ou inconditionnel) et les actions déclenchées aux différents seuils. Il peut ensuite être appliqué à un ou plusieurs répertoires.

FSRM inclut plusieurs modèles prédéfinis, dont :

Limite de 200 MoLimite de 500 MoLimite de 1 GoLimite de 2 GoLimite de 200 Mo avec extension de 50 Mo
💡 Travailler avec des modèles plutôt qu'avec des quotas manuels facilite la maintenance : modifier le modèle met à jour tous les quotas qui en dérivent en une seule opération.
05
Modifier un modèle existant
▼

Dans la liste des modèles, faire un clic droit sur le modèle souhaité (ex : Limite de 2 Go) → Modifier les propriétés du modèle.

Après modification, FSRM propose de mettre à jour tous les quotas dérivés de ce modèle. Accepter pour appliquer les changements à tous les répertoires concernés en une seule opération.

💡 Exemple : ramener le modèle Limite de 2 Go à 1 Go — tous les dossiers utilisant ce modèle sont mis à jour automatiquement.
06
Fonctionnalité « Commande » — automatisation
▼

L'action Commande permet d'exécuter des scripts ou programmes lors du déclenchement d'un seuil. Elle ouvre des possibilités d'automatisation avancées.

Exemple concret : le modèle Limite de 200 Mo avec extension de 50 Mo (inclus par défaut dans FSRM) configure un quota inconditionnel à 200 Mo. Lorsque la limite est atteinte, une commande est automatiquement exécutée pour allouer 50 Mo supplémentaires à l'utilisateur, lui laissant le temps de libérer de l'espace.

🚨 L'action Commande s'exécute dans le contexte du système local. Veillez à ce que le script utilisé soit sécurisé et que ses permissions soient correctement restreintes.

Créer et appliquer un quota

07
Créer un quota depuis la console FSRM
▼

Une fois le modèle prêt, dans la console FSRM :

  1. Faire un clic droit sur Quotas dans la console FSRM
  2. Cliquer sur Créer un quota
  3. Sélectionner le répertoire cible
  4. Choisir Créer un quota à partir d'un modèle
  5. Sélectionner le modèle adapté → cliquer sur Créer
💡 Résultat : le quota est visible dans la section Quotas de la console FSRM, avec le chemin du répertoire, la limite configurée, le type (conditionnel/inconditionnel) et l'utilisation actuelle.

Résumé

ConceptDétail
FSRMRôle Windows Server de gestion des ressources du serveur de fichiers
Quota conditionnelAlerte sans bloquer l'écriture — mode de surveillance
Quota inconditionnelBloque toute écriture dès la limite atteinte — mode strict
Modèle de quotaDéfinition réutilisable (limite + seuils + actions) applicable à plusieurs dossiers
Seuils d'alerteActions configurées à différents pourcentages (ex : e-mail à 80%, blocage à 100%)
Action CommandeExécution automatique d'un script lors du déclenchement d'un seuil
Mise à jour des dérivésModifier un modèle répercute les changements sur tous les quotas associés

Une Forêt contient plusieurs arbres. Un arbre contient un domaine. Un domaine est réuni avec plusieurs OU, des groupes, des ressources.

Windows utilise deux bases de données distinctes selon l’environnement : poste autonome ou domaine Active Directory.

Base SAM vs Base NTDS

Windows utilise deux bases de donnees distinctes pour stocker les comptes utilisateurs selon l'environnement (poste autonome ou domaine Active Directory).

Base SAM
Security Account Manager
  • Emplacement : C:\Windows\System32\config\SAM
  • Utilisee sur les postes autonomes (hors domaine)
  • Stocke les comptes locaux uniquement
  • Chiffree avec SYSKEY (depuis Windows NT)
  • Inaccessible pendant le demarrage du systeme
  • Geree via : lusrmgr.msc
Base NTDS
NT Directory Services
  • Emplacement : C:\Windows\NTDS\ntds.dit
  • Utilisee sur les controleurs de domaine (AD)
  • Stocke tous les objets AD (users, groupes, GPO...)
  • Repliquee entre tous les DC du domaine
  • Base de donnees ESE (Extensible Storage Engine)
  • Geree via : dsa.msc / Active Directory Users
Differences cles
Critere SAM NTDS.dit
Environnement Poste local / autonome Domaine Active Directory
Portee Machine locale uniquement Tout le domaine / foret
Replication Non - locale uniquement Oui - entre tous les DC
Contenu Comptes et groupes locaux Users, groupes, GPO, OUs...
Utilisee par Windows (tous) Controleurs de domaine AD
Quand un PC rejoint un domaine Active Directory, les connexions utilisent NTDS (via le DC). La SAM reste active uniquement pour les comptes locaux de la machine.
PAN
Personal Area Network
Réseau pour une seule personne
LAN
Local Area Network
Réseau local — maison ou entreprise
MAN
Metropolitan Area Network
Réseau à l'échelle d'une ville
WAN
Wide Area Network
Réseau étendu à l'échelle d'un pays. Internet = WAN public
CAN
Campus Area Network
GAN
Global Area Network

Topologies réseau

Une topologie de réseau informatique correspond à l'architecture (physique, logicielle ou logique) de celui-ci, définissant les liaisons entre les équipements et une hiérarchie éventuelle entre eux.

Supports de transmission

Deux types de supports :

  • Filaire : câbles coaxiaux, paires torsadées, fibre optique
  • Sans fil : ondes radio, faisceaux laser, faisceaux infrarouge

Câble à paire torsadée

  • Câble Ethernet = connecteur 8P8C (RJ45), 4 paires de fils
  • La torsion des fils réduit la diaphonie

Blindages

Les paires torsadées sont souvent blindées pour limiter les interférences. Le blindage peut être appliqué individuellement aux paires ou à l'ensemble (écrantage). Il existe cinq types de paires torsadées.

Catégories

Cat 5 = 100 Mb/s  |  Cat 5e = 1 Gb/s

Adresse IP

Une adresse IP est un numéro d'identification unique attribué de façon permanente ou provisoire à chaque périphérique faisant partie d'un même réseau informatique utilisant l'Internet Protocol.

➡ IPv4

Notation décimale — 4 valeurs entre 0 et 255 séparées par des points : 192.168.1.10

Longueur : 32 bits (4 octets)

➡ IPv6

Notation hexadécimale — 8 valeurs séparées par « : » : 1987:0c02:0000:84c2:0000:0000:cf2a:9077

Longueur : 128 bits (16 octets)

Masque de sous-réseau & CIDR

✔ Notation CIDR : /8, /16, /22, /24… (de /0 = 0.0.0.0 à /32 = 255.255.255.255)

/24 → 256 adresses | /25 → 128 | /26 → 64 | /27 → 32 | /28 → 16 | /29 → 8 | /30 → 4

Adresse réseau = 1ère adresse (ex: 192.168.10.0)
Adresse broadcast = dernière adresse (ex: 192.168.10.255)

Exemple : IP = 192.168.1.0/26 → réseau : 192.168.1.0 | broadcast : 192.168.1.63

Calcul binaire

  • Adresse réseau = IP ET logique masque (1+1=1, 1+0=0, 0+0=0)
  • Adresse broadcast = IP OU logique masque inversé (1+1=1, 1+0=1, 0+0=0)

Adresse MAC

L'adresse MAC (Media Access Control) est l'adresse physique d'un périphérique réseau. Chaque adresse MAC est unique au monde — sorte de plaque d'immatriculation des appareils.

Format : 48 bits (6 octets) en hexadécimal séparé par « : » — ex: 5E:FF:56:A2:AF:15

  • 1 bit I/G : 0 = unicast, 1 = multicast/broadcast
  • 1 bit U/L : 0 = universelle (IEEE), 1 = locale
  • 22 bits : adresse constructeur (OUI — Organizationally Unique Identifier)
  • 24 bits : adresse unique par carte

L'IEEE donne des préfixes de 24 bits aux fabricants → 16 millions d'adresses par préfixe.

1. Qu'est-ce qu'un Proxy ?

Un proxy (ou serveur mandataire) est un intermédiaire placé entre les clients d'un réseau local et Internet. Lorsqu'un client effectue une requête, c'est le proxy qui la transmet à sa place, puis retourne la réponse au client.

Il est principalement utilisé pour contrôler, filtrer, surveiller ou optimiser le trafic sortant des utilisateurs d'un réseau vers Internet.

❌ Sans proxy
  • → Clients accèdent directement à Internet
  • → Aucun contrôle ni filtrage des sites visités
✅ Avec proxy
  • → Requêtes transitent par le proxy
  • → IP réelle des clients masquée

2. Le Proxy Direct (Forward Proxy)

Le proxy direct agit au nom des clients du réseau local pour accéder à des ressources sur Internet. Le serveur distant ne voit que l'adresse IP du proxy, et non celle du client.

ÉtapeActeurAction
1. Requête clientClient (192.168.1.10)Demande l'accès à www.exemple.com
2. TransmissionProxy (10.0.0.1)Vérifie les règles, transmet la requête
3. Réponse serveurServeur distantRetourne la page au proxy
4. Réponse clientProxy (10.0.0.1)Transmet la page au client

Rôles du proxy direct

🚫 Filtrage de contenu
Bloque des catégories de sites selon les règles de l'administrateur
💾 Mise en cache
Ressources fréquentes stockées localement — moins de bande passante
🕵️ Anonymisation
Le serveur distant ne voit que l'IP du proxy
📋 Journalisation
Enregistre les requêtes — suivi et audit des activités

Logiciels courants

LogicielRemarque
SquidOpen source très répandu, supporte HTTP, HTTPS, FTP et la mise en cache
PrivoxyOrienté vie privée, filtre les publicités et traceurs
CCProxySolution Windows pour PME avec interface graphique

3. Le Proxy Inversé (Reverse Proxy)

Le proxy inversé est placé du côté des serveurs, pas des clients. Il reçoit les requêtes venant d'Internet et les redistribue vers un ou plusieurs serveurs internes. Les clients ne connaissent pas l'adresse des serveurs réels.

ÉtapeOrigineDestinationRôle
1. RequêteClient InternetProxy inversé (IP publique)Accès à www.monsite.com
2. RoutageProxy inverséServeur web interneTransmission de la requête
3. TraitementServeur interneProxy inverséGénère la réponse
4. RéponseProxy inverséClient InternetRetourne la page

Rôles du proxy inversé

⚖️ Load Balancing
Distribue les requêtes entre plusieurs serveurs back-end
🔐 Terminaison SSL
Gère le HTTPS à la place des serveurs internes
🛡️ Protection
Serveurs internes jamais exposés directement sur Internet
🗺️ Routage URL
Dirige /api vers un serveur, /images vers un autre

Logiciels courants

LogicielRemarque
NginxTrès performant, largement utilisé comme proxy inversé et serveur web
Apache (mod_proxy)Module proxy intégré au serveur Apache, très répandu
HAProxySpécialisé dans le load balancing haute performance
TraefikProxy inversé moderne, natif pour Docker et Kubernetes

4. Comparaison — Proxy Direct vs Inversé

CritèreProxy Direct (Forward)Proxy Inversé (Reverse)
Position dans le réseauCôté client (réseau interne)Côté serveur (exposé sur Internet)
Qui est masqué ?L'adresse IP des clientsL'adresse IP des serveurs internes
Initie la connexionLe client interneLe client Internet (externe)
Cas d'usage typiqueFiltrage, contrôle des sortiesLoad balancing, SSL, protection serveurs
ExemplesSquid, PrivoxyNginx, HAProxy, Traefik
Connaissance du clientLe client configure son proxyLe client ne sait pas qu'il y a un proxy

5. Proxy Explicite vs Proxy Transparent

📢 Proxy Explicite

Le proxy est connu et déclaré sur les postes clients. Chaque client est configuré manuellement (ou via GPO) pour diriger son trafic vers le serveur proxy.

  • ✅ Authentification possible
  • ✅ Compatible HTTPS (tunnel CONNECT)
  • ❌ Configuration nécessaire sur chaque poste
  • ❌ Contournable par l'utilisateur
👻 Proxy Transparent

Le proxy est invisible pour les clients. Le trafic est intercepté et redirigé automatiquement par le routeur ou le pare-feu via des règles iptables.

  • ✅ Zéro configuration client
  • ✅ Impossible à contourner par l'utilisateur
  • ❌ HTTPS complexe (SSL bumping requis)
  • ❌ Authentification difficile à mettre en place
ÉtapeActeurCe qui se passe réellement
1. RequêteClientEnvoie une requête vers www.exemple.com port 80
2. InterceptionRouteur / Pare-feuRègle redirige le trafic port 80 vers le proxy (port 3128)
3. TraitementProxy transparentApplique le filtrage, la mise en cache, transmet la requête
4. RéponseProxy transparentRetourne la réponse au client, qui ne sait pas qu'il est passé par un proxy
✅ Mémo rapide : Proxy direct = protection des clients → Internet · Proxy inversé = protection des serveurs ← Internet

1. Qu'est-ce que le VPN ?

Le VPN (Virtual Private Network) est une technologie qui établit un lien sécurisé et chiffré entre des réseaux ou des appareils qui ne se voient pas directement, généralement via Internet. Ce lien est appelé tunnel VPN.

Le VPN chiffre les données de bout en bout — toute personne interceptant le trafic sur le chemin ne voit que des données chiffrées illisibles.

❌ Sans VPN
  • → Communications transitent en clair sur Internet
  • → Un attaquant peut intercepter et lire les données
✅ Avec VPN
  • → Données chiffrées dans un tunnel sécurisé
  • → Réseaux distants communiquent comme s'ils étaient connectés physiquement

2. Les Types de VPN

01
VPN Client-to-Site (Accès distant)
▼

Établi entre un appareil individuel (PC, smartphone) et un réseau d'entreprise. Permet à un employé en télétravail de se connecter au réseau interne depuis n'importe où.

ÉtapeActeurDescription
1. ConnexionEmployé (PC distant)Lance le client VPN et s'authentifie
2. TunnelClient VPN ↔ ConcentrateurUn tunnel chiffré est établi via Internet
3. AccèsEmployéAccède aux ressources internes (serveurs, imprimantes…)
Cas d'usage : TélétravailAccès distant à l'entreprise
02
VPN Site-to-Site (Interconnexion de sites)
▼

Interconnecte deux réseaux d'entreprise de manière permanente. Mis en place entre le siège et des agences. Aucun logiciel VPN n'est nécessaire sur les postes clients — ce sont les routeurs/pare-feux des deux sites qui gèrent le tunnel.

SiteÉquipementRôle
Siège (Paris)Routeur / Pare-feuExtrémité 1 du tunnel VPN
InternetTunnel chiffréTransmission sécurisée entre les deux sites
Agence (Lyon)Routeur / Pare-feuExtrémité 2 du tunnel VPN
Cas d'usage : Interconnexion siège ↔ agences
03
VPN Grand Public
▼

Service commercial qui permet à un particulier de chiffrer sa connexion Internet et de masquer son adresse IP réelle derrière celle du serveur VPN. Utilisé pour protéger la vie privée ou contourner des restrictions géographiques.

NordVPNSurfSharkProtonVPNGhostVPN
TypeEntre qui ?Cas d'usage typique
Client-to-SiteUn poste et un réseauTélétravail, accès distant à l'entreprise
Site-to-SiteDeux réseauxInterconnexion de siège et agences
Grand publicUn poste et un serveur VPNAnonymat, contournement de restrictions

3. Split Tunnel vs Full Tunnel

✂️ Split Tunnel

Seul le trafic destiné au réseau de l'entreprise passe par le tunnel VPN. Le reste (navigation Internet, streaming) transite directement par le FAI de l'utilisateur.

  • ✅ Meilleures performances
  • ✅ Moins de bande passante VPN consommée
  • ❌ Trafic Internet non protégé par le VPN
🔒 Full Tunnel

La totalité du trafic passe par le tunnel VPN, y compris la navigation Internet. L'entreprise peut appliquer ses règles de filtrage sur l'ensemble des communications.

  • ✅ Protection maximale — tout est chiffré
  • ✅ Politiques de sécurité appliquées partout
  • ❌ Plus gourmand en bande passante VPN
CritèreSplit TunnelFull Tunnel
Trafic entreprisePasse par le VPNPasse par le VPN
Trafic InternetPasse directement par le FAIPasse par le VPN
SécuritéPartielle (Internet non protégé)Maximale (tout chiffré)
PerformancesMeilleures (moins de charge VPN)Réduites (tout transit VPN)
Usage typiqueTélétravail courantEnvironnements haute sécurité

4. Les Protocoles VPN

ProtocolePort(s)Caractéristiques
OpenVPNUDP 1194 / TCP 443Open source, très sécurisé, configurable — solutions d'entreprise
WireGuardUDP 51820Protocole moderne, très rapide, code source minimal — idéal pour les performances
L2TP/IPsecUDP 500, 4500Natif sur la plupart des OS, sécurisé grâce à IPsec mais plus lent qu'OpenVPN
IKEv2/IPsecUDP 500, 4500Très stable lors des changements de réseau (4G ↔ Wi-Fi) — recommandé pour mobiles
PPTPTCP 1723⚠️ Ancien protocole, rapide mais non sécurisé — à éviter absolument
SSTPTCP 443Protocole Microsoft, utilise le port HTTPS via SSL/TLS
✅ Recommandation : En entreprise, privilégier OpenVPN ou IKEv2/IPsec. Pour les performances maximales, WireGuard. Ne jamais utiliser PPTP en production.

📌 Définition

Le Cloud Computing consiste à louer des ressources informatiques (serveurs, stockage, applications) via Internet, hébergées chez un fournisseur, plutôt que de les posséder physiquement. On distingue trois grands modèles selon ce que le fournisseur gère pour vous.

🧩 Les 3 modèles de service

🔵 IaaS
Infrastructure as a Service

Le fournisseur loue l'infrastructure brute (serveurs virtuels, stockage, réseau). Vous gérez l'OS et tout le reste.

  • Vous gérez : OS, middleware, runtime, données, applications
  • Fournisseur gère : virtualisation, serveurs, stockage, réseau
  • Exemple : AWS EC2, Azure VM, Proxmox/OVH dédié
✅ Avantages
  • Contrôle total sur l'OS, la config réseau et la pile logicielle
  • Flexibilité maximale : choix du système, des outils, des versions
  • Scalabilité : ajout de ressources à la demande (CPU, RAM, stockage)
  • Coût maîtrisé : paiement à l'usage, pas d'achat de matériel
  • Idéal pour les équipes techniques ayant besoin d'environnements personnalisés
🟣 PaaS
Platform as a Service

Le fournisseur fournit une plateforme prête à l'emploi pour développer et déployer. Vous gérez uniquement vos applications et données.

  • Vous gérez : données, applications
  • Fournisseur gère : OS, middleware, runtime, infrastructure
  • Exemple : Heroku, Azure App Service, Google App Engine
✅ Avantages
  • Déploiement rapide : focus sur le code, pas sur l'infra
  • Maintenance réduite : mises à jour OS et runtime gérées par le fournisseur
  • Collaboration facilitée : environnements partagés et reproductibles
  • Intégrations natives : BDD, CI/CD, monitoring inclus souvent d'office
  • Idéal pour les développeurs qui veulent livrer vite sans gérer de serveurs
🟢 SaaS
Software as a Service

Le fournisseur fournit une application complète, prête à l'usage. Vous n'avez rien à gérer techniquement.

  • Vous gérez : rien (juste l'usage, vos données)
  • Fournisseur gère : tout (infra → application)
  • Exemple : Gmail, Microsoft 365, Salesforce
✅ Avantages
  • Zéro maintenance : mises à jour, sécurité et disponibilité gérées par le fournisseur
  • Accessibilité universelle : utilisable depuis n'importe quel navigateur, partout
  • Adoption immédiate : aucune installation, opérationnel en quelques minutes
  • Coût prévisible : abonnement mensuel/annuel par utilisateur
  • Idéal pour les utilisateurs métier non techniques ou les PME sans DSI

📋 Récapitulatif — Qui gère quoi ?

Couche IaaS PaaS SaaS
Applications Vous Vous Fournisseur
Données Vous Vous Vous
Runtime / Middleware Vous Fournisseur Fournisseur
OS Vous Fournisseur Fournisseur
Virtualisation Fournisseur Fournisseur Fournisseur
Serveurs / Stockage / Réseau Fournisseur Fournisseur Fournisseur

Plus on va vers le SaaS, moins on gère soi-même mais moins on a de contrôle. Plus on va vers l'IaaS, plus on a de flexibilité mais plus de gestion à assurer.

🔐 Les autres modèles de déploiement

☁️ Cloud Public

Ressources mutualisées entre plusieurs clients, gérées par un fournisseur tiers (AWS, Azure, GCP). Coût réduit, scalabilité élevée.

🏢 Cloud Privé

Infrastructure dédiée à une seule entreprise, hébergée en interne ou chez un prestataire. Plus de contrôle et de sécurité.

🔗 Cloud Hybride

Combinaison de cloud public et privé, selon les besoins (données sensibles en privé, pics de charge en public).

🌍 Multicloud

Utilisation de plusieurs fournisseurs cloud publics simultanément, pour éviter la dépendance à un seul (vendor lock-in).

✔️ Chiffrement

Opération qui consiste à transformer un message clair en un message chiffré, inintelligible pour un tiers, en vue d'assurer le secret de sa transmission. À la base du chiffrement, il y a une clé.

Le chiffrement est réversible : en possédant la clé, il est possible de retrouver le message original (déchiffrement). L'expéditeur et le destinataire doivent avoir la même clé et le même outil.

Exemple — Décalage de +7 caractères (chiffre de César)
Texte original
Merci de lire ces lignes
🔑 +7
Texte chiffré
Tljjpgklgspylgjlzgspnulz
↩️ Déchiffrement possible avec la clé inverse (−7)

❌ Cryptage

Transformation d'un message en clair en un message codé sans clé de déchiffrement — le retour au texte original est impossible. Contrairement au chiffrement, le cryptage est irréversible.

Le terme "cryptage" est souvent mal employé à la place de "chiffrement". En réalité, le cryptage désigne une transformation à sens unique : on ne peut pas retrouver le message d'origine.

Exemple — Cryptage (hachage SHA-256)
Texte original
Merci de lire ces lignes
🔒 SHA
Texte crypté (hash)
3a7f2c19b4e0d8...
🚫 Aucun déchiffrement possible — sens unique
✔️ Chiffrement
  • 🔑 Utilise une clé
  • ↩️ Réversible (déchiffrement)
  • 📨 Communication sécurisée
  • Exemples : AES, RSA, TLS/HTTPS
❌ Cryptage
  • 🚫 Pas de clé de retour
  • ⛔ Irréversible (sens unique)
  • 🛡️ Stockage mots de passe
  • Exemples : MD5, SHA-1, SHA-256

🔑 Chiffrement Symétrique — C'est quoi ?

Le chiffrement symétrique utilise une seule et même clé secrète pour chiffrer et déchiffrer. L'expéditeur et le destinataire doivent tous les deux posséder cette clé avant de communiquer.

💡 Analogie — Le coffre-fort à double clé

Alice et Bob ont chacun une copie de la même clé. Alice met son message dans le coffre et le verrouille. Bob ouvre le coffre avec sa copie. Problème : comment Alice a-t-elle remis sa clé à Bob sans qu'un espion l'intercepte au passage ? C'est le problème de distribution de clé.

⚠️ Si la clé est interceptée une fois, toute la communication — passée et future — est compromise.

🔄 Comment ça fonctionne ?

Le symétrique opère en deux phases sur les données brutes (les bits) :

🔒 Chiffrement
① Texte clair : "Bonjour"
+ Clé secrète K → algorithme (AES…)
② Texte chiffré : x7#kP!2&
🔓 Déchiffrement
① Texte chiffré : x7#kP!2&
+ même Clé secrète K → algorithme inverse
② Texte clair : "Bonjour"

📊 Algorithmes symétriques courants

AlgorithmeTaille de cléStatutUsage typique
AES (Advanced Encryption Standard)128 / 192 / 256 bits✔ Standard actuelHTTPS, VPN, disques chiffrés, Wi-Fi WPA2/3
ChaCha20256 bits✔ ModerneTLS 1.3, Android, OpenSSH
3DES112 / 168 bits⚠ ObsolèteLegacy bancaire
DES56 bits✘ CasséNe plus utiliser
✅ Avantages
  • ⚡ Très rapide (performances élevées)
  • 💡 Peu gourmand en ressources CPU
  • 📦 Adapté aux gros volumes de données
❌ Inconvénients
  • 🔓 Distribution de la clé difficile et risquée
  • 💀 Une clé compromise = tout compromis
  • 📈 N utilisateurs = N clés à gérer

🔐 Chiffrement Asymétrique — C'est quoi ?

Le chiffrement asymétrique utilise deux clés mathématiquement liées : une clé publique que tout le monde peut connaître, et une clé privée que seul le propriétaire possède. Ce que l'une chiffre, seule l'autre peut le déchiffrer — et on ne peut pas retrouver la clé privée à partir de la clé publique.

💡 Analogie — La boîte aux lettres publique

Bob installe une boîte aux lettres dans la rue avec une fente ouverte (clé publique) — n'importe qui peut y déposer un message. Mais seul Bob possède la clé du cadenas pour l'ouvrir (clé privée). Alice peut envoyer un message à Bob sans jamais avoir eu besoin de se rencontrer au préalable pour échanger un secret.

✅ Le problème de distribution de clé est résolu : la clé publique peut circuler librement sans risque.

🔄 Comment ça fonctionne ?

L'asymétrique a deux usages distincts selon le sens de chiffrement :

📨 Confidentialité (envoi secret)
① Alice chiffre avec la clé publique de Bob
② Seul Bob peut déchiffrer avec sa clé privée
Même si Eve intercepte le message, sans la clé privée de Bob elle ne peut rien faire.
✍️ Signature numérique (authenticité)
① Bob signe avec sa clé privée
② N'importe qui vérifie avec la clé publique de Bob
Prouve que le message vient bien de Bob et qu'il n'a pas été modifié.

📊 Algorithmes asymétriques courants

AlgorithmeTaille de cléStatutUsage typique
RSA2048 / 4096 bits✔ StandardHTTPS, SSH, certificats TLS
ECC (Elliptic Curve Cryptography)256 / 384 bits✔ Moderne & compactTLS 1.3, SSH moderne, mobiles
Diffie-Hellman2048+ bits✔ Échange de clésNégociation TLS, VPN
DSA1024 / 2048 bits⚠ En déclinSignature uniquement
✅ Avantages
  • 🔑 Pas de problème de distribution de clé
  • ✍️ Authentification et signature possibles
  • 📈 Scalable : 1 paire de clés par utilisateur
❌ Inconvénients
  • 🐢 Beaucoup plus lent que le symétrique
  • 📏 Clés beaucoup plus longues
  • 🚫 Inadapté au chiffrement de gros volumes

⚖️ Symétrique vs Asymétrique — Les différences clés

Critère🔑 Symétrique🔐 Asymétrique
Nombre de clés1 clé partagée2 clés (publique + privée)
Distribution de cléProblème majeurRésolu (clé publique libre)
VitesseTrès rapideLent (100× à 1000× plus lent)
Taille des clés128 – 256 bits2048 – 4096 bits (RSA)
Signature numériqueNonOui
Usage principalChiffrement de données en masseÉchange de clés, certificats, authentification
ExemplesAES, ChaCha20RSA, ECC, Diffie-Hellman

⚡ En pratique — Le modèle hybride (TLS/HTTPS)

Dans la quasi-totalité des protocoles modernes (TLS, HTTPS, SSH, PGP), les deux types sont combinés : l'asymétrique résout le problème de distribution de clé, puis le symétrique prend le relais pour la vitesse.

Exemple — Handshake TLS/HTTPS
Étape 1
🔐 Asymétrique — Le client et le serveur échangent une clé de session temporaire via RSA ou ECDHE. Personne ne peut l'intercepter.
Étape 2
⚡ Symétrique — Toute la communication est chiffrée avec AES en utilisant cette clé de session. Rapide et efficace.
✅ Résultat : sécurité de l'asymétrique + vitesse du symétrique — le meilleur des deux mondes.

1. Les Logiciels Malveillants (Malwares)

Type Description & Comportement
Virus / VerLe Virus infecte un fichier sain. Le Ver se propage seul sur le réseau pour le saturer.
RansomwareChiffre les données et demande une rançon pour la clé de décodage.
BotnetRéseau de machines "zombies" pilotées à distance pour des attaques de masse.
KeyloggerEspion qui enregistre les touches du clavier (vol de mots de passe).
RootkitInvisible : s'installe au cœur de l'OS (Kernel) pour cacher d'autres menaces.

2. Ingénierie Sociale

Technique Mode Opératoire
BaitingL'appât : Laisser une clé USB piégée en évidence pour piéger un curieux.
PhishingHameçonnage de masse par mail (faux sites bancaires ou administratifs).
Spear PhishingAttaque ciblée et ultra-personnalisée visant une personne précise.
Smishing / VishingHameçonnage par SMS (Smishing) ou par appel vocal (Vishing).

3. Attaques Réseau

Attaque Fonctionnement
SniffingCapture des paquets (Wireshark) pour lire les données circulant en clair.
ARP SpoofingDétourne le trafic local vers l'attaquant (Man-In-The-Middle).
DNS SpoofingCorrompt le cache DNS pour rediriger vers de faux sites web.
DDoSSaturation d'un service par un flux massif provenant d'un Botnet.
IP SpoofingUsurpation d'adresse IP pour contourner les listes d'accès (ACL).

4. Attaques Applicatives

Attaque Fonctionnement
SQL InjectionInsertion de code malveillant pour manipuler la base de données.
XSSInjection de scripts (JS) pour voler des cookies de session.
Path TraversalUtiliser ../ pour accéder à des fichiers système interdits.
Zero-DayExploitation d'une faille inconnue de l'éditeur (pas encore de correctif).
Buffer OverflowSubmersion de la mémoire pour forcer l'exécution de code arbitraire.

5. Conseils de Protection

Cible Action de protection recommandée
HumainNe jamais ouvrir de pièces jointes suspectes et vérifier l'expéditeur.
ComptesActiver la Double Authentification (MFA) et utiliser des mots de passe uniques.
SystèmeInstaller les mises à jour immédiatement pour corriger les Zero-Days.
MatérielNe jamais brancher de clés USB inconnues (risque de Baiting).
DonnéesEffectuer des sauvegardes régulières sur un support déconnecté (Hors-ligne).
🛡️ Conclusion : La technique (Antivirus, Pare-feu) fait 50% du travail, les 50% restants dépendent de la vigilance de l'utilisateur.

Une route statique est configurée pour la connectivité à des réseaux distants qui ne sont pas directement connectés sur le routeur. Elle nécessite une configuration manuelle et ne s'adapte pas automatiquement aux changements du réseau.

Commande ip route

La commande ip route configure une route statique :

Router(config)# ip route 192.168.2.0 255.255.255.0 10.0.0.2
  • 192.168.2.0 = réseau de destination
  • 255.255.255.0 = masque de sous-réseau
  • 10.0.0.2 = adresse IP du prochain saut (next-hop)

Au lieu d'une IP, il est possible de mettre une interface de sortie.

Route par défaut

La route par défaut (0.0.0.0 0.0.0.0) correspond à tous les paquets sans route connue :

Router(config)# ip route 0.0.0.0 0.0.0.0 172.16.1.1

Très utile pour les stub networks (un seul routeur connecté) — évite de maintenir de nombreuses routes.

Vérification — show ip route

Router# show ip route
  • Les routes statiques sont indiquées avec le code S
  • Le S* = route par défaut (passerelle par défaut)
  • Pour que la communication fonctionne de bout en bout, il faut configurer la route dans les deux sens

Qu'est-ce qu'un VLAN ?

Un VLAN (Virtual Local Area Network) est un réseau local virtuel : il permet de segmenter un réseau physique en plusieurs sous-réseaux logiques indépendants, sans avoir besoin de matériel supplémentaire.

Concrètement, plusieurs appareils reliés au même switch physique peuvent être séparés comme s'ils étaient sur des switches différents — et inversement, des appareils sur des switches différents peuvent appartenir au même VLAN.

Exemple concret
🖥️ VLAN 10 — Finance
PC-Comptable-1, PC-Comptable-2
Réseau : 192.168.10.0/24
💻 VLAN 20 — Informatique
PC-IT-1, PC-IT-2, Serveur
Réseau : 192.168.20.0/24
→ Les deux services sont sur le même switch physique mais ne peuvent pas communiquer directement.

Pourquoi utiliser des VLANs ?

🔒 Sécurité
Isolation des services sensibles (RH, Finance). Un utilisateur d'un VLAN ne voit pas le trafic des autres.
📡 Réduction du broadcast
Chaque VLAN forme son propre domaine de broadcast. Moins de trafic inutile sur le réseau.
⚙️ Flexibilité
Regrouper des machines par service ou fonction, indépendamment de leur localisation physique.
💰 Économique
Un seul switch physique remplace plusieurs switches logiques. Réduction des coûts matériels.

La norme 802.1Q

La norme 802.1Q est le standard IEEE qui définit le tagging VLAN. Elle ajoute un tag de 4 octets dans la trame Ethernet pour identifier le VLAN d'appartenance.

Structure d'une trame 802.1Q :
MAC Dest
MAC Src
Tag 802.1Q
VLAN ID (12 bits)
Type
Données

Les ports non configurés restent dans le VLAN 1 (natif) — il est conseillé de ne pas l'utiliser pour des raisons de sécurité.

Ports Access vs Ports Trunk

Port Access
Connecté à un équipement final (PC, imprimante). Appartient à un seul VLAN. La trame sort sans tag.
Port Trunk
Connecté entre switches ou vers un routeur. Transporte plusieurs VLANs simultanément avec tags 802.1Q.

Introduction aux VLANs

Un VLAN (Virtual Local Area Network) permet de segmenter un réseau physique en plusieurs sous-réseaux logiques sur un switch.

Exemple : Une entreprise souhaite que le service Finance et le service Informatique ne puissent pas communiquer entre eux. Il faut créer 2 VLANs : VLAN Finance (192.168.20.0/24) et VLAN Informatique (192.168.30.0/24).

Avantages : réduction des domaines de broadcast + augmentation de la sécurité.

La norme 802.1Q ajoute un tag de 4 octets aux trames Ethernet. Les ports non configurés restent dans le VLAN 1 (natif) — il est conseillé de ne pas l'utiliser.

Étape 1 — Créer les VLANs

Switch> enable Switch# configure terminal Switch(config)# vlan 2 Switch(config-vlan)# name vlan_finance Switch(config)# vlan 3 Switch(config-vlan)# name vlan_informatique

Supprimer un VLAN (attention : retirer les ports affectés d'abord) :

Switch(config)# no vlan 2

Étape 2 — Assigner des ports aux VLANs

Switch(config)# interface fastethernet 0/5 Switch(config-if)# switchport mode access Switch(config-if)# switchport access vlan 2 Switch(config)# interface range fastethernet 0/6-14 Switch(config-if)# switchport mode access Switch(config-if)# switchport access vlan 2 Switch(config)# interface range fastethernet 0/15-20 Switch(config-if)# switchport mode access Switch(config-if)# switchport access vlan 3

Étape 3 — Visualiser la configuration

Switch# show vlan brief

Port Trunk — Communication inter-switches

Un port trunk redistribue les trames de tous les VLANs entre deux switches.

Switch(config)# interface gigabitethernet 0/24 Switch(config-if)# switchport mode trunk

Filtrage des VLANs autorisés sur le trunk :

Switch(config-if)# switchport trunk allowed vlan add 1,2 Switch(config-if)# no switchport trunk allowed vlan add 1,2
✅ Toujours sauvegarder la configuration après modification — une panne de courant peut tout effacer.

Le routage inter-VLAN est essentiel pour permettre la communication entre différents sous-réseaux virtuels. Deux méthodes : routeur avec sous-interfaces ou switch de niveau 3.

Configuration du Switch (couche 2)

Créez les VLANs 10 et 20, assignez les ports, puis configurez le port trunk vers le routeur :

Switch>enable Switch#conf t Switch(config)#vlan 10 Switch(config-vlan)#exit Switch(config)#vlan 20 Switch(config-vlan)#exit Switch(config)#interface range fastethernet 0/1-9 Switch(config-if)# switchport mode access Switch(config-if)#switchport access vlan 10 Switch(config-if)#exit Switch(config)#interface range fastethernet 0/10-19 Switch(config-if)# switchport mode access Switch(config-if)#switchport access vlan 20 Switch(config-if)#exit Switch(config)# interface gigabitethernet 0/24 Switch(config-if)# switchport mode trunk

Méthode 1 — Routeur avec sous-interfaces

Activez l'interface physique puis créez une sous-interface par VLAN :

Router(config)# interface gigabitethernet 0/0 Router(config-if)#no shutdown Router(config-if)#exit Router(config)# interface gigabitethernet 0/0.10 Router(config-subif)# encapsulation dot1q 10 Router(config-subif)# ip address 192.168.10.254 255.255.255.0 Router(config-subif)#exit Router(config)# interface gigabitethernet 0/0.20 Router(config-subif)# encapsulation dot1q 20 Router(config-subif)# ip address 192.168.20.254 255.255.255.0

Méthode 2 — Switch de couche 3 (L3)

Avantages : communication plus rapide entre VLANs, moins de latence (pas de passage par un routeur externe).

SwitchN3(config)#ip routing Switch(config)#vlan 30 Switch(config)#vlan 40 Switch(config)#interface vlan 30 Switch(config-subif)#ip address 192.168.30.254 255.255.255.0 Switch(config)#interface vlan 40 Switch(config-subif)#ip address 192.168.40.254 255.255.255.0 Switch(config)#interface gigabitethernet 0/1 Switch(config-subif)#switchport trunk encapsulation dot1q Switch(config-subif)#switchport mode trunk

Diagnostics

C:\>ping 192.168.30.1 Switch# show ip interface brief Switch# show ip route
✅ Les VLANs configurés avec status "up" peuvent communiquer entre eux et avec d'autres sous-réseaux.

Qu'est-ce qu'une ACL ?

Une ACL (Access Control List) est une liste de règles configurée sur un routeur ou switch pour autoriser ou refuser le trafic réseau en fonction de critères précis. Les règles sont lues de haut en bas, et la première règle qui correspond est appliquée.

Il existe deux grands types d'ACL chez Cisco : les ACL Standard et les ACL Étendues.

ACL Standard (numérotées 1–99 / 1300–1999)

Les ACL Standard filtrent le trafic uniquement sur la base de l'adresse IP source. Elles sont simples mais peu granulaires.

Caractéristiques
  • ✅ Filtre uniquement par adresse IP source
  • ✅ Simple à configurer
  • ❌ Pas de filtrage par port, protocole ou destination
  • 📍 Doit être appliquée le plus près possible de la destination
  • Plage numéros : 1–99 et 1300–1999

Syntaxe :

Router(config)# access-list 10 deny 192.168.10.0 0.0.0.255 Router(config)# access-list 10 permit any ! Application sur interface Router(config)# interface gigabitethernet 0/1 Router(config-if)# ip access-group 10 out

Dans cet exemple : le réseau 192.168.10.0/24 est bloqué, tout autre trafic est autorisé.

Tout ACL se termine implicitement par un deny any invisible. Sans règle permit, tout est bloqué.

ACL Étendue (numérotées 100–199 / 2000–2699)

Les ACL Étendues offrent un contrôle beaucoup plus précis. Elles permettent de filtrer sur la base de l'IP source ET destination, du protocole (TCP, UDP, ICMP...) et du port.

Caractéristiques
  • ✅ Filtre par IP source ET destination
  • ✅ Filtre par protocole (TCP, UDP, ICMP, IP)
  • ✅ Filtre par numéro de port (ex : 80, 443, 22)
  • ✅ Très granulaire et précise
  • 📍 Doit être appliquée le plus près possible de la source
  • Plage numéros : 100–199 et 2000–2699

Syntaxe :

! Bloquer HTTP depuis un sous-reseau vers un serveur Router(config)# access-list 110 deny tcp 192.168.10.0 0.0.0.255 host 192.168.20.5 eq 80 Router(config)# access-list 110 permit ip any any ! Application sur interface (sens entrant depuis source) Router(config)# interface gigabitethernet 0/0 Router(config-if)# ip access-group 110 in

Dans cet exemple : le trafic HTTP (port 80) depuis 192.168.10.0/24 vers le serveur 192.168.20.5 est bloqué. Tout autre trafic est autorisé.

Comparaison Standard vs Étendue

Critère ACL Standard ACL Étendue
Numérotation 1–99, 1300–1999 100–199, 2000–2699
IP Source ✅ Oui ✅ Oui
IP Destination ❌ Non ✅ Oui
Protocole (TCP/UDP/ICMP) ❌ Non ✅ Oui
Numéro de port ❌ Non ✅ Oui
Complexité Simple Plus complexe
Placement recommandé Près de la destination Près de la source

Commandes utiles

! Voir toutes les ACL configurees Router# show access-lists ! Supprimer une ACL Router(config)# no access-list 10 ! ACL nommee (plus lisible) Router(config)# ip access-list extended BLOC_HTTP Router(config-ext-nacl)# deny tcp 192.168.10.0 0.0.0.255 any eq 80 Router(config-ext-nacl)# permit ip any any

Comprendre le NAT

01
Définition et types de NAT
▼

Le NAT (Network Address Translation) traduit les adresses IP privées (réseau local) en adresses IP publiques. Il permet à plusieurs appareils d'un même LAN d'accéder à Internet avec une seule adresse publique.

Du point de vue d'un service distant, tous les appareils du LAN partagent la même IP publique.

TypeFonctionnementUsage typique
NAT StatiqueLien fixe entre une IP interne et une IP publiqueServeur accessible depuis Internet
NAT DynamiqueAttribution temporaire depuis un pool d'adresses publiquesAccès sortant pour plusieurs postes
PAT / NAT OverloadPlusieurs IP internes partagent une seule IP publique via les portsBox Internet / entreprise
02
Table de translation et connexions multiples
▼

Le routeur NAT conserve une table de translation qui associe chaque flux interne à un port externe unique.

IP interne 192.168.1.10:1025 → IP publique 203.0.113.5:40001 IP interne 192.168.1.11:1026 → IP publique 203.0.113.5:40002 IP interne 192.168.1.12:1027 → IP publique 203.0.113.5:40003
💡 Sans NAT, chaque appareil aurait besoin d'une adresse IPv4 publique unique — ressource limitée et épuisée. Le NAT permet à chaque box de ne consommer qu'une seule IP publique quel que soit le nombre d'appareils connectés.
03
Redirection de port (Port Forwarding) & sécurité
▼

Le port forwarding (redirection de port) associe un port public du routeur à un service interne (serveur web, caméra IP, NAS…) pour le rendre accessible depuis Internet.

⚠️ Chaque port ouvert est une porte d'entrée potentielle. Un attaquant peut scanner les ports ouverts et tenter d'accéder au service exposé.

Bonnes pratiques :

Filtrer les IP autoriséesActiver le MFAMettre à jour le firmwareDMZ en entreprise
💡 Préférer un VPN à l'ouverture de ports directs quand c'est possible. Pour vérifier qu'un port est ouvert : canyouseeme.org ou nmap.

Comprendre le PAT

04
Définition et fonctionnement
▼

Le PAT (Port Address Translation), aussi appelé NAT Overload, est une extension du NAT qui permet à plusieurs appareils de partager une seule IP publique en distinguant les connexions grâce aux numéros de ports.

Contrairement au NAT classique (1 IP interne → 1 IP publique), le PAT associe une IP interne + un port à une IP publique + un port différent.

192.168.2.10:1025 → 10.0.0.1:40001 192.168.2.11:1025 → 10.0.0.1:40002 192.168.2.12:3456 → 10.0.0.1:40003 # Trois appareils différents — une seule IP publique — des ports distincts
05
Avantages du PAT
▼

Avantages du PAT :

Des milliers d'appareils sur 1 seule IP publiquePréserve le stock IPv4Transparent pour les postesProtection passive (machines internes non exposées)
💡 overload dans la commande ip nat inside source active le PAT. Sans overload, une seule machine du LAN peut utiliser le NAT à la fois.

Configuration Cisco (CLI)

06
Configuration des interfaces
▼

Configurer les interfaces du routeur — côté LAN (inside) et côté WAN (outside).

R2>enable R2#configure terminal ! Interface fa1/0 — côté LAN (réseau interne) R2(config)#interface fa1/0 R2(config-if)#ip address 192.168.2.254 255.255.255.0 R2(config-if)#no shutdown R2(config-if)#exit ! Interface fa0/0 — côté WAN (réseau public) R2(config)#interface fa0/0 R2(config-if)#ip address 10.0.0.1 255.255.255.0 R2(config-if)#no shutdown R2(config-if)#exit
07
Déclarer inside / outside
▼

Définir quelle interface est côté réseau interne (inside) et quelle interface est côté Internet (outside).

! Définir l'interface côté réseau interne R2(config)#interface fa1/0 R2(config-if)#ip nat inside R2(config-if)#exit ! Définir l'interface côté Internet R2(config)#interface fa0/0 R2(config-if)#ip nat outside R2(config-if)#exit
08
Règles d'accès et activation PAT
▼

Créer une règle d'accès autorisant le LAN à sortir via le NAT, puis activer le PAT.

! Autoriser le réseau 192.168.2.0/24 à utiliser le NAT R2(config)#access-list 1 permit 192.168.2.0 0.0.0.255 ! Activer le PAT (NAT overload) sur l'interface fa0/0 R2(config)#ip nat inside source list 1 interface fa0/0 overload
💡 Résultat : tous les appareils du réseau 192.168.2.0/24 peuvent accéder à Internet en partageant l'IP de l'interface fa0/0.
09
Vérification
▼

Vérifier que le NAT/PAT fonctionne correctement.

R2#debug ip nat ! Afficher la table de translation R2#show ip nat translations
ProInside globalInside localOutside localOutside global
icmp 10.0.0.1:1 192.168.2.10:1 8.8.8.8:1 8.8.8.8:1
Inside local = IP privée du PC sur le LANInside global = IP publique vue depuis Internet

Récapitulatif des commandes

CommandeRôle
ip nat insideDéfinit l'interface comme côté réseau privé
ip nat outsideDéfinit l'interface comme côté Internet
access-list 1 permit ...Autorise le trafic du LAN à être translaté
ip nat inside source list 1 ... overloadActive le PAT (NAT avec surcharge de ports)
debug ip natAffiche les translations en temps réel
show ip nat translationsAffiche la table de translation NAT

Rôle du masque de sous-réseau

Le masque de sous-réseau sert à séparer l'adresse IP en deux parties :

  • Identifier le réseau : il définit quelle partie de l'adresse correspond au "nom du groupe" (le sous-réseau).
  • Identifier l'hôte : il définit quelle partie correspond à la machine spécifique dans ce réseau.
  • Aiguiller le trafic : il permet à l'ordinateur de savoir si le destinataire est dans le même réseau (envoi direct) ou s'il doit passer par un routeur (envoi externe).
💡 Un masque est toujours une suite de 1 en binaire (partie réseau) suivie de 0 (partie hôte). Jamais l'inverse.

Notation CIDR — Puissances de 2

Chaque bit supplémentaire dans la partie réseau double le nombre de sous-réseaux disponibles :

Préfixe CIDR Bits empruntés (depuis /16) Nb sous-réseaux Nb hôtes / sous-réseau Masque décimal
/160165 534255.255.0.0
/171232 766255.255.128.0
/182416 382255.255.192.0
/1938 ✅8 190255.255.224.0
/204164 094255.255.240.0
/215322 046255.255.248.0
/226641 022255.255.252.0
/237128510255.255.254.0
/248256254255.255.255.0
⚠️ Formule : 2ⁿ sous-réseaux (n = bits empruntés). Hôtes utilisables = 2ʰ − 2 (réseau + broadcast exclus).

Que faire si le nombre voulu n'est pas une puissance de 2 ?

⚠️ La règle fondamentale

En CIDR, tous les sous-réseaux d'une même division ont exactement la même taille. On ne peut pas avoir des blocs de tailles différentes dans un découpage simple.

Et comme le nombre de sous-réseaux est toujours une puissance de 2, on ne peut pas faire exactement 3, 5, 6, 7, 9… sous-réseaux égaux. Il faut prendre la puissance de 2 supérieure ou égale, et les blocs "en trop" restent non attribués — ils existent dans l'espace d'adressage mais ne sont assignés à personne.

Voici la logique pour n'importe quel nombre :

Tu veux… → Puissance de 2 choisie Masque (depuis /16) Blocs créés Blocs non attribués
3 sous-réseaux égaux2² = 4  (4 ≥ 3)/18 — 255.255.192.041 non attribué
5 sous-réseaux égaux2³ = 8  (8 ≥ 5)/19 — 255.255.224.083 non attribués
6 sous-réseaux égaux2³ = 8  (8 ≥ 6)/19 — 255.255.224.082 non attribués
7 sous-réseaux égaux2³ = 8  (8 ≥ 7)/19 — 255.255.224.081 non attribué
9 sous-réseaux égaux2⁴ = 16 (16 ≥ 9)/20 — 255.255.240.0167 non attribués
12 sous-réseaux égaux2⁴ = 16 (16 ≥ 12)/20 — 255.255.240.0164 non attribués
📌 Exemple — 3 sous-réseaux égaux depuis 192.168.0.0/16

Étape 1 — Trouver la puissance de 2 ≥ 3 :

2¹ = 2 → 2 < 3, trop petit 2² = 4 → 4 ≥ 3 ✅ on choisit 4

Étape 2 — 2 bits empruntés → préfixe /18, masque 255.255.192.0, pas de 64

Chaque bloc fait 16 382 hôtes utilisables. Les 4 blocs sont identiques en taille — c'est obligatoire.

Étape 3 — 4 blocs créés, on en utilise 3 :

1
192.168.0.0 – 192.168.63.255  ·  /18  ·  16 382 hôtes
✔ Attribué
2
192.168.64.0 – 192.168.127.255  ·  /18  ·  16 382 hôtes
✔ Attribué
3
192.168.128.0 – 192.168.191.255  ·  /18  ·  16 382 hôtes
✔ Attribué
4
192.168.192.0 – 192.168.255.255  ·  /18  ·  même taille
— Non attribué
✅ Les 3 blocs attribués ont exactement la même taille (16 382 hôtes chacun). Le 4ème bloc existe dans l'espace d'adressage — il peut être attribué plus tard si le réseau s'agrandit.
⚠️ Il est impossible de faire 3 blocs qui couvrent tout le /16 de façon égale sans "gaspiller" un bloc. C'est une contrainte mathématique du CIDR, pas une erreur.

Exemple complet — 192.168.0.0/16 → 8 sous-réseaux

01
Combien de bits emprunter ?
▼

On veut 8 sous-réseaux. On cherche la puissance de 2 ≥ 8 :

2¹ = 2 → /17 2² = 4 → /18 2³ = 8 → /19 ✅

Il faut emprunter 3 bits à la partie hôte, ce qui donne un préfixe /19.

✅ Nouveau masque : 255.255.224.0
02
Convertir /19 en binaire
▼

/19 signifie 19 bits à 1 puis des 0 jusqu'à 32 bits :

11111111 . 11111111 . 11100000 . 00000000 255 . 255 . 224 . 0

Le 3ème octet 11100000 = 128 + 64 + 32 = 224.

03
Calculer le pas (incrément)
▼

Le pas est la taille de chaque bloc. Il se lit sur le dernier octet "actif" du masque :

256 − 224 = 32 → le pas est 32

Chaque sous-réseau contient 32 adresses (dont 2 réservées : réseau + broadcast), soit 30 hôtes utilisables.

04
Lister les 8 sous-réseaux
▼

On incrémente de 32 sur le 3ème octet à partir de 192.168.0.0 :

# Adresse réseau 1ère IP hôte Dernière IP hôte Broadcast
1192.168.0.0/19192.168.0.1192.168.31.254192.168.31.255
2192.168.32.0/19192.168.32.1192.168.63.254192.168.63.255
3192.168.64.0/19192.168.64.1192.168.95.254192.168.95.255
4192.168.96.0/19192.168.96.1192.168.127.254192.168.127.255
5192.168.128.0/19192.168.128.1192.168.159.254192.168.159.255
6192.168.160.0/19192.168.160.1192.168.191.254192.168.191.255
7192.168.192.0/19192.168.192.1192.168.223.254192.168.223.255
8192.168.224.0/19192.168.224.1192.168.255.254192.168.255.255
✅ 8 sous-réseaux de 8 190 hôtes chacun, couvrant l'intégralité du /16.

Méthode visuelle — La règle des puissances

Pour trouver rapidement le bon CIDR, mémorisez cette suite en partant du préfixe de base :

Base /16 → +0 bit → 2⁰ = 1 sous-réseau /17 → +1 bit → 2¹ = 2 sous-réseaux /18 → +2 bits → 2² = 4 sous-réseaux /19 → +3 bits → 2³ = 8 sous-réseaux ← notre exemple /20 → +4 bits → 2⁴ = 16 sous-réseaux /21 → +5 bits → 2⁵ = 32 sous-réseaux /22 → +6 bits → 2⁶ = 64 sous-réseaux /23 → +7 bits → 2⁷ = 128 sous-réseaux /24 → +8 bits → 2⁸ = 256 sous-réseaux
⚠️ Chaque bit emprunté double le nombre de sous-réseaux mais divise par 2 le nombre d'hôtes par sous-réseau.

Calculateur interactif

ipconfig — Configuration IP

01
ipconfig — Afficher la configuration réseau
▼

Affiche les adresses IP, masques et passerelles de toutes les interfaces.

ipconfig # Résumé rapide ipconfig /all # Détail complet (MAC, DHCP, DNS, bail...) ipconfig /release # Libère le bail DHCP (supprime l'IP) ipconfig /renew # Demande une nouvelle IP au serveur DHCP ipconfig /flushdns # Vide le cache DNS local ipconfig /displaydns # Affiche le cache DNS actuel ipconfig /registerdns # Ré-enregistre le nom d'hôte auprès du DNS
✅ ipconfig /all est la commande la plus complète : elle affiche aussi l'adresse MAC, le serveur DHCP, les DNS configurés et la durée du bail.

ping & tracert — Connectivité et chemin réseau

02
ping — Tester la joignabilité d'un hôte
▼

Envoie des paquets ICMP Echo Request pour vérifier qu'une machine répond.

ping 192.168.1.1 # Ping standard (4 paquets) ping 192.168.1.1 -t # Ping continu (Ctrl+C pour arrêter) ping 192.168.1.1 -n 10 # Envoie 10 paquets ping 192.168.1.1 -l 1000 # Taille des paquets = 1000 octets ping 192.168.1.1 -4 # Force IPv4 ping 192.168.1.1 -6 # Force IPv6 ping monserveur.local # Ping par nom (résolution DNS)
⚠️ Un ping qui échoue ne signifie pas forcément que la machine est hors ligne — le pare-feu peut bloquer ICMP.
03
tracert — Tracer le chemin jusqu'à une destination
▼

Affiche chaque routeur (saut) traversé pour atteindre une destination.

tracert 8.8.8.8 # Trace vers Google DNS tracert -d 8.8.8.8 # Sans résolution DNS (plus rapide) tracert -h 20 8.8.8.8 # Limite à 20 sauts maximum tracert monserveur.local # Trace par nom
✅ Utile pour localiser où un paquet se perd : le dernier saut qui répond indique le point de blocage.

arp — Table ARP (IP ↔ MAC)

04
arp — Afficher et gérer la table ARP
▼

La table ARP associe chaque adresse IP locale à son adresse MAC correspondante.

arp -a # Affiche toute la table ARP arp -a 192.168.1.1 # Affiche l'entrée pour une IP spécifique arp -d 192.168.1.1 # Supprime une entrée ARP arp -d * # Vide toute la table ARP arp -s 192.168.1.1 AA-BB-CC-DD-EE-FF # Ajoute une entrée statique
# Exemple de sortie : Interface : 192.168.1.10 --- 0x5 Adresse Internet Adresse physique Type 192.168.1.1 c0-a8-01-01-aa-bb dynamique 192.168.1.20 00-1a-2b-3c-4d-5e dynamique 192.168.1.255 ff-ff-ff-ff-ff-ff statique
✅ Si une IP apparaît avec l'adresse MAC ff-ff-ff-ff-ff-ff, c'est une adresse de broadcast.

route — Table de routage

05
route — Afficher et modifier les routes
▼

Permet de consulter et de modifier la table de routage Windows.

route print # Affiche toute la table de routage route print -4 # Routes IPv4 uniquement route print -6 # Routes IPv6 uniquement route print 192.168.* # Filtre les routes correspondantes
# Ajouter une route statique (non persistante) route add 10.0.0.0 mask 255.0.0.0 192.168.1.1 # Ajouter une route persistante (survit au redémarrage) route add 10.0.0.0 mask 255.0.0.0 192.168.1.1 -p # Supprimer une route route delete 10.0.0.0 # Modifier une route existante route change 10.0.0.0 mask 255.0.0.0 192.168.1.254
# Exemple de sortie route print : Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.10 25 ← route par défaut 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 331 192.168.1.0 255.255.255.0 On-link 192.168.1.10 281 192.168.1.255 255.255.255.255 On-link 192.168.1.10 281
⚠️ La route 0.0.0.0 / 0.0.0.0 est la route par défaut (passerelle). C'est celle empruntée pour tout trafic sans route plus spécifique.

netstat — Connexions et ports actifs

06
netstat — Afficher les connexions réseau
▼

Affiche les connexions TCP/UDP actives, les ports en écoute et les statistiques réseau.

netstat -a # Toutes les connexions et ports en écoute netstat -n # Affiche les IPs (sans résolution DNS) netstat -o # Affiche le PID du processus associé netstat -b # Affiche le nom de l'exécutable (admin requis) netstat -r # Affiche la table de routage (= route print) netstat -s # Statistiques par protocole (TCP, UDP, ICMP...) netstat -an # Combiné : toutes connexions + IPs brutes netstat -ano # Connexions + IPs brutes + PID netstat -ano | findstr :80 # Filtrer le port 80
# Exemple de sortie netstat -ano : Proto Adresse locale Adresse distante État PID TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4 TCP 192.168.1.10:49234 93.184.216.34:443 ESTABLISHED 3120 TCP 192.168.1.10:49235 192.168.1.1:53 TIME_WAIT 0
✅ Pour identifier le processus d'un PID : tasklist | findstr <PID>

nslookup — Résolution DNS

07
nslookup — Interroger les serveurs DNS
▼

Résout un nom de domaine en adresse IP ou fait une résolution inverse (IP → nom).

nslookup google.com # Résolution directe (nom → IP) nslookup 8.8.8.8 # Résolution inverse (IP → nom) nslookup google.com 8.8.8.8 # Interroge un DNS spécifique nslookup -type=MX google.com # Enregistrements mail (MX) nslookup -type=NS google.com # Serveurs de noms (NS) nslookup -type=A google.com # Enregistrements IPv4 (A) nslookup -type=AAAA google.com # Enregistrements IPv6 (AAAA)
✅ En mode interactif : taper simplement nslookup puis les noms à résoudre. exit pour quitter.

netsh — Configuration avancée

08
netsh — Configurer les interfaces et le pare-feu
▼

Outil puissant pour configurer les interfaces réseau, le pare-feu et les paramètres Wi-Fi.

# Afficher toutes les interfaces netsh interface show interface # Afficher la config IP d'une interface netsh interface ip show config "Ethernet" # Assigner une IP statique netsh interface ip set address "Ethernet" static 192.168.1.50 255.255.255.0 192.168.1.1 # Repasser en DHCP netsh interface ip set address "Ethernet" dhcp # Définir un serveur DNS netsh interface ip set dns "Ethernet" static 8.8.8.8 # Afficher les réseaux Wi-Fi sauvegardés netsh wlan show profiles # Voir le mot de passe d'un réseau Wi-Fi sauvegardé netsh wlan show profile name="NomDuReseau" key=clear # Réinitialiser la pile TCP/IP netsh int ip reset netsh winsock reset
⚠️ netsh int ip reset et netsh winsock reset nécessitent un redémarrage pour prendre effet.

Récapitulatif rapide

Commande Usage principal Exemple utile
ipconfig /allConfig IP complète (MAC, DHCP, DNS)ipconfig /flushdns
pingTester la joignabilité d'un hôteping 8.8.8.8 -t
tracertChemin réseau saut par sauttracert -d 8.8.8.8
arp -aTable ARP (IP ↔ MAC)arp -d *
route printTable de routageroute add ... -p
netstat -anoConnexions actives + PIDnetstat -ano | findstr :443
nslookupRésolution DNSnslookup -type=MX domain.com
netshConfig avancée (IP, Wi-Fi, pare-feu)netsh wlan show profiles
✅ Toutes ces commandes s'exécutent dans cmd.exe ou PowerShell. Certaines nécessitent les droits Administrateur (arp -d, netsh, netstat -b).

Schéma de câblage

⚠️ Pour cette procédure : PC10 branché sur GE1, PC20 sur GE9, et le lien Switch → MikroTik sur GE17.

Configuration du Switch Linksys

01
Accéder à l'interface web du switch
▼

Connectez le switch au MikroTik pour récupérer une adresse via DHCP, ou utilisez l'IP par défaut :

192.168.1.251

Identifiants par défaut :

Login : admin Password : admin

Si le MikroTik vous distribue bien une IP, vous pouvez rester en DHCP.

02
Passer le switch en IP statique
▼

La première chose à faire est d'attribuer une IP statique au switch dans la même plage que le MikroTik (ex : 192.168.88.x) :

03
Créer les VLANs
▼

Aller dans VLAN Management → VLANs et créer les VLANs nécessaires (ex : VLAN 10 et VLAN 20) :

04
Assigner les ports aux VLANs (GE1 et GE9)
▼

Aller dans VLAN Management → Interfaces. Sélectionner GE1 (PC10) et configurer l'option JOIN VLAN → VLAN 10 :

Faire la même chose pour GE9 (PC20) dans le VLAN 20 :

05
Configurer le port trunk GE17 (Switch → MikroTik)
▼

Le port GE17 relie le switch au MikroTik. Il doit être configuré en trunk pour transporter les deux VLANs :

✅ Le port trunk doit transporter à la fois le VLAN 10 et le VLAN 20 vers le MikroTik.

Configuration du Routeur MikroTik

06
Accéder au MikroTik et créer les interfaces VLAN
▼

Se connecter à l'interface WinBox/Web du MikroTik à l'adresse :

192.168.88.1

Aller dans Interfaces → onglet VLAN et créer les deux interfaces VLAN. Renommer l'interface physique reliant le routeur au switch (ex : Router→Switch) :

Créer VLAN 10 et VLAN 20 sur l'interface physique Router→Switch :

07
Assigner les adresses IP aux interfaces VLAN
▼

Aller dans IP → Addresses et créer les adresses passerelles pour chaque VLAN :

✅ Le MikroTik devient la passerelle de chaque VLAN : 192.168.10.1 pour VLAN10, 192.168.20.1 pour VLAN20.
08
Test de connectivité
▼

Configurer les PCs en IP statique :

PC10 : 192.168.10.x /24 — Passerelle : 192.168.10.1 PC20 : 192.168.20.x /24 — Passerelle : 192.168.20.1

Tester le ping entre PC10 et PC20 :

ping 192.168.20.x (depuis PC10)
⚠️ Si le ping échoue : vérifier les règles de pare-feu ICMP sur Windows, ou désactiver les cartes réseau supplémentaires qui pourraient interférer.

Installation du rôle FSRM

01
Ajouter le rôle via le Gestionnaire de serveur
▼

Depuis le Gestionnaire de serveur, cliquer sur Gérer → Ajouter des rôles et fonctionnalités.

Avancer jusqu'à l'étape Rôles de serveur, puis cocher :

Services de fichiers et de stockage → Services de fichiers et iSCSI → Gestionnaire de ressources du serveur de fichiers

Valider aussi lorsque l'assistant propose d'installer les outils de gestion associés.

Poursuivre jusqu'à la fin de l'installation — aucune configuration particulière n'est requise à cette étape.

✅ Une fois installé, une nouvelle console "Gestionnaire de ressources du serveur de fichiers" apparaît dans les Outils d'administration.

Configuration des modèles de quotas

02
Ouvrir la console FSRM
▼

Dans les outils d'administration du serveur, ouvrir la console Gestionnaire de ressources du serveur de fichiers.

03
Modifier un modèle de quota existant
▼

Dans la liste des Modèles de quotas, localiser le modèle "Limite de 2 Go". Faire un clic droit → Modifier les propriétés du modèle.

Modifier le nom du modèle et adapter la limite à 1 Go, puis valider.

⚠️ Il s'agit d'un quota inconditionnel : il ne sera pas possible de dépasser la limite définie.
04
Bonus — La fonction Commande (quota dynamique)
▼

La fonction Commande permet d'exécuter des actions automatiques quand la limite est atteinte. Par exemple, le modèle "Limite de 200 Mo avec extension de 50 Mo" alloue automatiquement 50 Mo supplémentaires via une commande :

✅ C'est utile pour les quotas "souples" qui s'adaptent à l'usage tout en envoyant des alertes.
05
Mettre à jour les quotas dérivés du modèle
▼

Au moment de valider les modifications du modèle, l'assistant demande comment appliquer les changements aux quotas existants qui utilisent ce modèle. Choisir selon le contexte :

⚠️ Si vous partez de zéro, ce choix n'a pas d'impact. En production, choisir "Appliquer aux quotas existants" pour propager les changements.

Application du quota sur un dossier

06
Créer un quota sur un répertoire
▼

Faire un clic droit sur Quotas dans la console FSRM → Créer un quota.

Dans la fenêtre de configuration :

1. Cliquer "Parcourir" → sélectionner le répertoire cible (ex : Partage) 2. Choisir "Dériver les propriétés de ce modèle de quota (recommandé)" 3. Sélectionner le modèle "Limite de 1 Go" 4. Cliquer "Créer"
✅ Il est aussi possible de définir manuellement le quota sans utiliser de modèle, via l'option de configuration personnalisée.
07
Vérifier le quota et tester
▼

Le quota apparaît dans la liste avec le pourcentage utilisé. Dans l'exemple ci-dessous, 4 fichiers de 250 Mo ont été déposés → le quota atteint 99% de la limite de 1 Go :

En tentant d'ajouter un fichier supplémentaire dépassant la limite, Windows bloque l'opération. Un événement est automatiquement consigné dans le journal Application de l'observateur d'événements :

✅ Ouvrir l'Observateur d'événements → Journaux Windows → Application pour retrouver les alertes FSRM avec la source SRMSVC.

Lister les commandes disponibles

Pour voir toutes les commandes du module LocalAccounts :

Get-Command -Module Microsoft.PowerShell.LocalAccounts

Commandes essentielles

Utilisateurs
  • Get-LocalUser — lister les comptes locaux
  • New-LocalUser — créer un utilisateur local
  • Remove-LocalUser — supprimer un utilisateur
  • Rename-LocalUser — renommer un utilisateur
  • Set-LocalUser — modifier (ex : mot de passe)
  • Enable-LocalUser — activer un compte
  • Disable-LocalUser — désactiver un compte
Groupes
  • Get-LocalGroup — lister les groupes locaux
  • New-LocalGroup — créer un groupe
  • Remove-LocalGroup — supprimer un groupe
  • Rename-LocalGroup — renommer un groupe
  • Set-LocalGroup — modifier un groupe
  • Get-LocalGroupMember — voir les membres
  • Add-LocalGroupMember — ajouter un membre
  • Remove-LocalGroupMember — retirer un membre

Créer un utilisateur local

Utilise 3 variables : $AccountName (nom), $AccountPassword (mot de passe), $AccountDescription (description, facultatif).

Mot de passe : 7 caractères minimum, doit contenir au moins 3 des 4 catégories : majuscules (A–Z), minuscules (a–z), chiffres (0–9), caractères spéciaux (!, @, #, %, etc.)
# Variable du nom d'utilisateur (ne pas mettre "utilisateurs" ou "administrateur") $AccountName = "MonUtilisateur" ` # Variable du mot de passe $AccountPassword = ConvertTo-SecureString "MOT_DE_PASSE" -AsPlainText -Force ` # Variable de la description (facultatif) $AccountDescription = "Compte de test" ` # Creer le compte local New-LocalUser $AccountName -Password $AccountPassword -FullName $AccountName -Description $AccountDescription

Vérifier que le compte a bien été créé :

Get-LocalUser

Supprimer un utilisateur local

Remove-LocalUser -Name "TST"

Prérequis : les services DNS et Active Directory doivent être installés.

Lister les commandes disponibles

Get-Command -Module ActiveDirectory

Commandes essentielles AD

Utilisateurs AD
  • Get-ADUser — lister les utilisateurs AD
  • New-ADUser — créer un utilisateur AD
  • Remove-ADUser — supprimer un utilisateur AD
  • Set-ADUser — modifier un utilisateur AD
  • Rename-ADObject — renommer un objet AD
  • Enable-ADAccount — activer un compte AD
  • Disable-ADAccount — désactiver un compte AD
  • Set-ADAccountPassword — changer le mot de passe
Groupes AD
  • Get-ADGroup — lister les groupes AD
  • New-ADGroup — créer un groupe AD
  • Remove-ADGroup — supprimer un groupe AD
  • Set-ADGroup — modifier un groupe AD
  • Get-ADGroupMember — voir les membres
  • Add-ADGroupMember — ajouter un membre
  • Remove-ADGroupMember — retirer un membre

Créer un utilisateur AD

Paramètres principaux : -Name (nom affiché), -SamAccountName (login), -UserPrincipalName (UPN), -Path (emplacement dans l'AD), -AccountPassword, -Enabled.

New-ADUser -Name "Jean Dupont" ` -SamAccountName "jdupont" ` -UserPrincipalName "[email protected]" ` # CN=Users pour le conteneur par defaut, ou OU=NomOU pour une UO specifique -Path "CN=Users,DC=c2rt,DC=org" ` # Demande le mot de passe a la creation -AccountPassword (Read-Host -AsSecureString "Entrez un mot de passe") ` -Enabled $true

Renommer un utilisateur AD

Exemple : jdupont → j.dupont, Jean Dupont → Julien Dupont

# Modifier les infos de connexion (SamAccountName, DisplayName, etc.) Set-ADUser -Identity "jdupont" -SamAccountName "j.dupont" -DisplayName "Julien Dupont" -GivenName "Julien" -Surname "Dupont" # Renommer l'objet dans la liste AD Get-ADUser -Identity "j.dupont" | Rename-ADObject -NewName "Julien Dupont"

Gestion des Unites d'Organisation (OU)

Créer une OU à la racine du domaine :

New-ADOrganizationalUnit -Name "Agen" -Path "DC=c2rt,DC=org" -ProtectedFromAccidentalDeletion $true

Créer une OU dans une autre OU :

New-ADOrganizationalUnit -Name "Campus" -Path "OU=Agen,DC=c2rt,DC=org" -ProtectedFromAccidentalDeletion $true

Supprimer une OU (désactiver la protection d'abord) :

# Desactiver la protection contre la suppression accidentelle Set-ADOrganizationalUnit -Identity "OU=Campus,OU=Agen,DC=c2rt,DC=org" -ProtectedFromAccidentalDeletion $false # Supprimer l'OU Campus (dans Agen) Remove-ADOrganizationalUnit -Identity "OU=Campus,OU=Agen,DC=c2rt,DC=org" -Confirm:$false

Horaires de connexion

Restreindre un utilisateur à des plages horaires précises (ex : lundi–vendredi, 8h–18h) :

# Definir les heures (Lundi au Vendredi, 8h a 18h) [byte[]]$hours = @(0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,0,0,0,0) # Le calcul exact du binaire varie selon le fuseau horaire # Appliquer a l'utilisateur Set-ADUser -Identity "jdupont" -Replace @{logonHours = $hours}

Appliquer les horaires d'un utilisateur modèle à toute une OU :

# 1. Stocker la config horaires du modele dans une variable $mesHoraires = (Get-ADUser -Identity "jdupont" -Properties logonHours).logonHours # 2. Appliquer cette variable a TOUS les utilisateurs de l'OU "Campus" Get-ADUser -Filter * -SearchBase "OU=Campus,OU=Agen,DC=c2rt,DC=org" | Set-ADUser -Replace @{logonHours = $mesHoraires}
Pour copier les horaires d'un compte modèle vers une OU entière, créez d'abord un utilisateur de référence avec les bons horaires, puis propagez avec Get-ADUser -Filter *.
01
Plans de Continuité & Reprise
▼
🏢
PCA
Plan de Continuité d’Activité

Garantit la continuité des opérations en cas de crise majeure (catastrophe naturelle, cyberattaque). Maintient les activités critiques en mode dégradé.

💻
PCI
Plan de Continuité Informatique

Composante du PCA, spécifique aux SI. Garantit la disponibilité continue des systèmes via sauvegardes, redondances et procédures de basculement.

🔄
PRA
Plan de Reprise d’Activité

Rétablit les opérations après un incident (panne, perte de données). Peut fonctionner seul ou en complément du PCA. Inclut stratégies de récupération et tests réguliers.

🖥️
PRI
Plan de Reprise Informatique

Redémarre les systèmes informatiques après un incident, en complément du PCI. Se concentre sur la récupération rapide avec procédures de restauration.

📢
PCC
Plan de Communication de Crise

Assure une communication claire avec collaborateurs, clients, partenaires et autorités. Inclut protocoles, messages prérédigés et canaux dédiés. Souvent négligé, mais crucial.

02
Niveaux RAID
▼
NiveauTypeCapacitéRedondancePerformanceIdéal pour
⚡ RAID 0Répartition100%❌ AucuneTrès rapideFichiers temporaires non critiques
🪞 RAID 1Miroir50%✅ 1 disqueLecture rapideDonnées critiques, sauvegardes
⚖️ RAID 5ParitéN-1✅ 1 disqueExcellente lectureServeurs de fichiers PME
🛡️ RAID 6Double paritéN-2✅ 2 disquesBonne lectureStockage critique haute dispo
🚀 RAID 10Miroir+Répart.50%✅ VariableTrès haute perf.BDD, workloads intensifs
03
Types de sauvegarde
▼

Une sauvegarde est une copie de données permettant d’être restaurée en cas de perte ou de corruption.

💾
Sauvegarde Complète

Copie la totalité des données.

Restauration✅ Simple & rapide
Espace❌ Très gourmand
Durée❌ Longue
⚡
Sauvegarde Incrémentale

Copie uniquement les fichiers modifiés depuis la dernière sauvegarde (complète ou incrémentale).

Restauration❌ Complexe (chaîne)
Espace✅ Minimal
Durée✅ Très rapide
📊
Sauvegarde Différentielle

Copie les fichiers modifiés depuis la dernière sauvegarde complète.

Restauration⚠️ Nécessite complète
Espace⚠️ Croissant
Durée⚠️ Modérée
04
Règle 3-2-1-1-0
▼

La méthode 3-2-1-1-0 est la règle d’or des sauvegardes professionnelles.

3
📂Copies des données

Conserver au moins 3 copies : production, sauvegarde, copie de sauvegarde. L’archivage compte comme une copie.

2
🗄️Types de supports

Utiliser au moins 2 supports différents : disques internes, SAN, NAS. Les bandes LTO comptent comme support.

1
🌍Copie hors site

Conserver au moins 1 copie hors site : autre site de production, infrastructure distante ou coffre-fort.

1
🔒Copie hors ligne / immuable

Au moins 1 copie isolée ou immuable : protection contre ransomware et actes malveillants via accès distant.

0
✅Zéro erreur

Zéro erreur après tests de restauration. Une sauvegarde non restaurable est inexploitable.

💡 Une sauvegarde non testée n’est pas une sauvegarde.

1. Pourquoi du stockage réseau ?

Dans une infrastructure professionnelle, le stockage local d'un serveur est vite insuffisant et non redondant. Le stockage réseau permet de centraliser, mutualiser et sécuriser les données de plusieurs machines sur un équipement dédié accessible via le réseau.

Deux grandes familles existent : le NAS orienté partage de fichiers, et le SAN orienté stockage bloc à haute performance. Ils ne s'opposent pas, ils répondent à des besoins différents.

2. NAS — Network Attached Storage

01
Définition et principe
▼

Un NAS (Network Attached Storage) est un boîtier de stockage connecté au réseau Ethernet standard (LAN). Il fonctionne comme un serveur de fichiers dédié : les clients accèdent aux fichiers via le réseau, exactement comme un partage réseau Windows ou Linux.

📂 Analogie : Le NAS est comme un disque dur partagé accessible depuis n'importe quelle machine du réseau. Tu ouvres l'Explorateur Windows, tu vois un lecteur réseau Z:\ — c'est souvent un NAS derrière.

Le NAS expose des dossiers partagés (appelés shares ou volumes) que les clients montent via des protocoles de partage de fichiers. Il intègre généralement son propre OS (TrueNAS, Synology DSM, QNAP QTS…) et une interface web d'administration.

💡 Le NAS travaille au niveau fichier (couche 7 applicative) — le client voit des dossiers et des fichiers, pas des blocs bruts.
02
Protocoles NAS — NFS, SMB/CIFS, AFP
▼

Le NAS utilise des protocoles de partage de fichiers réseau selon le type de client :

ProtocolePortUsageOS client
SMB / CIFS445 TCPPartage Windows classique — \\serveur\partageWindows principalement
NFS v3/v42049 TCP/UDPPartage UNIX/Linux — montage via mountLinux, macOS, VMware
AFP548 TCPPartage Apple (Time Machine, anciennes versions macOS)macOS
FTP / SFTP21 / 22Transfert de fichiers distant, accès externeTous OS
WebDAV / HTTP80 / 443Accès web ou via navigateurTous OS
⚠️ SMB vs NFS : dans un environnement mixte Windows/Linux, on peut configurer les deux simultanément sur le même NAS — chaque client utilise le protocole adapté à son OS.

Sous Windows, le montage d'un partage NFS se fait avec :

mount -o anon \\192.168.1.50\partage Z:

Sous Linux, le montage d'un partage NFS :

mount -t nfs 192.168.1.50:/volume1/partage /mnt/nas
03
Cas d'usage typiques du NAS
▼

Le NAS est idéal pour :

  • Partage de fichiers en entreprise — dossiers communs, documents RH, projets partagés entre équipes
  • Sauvegarde centralisée — destination VEEAM, Windows Server Backup, Time Machine macOS
  • Stockage multimédia — serveur Plex, photothèque, vidéos de surveillance IP
  • Hébergement de VMs légères — datastores VMware via NFS (moins performant que SAN mais fonctionnel)
  • Archivage long terme — RAID intégré pour la redondance des données sur plusieurs disques
✅ Un NAS Synology ou QNAP en PME remplace avantageusement un serveur de fichiers Windows dédié à moindre coût et consommation électrique.

3. SAN — Storage Area Network

04
Définition et principe
▼

Un SAN (Storage Area Network) est un réseau de stockage dédié et séparé du LAN, conçu pour fournir un accès à des volumes de stockage bruts (blocs) à haute vitesse et faible latence, comme si c'était un disque dur local.

💽 Analogie : Si le NAS est un lecteur réseau (tu vois des fichiers), le SAN est un disque dur brut connecté à distance — le serveur le voit comme son propre disque C:\, il peut y installer un OS dessus, le formater, etc.

Le SAN est massivement utilisé dans les datacenters, clusters VMware/Hyper-V et environnements critiques (bases de données Oracle, SQL Server…) où la performance et la disponibilité sont primordiales. Il opère au niveau bloc (couches 1-3 OSI), ce qui le rend beaucoup plus rapide que le NAS pour les I/O intensifs.

05
Protocoles SAN — Fibre Channel, iSCSI, FCoE
▼

Le SAN repose sur des protocoles de transport de blocs :

ProtocoleSupportVitesseUsage
Fibre Channel (FC)Câble fibre optique dédiée8 / 16 / 32 Gb/sDatacenter haut de gamme, banques, hôpitaux
iSCSIEthernet standard (LAN/IP)1 / 10 / 25 Gb/sPME/ETI, VMware, Hyper-V, alternative FC moins chère
FCoEEthernet 10 Gb/s+10 Gb/s+Convergence FC et Ethernet sur le même câble
NVMe over FabricsEthernet RDMA ou FC25 / 100 Gb/sUltra haute performance, flash NVMe en réseau
⚠️ iSCSI vs Fibre Channel : iSCSI passe sur le réseau IP classique (plus simple et moins cher à déployer), tandis que Fibre Channel nécessite une infrastructure dédiée (HBA, switch FC, câbles fibre) — plus performant mais beaucoup plus coûteux.

Avec iSCSI, la cible de stockage (le SAN) expose des LUN (Logical Unit Numbers) que les serveurs (initiateurs) se connectent et voient comme des disques locaux :

iscsiadm -m discovery -t sendtargets -p 192.168.1.100
iscsiadm -m node --login
06
Cas d'usage typiques du SAN
▼

Le SAN est incontournable pour :

  • Datastores VMware vSphere / Hyper-V — stockage partagé entre plusieurs hôtes pour vMotion, HA, DRS
  • Bases de données critiques — Oracle, SQL Server, PostgreSQL sur LUNs dédiées avec haute performance I/O
  • Clustering applicatif — deux serveurs accèdent au même volume pour la haute disponibilité active/passive
  • Boot from SAN — les serveurs démarrent directement depuis un LUN SAN sans disque local
  • Sauvegardes à haute vitesse — snapshot SAN quasi-instantané sans impacter les performances de production

4. NAS vs SAN — Comparatif

CritèreNASSAN
Niveau de stockageFichier (niveau 7)Bloc (niveau 1-3)
Réseau utiliséLAN Ethernet classiqueRéseau dédié (FC) ou iSCSI sur LAN
ProtocolesSMB, NFS, AFP, FTPiSCSI, Fibre Channel, FCoE, NVMe-oF
PerformanceBonne (usage bureautique)Très haute (bases de données, VMs)
CoûtFaible à modéréModéré à très élevé (FC)
ComplexitéSimple — interface webÉlevée — zoning, LUN masking, HBA
Cas d'usagePartage fichiers, sauvegarde, PMEDatacenter, clusters, bases de données
Exemples matérielSynology, QNAP, TrueNASNetApp, Dell EMC, Pure Storage, HPE 3PAR

5. DAS — Le troisième type de stockage

Le DAS (Direct Attached Storage) complète le tableau : c'est du stockage directement branché sur un serveur (disques internes, boîtier USB/SAS externe). Il n'est pas partageable sur le réseau, mais offre la meilleure latence possible puisqu'il n'y a pas de réseau entre le serveur et le stockage.

TypeRéseauPartageLatenceCas d'usage
DASAucun❌ Non⚡ Très faiblePoste de travail, serveur isolé, NVMe local
NASLAN Ethernet✅ Oui (fichiers)Faible à modéréePartage fichiers, PME, sauvegarde
SANRéseau dédié✅ Oui (blocs)Très faibleDatacenter, VMs, bases de données critiques
✅ Résumé : DAS = disque local. NAS = partage de fichiers réseau. SAN = disque distant haute performance. Les trois sont complémentaires dans une infrastructure professionnelle complète.

1. C'est quoi un cluster ?

01
Définition simple
▼

Un cluster est un groupe de plusieurs serveurs qui travaillent ensemble pour fournir un service avec plus de disponibilité, de tolérance aux pannes ou de répartition de charge.

💡 Idée principale : au lieu d'avoir un seul serveur critique, on en met plusieurs. Si un serveur tombe, un autre peut reprendre le service. En TSSR, on rencontre souvent les clusters avec Hyper-V, VMware, Proxmox, SQL Server, les services de fichiers ou les solutions de répartition de charge.

Chaque serveur membre du cluster s'appelle un nœud. Le service protégé peut être une VM, une application, un rôle Windows, une base de données ou une IP virtuelle.

02
Pourquoi utiliser un cluster ?
▼
Haute disponibilitéMaintenance sans coupureRépartition de chargeTolérance aux pannes

Le but n'est pas seulement d'avoir "plusieurs serveurs", mais de réduire les interruptions. Un cluster permet par exemple de déplacer une VM pendant une maintenance, de redémarrer automatiquement un service ailleurs après une panne, ou de répartir les connexions entre plusieurs serveurs web.

✅ À retenir : un cluster améliore la disponibilité, mais il ne remplace pas une sauvegarde. Une erreur humaine, un ransomware ou une corruption de données peut être répliquée sur tous les nœuds.

2. Vocabulaire essentiel

TermeDéfinitionExemple TSSR
NœudServeur membre du cluster.HV01 et HV02 dans un cluster Hyper-V.
RessourceÉlément géré par le cluster.VM, disque, adresse IP, service, rôle de fichiers.
Bascule / FailoverDéplacement automatique d'un service vers un autre nœud après panne.Une VM redémarre sur HV02 si HV01 tombe.
FailbackRetour d'un service vers son nœud préféré après réparation.La VM revient sur HV01 quand il est opérationnel.
HeartbeatSignal régulier entre les nœuds pour vérifier qu'ils sont vivants.Si HV01 ne répond plus, HV02 déclenche une bascule.
QuorumMécanisme de vote qui décide si le cluster a le droit de continuer.2 nœuds + témoin = majorité conservée.
Witness / TémoinÉlément qui ajoute un vote pour éviter l'égalité.File Share Witness, Disk Witness, Cloud Witness.

3. Le quorum — le mot que tu cherchais

03
Définition du quorum
▼

Le quorum est le système de décision du cluster. Il sert à répondre à une question critique : "Est-ce que ce groupe de nœuds a encore le droit de faire tourner les services ?"

Chaque nœud possède généralement un vote. Le cluster doit conserver une majorité de votes pour rester actif. Si la majorité est perdue, il s'arrête pour éviter que deux parties du cluster fassent tourner le même service en même temps.

🍕 Analogie : imagine un conseil de classe. Pour prendre une décision, il faut la majorité. Si la moitié du conseil est isolée dans une salle et l'autre moitié dans une autre, personne ne doit décider seul, sinon on risque deux décisions contradictoires.
04
Pourquoi le quorum évite le split-brain
▼

Le split-brain arrive quand les nœuds ne communiquent plus entre eux mais pensent chacun être le cluster actif. C'est dangereux : deux serveurs peuvent écrire en même temps sur le même disque ou lancer la même VM, ce qui peut corrompre les données.

🚨 Risque concret :

Si deux nœuds démarrent la même VM sur le même stockage partagé, les écritures disque deviennent incohérentes. Le quorum empêche ça en autorisant uniquement le côté qui possède la majorité.

05
Les types de témoins
▼
TémoinPrincipeCas d'usage
Disk WitnessUn disque partagé sert de vote supplémentaire.Cluster avec stockage SAN/iSCSI partagé.
File Share WitnessUn partage réseau SMB sert de vote.Cluster 2 nœuds simple en PME/labo.
Cloud WitnessUn stockage cloud sert de témoin.Sites distants, pas de troisième salle serveur.
✅ Cas classique : avec 2 nœuds, il faut presque toujours un témoin. Sans témoin, si les nœuds se séparent, on peut tomber sur une égalité 1 contre 1.

4. Les grands types de clusters

TypeObjectifFonctionnementExemple
Haute disponibilité (HA)Réduire les interruptions.Si un nœud tombe, le service redémarre ailleurs.Cluster Hyper-V, VMware HA, Proxmox HA.
Répartition de chargeDistribuer les connexions.Plusieurs serveurs répondent en parallèle.NLB Windows, HAProxy, cluster web.
Calcul / HPCAdditionner la puissance de calcul.Une tâche lourde est divisée sur plusieurs machines.Rendu 3D, calcul scientifique.
StockageRendre le stockage disponible et redondant.Plusieurs nœuds présentent un stockage commun ou répliqué.Ceph, Storage Spaces Direct, SAN.

5. Migration à chaud vs migration à froid

06
Migration à chaud
▼

Une migration à chaud déplace une VM ou un service vers un autre hôte sans l'arrêter, ou avec une coupure très courte. Chez Microsoft, on parle souvent de Live Migration.

Le principe : l'hyperviseur copie la mémoire RAM de la VM vers le nouvel hôte pendant qu'elle continue de fonctionner. À la fin, il synchronise les dernières modifications, bascule l'exécution et la VM continue presque sans interruption.

✅ Usage typique : maintenance d'un hôte Hyper-V. On migre les VM à chaud vers HV02, on met à jour HV01, puis on remet les VM où on veut.
07
Migration à froid
▼

Une migration à froid impose d'arrêter la VM ou le service avant de le déplacer. C'est plus simple techniquement, mais cela provoque une interruption visible pour les utilisateurs.

Elle est utilisée quand la migration à chaud n'est pas possible : incompatibilité CPU, absence de stockage partagé, réseau Live Migration non configuré, version d'hyperviseur différente, ou déplacement complet vers une autre plateforme.

⚠️ À retenir en examen : chaud = service allumé pendant le déplacement. Froid = service arrêté, donc coupure planifiée.
CritèreMigration à chaudMigration à froid
État de la VMAlluméeÉteinte
Coupure utilisateurNulle ou très courteOui, le temps du déplacement
ComplexitéPlus élevéePlus simple
PrérequisRéseau rapide, compatibilité CPU, droits, config cluster/hyperviseurAccès au stockage et temps d'arrêt accepté
ExempleLive Migration Hyper-VExporter une VM arrêtée puis l'importer ailleurs

6. Stockage partagé, stockage répliqué et CSV

08
Stockage partagé
▼

Dans beaucoup de clusters, les nœuds accèdent au même stockage : SAN Fibre Channel, iSCSI, SAS partagé ou baie de stockage. Les VM peuvent alors être reprises par un autre nœud car leurs disques ne sont pas enfermés dans un seul serveur.

💡 Dans Hyper-V Failover Cluster, on rencontre souvent les CSV (Cluster Shared Volumes) : des volumes partagés accessibles par plusieurs nœuds, pratiques pour stocker les fichiers des VM.
09
Stockage répliqué
▼

Au lieu d'avoir un disque partagé unique, certains clusters répliquent les données entre les nœuds. Chaque serveur possède son stockage local, mais les blocs sont copiés vers les autres.

Exemples : Storage Spaces Direct, Ceph, certaines solutions HCI. C'est puissant, mais il faut un réseau rapide et une bonne surveillance.

7. Exemple concret — Cluster Hyper-V à 2 nœuds

Architecture :

  • HV01 et HV02 : deux hôtes Hyper-V membres du domaine.
  • Stockage partagé : LUN iSCSI ou SAN contenant les VHDX des VM.
  • Réseau Management : administration, domaine, DNS.
  • Réseau Live Migration : réseau rapide dédié aux migrations à chaud.
  • Réseau stockage : trafic iSCSI séparé du réseau utilisateur.
  • File Share Witness : partage SMB sur un troisième serveur pour le quorum.
📌 Scénario : la VM "SRV-FICHIERS" tourne sur HV01. HV01 tombe en panne. Le cluster détecte l'absence de heartbeat, vérifie le quorum, puis redémarre automatiquement la VM sur HV02. Les utilisateurs subissent une coupure, mais le service revient sans intervention manuelle lourde.

8. HA, FT, PRA et sauvegarde — ne pas confondre

NotionButCe que ça protègeLimite
HARedémarrer rapidement ailleurs.Panne d'un hôte.Petite coupure possible, ne protège pas les données supprimées.
FTContinuité sans coupure perceptible.Panne d'un hôte critique.Coûteux, contraintes fortes, pas toujours disponible.
PRAReprendre après un sinistre majeur.Perte d'une salle, d'un site ou d'une infrastructure.Nécessite procédures, tests, sauvegardes, site secondaire.
SauvegardeRestaurer des données dans le temps.Suppression, corruption, ransomware.Restauration parfois longue selon RTO/RPO.

9. Bonnes pratiques TSSR

10
Points à vérifier avant production
▼
✅ À faire
  • → Prévoir un quorum adapté, surtout en cluster 2 nœuds
  • → Séparer les réseaux : management, stockage, migration, utilisateurs
  • → Tester le failover avant la mise en production
  • → Surveiller les logs, le stockage, la latence et l'espace disque
  • → Documenter les procédures de maintenance et de retour arrière
  • → Garder des sauvegardes indépendantes du cluster
❌ À éviter
  • → Mettre le témoin sur un nœud du cluster
  • → Utiliser un seul switch pour tous les réseaux critiques
  • → Oublier les sauvegardes parce que "le cluster est redondant"
  • → Faire une maintenance sans vérifier où tournent les VM
  • → Laisser une VM critique sans priorité ou sans règle de placement
  • → Ignorer les alertes de quorum ou de heartbeat

10. Résumé express

❓ Cluster

Ensemble de serveurs, appelés nœuds, qui collaborent pour fournir un service plus disponible ou mieux réparti.

❓ Quorum

Mécanisme de vote qui évite qu'un cluster coupé en deux continue des deux côtés. Il protège contre le split-brain.

❓ Migration chaud/froid

À chaud : la VM reste allumée pendant le déplacement. À froid : la VM est arrêtée, donc il y a une coupure planifiée.

❓ Piège d'examen

Un cluster n'est pas une sauvegarde. Il protège surtout contre la panne d'un nœud, pas contre la suppression, la corruption ou le chiffrement des données.

1. Qu'est-ce qu'un snapshot ?

01
Définition
▼

Un snapshot (appelé point de contrôle dans Hyper-V) est une photographie de l'état d'une machine virtuelle à un instant T — disque, mémoire RAM et configuration. Il est créé en quelques secondes et permet de revenir à cet état précis si une opération tourne mal.

🍕 Analogie : C'est comme appuyer sur "Ctrl+Z" dans un traitement de texte. Si votre modification suivante est catastrophique, vous revenez exactement à l'état d'avant en un clic — sans avoir besoin de tout réécrire.

Dans Hyper-V, un snapshot génère un fichier .avhdx (disque différentiel) qui ne stocke que les différences par rapport au disque parent. La VM continue de fonctionner normalement, toutes les nouvelles écritures sont redirigées vers ce fichier différentiel.

💡 Créer un snapshot depuis le Gestionnaire Hyper-V : clic droit sur la VM → Point de contrôle. En PowerShell : Checkpoint-VM -Name "NomVM" -SnapshotName "Avant-MàJ"

2. Snapshot vs Sauvegarde — quelle différence ?

02
Comparaison détaillée
▼

Snapshot et sauvegarde sont souvent confondus, mais ils répondent à des besoins très différents :

Critère📸 Snapshot💾 Sauvegarde
ObjectifRetour arrière rapide (avant une modif)Protection contre perte de données
Vitesse de créationQuelques secondesMinutes à heures
StockageSur le même hôte Hyper-V (fichier .avhdx)Sur un stockage externe / distant
Indépendant de la VM source ?❌ Non — dépend du disque parent✅ Oui — copie autonome complète
Survit à une panne disque de l'hôte ?❌ Non✅ Oui (si hors-site)
Survit à une suppression accidentelle de la VM ?❌ Non✅ Oui
Utilisation typiqueAvant une mise à jour, un changement de configPRA, sinistre, ransomware, archivage
Durée conseillée de rétentionQuelques heures à quelques jours maxJours, semaines, mois selon la politique
⚠️ Un snapshot n'est pas une sauvegarde. Si l'hôte physique tombe en panne, les snapshots sont perdus avec la VM. Ils ne protègent que contre les erreurs logicielles ou humaines sur un système en fonctionnement.

3. Risques liés à un usage prolongé

03
⚠️ Risque principal : croissance incontrôlée des fichiers .avhdx
▼

Chaque snapshot crée un fichier .avhdx qui grossit en permanence car toutes les nouvelles écritures disque y sont redirigées. Sur une VM très active (base de données, contrôleur de domaine, serveur de fichiers), ce fichier peut atteindre plusieurs dizaines de Go en quelques jours.

🚨 Conséquences concrètes :
  • 🔴 Saturation du disque de l'hôte → la VM s'arrête brutalement (plus d'espace pour écrire)
  • 🔴 Dégradation des performances → chaque lecture doit traverser la chaîne snapshot → disque parent
  • 🔴 Fusion longue et risquée → supprimer un vieux snapshot force une fusion qui peut durer des heures et stresser le stockage
  • 🔴 Corruption possible → une fusion interrompue (coupure de courant, panne) peut corrompre le disque virtuel
⚠️ Cas critique avec Active Directory : Un snapshot d'un DC (Contrôleur de Domaine) restauré après plusieurs jours peut provoquer un USN Rollback — les autres DC refusent de se synchroniser car ils détectent des numéros de séquence incohérents. Cela peut rendre l'AD inutilisable.
04
Bonnes pratiques
▼
✅ À faire
  • → Créer un snapshot juste avant une opération risquée
  • → Supprimer le snapshot dans les 24-48h si tout va bien
  • → Nommer les snapshots clairement (ex: Avant-MàJ-KB5034441)
  • → Surveiller l'espace disque de l'hôte
  • → Compléter avec une vraie sauvegarde VEEAM
❌ À éviter
  • → Laisser un snapshot actif plusieurs semaines
  • → Utiliser les snapshots comme seule stratégie de sauvegarde
  • → Empiler plusieurs snapshots en chaîne
  • → Restaurer un snapshot de DC après plusieurs jours
  • → Ignorer les alertes d'espace disque de l'hôte
💡 En PowerShell : Get-VMSnapshot -VMName "NomVM" pour lister les snapshots existants · Remove-VMSnapshot -VMName "NomVM" -Name "NomSnapshot" pour en supprimer un.

4. Résumé — Réponses aux questions clés

❓ Qu'est-ce qu'un snapshot ?

Une photographie de l'état complet d'une VM (disque + RAM + config) à un instant T, stockée sous forme de fichier différentiel .avhdx sur l'hôte Hyper-V. Il permet de revenir à cet état en quelques secondes.

❓ En quoi est-il différent d'une sauvegarde ?

Un snapshot dépend du disque parent et du stockage de l'hôte — il disparaît si l'hôte tombe en panne. Une sauvegarde est une copie autonome et indépendante, stockée hors de l'hôte, utilisable même en cas de sinistre total.

❓ Citez un risque lié à un usage prolongé

Le fichier .avhdx grossit continuellement. Sur une VM active, il peut saturer le disque de l'hôte en quelques jours, provoquant l'arrêt brutal de la VM. La suppression tardive d'un snapshot entraîne une fusion longue qui dégrade les performances et risque de corrompre le disque virtuel.

1. Définitions

01
RPO — Recovery Point Objective
▼

Le RPO représente la quantité maximale de données que l'on peut se permettre de perdre en cas d'incident, exprimée en durée. C'est la réponse à la question : "Jusqu'à quand puis-je remonter dans le temps ?"

RPO = perte de données maximale tolérée

Si votre RPO est de 4 heures, cela signifie que votre système de sauvegarde doit garantir qu'en cas de panne, vous pouvez restaurer une version datant de moins de 4 heures. Les données créées entre la dernière sauvegarde et le sinistre sont perdues.

🍕 Analogie : Vous rédigez un document Word sans enregistrement automatique. Si l'ordinateur plante, vous perdez tout ce que vous avez tapé depuis la dernière sauvegarde. Le RPO, c'est la fréquence à laquelle vous appuyez sur Ctrl+S.
02
RTO — Recovery Time Objective
▼

Le RTO représente le délai maximal acceptable pour remettre un système en fonctionnement après un incident. C'est la réponse à la question : "Combien de temps peut-on rester hors ligne ?"

RTO = durée maximale d'interruption tolérée

Si votre RTO est de 2 heures, cela signifie que les systèmes impactés doivent être opérationnels dans un délai de 2 heures maximum après le sinistre, qu'il s'agisse d'une restauration, d'un basculement vers un site secondaire ou d'un redémarrage.

🍕 Analogie : Un restaurant qui subit une coupure de courant. Le RTO, c'est le temps maximum pendant lequel il peut rester fermé avant de perdre trop de clients et de chiffre d'affaires.

2. Visualisation — RPO & RTO sur une timeline

Dernière
sauvegarde
💥 Incident
✅ Reprise
activité
◄── RPO ──►
◄── RTO ──►
RPO = données perdues (sauvegarde → incident)
RTO = temps d'interruption (incident → reprise)

3. Impact selon les métiers

Type d'organisationRPO typiqueRTO typiqueExplication
Banque / Bourse~0 (temps réel)< 1 minChaque seconde de données perdue = perte financière massive
Hôpital / Urgences< 15 min< 30 minLes dossiers patients sont vitaux
E-commerce< 1h< 2hChaque heure d'arrêt = commandes perdues
PME standard24h (1 sauvegarde/jour)< 4hTolérance modérée, reprise dans la journée
Archivage / Archives légales1 semaine72hDonnées peu modifiées, accès non critique
💡 Plus le RPO et le RTO sont bas, plus l'infrastructure de sauvegarde doit être sophistiquée (et coûteuse). Il faut trouver le bon équilibre selon les contraintes métier.

4. Comment atteindre ses objectifs RPO / RTO ?

03
Leviers techniques pour réduire le RPO
▼
SolutionRPO atteignableDescription
Sauvegarde quotidienne~24hMéthode classique — snapshot ou agent la nuit
Sauvegarde toutes les heures~1hTâche planifiée VEEAM, sauvegardes incrémentales
Réplication continue (CBT)< 15 minVEEAM Continuous Data Protection (CDP)
Journalisation base de données< 1 minSQL Server log shipping, Oracle Data Guard
Réplication synchrone (SAN)~0Chaque écriture est dupliquée en temps réel sur un site distant
04
Leviers techniques pour réduire le RTO
▼
SolutionRTO atteignableDescription
Restauration depuis bande / NAS4–24hCopie physique à restaurer manuellement
VEEAM Instant Recovery< 15 minLa VM démarre directement depuis le fichier de sauvegarde
Réplication de VM Hyper-V / VMware< 5 minUne copie de la VM tourne en veille sur un hôte secondaire
Cluster de basculement (Failover)< 1 minUn second nœud prend la main automatiquement
Active-Active (haute dispo)~0Deux instances tournent simultanément, aucune interruption
💡 VEEAM Instant Recovery est l'une des fonctionnalités les plus efficaces pour réduire le RTO : la VM démarre depuis le référentiel de sauvegarde en quelques minutes, le temps que la restauration complète s'effectue en arrière-plan.

5. Résumé — Mémo RPO / RTO

RPO
Recovery Point Objective
  • 📌 Perte de données max tolérée
  • 📌 Répond à : "Jusqu'où remonter ?"
  • 📌 Dépend de la fréquence des sauvegardes
  • 📌 Exemple : RPO 4h → sauvegarde toutes les 4h
RTO
Recovery Time Objective
  • 📌 Durée d'interruption max tolérée
  • 📌 Répond à : "Combien de temps hors ligne ?"
  • 📌 Dépend de la vitesse de restauration
  • 📌 Exemple : RTO 2h → back en ligne en < 2h
✅ Moyen mnémotechnique : RPO = Point dans le passé où on revient (données) · RTO = Temps pour revenir à la normale (durée).

1. Qu'est-ce qu'une mise à jour ?

Une mise à jour logicielle est un ensemble de modifications apportées à un programme ou un système d'exploitation pour corriger des problèmes, améliorer ses performances ou ajouter de nouvelles fonctionnalités. Sous Windows, Microsoft publie régulièrement des mises à jour via le service Windows Update.

2. Les types de mises à jour Windows

01
🐛 Correctifs de sécurité (Security Patches)
▼

Les correctifs de sécurité sont les mises à jour les plus critiques. Ils corrigent des vulnérabilités dans Windows ou ses composants, qui pourraient être exploitées par des attaquants pour compromettre un système.

⚠️ Exemple concret

En 2017, la faille EternalBlue dans SMBv1 a permis au ransomware WannaCry d'infecter 200 000 machines dans 150 pays. Les systèmes non patchés étaient vulnérables — les systèmes à jour ne l'étaient pas.

Priorité : CritiqueDéploiement : Immédiat recommandéSource : Patch Tuesday ou Out-of-Band
02
🔧 Correctifs de bugs (Bug Fixes)
▼

Ces mises à jour corrigent des dysfonctionnements identifiés dans Windows ou ses composants — plantages, comportements inattendus, erreurs d'affichage, problèmes de compatibilité avec des applications tierces.

Exemples de bugs corrigés : impression qui ne fonctionne plus après une mise à jour, explorateur de fichiers qui plante, problème de veille prolongée sur laptop.

💡 Les bug fixes sont souvent regroupés dans les Cumulative Updates mensuelles, qui incluent tous les correctifs précédents.
03
⚡ Améliorations des performances
▼

Ces mises à jour n'apportent pas de nouvelles fonctionnalités mais optimisent le code existant : réduction de la consommation CPU, amélioration des temps de démarrage, meilleure gestion de la mémoire RAM, optimisation des entrées/sorties disque.

Démarrage plus rapideMoins de RAM consomméeMeilleure autonomie sur laptopRéponse UI plus fluide
04
✨ Ajouts de fonctionnalités (Feature Updates)
▼

Les Feature Updates introduisent de nouvelles fonctionnalités dans Windows. Sous Windows 10 et 11, Microsoft les publie une à deux fois par an (version 22H2, 23H2…). Elles sont plus lourdes que les correctifs classiques car elles modifient en profondeur des composants du système.

⚠️ Les Feature Updates peuvent casser des compatibilités avec certains logiciels ou pilotes. En entreprise, elles sont soigneusement testées en environnement de recette avant déploiement massif.
VersionAnnéePrincipales nouveautés
22H22022Améliorations de sécurité, menu démarrer redessiné
23H22023Windows Copilot (IA), intégration OneDrive améliorée
24H22024Snapdragon ARM support, Recall AI (PC Copilot+)
05
🖥️ Mises à jour de pilotes (Driver Updates)
▼

Windows Update peut également distribuer des mises à jour de pilotes (drivers) pour les composants matériels : carte graphique, carte réseau, imprimante, contrôleur USB, etc. Elles peuvent corriger des problèmes de stabilité ou activer de nouvelles fonctionnalités matérielles.

💡 En entreprise via WSUS, les administrateurs peuvent choisir d'exclure les mises à jour de pilotes automatiques pour garder la maîtrise des configurations matérielles.
06
📦 Mises à jour cumulatives (Cumulative Updates)
▼

Depuis Windows 10, Microsoft utilise le modèle des Cumulative Updates (CU). Chaque mise à jour mensuelle est cumulative : elle contient tous les correctifs publiés depuis la dernière Feature Update. Résultat : une machine neuve n'a besoin d'installer qu'une seule grosse mise à jour pour être entièrement à jour.

✅ Avantage

Plus besoin d'installer les patchs un par un. Une seule CU suffit pour tout.

❌ Inconvénient

La CU mensuelle peut peser plusieurs centaines de Mo voire plus d'1 Go.

3. Le Patch Tuesday

07
📅 Qu'est-ce que le Patch Tuesday ?
▼

Le Patch Tuesday (aussi appelé Update Tuesday) est le nom donné au deuxième mardi de chaque mois — le jour où Microsoft publie officiellement ses mises à jour de sécurité et correctifs pour Windows, Office, Edge et ses autres produits.

Cette cadence mensuelle régulière permet aux entreprises d'anticiper et planifier les déploiements de mises à jour — plutôt que d'avoir à réagir à des publications imprévisibles tout au long du mois.

📅 Exemple de calendrier
MoisDate Patch Tuesday
Janvier 2025Mardi 14 janvier
Février 2025Mardi 11 février
Mars 2025Mardi 11 mars
💡 Astuce mémo : 2ème mardi du mois = Patch Tuesday. Les équipes sécurité du monde entier regardent les bulletins publiés ce jour-là.
08
📊 Ce que contient un Patch Tuesday
▼

Chaque Patch Tuesday peut contenir des dizaines voire plus d'une centaine de correctifs, classés par produit et par niveau de sévérité :

Niveau de sévéritéSignificationUrgence
🔴 CritiqueExploitation possible à distance sans authentificationDéployer immédiatement
🟡 ImportantExploitation nécessite une interaction utilisateurDéployer rapidement
🟢 ModéréImpact limité par la configuration par défautPlanifier
⚪ FaibleExploitation très difficile en conditions réellesRoutine mensuelle

4. Les mises à jour Out-of-Band (OOB)

09
🚨 Définition — Out-of-Band
▼

Une mise à jour Out-of-Band (OOB) est un correctif d'urgence publié en dehors du cycle mensuel du Patch Tuesday. Microsoft y recourt uniquement lorsqu'une vulnérabilité est si critique qu'attendre le prochain Patch Tuesday représente un risque inacceptable.

🚨 Exemple historique — PrintNightmare (2021)

La faille CVE-2021-34527 dans le spouleur d'impression Windows permettait une élévation de privilèges et une exécution de code à distance. Microsoft a publié un patch Out-of-Band en urgence un mercredi, sans attendre le Patch Tuesday suivant.

Vulnérabilité 0-day exploitée activementFaille critique sans contournement viableRisque systémique pour l'infrastructure
10
Patch Tuesday vs Out-of-Band
▼
CritèrePatch TuesdayOut-of-Band
FréquenceMensuelle (2ème mardi)Imprévisible — urgence uniquement
DéclencheurCycle planifiéVulnérabilité critique ou 0-day actif
Préparation possible✅ Oui — anticipation possible❌ Non — réaction immédiate requise
Tests préalablesPossibles en environnement de recetteSouvent déployés sans délai
Impact entrepriseMaîtrisé via WSUSDéploiement d'urgence hors procédure
⚠️ En entreprise, une mise à jour OOB peut nécessiter de déclencher une procédure d'urgence : réunion de crise, validation accélérée, déploiement hors fenêtre de maintenance habituelle.

5. WSUS — Windows Server Update Services

11
🖥️ Qu'est-ce que WSUS ?
▼

WSUS (Windows Server Update Services) est un rôle Windows Server qui permet de centraliser, contrôler et déployer les mises à jour Microsoft sur l'ensemble du parc informatique de l'entreprise.

Sans WSUS, chaque machine contacte directement les serveurs Microsoft Update pour télécharger les mises à jour. Avec WSUS, elles les téléchargent depuis un serveur interne, ce qui permet :

💾 Économie de bande passante
Chaque patch téléchargé une seule fois sur le réseau Internet
🎛️ Contrôle total
Validation et approbation manuelle de chaque mise à jour
📅 Planification
Déploiement pendant les fenêtres de maintenance définies
📊 Reporting
Tableau de bord de conformité — qui est à jour, qui ne l'est pas
12
🔄 Flux de fonctionnement WSUS
▼
ÉtapeActeurAction
1Serveur WSUSSe synchronise avec Microsoft Update (planifié quotidiennement)
2AdministrateurConsulte les nouvelles mises à jour et les approuve ou les refuse
3Serveur WSUSTélécharge les mises à jour approuvées depuis Microsoft
4Postes clientsInterrogent le serveur WSUS (via GPO) et téléchargent les patchs approuvés
5Postes clientsInstallent les mises à jour selon la fenêtre de maintenance configurée
6Serveur WSUSCollecte les rapports de conformité — état de chaque machine
💡 La GPO qui redirige les clients vers le serveur WSUS se configure dans : Configuration ordinateur → Modèles d'administration → Composants Windows → Windows Update
13
👥 Groupes d'ordinateurs WSUS
▼

WSUS permet de créer des groupes d'ordinateurs pour déployer les mises à jour par vagues successives — une pratique essentielle pour limiter les risques.

1
Pilote (5–10 machines)
Machines tests — déploiement immédiat pour valider la stabilité
2
Production (50% du parc)
Si le pilote est stable après 48h, déploiement sur la moitié du parc
3
Reste du parc (100%)
Déploiement complet sur tous les postes restants
14
📋 GPO de configuration WSUS client
▼

La GPO de configuration WSUS côté client se trouve dans :

Configuration ordinateur → Modèles d'administration → Composants Windows → Windows Update → Gérer les mises à jour proposées par Windows Update
Paramètre GPODescription
Spécifier l'emplacement intranet du service de MàJ MicrosoftURL du serveur WSUS : http://srv-wsus:8530
Configurer les mises à jour automatiquesPlanifier le téléchargement et l'installation (ex : mercredi 3h du matin)
Ne pas redémarrer automatiquementÉvite le redémarrage forcé pendant les heures de travail
Activer la gestion côté clientPermet à WSUS de cibler les groupes d'ordinateurs
💡 Le port par défaut de WSUS est 8530 en HTTP et 8531 en HTTPS. La commande wuauclt /detectnow (ancienne) ou usoclient startscan (Windows 10+) force le client à contacter le serveur WSUS immédiatement.

6. Cycle de vie des mises à jour

PhaseDurée typiqueDescription
Publication MicrosoftPatch TuesdayMicrosoft publie les bulletins et les fichiers de mise à jour
Synchronisation WSUSAutomatique (24h max)Le serveur WSUS télécharge les métadonnées et les fichiers
Validation interne1 à 5 joursTest sur le groupe pilote — vérification de la stabilité
Approbation productionJ+7 typiquementApprobation WSUS pour les groupes de production
Déploiement completJ+14 maximumTous les postes à jour avant le Patch Tuesday suivant
⚠️ L'objectif en entreprise est d'avoir 100% des postes à jour dans le mois qui suit la publication — avant le Patch Tuesday suivant. Les machines non patchées restent vulnérables et exposent l'entreprise à des risques.

7. Résumé

ConceptDéfinition
Patch de sécuritéCorrection d'une vulnérabilité exploitable par un attaquant
Bug fixCorrection d'un dysfonctionnement logiciel non lié à la sécurité
Feature UpdateNouvelle version semestrielle de Windows avec de nouvelles fonctionnalités
Cumulative UpdateMise à jour mensuelle regroupant tous les correctifs depuis la dernière Feature Update
Patch Tuesday2ème mardi du mois — cycle de publication mensuel de Microsoft
Out-of-Band (OOB)Correctif d'urgence publié hors Patch Tuesday pour une faille critique active
WSUSRôle Windows Server de gestion centralisée des mises à jour en entreprise
Groupe piloteSous-ensemble de machines recevant les mises à jour en premier pour valider leur stabilité
✅ Règle d'or : Ne jamais approuver une mise à jour directement en production sans test pilote — et toujours avoir un plan de rollback en cas de problème.
01
Prérequis
▼

Deux serveurs Windows Server (2016/2019/2022), un DC principal existant, accès administrateur domaine.

Windows Server 2016+DC principal opérationnelAccès Admin DomaineMême domaine AD
💡 Le second serveur doit être joint au domaine avant d'être promu DC.
02
Joindre DC2 au domaine
▼

Sur le futur DC2, ouvrir Gestionnaire de serveur → Système → Modifier le nom d'ordinateur.

Renseigner le domaine et valider avec un compte admin domaine, puis redémarrer.

# Vérifier l'appartenance au domaine : Get-ADDomain
⚠️ Le serveur doit être joint au domaine AVANT l'installation du rôle AD DS.
03
Installer le rôle AD DS sur DC2
▼

Sur DC2, installer le rôle Active Directory Domain Services via PowerShell :

Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools

Attendre la fin de l'installation (quelques minutes). Vérifier le résultat :

Get-WindowsFeature AD-Domain-Services
💡 Le statut doit afficher Installed dans la colonne Install State.
04
Promouvoir DC2 en contrôleur de domaine
▼

Promouvoir DC2 comme contrôleur de domaine dans le domaine existant :

Install-ADDSDomainController ` -DomainName "c2rt.org" ` -InstallDns:$true ` -Credential (Get-Credential) ` -Force:$true

Le serveur va redémarrer automatiquement à la fin de la promotion.

⚠️ Remplacer c2rt.org par votre nom de domaine réel. Fournir les credentials d'un admin domaine.
05
Vérifier la réplication Active Directory
▼

Après le redémarrage, vérifier que la réplication AD fonctionne entre les deux DC :

# Sur DC1 ou DC2 : repadmin /showrepl

Vérifier qu'il n'y a aucune erreur. Forcer une synchronisation immédiate :

repadmin /syncall /AdeP

Vérifier le statut global de la réplication :

repadmin /replsummary
💡 Toutes les partitions (Domain, Schema, Configuration) doivent apparaître sans erreur.
06
Vérifier la réplication DFSR (SYSVOL)
▼

DFSR (Distributed File System Replication) réplique les dossiers SYSVOL et NETLOGON entre les DC. C'est lui qui propage les GPO et les scripts de connexion.

Vérifier l'état DFSR sur DC2 (PowerShell en admin) :

Get-DfsrState -ComputerName DC2

Voir le détail des membres du groupe de réplication SYSVOL :

Get-DfsrMembership -GroupName "Domain System Volume" -ComputerName *
💡 Le champ State doit être 4 = Normal sur les deux DC.
07
Diagnostiquer et corriger DFSR si bloqué
▼

Si DFSR est bloqué ou en état Non-authoritative, forcer une synchro depuis DC1 :

# Sur DC1 (source authoritative) : dfsrdiag SyncNow /partner:DC2 /RGName:"Domain System Volume" /RFName:"SYSVOL Share"

En cas de SYSVOL non partagé sur DC2, forcer la réinitialisation DFSR :

# Sur DC2, dans l'éditeur de registre : # HKLM\SYSTEM\CurrentControlSet\Services\DFSR\Parameters\SysVols\Migrating Sysvols # Modifier "Local Settings\\Migration State" → 3 (START) # Puis redémarrer le service DFSR : Restart-Service DFSR
⚠️ Cette opération ne doit être faite que si SYSVOL n'est pas partagé sur DC2 après promotion.
08
Vérifier les partages SYSVOL & NETLOGON
▼

Vérifier que SYSVOL et NETLOGON sont bien partagés sur DC2 :

net share

Les deux partages doivent apparaître dans la liste. Vérifier aussi via :

# Tester l'accès au SYSVOL depuis un poste du domaine : dir \\DC2\SYSVOL dir \\DC2\NETLOGON
💡 Si SYSVOL et NETLOGON apparaissent, la réplication DFSR est fonctionnelle.
09
Vérifier les enregistrements DNS
▼

Vérifier que DC2 est bien enregistré dans le DNS du domaine :

# Sur n'importe quel DC : nslookup DC2.c2rt.org nslookup c2rt.org

Vérifier les enregistrements SRV (essentiels pour l'authentification) :

nslookup -type=SRV _ldap._tcp.c2rt.org nslookup -type=SRV _kerberos._tcp.c2rt.org

Forcer l'enregistrement DNS si nécessaire :

ipconfig /registerdns net stop netlogon && net start netlogon
10
Validation finale
▼

Validation complète de la réplication et de la santé des DC :

# Test de santé global : dcdiag /test:replications /v dcdiag /test:sysvol dcdiag /test:netlogons

Simuler une modification et vérifier la propagation :

# Créer un utilisateur test sur DC1, vérifier qu'il apparaît sur DC2 : New-ADUser -Name "TestRepl" -SamAccountName "TestRepl" -Enabled $false # Sur DC2 : Get-ADUser -Identity "TestRepl"

Supprimer l'utilisateur test une fois la validation faite :

Remove-ADUser -Identity "TestRepl" -Confirm:$false
💡 Si Get-ADUser retourne l'utilisateur sur DC2 sans erreur, la réplication AD + DFSR est pleinement opérationnelle.
Installation
▼

• Rajouter un lecteur DVD à la VM backup.

• Parcourir l’ISO de Veeam.

• Aller dans “Ce PC” sur la VM Backup et lancer l’installation de Veeam.

• Installer Veeam Backup & Replication.

1 — Sauvegarde d'un Serveur
▼

Aller dans Inventory → Physical and Cloud Infrastructure → clic droit → Add protection group…

Choisir Individual Computers → faire la nomenclature voulue (ex. SRV-DC01) → renseigner l’adresse du serveur + LOGs + option d’horaires → Apply → Job Now.

⚠️ Un Protection Group est un groupe d’ordinateurs que Veeam découvre et prépare pour être sauvegardés via un agent.

Dans le nouveau dossier créé sous Physical and Cloud Infrastructure → clic droit sur le serveur → Add to backup job → New job.

Configurer : Server → Nomenclature de sauvegarde → sélectionner le ou les serveurs → Entire computer → cliquer sur Run the Job pour lancer une sauvegarde directe.

💡 Pour voir les jobs en cours : HOME en bas.
2 — Sauvegarder seulement les fichiers d'un serveur de fichiers
▼

Après avoir ajouté le serveur dans un groupe physique, créer un JOB différent des jobs qui sauvegardent les serveurs complets.

Clic droit sur le serveur → Add to backup job → New Job.

Dans l’onglet BACKUP MODE, sélectionner “File Level Backup”.

Cocher “The following file system objects” et pointer vers le ou les dossiers à sauvegarder.

Cliquer sur Run the Job à la dernière étape pour lancer la sauvegarde immédiatement.

3 — Sauvegarde d'une VM Imbriquée
▼

• Lancer Veeam.

• Choisir le serveur de backup (localhost si c’est celui en question) → suivant jusqu’au lancement.

⚠️ Si message d’erreur → Services et démarrer tous les services Veeam à la main.

• Aller dans Backup Infrastructure → Backup Repositories → Add backup repositories → choisir le dossier de backup (soit sur le serveur en question, soit sur un Serveur ou NAS à distance).

• On peut supprimer le dossier par défaut à partir de là.

• Aller dans Inventory → Virtual Infrastructure → Add Server → Hyper-V.

• Sélectionner Microsoft Hyper-V Server (standalone).

• Renseigner l’IP du serveur à sauvegarder.

• Saisir les credentials du serveur Hyper-V (NomServeur\administrateur + mot de passe).

⚠️ Pour test en LABO il faut désactiver le pare-feu sinon Veeam ne peut pas joindre le serveur — sinon, créer des règles de pare-feu entrant sur les ports requis.

• Next jusqu’à Apply.

• Le serveur apparaît dans INVENTORY.

• Clic droit dessus → Add to backup Job → New Job (ou sélectionner un job déjà créé si on veut le joindre à cette tâche).

• Paramétrer les horaires → à la fin cliquer sur Run the Job pour lancer la première sauvegarde directement.

💡 Un Job est une tâche programmée qui indique à Veeam quoi sauvegarder, où sauvegarder et quand le faire.
01
Prérequis
▼

Machine A (source) — la machine avec les données à sauvegarder.

Disque de sauvegarde — capacité suffisante pour l’image. Initialiser et formater dans Windows avant de commencer.

Machine B (cible) — la machine qui recevra le clone.

Disque cible — doit être supérieur ou égal au disque sauvegardé de la machine A.

💡 L’ISO Clonezilla se place dans le lecteur DVD ou sur une clé USB. Les deux méthodes fonctionnent.
02
Démarrage de Clonezilla
▼

Insérer l’ISO Clonezilla dans le lecteur DVD ou sur une clé USB de la machine.

Clic droit sur la VM → onglet Power → “Power on to firmware”.

Dans le Boot Menu, sélectionner CD-Rom / USB.

Au démarrage : sélectionner Français → conserver les paramètres par défaut → Start Clonezilla.

03
Sauvegarde — Machine A (source)
▼

Sélectionner device-image (pour créer une image disque).

Sélectionner local_dev.

Appuyer sur Entrée pour détecter les périphériques.

Sélectionner le disque de sauvegarde (disque destination).

Cocher “Passer la vérification du disque source”.

Sélectionner l’emplacement de l’image → faire directement DONE → Entrée (Clonezilla localisera automatiquement).

Choisir le mode Beginner (mode débutant).

Sélectionner savedisk (sauvegarde de tout le disque).

Nommer l’image — laisser le nom d’origine qui contient la date pour mieux s’y retrouver.

Choisir le disque à sauvegarder → sélectionner en appuyant sur Espace (une étoile ★ doit apparaître).

Mode de compression : 9 gzip.

Sélectionner “Ne pas vérifier à la fin de la création”.

Sélectionner “Vérifier l’image sauvegardée”.

Sélectionner “Ne pas chiffrer l’image”.

Sélectionner “Yes, copy log file” si vous souhaitez conserver les logs.

Choisir l’action à exécuter après la sauvegarde (ex. redémarrage) puis lancer la sauvegarde.

Valider toutes les confirmations. Suivre la progression.

🚨 Si une écriture en rouge apparaît, c’est une erreur — cause probable : disque de sauvegarde insuffisant ou mauvaise sélection.
04
Clonage — Machine B (cible)
▼

Sur la machine B (cible), ajouter un disque virtuel existant en entrant le chemin du disque de sauvegarde de la machine A.

Insérer l’ISO Clonezilla (DVD ou USB) → démarrer sur Clonezilla comme à l’étape 2.

Sélectionner device-image.

Sélectionner local_dev.

Appuyer sur Entrée pour détecter les périphériques.

Sélectionner le disque de sauvegarde de la machine A.

Sélectionner l’image à restaurer → DONE.

Choisir le mode Beginner.

Sélectionner restoredisk (restaure tout le disque).

Sélectionner le disque cible de la machine B.

Suivre les mêmes étapes que pour la sauvegarde (confirmations, action de fin…).

🚨 Si écriture rouge → place insuffisante sur le disque cible. Vérifier que le disque B est bien supérieur ou égal au disque source.
💡 Une fois terminé, redémarrer sur la machine B — le clone de la machine A est opérationnel.
01
Installation du rôle WDS
▼

Disposition : Serveur Active Directory + DHCP • Serveur WDS (peut être le même ou séparé).

Dans le Gestionnaire de serveur, ajouter le rôle Services de déploiement Windows (WDS).

Cocher l’option ci-dessous si le serveur WDS est membre du domaine.

02
Configuration initiale de WDS
▼

Définir l’emplacement du dossier WDS — il est fortement conseillé de le placer sur un disque différent du système.

Cocher la case “Répondre à tous les ordinateurs” pour que WDS serve toutes les machines du réseau.

03
Création de l'image de démarrage
▼

Dans la console WDS, clic droit sur “Images de démarrage” → “Ajouter une image de démarrage”.

Sélectionner le fichier boot.wim dans le dossier Sources du DVD d’installation Windows.

Donner un nom reconnaissable à cette image de démarrage et poursuivre jusqu’à l’import.

04
Création de l'image de capture
▼

Clic droit sur l’image de démarrage importée → “Créer une image de capture”.

Donner un nom reconnaissable et cliquer sur “Parcourir” pour définir l’emplacement.

🚨 L’image de capture doit être stockée au même endroit que l’image de démarrage.

Naviguer vers RemoteInstall\Boot\x64\Images. Si le fichier boot est visible, c’est le bon dossier. Nommer le fichier avec l’extension .wim → “Ouvrir”.

Cliquer sur “Suivant” pour lancer la création. L’opération prend plusieurs minutes.

Une fois terminé, faire un clic droit sur le nom du serveur → Actualiser pour voir l’image de capture.

Désactiver l’image “Setup” (clic droit → Désactiver) pour ne conserver active que l’image de capture.

05
Création du Master (Sysprep)
▼

Installer une VM Windows vierge. Vérifier qu’elle obtient une IP via DHCP. Effectuer les mises à jour si souhaité.

Ouvrir un invite de commande (cmd) et lancer Sysprep en mode Audit :

> C:\Windows\System32\Sysprep\Sysprep.exe /audit /reboot
💡 Respecter l’espace avant chaque / mais pas après.

Au reboot, la session Administrateur local s’ouvre automatiquement. Installer toutes les applications souhaitées.

Une fois les applications installées, généraliser le master :

> C:\Windows\System32\Sysprep\Sysprep.exe /generalize /oobe /shutdown
💡 /generalize : supprime les données propres (SID…) • /oobe : relance la configuration initiale au prochain démarrage • /shutdown : éteint la machine.
06
Récupération de l'image sur WDS (boot réseau)
▼

Démarrer la VM master. Appuyer rapidement sur F12 pour booter sur le réseau (placer le switch réseau avant le disque dans l’ordre de boot).

La machine démarre automatiquement sur l’image de capture (la seule active).

Choisir le volume à capturer (ex. lecteur C) puis donner un nom reconnaissable à l’image.

Cocher “Charger l’image sur un serveur des services de déploiements”, saisir le nom du serveur WDS → “Connexion”.

Fenêtre d’authentification : naviguer avec les flèches du clavier. Saisir NomServeur\administrateur + mot de passe. Descendre sur “Mémoriser les identifiants” → Espace pour cocher → OK → Entrée.

Choisir un groupe d’images existant dans WDS pour stocker l’image d’installation.

Cliquer sur “Parcourir”. Utiliser le chemin de partage \\NomServeur\reminst et nommer le fichier (ex. win10.wim).

Cliquer sur “Suivant” pour lancer la capture. L’image .wim est créée et envoyée sur le serveur WDS.

07
Test de déploiement
▼
🚨 L’image de démarrage “Setup” a été désactivée précédemment. Il faut la réactiver avant le déploiement.

Dans la console WDS, clic droit sur l’image “Setup” → “Activer”. Désactiver l’image “Capture” pour ne pas avoir à choisir.

Démarrer une nouvelle VM vierge (sans OS). Elle boote automatiquement sur le réseau et trouve l’image boot.wim.

Le setup WDS s’ouvre. Cliquer sur “Suivant”.

S’authentifier au serveur (ou domaine) sous le format domaine_ou_serveur\utilisateur.

La liste des images d’installation disponibles s’affiche. Sélectionner l’image personnalisée capturée à l’étape précédente.

01
Modifier HKEY_USERS\.DEFAULT
▼

Ouvrir l’Éditeur du Registre : Win + R → taper regedit → Entrée.

Naviguer vers la clé :

HKEY_USERS\.DEFAULT\Control Panel\Keyboard

Double-cliquer sur InitialKeyboardIndicators.

Saisir 2 dans le champ Données de la valeur → OK.

02
Modifier HKEY_CURRENT_USER
▼

Naviguer vers la seconde clé :

HKEY_CURRENT_USER\Control Panel\Keyboard

Double-cliquer sur InitialKeyboardIndicators, saisir 2 → OK. Fermer le Registre.

💡 Redémarrer — le pavé numérique sera actif automatiquement à chaque démarrage.
03
Alternative — Script REG prêt à l'emploi
▼

Télécharger et exécuter le script .reg ci-dessous — il applique les deux modifications automatiquement.

🚨 Exécuter en tant qu’administrateur, accepter l’avertissement, puis redémarrer.
1 — Restauration d'un Serveur Bare Metal
▼
01
Récupérer l'ISO sur le serveur de backup
▼

Récupérer l’ISO de la backup sur le serveur de backup.

02
Partager le dossier de la VM
▼

Avant de continuer, partager le dossier où se trouve la VM. Pas besoin de modifier les permissions.

03
Copier l'ISO sur l'hôte et préparer la VM
▼

L’ISO se trouve dans les Documents du serveur de backup. Copier-coller l’ISO sur l’hôte.

Ajouter un lecteur DVD sur la machine à restaurer et y monter l’ISO.

⚠️ Ne pas oublier de supprimer l’ancien disque dur et d’en créer un vierge.
04
Configurer l'ordre de démarrage
▼

Mettre le lecteur DVD en premier pour le démarrage — sur l’emplacement et sur le microprogramme.

05
Démarrer la machine sur l'ISO Veeam
▼

Démarrer la machine et appuyer vite pour booter sur le lecteur DVD.

Quand la machine démarre, restaurer avec Veeam Recovery Media.

06
Sélectionner Veeam Agent
▼

Sélectionner Veeam Agent pour lancer la restauration.

07
Choisir Network Storage
▼

Sélectionner Network Storage.

08
Choisir Shared Folder
▼

Choisir Shared Folder pour le dossier partagé.

09
Renseigner les informations du serveur de backup
▼

Renseigner les informations du serveur de backup pour joindre le dossier partagé.

10
Sélectionner la sauvegarde et lancer la restauration
▼

Sélectionner la sauvegarde à restaurer.

Cliquer sur Suivant jusqu’au lancement — la machine récupère la backup en intégralité.

💡 Une fois terminé, retirer le lecteur DVD et redémarrer.
2 — Restauration d'une VM Imbriqué
▼

Pour tester la sauvegarde en LABO, on va “casser” la VM imbriquée pour qu’elle ne démarre plus, par exemple avec :

bcdedit /delete {default}
🚨 A taper dans la VM imbriquée et pas dans la VM de base !

• HOME en haut → Restore → Microsoft Hyper-V.

• Restore from backup → Entire VM restore → Entire VM Restore → Add from infrastructure → sélectionner le serveur et OK.

• Sélectionner la VM à restaurer → suivant jusqu’à la fin.

3 — Restauration d'un Fichier supprimé par erreur
▼

• Aller dans Home → Backups → Disk → clic droit sur le backup en question → Restore Guest Files.

• Choisir la date de la sauvegarde → Browse.

• Dans la fenêtre qui s’ouvre, parcourir pour trouver le fichier perdu → clic droit → Restore → Overwrite.

4 — Restauration d'un objet Active Directory
▼
🚨 Le serveur Active Directory doit utiliser le même système d’exploitation que celui du serveur de sauvegarde utilisé lors de la sauvegarde. Si le système d’exploitation est différent, la restauration d’un objet Active Directory ne sera pas possible.

Méthode 1 — Restauration directe depuis Veeam Explorer

1. Aller dans Home → Backups → Disk → clic droit sur le backup du DC → Restore application items → Microsoft Active Directory objects…

2. Veeam Explorer for Active Directory s’ouvre. Naviguer dans l’arborescence AD pour trouver l’objet à restaurer. Clic droit → Restore objects to NomDeLaMachine.domaine.

⚠️ Si une erreur survient lors de la restauration d’une GPO supprimée, c’est généralement un problème de permissions insuffisantes sur le SYSVOL. Ouvrir l’explorateur de fichiers, accéder au chemin UNC, entrer les identifiants admin en cochant “Mémoriser les identifiants”, puis réessayer.

Méthode 2 — Restore objects to... (avec Restore Wizard)

1. Depuis Veeam Explorer, clic droit sur l’objet → Restore objects to…

2. Le Restore Wizard s’ouvre. Renseigner le serveur cible → sélectionner “Use the following account” → entrer les identifiants du domaine (tssr.lab\Administrateur) → Next.

3. Vérifier les options de restauration → cliquer sur Restore.

💡 Cette méthode utilise des identifiants de domaine explicites — aucun problème de permissions à prévoir.
📋 Architecture cible : Machine Ubuntu Server (IP fixe 192.168.0.100) + Windows Server DHCP (192.168.0.250) sur le même réseau /24. FOG gère le PXE, Windows gère le DHCP.
Prérequis — Ce qu’il faut vérifier avant de commencer
▼
⚠️ Ne pas sauter cette étape. Un réseau mal configuré ou une IP qui change peut casser entièrement l’installation FOG.

Prérequis logiciels / système

  • Ubuntu Server 20.04 LTS ou 22.04 LTS, installation minimale.
  • Accès sudo ou compte root.
  • Connexion Internet fonctionnelle pendant l’installation.
  • Minimum 20 Go d’espace disque libre et 2 Go de RAM.

Prérequis réseau — IP fixe obligatoire

Éditer le fichier Netplan :

sudo nano /etc/netplan/01-netcfg.yaml

Exemple de configuration IP fixe :

network: version: 2 ethernets: eth1: dhcp4: no addresses: - 192.168.0.100/24 routes: - to: default via: 192.168.0.250 nameservers: addresses: [192.168.0.250]
⚠️ Remplacer eth1 par le nom réel de l’interface (vérifier avec ip a). Le YAML est sensible à l’indentation — espaces uniquement.

Appliquer et vérifier :

sudo netplan apply ip a ping -c 3 192.168.0.250

Résumé des paramètres réseau

ParamètreValeur exempleRôle
IP du serveur FOG192.168.0.100IP fixe Ubuntu
Masque255.255.255.0/24
Passerelle / DNS192.168.0.250Windows Server (DHCP)
Interface réseaueth1À adapter selon ip a
01
Préparation de la machine Ubuntu (vierge)
▼
sudo apt update && sudo apt upgrade -y
sudo apt install git -y
02
Récupération de FOG (Git)
▼
cd ~ git clone https://github.com/FOGProject/fogproject.git cd fogproject/bin
03
Lancement de l’installation
▼
sudo ./installfog.sh

Répondre aux questions comme ceci :

#QuestionRéponseNote
1What version of Linux…2Ubuntu détecté automatiquement
2Installation TypeNNormal
3Interfaceeth1Interface avec l’IP 192.168.0.100
4Router Address192.168.0.250Votre Windows Server
5DNS Address192.168.0.250
6Using FOG DHCPNWindows gère le DHCP
7InternationalizationN
8HTTPS SupportNPlus simple pour commencer
📌 Vérifier que “DHCP Service” est sur No dans le récapitulatif, puis taper Y pour lancer l’installation.
04
Phase de la base de données (le moment Web)
▼
🚫 Le script va s’arrêter avec un message blanc sur fond noir. Ne plus toucher au terminal.

1. Aller sur le Windows Server et ouvrir un navigateur :

http://192.168.0.100/fog/management

2. Cliquer sur le bouton bleu “Install/Update Now”.

3. Attendre le formulaire de connexion (Login).

4. Revenir sur l’Ubuntu et appuyer sur Entrée.

05
Configuration du DHCP sur Windows Server
▼
OptionValeurDescription
066192.168.0.100Boot Server Host Name — IP du serveur FOG
067 (BIOS)undionly.kpxePC classiques — mode BIOS legacy
067 (UEFI)ipxe.efiPC modernes — mode UEFI
💡 Parc mixte BIOS/UEFI → configurer des classes de périphériques pour distribuer automatiquement le bon fichier.
06
Test final — Connexion à l’interface Web
▼
ChampValeur
URLhttp://192.168.0.100/fog/management
Utilisateurfog
Mot de passepassword
🔒 Changer le mot de passe par défaut immédiatement après la première connexion.

📋 Procédure d’enregistrement d’un hôte (Full Registration)

01
Préparation du client (Boot Réseau)
▼

Le PC doit chercher le serveur FOG avant de démarrer son propre système.

1. Démarrer ou redémarrer la machine virtuelle.

2. Appuyer sur Boot Menu dès le logo — F12, parfois Esc ou F10.

3. Sélectionner Network Boot ou EFI Network.

4. Attendre l’affichage de l’IP — le menu FOG (menu bleu) apparaît.

02
Inventaire sur le client
▼

1. Descendre sur Perform Full Host Registration and Inventory et valider avec Entrée.

2. Le système charge le “FOS Linux”. Patienter jusqu’à la première question.

3. Répondre aux questions :

ChampQue faire
HostnameNom unique (ex : CLI-DEBIAN-01) puis Entrée
Image ID / Primary User / Department / LocationEntrée à chaque fois (laisser vide)
Associate with groupsn puis Entrée
Assign to default product keyn puis Entrée

4. À “Are you sure you want to register this host?” — Entrée.

5. Le PC s’éteint ou redémarre. C’est fini pour la partie client.

03
Validation sur le serveur (interface Web)
▼

1. Ouvrir l’interface Web FOG : http://192.168.0.100/fog/management

2. Onglet Hosts → List All Hosts.

3. Le PC CLI-DEBIAN-01 doit apparaître dans le tableau.

✅ Hôte enregistré — vous pouvez maintenant lui assigner une image et déployer.

📸 Procédure de capture d’une image

📌 Prérequis : Le client doit être enregistré dans FOG avant de pouvoir lancer une capture.
01
Créer le conteneur d’image (FOG Web GUI)
▼

Dans l’onglet Images, définir les caractéristiques du conteneur qui stockera les données.

  • Image Name : Nom logique (ex : Img-Debian-Base).
  • Image Type : Single Disk - Resizable — adapte l’image à différentes tailles de disques.
  • Operating System : Linux.
02
Lier l’image à la machine cliente
▼

Dans la fiche du client enregistré (ex : Debian-Client-T), sélectionner l’image dans le champ Host Image.

💡 Cette liaison indique au serveur : “Quand ce PC fera une capture, envoie les données dans ce dossier précis.”
03
Lancer la tâche de capture
▼

Dans l’onglet Basic Tasks, cliquer sur Capture. Le serveur passe en mode écoute.

Fenêtre de confirmation :

  • Schedule instant : Tâche disponible immédiatement.
  • Wake on LAN : Réveille le PC à distance si compatible.
  • Cliquer sur Task pour valider.
04
Exécution sur le client (Partclone)
▼

Booter le PC client en PXE. FOG démarre automatiquement la capture.

  • Partclone copie uniquement les blocs utilisés — plus rapide qu’une copie bit-à-bit.
  • Partition FAT32 (boot EFI) visible à 100 %.
  • Une fois terminé, le PC s’éteint automatiquement.
✔ L’image est disponible dans FOG pour être déployée sur n’importe quelle machine enregistrée.

🚀 Procédure de déploiement d’une image

01
Préparation de la machine cible
▼

Utiliser une nouvelle VM vide sur le même LAN Segment.

  • Booter sur le réseau (F12).
  • Effectuer un Full Host Registration and Inventory — nommer le PC (ex : Debian-Client-02).
  • Une fois l’inventaire fini, le PC s’éteint.
02
Configuration du déploiement (interface Web FOG)
▼

Aller dans Hosts → List All Hosts, cliquer sur Debian-Client-02.

  • Dans Host Image, sélectionner Img-Debian-Base puis cliquer Update.
  • Onglet Basic Tasks → cliquer Deploy → cocher Schedule with shutdown → Task.
03
Exécution du transfert sur le PC cible
▼

Rallumer Debian-Client-02 et forcer le boot PXE (F12).

  • Le client détecte la tâche de déploiement en attente.
  • Partclone affiche la progression du téléchargement depuis le serveur vers le disque local.
  • À 100 %, le PC redémarre — clone exact du Debian original installé en quelques minutes.
✔ La même image peut être déployée simultanément sur plusieurs machines enregistrées (Multicast).

📦 Déploiement d’une application (Snapins)

⚠️ Prérequis : Le FOG Client doit être installé sur la machine cliente. Sans lui, les Snapins ne fonctionneront pas. Télécharger le FOG Client tout en bas de la page d’accueil FOG.
01
Création du snapin
▼

Dans l’interface Web FOG, aller dans l’onglet Snapin Management (icône disquettes en haut) puis cliquer Create New Snapin.

  • Snapin Name : Nom logique (ex : Putty).
  • Snapin Type : Normal Snapin.
  • Snapin Template : MSI pour un installeur .msi.
  • Snapin Run With : msiexec.exe — Snapin Run With Argument : /i.
  • Snapin File : Sélectionner le fichier installeur (ex : putty-64bit-0.83-installer.msi).
  • Snapin Arguments : /quiet /qn /norestart pour une installation silencieuse.
02
Associer le snapin à la machine cible
▼

Dans la fiche de la machine cliente (Hosts → List All Hosts → cliquer sur le PC), aller dans l’onglet Snapins.

  • Cocher “Check here to see what snapins can be added” pour afficher la liste.
  • Sélectionner le snapin Putty dans la section Add Snapins.
  • Cliquer sur Add pour l’associer à cet hôte.
03
Lancer la tâche d’installation (Single Snapin)
▼

Dans la même fiche client, aller dans l’onglet Basic Tasks. En bas de la liste, cliquer sur Single Snapin.

04
Confirmation de la tâche
▼

Sélectionner le snapin à installer, choisir Schedule instant et cliquer Task.

✔ Dès que le FOG Client détecte la demande, l’application s’installe automatiquement sans intervention de l’utilisateur.

Introduction — Linux vs Windows

Linux est un système d'exploitation open source basé sur Unix. Contrairement à Windows, tout se gère principalement en ligne de commande (terminal). C'est particulièrement vrai pour les serveurs Debian/Ubuntu.

Quelques différences clés à retenir quand on vient de Windows :

WindowsLinux (Debian/Ubuntu)
C:\Users\nom/home/nom
Explorateur de fichiersTerminal + commandes
Panneau de configurationFichiers de config dans /etc
Gestionnaire de tâchestop / htop
Notepadnano / vim
Administrateurroot / sudo
💡 Sous Linux, les majuscules comptent : Fichier.txt et fichier.txt sont deux fichiers différents.

Arborescence — Structure des répertoires

Linux n'a pas de lettres de lecteur (C:, D:…). Tout part d'une seule racine : /

RépertoireContenu
/Racine du système (équivalent C:\)
/home/nomDossier personnel de l'utilisateur
/rootDossier personnel du superutilisateur root
/etcFichiers de configuration système
/var/logJournaux système (logs)
/tmpFichiers temporaires
/bin, /usr/binCommandes et programmes installés
/srvDonnées des services (web, FTP…)

Navigation — Se déplacer dans les répertoires

01
pwd — Où suis-je ?
▼

Affiche le répertoire courant (Print Working Directory).

pwd # Résultat : /home/utilisateur
💡 Équivalent de regarder la barre d'adresse dans l'Explorateur Windows.
02
ls — Lister le contenu
▼

Affiche le contenu d'un répertoire.

ls # Liste simple ls -l # Liste détaillée (permissions, taille, date) ls -la # Idem + fichiers cachés (commençant par .) ls -lh # Tailles lisibles (Ko, Mo…) ls /etc # Lister un autre répertoire
💡 ls -la est la commande la plus complète : elle montre tout, y compris les fichiers cachés.
03
cd — Changer de répertoire
▼

Permet de changer de répertoire (Change Directory).

cd /etc # Aller dans /etc (chemin absolu) cd Documents # Aller dans Documents (chemin relatif) cd .. # Remonter d'un niveau (dossier parent) cd ~ # Aller dans son dossier personnel (/home/nom) cd - # Retourner au répertoire précédent
⚠️ Chemin absolu : commence par / — toujours valide depuis n'importe où.
Chemin relatif : depuis le répertoire courant.

Fichiers & Dossiers — Créer, copier, déplacer, supprimer

04
mkdir / touch — Créer
▼

Créer des répertoires et des fichiers vides.

mkdir mon_dossier # Créer un dossier mkdir -p a/b/c # Créer toute une arborescence touch fichier.txt # Créer un fichier vide touch f1.txt f2.txt # Créer plusieurs fichiers
05
cp — Copier
▼

Copier fichiers et dossiers.

cp fichier.txt copie.txt # Copier un fichier cp fichier.txt /home/user/ # Copier vers un autre répertoire cp -r dossier/ /tmp/sauvegarde/ # Copier un dossier (-r = récursif)
06
mv — Déplacer / Renommer
▼

Déplacer ou renommer fichiers et dossiers.

mv ancien.txt nouveau.txt # Renommer mv fichier.txt /tmp/ # Déplacer mv dossier/ /var/backup/dossier/ # Déplacer un dossier
💡 mv sert à la fois à déplacer ET renommer — c'est la même commande.
07
rm — Supprimer
▼

Supprimer fichiers et dossiers.

rm fichier.txt # Supprimer un fichier rm -r dossier/ # Supprimer un dossier (récursif) rm -rf dossier/ # Forcer la suppression sans confirmation
🚨 rm -rf supprime définitivement sans corbeille. Pas de Ctrl+Z possible.
08
cat / less / grep — Lire et chercher
▼

Afficher et rechercher dans les fichiers.

cat fichier.txt # Afficher tout le contenu less fichier.txt # Affichage paginé (q pour quitter) head -n 10 fichier.txt # Afficher les 10 premières lignes tail -n 10 fichier.txt # Afficher les 10 dernières lignes tail -f /var/log/syslog # Suivre un log en temps réel grep "mot" fichier.txt # Rechercher un mot dans un fichier grep -r "mot" /etc/ # Rechercher récursivement dans un dossier
💡 tail -f est très utile pour surveiller les logs en direct (serveur web, SSH…).

Permissions & Utilisateurs

09
Lire les permissions
▼

Sous Linux, chaque fichier a des permissions pour 3 entités :

EntitéSignification
u (user)Le propriétaire du fichier
g (group)Le groupe propriétaire
o (other)Tous les autres utilisateurs

Chaque entité peut avoir 3 droits : r (lire), w (écrire), x (exécuter).

ls -l fichier.txt # -rwxr-xr-- 1 alice devs 1024 jan 10 fichier.txt # ^^^ = propriétaire : rwx (lecture+écriture+exécution) # ^^^ = groupe : r-x (lecture+exécution) # ^^^ = autres : r-- (lecture seulement)
10
chmod — Modifier les permissions
▼

Modifier les permissions avec chmod.

chmod 755 script.sh # rwxr-xr-x (notation octale) chmod +x script.sh # Ajouter le droit d'exécution chmod -w fichier.txt # Retirer le droit d'écriture chmod u+x,g-w fichier.txt # Ajouter x au proprio, retirer w au groupe chmod -R 755 dossier/ # Appliquer récursivement
Valeur octalePermissionsUtilisation typique
777rwxrwxrwxTout le monde peut tout faire (dangereux)
755rwxr-xr-xScripts, dossiers publics
644rw-r--r--Fichiers de config standards
600rw-------Clés SSH, fichiers privés
11
chown — Changer le propriétaire
▼

Changer le propriétaire ou le groupe d'un fichier.

chown alice fichier.txt # Changer le propriétaire chown alice:devs fichier.txt # Changer propriétaire ET groupe chown -R www-data /var/www/ # Récursivement (serveur web)
12
sudo / su — Élévation de privilèges
▼

sudo permet d'exécuter une commande en tant que root (administrateur) sans changer d'utilisateur.

sudo apt update # Exécuter en tant que root sudo -i # Ouvrir un shell root su - alice # Changer d'utilisateur whoami # Afficher l'utilisateur courant id # Afficher uid, gid et groupes passwd # Changer son mot de passe sudo passwd alice # Changer le MDP d'un autre user
💡 Préférer sudo commande à sudo -i pour limiter les risques d'erreur en root.
13
Gérer les utilisateurs et groupes
▼

Gérer les utilisateurs et les groupes : les créer, les modifier, les supprimer et gérer leurs appartenances.

📋 Trois étapes pour partager un dossier

  1. Créer un groupe pour les utilisateurs qui partageront le dossier
  2. Créer/ajouter les utilisateurs à ce groupe
  3. Assigner le groupe au dossier avec les bonnes permissions

1️⃣ Créer un groupe

sudo groupadd partage # Créer un groupe appelé "partage" sudo groupadd développeurs # Exemple : groupe pour des devs cat /etc/group # Lister tous les groupes existants getent group partage # Voir les infos du groupe "partage"

2️⃣ Créer un utilisateur

sudo adduser alice # Créer alice (interactif - demande le mot de passe) sudo useradd -m -s /bin/bash bob # Variante non-interactive sudo useradd -m -G partage chloé # Créer chloé ET l'ajouter au groupe "partage" cat /etc/passwd # Lister tous les utilisateurs whoami # Afficher l'utilisateur courant id # Afficher uid, gid et groupes de l'utilisateur courant
💡 adduser est interactif (recommandé pour les débutants). useradd est plus basique mais plus rapide.

3️⃣ Ajouter un utilisateur à un groupe

sudo usermod -aG partage alice # Ajouter alice au groupe "partage" sudo usermod -aG sudo bob # Ajouter bob au groupe "sudo" (droits admin) sudo usermod -aG groupe1,groupe2 eve # Ajouter eve à plusieurs groupes id alice # Voir tous les groupes d'alice groups alice # Liste simplifiée des groupes d'alice
⚠️ L'option -a (append) est importante : elle AJOUTE au groupe, sans retirer des autres groupes.

Cas d'usage complet : créer un partage collaboratif

# 1. Créer le groupe sudo groupadd partage # 2. Créer les utilisateurs et les ajouter au groupe sudo adduser alice sudo usermod -aG partage alice sudo adduser bob sudo usermod -aG partage bob # 3. Créer le dossier et l'assigner au groupe sudo mkdir /home/partage/documents sudo chown -R :partage /home/partage/documents sudo chmod -R 770 /home/partage/documents # 4. Vérifier ls -ld /home/partage/documents id alice

Opérations avancées

sudo deluser alice # Supprimer un utilisateur (garder les fichiers) sudo deluser --remove-home bob # Supprimer bob + son dossier /home/bob sudo groupdel partage # Supprimer un groupe sudo passwd alice # Changer le mot de passe d'alice sudo usermod -s /bin/nologin eve # Bloquer eve (elle ne peut plus se connecter)
💡 Pour un partage de fichiers sur le réseau (Samba), préférez une structure comme :
  • Créer un groupe spécifique : sudo groupadd partage_samba
  • Ajouter les utilisateurs à ce groupe
  • Assigner le dossier au groupe avec chown :partage_samba
  • Permissions : chmod 770 sur le dossier

Gestion des paquets — apt

14
update / upgrade — Mettre à jour
▼

apt est le gestionnaire de paquets de Debian/Ubuntu. Il permet d'installer, mettre à jour et supprimer des logiciels.

sudo apt update # Mettre à jour la liste des paquets sudo apt upgrade # Installer les mises à jour disponibles sudo apt full-upgrade # Mise à jour complète (peut supprimer des paquets)
💡 Toujours faire apt update avant apt install pour avoir les dernières versions.
15
install / remove — Installer et supprimer
▼

Installer et supprimer des paquets.

sudo apt install nom-paquet # Installer un paquet sudo apt install vim curl wget # Installer plusieurs paquets sudo apt remove nom-paquet # Désinstaller (garde la config) sudo apt purge nom-paquet # Désinstaller + supprimer la config sudo apt autoremove # Nettoyer les paquets inutiles
16
search / show — Chercher un paquet
▼

Rechercher un paquet et obtenir des informations.

apt search nginx # Rechercher un paquet apt show nginx # Informations détaillées dpkg -l # Lister tous les paquets installés dpkg -l | grep nginx # Vérifier si nginx est installé

Réseau sous Linux

17
ip a — Configuration des interfaces
▼

Afficher la configuration réseau des interfaces.

ip a # Afficher toutes les interfaces (équiv. ipconfig /all) ip a show eth0 # Afficher une interface spécifique ip link # Afficher l'état des interfaces hostname -I # Afficher les IPs de la machine cat /etc/hostname # Afficher le nom d'hôte
💡 ip a est l'équivalent Linux de ipconfig /all sous Windows.
18
ping / traceroute / dig — Diagnostics
▼

Tester la connectivité et diagnostiquer le réseau.

ping 8.8.8.8 # Tester la connexion (Ctrl+C pour arrêter) ping -c 4 google.com # Envoyer exactement 4 paquets traceroute google.com # Tracer le chemin réseau nslookup google.com # Résolution DNS dig google.com # Résolution DNS détaillée curl -I https://google.com # Tester une URL HTTP
19
ip route / ss — Routes et connexions
▼

Afficher et gérer les routes et connexions actives.

ip route # Afficher la table de routage ip route show # Idem ss -tuln # Ports en écoute (équiv. netstat) ss -tunp # Ports + processus associés netstat -tuln # Ancienne commande (si installée)
20
Netplan — Configuration IP statique
▼

Configuration réseau sur Debian/Ubuntu Server via Netplan.

cat /etc/netplan/*.yaml # Afficher la config réseau sudo nano /etc/netplan/01-netcfg.yaml # Éditer la config
# Exemple de fichier netplan (IP statique) : network: version: 2 ethernets: eth0: addresses: - 192.168.1.10/24 gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]
sudo netplan apply # Appliquer les changements sudo netplan try # Tester (annulation auto si erreur)
🚨 Toujours faire netplan try avant netplan apply sur un serveur distant — en cas d'erreur, la connexion SSH serait coupée.

Éditeurs de texte — nano & vim

21
nano — Éditeur simple
▼

nano est l'éditeur le plus simple — idéal pour débuter. Les raccourcis sont affichés en bas de l'écran.

nano fichier.txt # Ouvrir ou créer un fichier sudo nano /etc/hostname # Éditer un fichier système
RaccourciAction
Ctrl + OEnregistrer le fichier
EntréeConfirmer le nom du fichier
Ctrl + XQuitter nano
Ctrl + KCouper une ligne
Ctrl + UColler
Ctrl + WRechercher
Ctrl + GAide
💡 Pour les débutants : nano est recommandé. Il suffit de taper, puis Ctrl+O → Ctrl+X pour sauvegarder et quitter.
22
vim — Éditeur avancé
▼

vim est plus puissant mais a une courbe d'apprentissage. Il fonctionne avec des modes.

vim fichier.txt # Ouvrir vim sudo vim /etc/ssh/sshd_config # Éditer un fichier système
Mode / CommandeAction
iPasser en mode INSERTION (écriture)
ÉchapRetourner en mode NORMAL
:wEnregistrer
:qQuitter
:wqEnregistrer et quitter
:q!Quitter SANS enregistrer (forcer)
/motRechercher "mot"
ddSupprimer une ligne
yy / pCopier / Coller une ligne
🚨 Piège classique : si vim est ouvert et que vous ne savez pas quitter → appuyer sur Échap puis taper :q! et Entrée.

Commandes utiles & astuces

23
Raccourcis et commandes du quotidien
▼

Les commandes indispensables du quotidien.

clear # Vider le terminal history # Voir l'historique des commandes !! # Relancer la dernière commande sudo !! # Relancer la dernière commande en sudo Ctrl + C # Annuler/interrompre une commande Ctrl + L # Vider le terminal (= clear) Ctrl + R # Rechercher dans l'historique Tab # Auto-complétion (très utile !) man ls # Manuel d'une commande (q pour quitter)
💡 La touche Tab est ton meilleur ami : elle auto-complète les commandes et les noms de fichiers.
24
top / ps / df — Système et processus
▼

Surveiller les processus et les ressources système.

top # Moniteur système en temps réel htop # Version améliorée (sudo apt install htop) ps aux # Lister tous les processus ps aux | grep nginx # Chercher un processus spécifique kill 1234 # Arrêter le processus n°1234 kill -9 1234 # Forcer l'arrêt pkill nginx # Arrêter par nom df -h # Espace disque (toutes les partitions) du -sh /var/log/ # Taille d'un dossier free -h # Mémoire RAM utilisée
25
systemctl — Gérer les services
▼

Gérer les services (démons) avec systemd.

sudo systemctl start nginx # Démarrer un service sudo systemctl stop nginx # Arrêter un service sudo systemctl restart nginx # Redémarrer sudo systemctl reload nginx # Recharger la config sans couper sudo systemctl enable nginx # Démarrer au boot sudo systemctl disable nginx # Ne plus démarrer au boot sudo systemctl status nginx # Voir l'état du service journalctl -u nginx # Voir les logs d'un service journalctl -xe # Logs système récents (erreurs)
💡 systemctl status est la première commande à utiliser quand un service ne fonctionne pas.

Filtrage & Pipes — La puissance de Linux

26
Le Pipe ( | ) — Connecter les commandes entre elles
▼

Le Pipe (représenté par la barre verticale |) est l'un des outils les plus puissants de Linux. Il sert de "tuyau" de communication entre deux programmes.

Le concept : Au lieu d'afficher le résultat d'une commande à l'écran, le pipe le redirige directement pour qu'il serve de "matière première" à la commande suivante.

Comment ça fonctionne ?

commande_A | commande_B
  • commande_A s'exécute et génère des données.
  • Le | attrape ces données au passage.
  • commande_B reçoit ces données, les traite (les filtre, les trie) et affiche le résultat final.
💡 Astuce clavier : Sur un clavier AZERTY (Windows), le symbole s'obtient avec AltGr + 6.

Exemple concret :

Si vous voulez chercher si l'utilisateur "micro" existe dans la liste des utilisateurs du système :

cat /etc/passwd | grep "micro"

Ici, cat lit tout le fichier, et grep ne garde que la ligne qui nous intéresse.

27
grep — Rechercher du texte (Filtrer)
▼

grep analyse un texte ou un fichier et n'affiche que les lignes contenant un mot-clé précis.

grep "erreur" /var/log/syslog # Cherche le mot "erreur" dans un fichier ls /etc | grep "conf" # Liste /etc et ne garde que ce qui contient "conf"

Options indispensables :

  • -i : Ignore la casse (ne fait pas la différence entre "A" et "a").
  • -v : Inverse la recherche (affiche tout SAUF le mot-clé).
  • -r : Recherche récursive dans tous les fichiers d'un dossier.
Exemple concret de combo :
ip a | grep "inet "
Affiche uniquement les lignes contenant vos adresses IP en filtrant le surplus de la commande ip a.

📌 Méthodologie

  • Identification : Depuis quand et où le problème apparaît.
  • Émettre une hypothèse : Proposer une ou plusieurs causes possibles.
  • Test de l’hypothèse : Vérifier la théorie avec des tests.
  • Établir un plan d’action : Corriger la panne avec le moins d’impact.
  • Application de la solution : Mise en place de la correction.
  • Vérification : Contrôler que le problème est résolu.
  • Documentation : Noter le problème et la solution appliquée.
Toujours commencer par les éléments simples avant les causes complexes.

📶 Dépannage Réseau

En dépannage réseau on utilise souvent le modèle OSI pour diagnostiquer la panne couche par couche.

Toujours partir de la couche physique puis remonter vers les couches hautes.

📚 Modèle OSI

Couche Nom Exemple
7 Application HTTP, HTTPS, DNS
6 Présentation SSL / TLS
5 Session Ouverture de session
4 Transport TCP / UDP
3 Réseau IP / Routage
2 Liaison MAC / Switch / VLAN
1 Physique Câble / Signal

🧪 Scénario 1 : Le PC n’a plus accès au réseau

  • Vérification du câble réseau / voyant de la carte réseau
  • Tester un autre câble ou un autre port switch
  • Vérifier la configuration IP
  • Ping de la passerelle
  • Tester la résolution DNS
  • Vérifier le pare-feu Windows
  • Tester sans proxy si utilisé
ipconfig /all
ping 8.8.8.8
nslookup google.com

🧪 Scénario 2 : Lenteur réseau

  • Vérifier la saturation réseau
  • Contrôler les erreurs sur le switch
  • Tester avec un autre câble
  • Analyser le trafic avec Wireshark
  • Vérifier la boucle réseau / spanning-tree
  • Contrôler le débit des interfaces

🧪 Scénario 3 : Impossible d’accéder à un serveur

  • Ping du serveur
  • Tester le port du service
  • Vérifier le service démarré
  • Contrôler les droits NTFS / SMB
  • Vérifier le pare-feu
  • Consulter les logs système

🧪 Scénario 1 : Une application ne démarre plus

  • Lire le message d’erreur
  • Vérifier les dépendances
  • Contrôler les droits utilisateur
  • Tester en administrateur
  • Réinstaller le logiciel
  • Consulter les logs Windows/Linux

🧪 Scénario 2 : Le PC devient lent

  • Vérifier l’utilisation CPU / RAM / disque
  • Contrôler les programmes au démarrage
  • Scan antivirus
  • Vérifier l’espace disque
  • Contrôler l’état SMART du disque
taskmgr
sfc /scannow
dism /online /cleanup-image /restorehealth

🧪 Scénario 3 : Écran bleu Windows

  • Noter le code erreur
  • Tester la RAM
  • Vérifier les pilotes
  • Analyser les dumps mémoire
  • Tester le disque

🧪 Scénario 1 : Le PC ne démarre plus

  • Vérifier alimentation et câbles
  • Tester une autre alimentation
  • Écouter les bips BIOS
  • Tester la RAM une par une
  • Retirer les périphériques inutiles
  • Clear CMOS

🧪 Scénario 2 : Écran noir

  • Tester un autre écran
  • Contrôler le câble vidéo
  • Tester la carte graphique
  • Vérifier la RAM
  • Tester avec GPU intégré

🧪 Scénario 3 : Disque dur défectueux

  • SMART disque
  • CHKDSK
  • Bruits mécaniques
  • Lenteurs importantes
  • Sauvegarder immédiatement
chkdsk /f /r

🧪 Scénario 1 : Un utilisateur ne peut plus se connecter

  • Vérifier le réseau
  • Tester la résolution DNS
  • Vérifier l’heure du poste
  • Contrôler le compte AD
  • Tester le mot de passe
  • Retirer puis réintégrer le poste au domaine
gpupdate /force
gpresult /r

🧪 Scénario 2 : Une GPO ne s’applique pas

  • Vérifier le lien de la GPO
  • Contrôler les filtrages de sécurité
  • Vérifier les OU
  • Tester la réplication AD
  • Forcer les stratégies
repadmin /replsummary

🧰 Outils de dépannage

  • ping → tester la connectivité
  • tracert → afficher le chemin réseau
  • nslookup → tester le DNS
  • netstat → connexions réseau
  • Wireshark → analyse trafic réseau
  • Observateur d’événements → logs Windows

🏛️ Pourquoi des normes ?

Les normes garantissent l'interopérabilité, la sécurité et la qualité des systèmes informatiques à l'échelle mondiale. Sans elles, chaque constructeur imposerait ses propres règles, rendant les échanges impossibles.

🇺🇸
ANSI
American National Standards Institute
Normalisation américaine
🌍
ISO
International Organization for Standardization
Normalisation internationale
⚡
IEEE
Institute of Electrical and Electronics Engineers
Électronique & réseaux

📡 Normes IEEE incontournables en réseau

L'IEEE est l'organisme derrière la quasi-totalité des standards réseau utilisés aujourd'hui. Ses normes sont préfixées 802.x.

NormeNom communDescription
IEEE 802.3EthernetRéseau filaire, CSMA/CD, 10/100/1000 Mbps
IEEE 802.1QVLAN TaggingEncapsulation VLAN sur trame Ethernet (trunk)
IEEE 802.1DSpanning Tree (STP)Évite les boucles réseau sur les switchs
IEEE 802.1XNAC / EAPAuthentification par port (réseau filaire/Wi-Fi)
IEEE 802.11a/b/g/n/ac/axWi-FiCommunications sans fil (2,4 / 5 / 6 GHz)
IEEE 802.3af / at / btPoE / PoE+ / PoE++Alimentation via câble Ethernet (15 W / 30 W / 90 W)
IEEE 802.11iWPA2Sécurité Wi-Fi (AES/CCMP)

🌐 Normes ISO importantes en informatique

Norme ISODomaineCe qu'elle définit
ISO/IEC 7498RéseauModèle OSI — 7 couches de communication
ISO/IEC 27001SécuritéSystème de Management de la Sécurité de l'Information (SMSI)
ISO/IEC 27002SécuritéGuide des bonnes pratiques de sécurité
ISO 9001QualitéSystème de management de la qualité
ISO/IEC 20000Services ITManagement des services informatiques (proche ITIL)
ISO 31000RisquesManagement du risque — cadre et lignes directrices
ISO/IEC 11801CâblageCâblage générique pour bâtiments et campus

📐 Normes ANSI — Focus câblage

L'ANSI co-publie avec la TIA (Telecommunications Industry Association) les normes de câblage structuré.

📋 ANSI/TIA-568 — Câblage structuré
  • Cat 5e — 1 Gbps jusqu'à 100 m
  • Cat 6 — 10 Gbps jusqu'à 55 m, 1 Gbps jusqu'à 100 m
  • Cat 6A — 10 Gbps jusqu'à 100 m
  • Cat 8 — 40 Gbps jusqu'à 30 m (datacenters)
  • Ordre des fils : T568A et T568B (attention aux câbles croisés)
💡 En entreprise, la norme T568B est la plus utilisée. T568A est préférée dans les installations gouvernementales américaines.

📌 Qu'est-ce que le RGPD ?

Le RGPD (en anglais GDPR — General Data Protection Regulation) est un règlement européen entré en vigueur le 25 mai 2018. Il encadre la collecte, le traitement et le stockage des données personnelles des citoyens de l'UE.

✅ S'applique à…
  • Toute organisation traitant des données de citoyens UE
  • Même si l'entreprise est hors UE
  • Données numériques ET papier
❌ Sanctions
  • Jusqu'à 20 M€ ou 4 % du CA mondial
  • Autorité française : CNIL
  • Notification obligatoire en 72h en cas de fuite

🔑 Les 7 principes fondamentaux

#PrincipeCe que ça signifie concrètement
1Licéité, loyauté, transparenceL'utilisateur doit savoir que ses données sont collectées et pourquoi
2Limitation des finalitésLes données ne peuvent être utilisées que pour l'usage déclaré
3Minimisation des donnéesCollecter uniquement ce qui est strictement nécessaire
4ExactitudeLes données doivent être tenues à jour et corrigées si nécessaire
5Limitation de la conservationPas de stockage au-delà de la durée nécessaire
6Intégrité et confidentialitéSécurisation technique et organisationnelle des données
7Responsabilité (accountability)L'organisation doit être capable de prouver sa conformité

👤 Les droits des personnes

📖 Droit d'accès
Obtenir une copie de ses données traitées par l'organisme
✏️ Droit de rectification
Corriger des données inexactes ou incomplètes
🗑️ Droit à l'effacement
"Droit à l'oubli" — supprimer ses données sous conditions
⛔ Droit d'opposition
S'opposer au traitement de ses données (marketing, profilage)
📦 Droit à la portabilité
Récupérer ses données dans un format lisible pour les transférer
⏸️ Droit à la limitation
Geler le traitement de ses données pendant une vérification

🖥️ Impact concret pour un technicien IT

  • Chiffrer les disques durs (BitLocker, LUKS) contenant des données personnelles
  • Mettre en place des sauvegardes sécurisées et des politiques de rétention
  • Journaliser les accès aux données sensibles (logs)
  • Appliquer le principe du moindre privilège en AD
  • Notifier le DPO / CNIL en cas de violation de données sous 72h
  • Pseudonymiser ou anonymiser les données de test
  • Supprimer les comptes utilisateurs à la fin du contrat (procédure offboarding)
💡 Le DPO (Data Protection Officer / Délégué à la Protection des Données) est le référent RGPD de l'organisation. Sa désignation est obligatoire pour les organismes publics et certaines entreprises privées.

📌 Qu'est-ce qu'ITIL ?

ITIL (Information Technology Infrastructure Library) est un ensemble de bonnes pratiques pour la gestion des services IT. La version actuelle est ITIL v4 (2019). Ce n'est pas une norme obligatoire, mais un référentiel de référence mondiale utilisé par la majorité des DSI.

🎯 Objectif principal

Aligner les services informatiques sur les besoins métier, en garantissant qualité, disponibilité et amélioration continue.

🔄 Les 4 dimensions du service (ITIL v4)

👥 Organisations & Personnes
Rôles, compétences, culture, structure organisationnelle
📄 Information & Technologie
Outils, données, IA, automatisation
🤝 Partenaires & Fournisseurs
Sous-traitants, contrats, dépendances externes
🔁 Flux de valeur & Processus
Workflows, activités, processus opérationnels

📋 Les pratiques ITIL clés

ITIL v4 définit 34 pratiques regroupées en 3 catégories. Voici les plus importantes en contexte technicien :

PratiqueDescriptionExemple concret
Gestion des incidentsRestaurer le service le plus vite possibleUn serveur tombe en panne → ticket → résolution
Gestion des problèmesIdentifier et éliminer les causes racinesIncidents récurrents sur un switch → RCA
Gestion des changementsContrôler les modifications en productionMise à jour Windows → CAB → déploiement planifié
Gestion des demandesTraiter les demandes de service standardCréation d'un compte utilisateur
Gestion des actifsSuivre les composants matériels et logicielsCMDB — base de configuration
Service DeskPoint d'entrée unique pour les utilisateursHelpdesk, ticketing (GLPI, Jira…)
Gestion des niveaux de serviceDéfinir et surveiller les SLARésoudre les incidents P1 en moins de 4h

📊 Priorités & SLA (Niveaux de Service)

PrioritéImpactUrgenceDélai cibleExemple
P1 — CritiqueMajeurHaute< 1hServeur de production hors service
P2 — ÉlevéSignificatifHaute< 4hMessagerie inaccessible pour 50+ utilisateurs
P3 — MoyenModéréNormale< 8hImprimante réseau HS
P4 — FaibleFaibleFaible< 72hDemande de logiciel
💡 Le CAB (Change Advisory Board) est le comité qui valide les changements importants avant déploiement en production. Un changement non approuvé peut déclencher de nouveaux incidents.

📌 Qu'est-ce que l'ISO 27001 ?

L'ISO/IEC 27001 est la norme internationale qui définit les exigences pour établir, mettre en œuvre, maintenir et améliorer un SMSI (Système de Management de la Sécurité de l'Information). Une organisation peut obtenir une certification après audit par un organisme accrédité.

🔒
Confidentialité
L'information n'est accessible qu'aux personnes autorisées
✅
Intégrité
Les données ne sont pas altérées sans autorisation
🌐
Disponibilité
Les systèmes sont accessibles quand on en a besoin
⚠️ C'est le fameux triptyque CIA (Confidentiality, Integrity, Availability) — base de toute politique de sécurité.

🔄 La roue de Deming — PDCA

L'ISO 27001 repose sur le cycle PDCA (Plan-Do-Check-Act) pour l'amélioration continue :

📋 PLAN — Planifier
  • Identifier les actifs informationnels
  • Évaluer les risques
  • Définir les objectifs de sécurité
⚙️ DO — Faire
  • Implémenter les contrôles de sécurité
  • Former le personnel
  • Appliquer les procédures
🔍 CHECK — Vérifier
  • Audits internes et externes
  • Surveillance des indicateurs
  • Revue de direction
🔄 ACT — Agir
  • Corriger les non-conformités
  • Améliorer en continu le SMSI
  • Mettre à jour les politiques

🛡️ Les 114 contrôles — Annexe A

L'ISO 27001 liste des contrôles regroupés en 14 domaines. Voici les plus pertinents pour un technicien :

DomaineExemples de contrôles
A.6 — OrganisationSéparation des tâches, télétravail sécurisé
A.8 — Gestion des actifsInventaire, classification et propriété des actifs
A.9 — Contrôle d'accèsPolitique des mots de passe, moindre privilège, MFA
A.10 — CryptographieChiffrement des données, gestion des clés
A.11 — Sécurité physiqueContrôle d'accès aux salles serveurs, badgeage
A.12 — OpérationsJournaux, sauvegardes, protection contre les malwares
A.13 — CommunicationsSegmentation réseau, chiffrement des transferts
A.16 — IncidentsSignalement, réponse, analyse post-incident
A.17 — ContinuitéPCA, PRA, tests de reprise
💡 ISO 27001 + ISO 27002 = le duo gagnant. La 27001 définit les exigences (ce qu'il faut faire), la 27002 explique les bonnes pratiques (comment le faire).

📌 PCA vs PRA — La différence fondamentale

🔵 PCA
Plan de Continuité d'Activité

Garantit que l'activité globale de l'entreprise continue, même en mode dégradé, pendant un sinistre.

  • Avant et pendant le sinistre
  • Maintenir l'activité en mode dégradé
  • Exemple : basculer sur un datacenter secondaire à chaud
🟣 PRA
Plan de Reprise d'Activité

Décrit comment restaurer l'activité globale de l'entreprise après l'interruption.

  • Après le sinistre
  • Restaurer l'activité normale
  • Exemple : restaurer depuis les sauvegardes, reconfigurer les serveurs
🔵 PCI
Plan de Continuité Informatique

Déclinaison IT du PCA. Regroupe les moyens techniques garantissant la continuité des services informatiques essentiels, via redondance et haute disponibilité.

  • Avant et pendant le sinistre
  • Redondance serveurs, réplication, RAID, cloud, alim/connexion de secours
  • Exemple : clusters actifs, haute disponibilité
🟣 PRI
Plan de Reprise Informatique

Déclinaison IT du PRA. Décrit les procédures techniques pour restaurer le SI après une interruption : restauration des sauvegardes, reconstruction des serveurs, remise en service des applications et bases de données, dans un ordre précis pour rétablir les services critiques en priorité.

  • Après le sinistre
  • Restauration serveurs, BDD, applications
  • Ordre de redémarrage priorisé
📋 Récapitulatif
Plan Périmètre Quand Objectif
PCA Métier / Entreprise Avant & pendant Continuer l'activité en mode dégradé
PRA Métier / Entreprise Après Restaurer l'activité normale
PCI Informatique (SI) Avant & pendant Maintenir les services IT critiques accessibles
PRI Informatique (SI) Après Restaurer le SI (serveurs, BDD, applications)

PCI et PRI sont les déclinaisons informatiques du PCA et du PRA : même logique (continuité vs reprise), mais centrée uniquement sur le système d'information.

⏱️ Les métriques clés : RPO & RTO

⏪ RPO
Recovery Point Objective

Quantité maximale de données qu'on accepte de perdre.
Exemple : RPO = 4h → on sauvegarde toutes les 4h → on peut perdre 4h de données max.

⏩ RTO
Recovery Time Objective

Durée maximale d'interruption acceptable.
Exemple : RTO = 2h → le système doit être opérationnel en moins de 2h après incident.

📐 Règle à retenir

Plus RPO et RTO sont faibles → plus la solution est coûteuse. Un RPO = 0 (aucune perte) et RTO = 0 (reprise instantanée) nécessite une architecture Active-Active en temps réel.

🏗️ Les niveaux de reprise

NiveauNomDescriptionRTO approximatifCoût
1Cold SiteLocal vide, infrastructure à installerJours à semaines💚 Faible
2Warm SiteInfrastructure partiellement prête, à activerHeures à jours🟡 Moyen
3Hot SiteInfra identique en production, synchronisation régulièreMinutes à heures🔴 Élevé
4Active-ActiveDouble site actif simultanément, bascule transparenteSecondes (quasi 0)🔴🔴 Très élevé

📋 Éléments d'un PRA informatique

  • Inventaire des systèmes critiques — par ordre de priorité de redémarrage
  • Schéma d'architecture — réseau, serveurs, dépendances
  • Procédures de restauration — étape par étape, testées régulièrement
  • Contacts d'urgence — DSI, prestataires, hébergeurs
  • Tests réguliers — exercice de reprise au moins une fois par an
  • Documentation à jour — versions des OS, licences, mots de passe en coffre-fort
💡 Un PRA non testé est un PRA qui ne fonctionne pas. La règle d'or : tester sa sauvegarde, c'est la seule vraie sauvegarde.

📌 Qu'est-ce que Merise ?

Merise est une méthode française de conception et développement de systèmes d'information, créée dans les années 1970. Elle repose sur une séparation des données (ce qu'on stocke) et des traitements (ce qu'on fait avec). Elle reste très utilisée dans l'administration et les entreprises françaises.

MCD
Modèle Conceptuel des Données
Vision métier, pas technique
MLD
Modèle Logique des Données
Tables, clés, relations
MPD
Modèle Physique des Données
SQL, types, index

🧱 Les concepts du MCD

ConceptDéfinitionExemple
EntitéObjet réel du domaine, représenté par un rectangleCLIENT, COMMANDE, PRODUIT
AttributPropriété d'une entiténom, prénom, email, prix
IdentifiantAttribut unique qui identifie chaque occurrenceid_client, numéro_commande
AssociationLien entre deux entités, représenté par un ovale ou losangeCLIENT passe COMMANDE
CardinalitéNombre min et max de participations à une association(1,N), (0,1), (1,1)

🔢 Les cardinalités — Lire le MCD

📖 Comment lire une cardinalité (min, max) :
(0,1) Participe 0 ou 1 fois — la relation est optionnelle (ex: un employé peut avoir 0 ou 1 voiture de société)
(1,1) Participe exactement 1 fois — obligatoire (ex: une commande appartient à exactement 1 client)
(0,N) Participe 0 à plusieurs fois (ex: un client peut avoir 0 ou plusieurs commandes)
(1,N) Participe au moins 1 fois à plusieurs (ex: une commande contient au moins 1 produit)

📋 Du MCD au MLD — Les règles de transformation

Relation MCDRésultat dans le MLD
1,1 — N,1 (one-to-one)La clé étrangère est placée dans l'une des deux tables
1,N — 1,N (one-to-many)La clé étrangère est dans la table côté N
N,N — N,N (many-to-many)Création d'une table de jointure avec les deux clés étrangères

💻 Exemple concret — Boutique en ligne

MLD → SQL résultant
CLIENT
(id_client, nom, email, ville)
COMMANDE
(id_commande, date, montant, #id_client)
PRODUIT
(id_produit, libelle, prix_unitaire)
CONTENIR
(id_commande, id_produit, quantite) ← table de jointure N,N
Le # indique une clé étrangère (FK)
💡 Merise est encore très demandée dans les BTS SIO et les projets de l'administration française. En entreprise privée, UML (diagrammes de classes) lui est souvent préféré, mais les deux coexistent.
💡 Pourquoi mkcert ? Les certificats auto-signés classiques génèrent une alerte navigateur. mkcert crée une CA locale qu'on installe comme autorité de confiance — le navigateur accepte alors le certificat sans avertissement.
01
Installer mkcert sur Ubuntu
▼

Installez les dépendances nécessaires, puis téléchargez mkcert depuis les dépôts officiels :

sudo apt update sudo apt install -y libnss3-tools sudo apt install -y mkcert

Vérifiez que mkcert est correctement installé :

mkcert --version
💡 Si mkcert n'est pas disponible via apt, installez-le manuellement : sudo apt install -y wget && wget https://github.com/FiloSottile/mkcert/releases/latest/download/mkcert-v*-linux-amd64 -O mkcert && sudo mv mkcert /usr/local/bin/ && sudo chmod +x /usr/local/bin/mkcert
02
Installer la CA Root locale
▼

Cette commande crée et installe l'autorité de certification locale de mkcert dans le magasin de confiance du système :

mkcert -install

Pour connaître l'emplacement exact des fichiers de la CA Root générés :

mkcert -CAROOT
📁 Le dossier affiché contient deux fichiers : rootCA.pem (clé publique à distribuer) et rootCA-key.pem (clé privée — à ne jamais partager).
03
Générer le certificat pour votre domaine
▼

Créez d'abord le dossier qui accueillera vos certificats Nginx, puis générez directement le certificat pour votre domaine local :

sudo mkdir -p /etc/nginx/certs cd /etc/nginx/certs

Lancez mkcert en ciblant votre domaine — ici c2rt.local :

sudo mkcert c2rt.local

Deux fichiers sont créés dans le répertoire courant :

  • c2rt.local.pem → certificat public (à référencer dans Nginx via ssl_certificate)
  • c2rt.local-key.pem → clé privée (à référencer via ssl_certificate_key)
04
Configurer Nginx avec le certificat
▼

Ouvrez votre fichier de Virtual Host Nginx et adaptez la configuration pour activer HTTPS avec redirection HTTP → HTTPS :

sudo nano /etc/nginx/sites-available/c2rt.local

Copiez ce bloc de configuration complet :

server { listen 80; server_name c2rt.local; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name c2rt.local; root /var/www/c2rt/html; index index.html; ssl_certificate /etc/nginx/certs/c2rt.local.pem; ssl_certificate_key /etc/nginx/certs/c2rt.local-key.pem; location / { try_files $uri $uri/ =404; } }
Explication des blocs :
— Le premier bloc écoute sur le port 80 (HTTP) et redirige tout le trafic en 301 vers HTTPS.
— Le second bloc écoute sur le port 443 (HTTPS) et sert le site avec les certificats mkcert.
— ssl_certificate pointe vers le .pem public, ssl_certificate_key vers la clé privée.

Testez la syntaxe et rechargez Nginx :

sudo nginx -t sudo systemctl reload nginx
05
Récupérer le fichier rootCA.pem depuis le serveur
▼

Pour que Windows fasse confiance au certificat, il faut lui importer la CA Root. Commencez par afficher le contenu du fichier rootCA.pem sur le serveur Linux :

cat $(mkcert -CAROOT)/rootCA.pem

Sur votre machine Windows, créez un nouveau fichier texte, collez le contenu copié et enregistrez-le sous le nom rootCA.pem (par exemple dans C:\Users\VotreNom\Downloads\).

💡 Vous pouvez aussi transférer le fichier directement via WinSCP ou SCP si vous préférez éviter le copier-coller.
06
Importer la CA Root dans Windows
▼

Ouvrez PowerShell en tant qu'administrateur et lancez la commande suivante pour importer le certificat racine dans le magasin de confiance de la machine :

Import-Certificate -FilePath "C:\Users\VotreNom\Downloads\rootCA.pem" -CertStoreLocation Cert:\LocalMachine\Root
⚠️ Cert:\LocalMachine\Root installe la CA pour tous les utilisateurs de la machine. Si vous souhaitez l'installer uniquement pour votre compte, utilisez Cert:\CurrentUser\Root à la place.

Une fois importé, rechargez votre navigateur et accédez à https://c2rt.local — le cadenas vert doit apparaître sans alerte de sécurité.

01
Installation de BIND9
▼

Installez BIND9 et les outils de gestion DNS :

sudo apt update sudo apt install -y bind9 bind9-utils bind9-doc dnsutils sudo systemctl status bind9
💡 bind9-utils fournit des outils comme dig, nslookup et host pour tester votre serveur DNS.
02
Fichiers de configuration BIND9
▼

BIND9 utilise plusieurs fichiers de configuration situés dans /etc/bind/ :

FichierRôle
/etc/bind/named.confFichier principal qui inclut les autres
/etc/bind/named.conf.optionsOptions globales du serveur (forwarders, ACLs…)
/etc/bind/named.conf.localDéclaration des zones locales
/var/lib/bind/Répertoire contenant les fichiers de zones
ls -la /etc/bind/ cat /etc/bind/named.conf
03
Créer une zone DNS
▼

Créez un fichier de zone pour votre domaine. Exemple : créer une zone pour exemple.lab

Étape 1 : Déclarer la zone dans named.conf.local

sudo nano /etc/bind/named.conf.local

Ajoutez à la fin du fichier :

zone "exemple.lab" { type master; file "/var/lib/bind/exemple.lab.zone"; allow-transfer { any; }; };
💡 type master signifie que ce serveur est authoritative (maître) pour cette zone.

Étape 2 : Créer le fichier de zone

sudo nano /var/lib/bind/exemple.lab.zone

Remplissez le fichier avec :

$TTL 86400 @ IN SOA ns1.exemple.lab. admin.exemple.lab. ( 2024010101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) IN NS ns1.exemple.lab. IN MX 10 mail.exemple.lab. ns1 IN A 192.168.1.50 mail IN A 192.168.1.51 www IN A 192.168.1.52 app IN A 192.168.1.53 @ IN A 192.168.1.54
⚠️ Important : Les enregistrements SOA et NS sont obligatoires pour déclarer une zone. Remplacez les IP par vos vraies adresses.
04
Vérifier la syntaxe
▼

Vérifiez que votre configuration est correcte :

# Vérifier la syntaxe du fichier named.conf sudo named-checkconf /etc/bind/named.conf # Vérifier la syntaxe du fichier de zone sudo named-checkzone exemple.lab /var/lib/bind/exemple.lab.zone
💡 Ces commandes vous aideront à identifier les erreurs avant de relancer BIND9.
05
Corriger les permissions
▼

BIND9 s'exécute sous l'utilisateur bind. Il faut que ce dernier puisse lire les fichiers de zone :

sudo chown -R bind:bind /var/lib/bind/ sudo chmod 755 /var/lib/bind/ sudo chmod 644 /var/lib/bind/exemple.lab.zone
06
Redémarrer BIND9
▼

Redémarrez le service BIND9 pour charger la nouvelle configuration :

sudo systemctl restart bind9 sudo systemctl status bind9
# Vérifier que BIND9 écoute sur le port 53 sudo netstat -tlnp | grep :53 # ou sudo ss -tlnp | grep :53
07
Tester votre serveur DNS
▼

Testez que votre serveur DNS fonctionne correctement :

Sur la machine elle-même

# Interroger le serveur DNS local dig @localhost www.exemple.lab +short nslookup www.exemple.lab localhost host www.exemple.lab 127.0.0.1

Depuis une autre machine du réseau

# Remplacez 192.168.1.50 par l'IP de votre serveur DNS dig @192.168.1.50 www.exemple.lab +short nslookup www.exemple.lab 192.168.1.50
✅ Si vous voyez l'IP (ex: 192.168.1.52), c'est bon ! Votre serveur DNS répond correctement.
08
Configurer le serveur comme DNS client
▼

Pour que d'autres machines utilisent votre serveur DNS, configurez-les pour utiliser son IP :

Sous Linux (Netplan)

sudo nano /etc/netplan/01-netcfg.yaml
network: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [192.168.1.50] # IP de votre serveur DNS search: [exemple.lab]

Appliquer la configuration

sudo netplan apply cat /etc/resolv.conf # Vérifier le changement

Sous Windows

Paramètres → Réseau et Internet → Propriétés Ethernet → Modifier → Paramètres DNS → Manuel

Entrez l'IP du serveur DNS (ex: 192.168.1.50)

09
Ajouter des enregistrements supplémentaires
▼

Vous pouvez ajouter différents types d'enregistrements dans votre zone :

Types d'enregistrements courants

TypeExempleUtilité
Awww IN A 192.168.1.52Associer un domaine à une adresse IPv4
AAAAwww IN AAAA 2001:db8::1Associer un domaine à une adresse IPv6
CNAMEblog IN CNAME www.exemple.lab.Alias pour un autre domaine
MXIN MX 10 mail.exemple.lab.Serveur de mail pour le domaine
NSIN NS ns1.exemple.lab.Serveur DNS authoritative
TXTIN TXT "v=spf1 mx ~all"Texte libre (SPF, DKIM, DMARC…)

Exemple complet avec différents types

$TTL 86400 @ IN SOA ns1.exemple.lab. admin.exemple.lab. ( 2024010102 ; Serial (AUGMENTEZ CE CHIFFRE à chaque modification) 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) IN NS ns1.exemple.lab. IN MX 10 mail.exemple.lab. IN TXT "v=spf1 mx ~all" ns1 IN A 192.168.1.50 mail IN A 192.168.1.51 www IN A 192.168.1.52 app IN A 192.168.1.53 @ IN A 192.168.1.54 blog IN CNAME www.exemple.lab. ftp IN CNAME www.exemple.lab.
⚠️ Important : Augmentez le numéro de Serial à chaque modification de la zone, sinon les autres serveurs DNS ne verront pas les changements !

Appliquer les changements

sudo named-checkzone exemple.lab /var/lib/bind/exemple.lab.zone sudo systemctl reload bind9
10
Configurer les forwarders (optionnel)
▼

Si vous voulez que votre serveur DNS transmette les requêtes qu'il ne peut pas résoudre à d'autres serveurs DNS publics :

sudo nano /etc/bind/named.conf.options

Modifiez la section forwarders :

options { directory "/var/cache/bind"; # Transférer les requêtes non résolues aux DNS publics forwarders { 8.8.8.8; # Google DNS 8.8.4.4; # Google DNS 2 1.1.1.1; # Cloudflare DNS }; # Résoudre les zones locales en priorité recursion yes; allow-recursion { 127.0.0.1; 192.168.1.0/24; }; };
sudo named-checkconf /etc/bind/named.conf sudo systemctl reload bind9
11
Logs et dépannage
▼

En cas de problème, consultez les logs BIND9 :

# Voir les logs en temps réel sudo journalctl -u bind9 -f # Voir les derniers logs sudo journalctl -u bind9 -n 50 # Voir les logs du system tail -50 /var/log/syslog | grep named

Erreurs courantes

Erreur : named[xxx]: zone exemple.lab/IN: loading from master file /var/lib/bind/exemple.lab.zone failed: file not found

Solution : Vérifiez que le fichier existe et que le chemin dans named.conf.local est correct.

Erreur : permission denied quand BIND9 redémarre

Solution : Vérifiez que les permissions sont correctes : sudo chown bind:bind /var/lib/bind/

Erreur : dig n'affiche pas de réponse

Solution : Vérifiez que BIND9 écoute sur le port 53 : sudo ss -tlnp | grep :53

01
C'est quoi un CMS ?
▼

Un CMS (Content Management System) est un Système de Gestion de Contenu. C'est un logiciel qui permet de concevoir, gérer et mettre à jour des sites web de manière dynamique, sans avoir besoin de coder chaque page à la main.

💡 WordPress est le CMS le plus utilisé au monde (plus de 40% du web).
02
Comprendre les Stacks : LEMP vs LAMP
▼

Pour faire tourner un CMS comme WordPress, il faut un ensemble de logiciels appelé "Stack".

Stack LEMP

Linux (OS)
Engine-X (Nginx)
MariaDB (Base de données)
PHP (Langage)

Stack LAMP

Linux (OS)
Apache (Serveur Web)
MariaDB (Base de données)
PHP (Langage)

Ici, nous installons Nginx, installez-le avec la commande suivante :

sudo apt install nginx
03
Installer PHP et ses dépendances
▼

WordPress nécessite PHP et plusieurs modules spécifiques pour traiter les images, les scripts et les connexions :

sudo apt install php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-zip

Vérifiez le status du service (adaptez la version, ex: 8.3) :

sudo systemctl status php8.3-fpm.service
04
Installer et configurer MariaDB
▼

Installez le serveur de base de données (version améliorée de MySQL) :

sudo apt install mariadb-server

Créez un mot de passe root si nécessaire et connectez-vous :

sudo passwd
su -
mysql -u root -p
05
Créer la base de données WordPress
▼

Exécutez ces requêtes SQL pour préparer le terrain :

CREATE DATABASE Wordpress; CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'XXXX'; GRANT ALL PRIVILEGES ON Wordpress.* TO 'wordpressuser'@'localhost'; FLUSH PRIVILEGES; EXIT;

Notez bien : Base = Wordpress | User = wordpressuser | Pass = XXXX

06
Télécharger et extraire WordPress
▼

On télécharge la dernière version dans le dossier temporaire :

cd /tmp
sudo wget https://wordpress.org/latest.zip

On décompresse l'archive directement dans le répertoire web :

sudo apt install unzip
sudo unzip latest.zip -d /var/www/
07
Droits d'accès (Permissions)
▼

Donnez la propriété du dossier à l'utilisateur www-data (le serveur web) pour qu'il puisse écrire les fichiers :

sudo chown -R www-data:www-data /var/www/wordpress/
08
Configuration du Virtual Host Nginx
▼

Créez le fichier de configuration de votre site :

sudo nano /etc/nginx/sites-available/wordpress.c2rt.lab

Insérez ce bloc de configuration :

server { listen 80; server_name wordpress.c2rt.lab; root /var/www/wordpress; index index.html index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } }
09
Activation et rechargement
▼

Activez le site via un lien symbolique et redémarrez Nginx :

sudo ln -s /etc/nginx/sites-available/wordpress.c2rt.lab /etc/nginx/sites-enabled/wordpress.c2rt.lab
sudo systemctl reload nginx
10
Finalisation via le navigateur
▼

Accédez à l'IP de votre serveur dans un navigateur et suivez l'assistant :

Langue : Français
Base : Wordpress
Utilisateur : wordpressuser
MDP : XXXX
✅ Installation terminée ! Votre site est prêt.
01
Mises à jour & Installation LAMP
▼

Commencez par mettre à jour le système et installer les composants de la stack LAMP :

sudo apt update && sudo apt upgrade -y
sudo apt install apache2 php php-mysql libapache2-mod-php -y
sudo apt install mariadb-server mariadb-client -y

Sécurisez votre installation MariaDB :

sudo mysql_secure_installation
02
Créer la base de données WordPress
▼

Connectez-vous à MariaDB :

sudo mysql -u root -p

Exécutez les requêtes SQL suivantes (pensez à remplacer MOT_DE_PASSE) :

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'MOT_DE_PASSE'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost'; FLUSH PRIVILEGES; EXIT;
03
Télécharger et installer WordPress
▼

Téléchargez et extrayez la dernière version de WordPress :

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz
sudo mv wordpress /var/www/html/
04
Droits et permissions
▼

Configurez les permissions pour qu'Apache puisse gérer les fichiers :

sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress/ -type f -exec chmod 644 {} \;
05
Configurer le VirtualHost Apache
▼

Créez le fichier de configuration pour votre site c4rt.lab :

sudo nano /etc/apache2/sites-available/c4rt.lab.conf

Collez la configuration suivante :

<VirtualHost *:80> ServerName c4rt.lab ServerAlias www.c4rt.lab DocumentRoot /var/www/html/wordpress <Directory /var/www/html/wordpress> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/c4rt.lab-error.log CustomLog ${APACHE_LOG_DIR}/c4rt.lab-access.log combined </VirtualHost>
06
Activation et rechargement
▼

Activez le nouveau site, le module rewrite et redémarrez Apache :

sudo a2ensite c4rt.lab.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
07
Finalisation via le navigateur
▼

Ouvrez votre navigateur sur http://c4rt.lab et suivez l'assistant d'installation (choisir le titre du site, l'admin et le mot de passe).

⚠️ Attention : Si vous tombez sur la page par défaut d'Apache au lieu de l'installation WordPress, essayez d'utiliser l'URL complète car le dossier a été déplacé dans /var/www/html/wordpress/ :
http://c4rt.lab/wordpress
✅ Votre site WordPress sous Apache est maintenant opérationnel !
01
Identifier le fichier de configuration
▼

Sur Ubuntu Server, la configuration réseau se trouve dans le dossier /etc/netplan/. Le fichier se nomme généralement 50-cloud-init.yaml ou 01-netcfg.yaml.

ls /etc/netplan/
02
Modifier le fichier YAML
▼

Ouvrez le fichier avec l'éditeur nano :

sudo nano /etc/netplan/50-cloud-init.yaml

Modifiez le contenu en respectant scrupuleusement les indentations (espaces) :

network: version: 2 ethernets: eth0: dhcp4: false addresses: - 172.31.245.80/20 routes: - to: default via: 172.31.240.1 nameservers: addresses: - 8.8.8.8 - 1.1.1.1
03
Appliquer la configuration
▼

Une fois le fichier enregistré (Ctrl+O, Entrée, Ctrl+X), appliquez les changements :

sudo netplan apply
💡 Si vous êtes à distance via SSH, utilisez sudo netplan try qui annulera les changements après 120s si la connexion est perdue.
04
Vérifier les changements
▼

Vérifiez que la nouvelle adresse IP est bien appliquée sur l'interface :

ip a
01
Ouvrir le fichier des interfaces
▼

Sur Debian, la configuration réseau se gère traditionnellement via le fichier /etc/network/interfaces.

sudo nano /etc/network/interfaces
02
Modifier la configuration
▼

Adaptez le fichier pour passer d'une configuration DHCP à une configuration statique :

auto eth0 iface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 1.1.1.1
⚠️ Vérifiez bien le nom de votre interface (ex: eth0, ens33, enp0s3) avec la commande ip a avant de modifier le fichier.
03
Redémarrer le service réseau
▼

Pour appliquer les changements sans redémarrer la machine entière :

sudo systemctl restart networking

Ou si vous préférez redémarrer l'interface spécifiquement :

sudo ifdown eth0 && sudo ifup eth0
04
Vérification
▼

Vérifiez que la nouvelle adresse est bien active :

ip a
01
Générer les clés sur le client
▼

Sur votre poste client (Windows en PowerShell Admin ou Linux), générez votre paire de clés :

ssh-keygen

Ou pour une clé RSA 4096 bits plus robuste :

ssh-keygen -b 4096

Appuyez sur Entrée pour l'emplacement par défaut et saisissez une passphrase (recommandé).

02
Emplacement des clés
▼

Vos clés sont stockées dans le dossier caché .ssh :

  • Windows : C:\Users\MartinDepanne\.ssh\id_ed25519 (ou id_rsa)
  • Linux : /home/MartinDepanne/.ssh/
⚠️ Ne partagez JAMAIS votre clé privée (sans extension). Seule la clé publique (.pub) doit être envoyée sur les serveurs.
03
Préparer le serveur distant
▼

Vérifiez si le dossier .ssh existe sur le serveur. S'il n'existe pas, créez-le depuis le client :

ssh username@ip_du_serveur "mkdir -p ~/.ssh && chmod 700 ~/.ssh"
04
Copier la clé publique sur le serveur
▼

Depuis Windows :

scp "C:\Users\MartinDepanne\.ssh\id_ed25519.pub" username@ip_du_serveur:/home/MartinDepanne/.ssh/

Ou pour l'ajouter directement à la suite du fichier existant :

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh username@ip_du_serveur "cat >> ~/.ssh/authorized_keys"

Depuis Linux :

ssh-copy-id utilisateur@serveur

Ou manuellement :

cat ~/.ssh/id_ed25519.pub | ssh username@ip_du_serveur "cat >> ~/.ssh/authorized_keys"
05
Désactiver la connexion par mot de passe
▼

Pour forcer l'usage des clés, modifiez la configuration SSH du serveur :

sudo nano /etc/ssh/sshd_config

Cherchez et modifiez la ligne suivante :

PasswordAuthentication no

Supprimez également le fichier de config cloud-init s'il existe :

cd /etc/ssh/sshd_config.d/ && sudo rm 50-cloud-init.conf
sudo systemctl restart ssh
🎁
BONUS : Récupérer une clé depuis le serveur
▼

Si vous avez bloqué l'accès par mot de passe mais souhaitez ajouter un nouveau client, vous pouvez aller chercher la clé générée sur le nouveau client depuis le serveur :

Client Linux (avec serveur SSH installé) :

ssh nom_user_client@ip_client "cat ~/.ssh/id_clef.pub" >> ~/.ssh/authorized_keys

Client Windows (avec serveur SSH installé) :

ssh nom_user_client@ip_client "type C:/users/MartinDepanne/.ssh/id_clef.pub" >> ~/.ssh/authorized_keys

1. C'est quoi RDS ?

01
Définition et principe
▼

Le Remote Desktop Services (RDS) est une technologie Microsoft qui permet à des employés de se connecter à distance sur un serveur de l'entreprise et d'y utiliser des logiciels — comme s'ils étaient au bureau, depuis n'importe où.

🍕 Analogie : Imagine une salle informatique virtuelle. Chaque employé arrive avec son écran (PC, tablette, téléphone) et se connecte à la salle. Il voit son bureau, ses applis, ses fichiers — mais tout tourne en réalité sur le serveur. Son PC à lui ne fait que transmettre les clics de souris et afficher l'image.
✅ En résumé : L'application tourne sur le serveur, pas sur le poste de l'utilisateur. Le réseau transporte uniquement l'image de l'écran et les clics.

2. Les rôles RDS — qui fait quoi ?

02
RD Session Host (RDSH) — Le serveur de travail
▼

C'est le cœur du système. C'est sur ce serveur que tournent réellement toutes les applications et tous les bureaux des utilisateurs.

🍕 Analogie : C'est la cuisine d'un restaurant. Tous les plats sont préparés ici. Les clients (utilisateurs) ne la voient pas, mais c'est là que tout se passe. Chaque cuisinier prépare la commande d'un client sans perturber celle du voisin.
Sessions isolées par utilisateurPlusieurs serveurs RDSH possiblesRépartition de charge

Exemple concret — PME de 50 personnes : Chacun retrouve son bureau personnalisé, ses fichiers, ses logiciels. L'entreprise n'a pas besoin d'acheter 50 PC puissants : des petits PC ou même des tablettes suffisent côté utilisateurs.

03
RD Connection Broker (RDCB) — L'aiguilleur
▼

C'est lui qui reçoit les demandes de connexion et décide sur quel serveur envoyer chaque utilisateur.

🍕 Analogie : C'est l'hôte d'accueil d'un grand restaurant avec plusieurs salles. Il regarde quelle salle est la moins bondée et t'y place. Si tu avais déjà une table réservée (session existante), il te ramène exactement là où tu étais assis.
Répartition de chargeReconnexion automatiqueGestion des sessions

Exemple : Marc travaille sur un rapport Word. Sa connexion coupe à 14h. À 14h05, il se reconnecte. Le Broker retrouve sa session. Son document Word est toujours ouvert à la même page.

04
RD Web Access (RDWA) — Le portail web
▼

Ce rôle publie une page web sur laquelle les utilisateurs voient toutes les applications auxquelles ils ont accès. Ils cliquent sur une icône et ça se lance.

Accès via navigateurPas d'installation clientPortail RemoteApp

Exemple : Un consultant ouvre le portail web, entre ses identifiants, clique sur l'icône ERP — le logiciel s'ouvre sans rien installer sur sa machine.

05
RD Gateway (RDGW) — Le vigile sécurisé
▼

Ce rôle sert de point d'entrée sécurisé pour les connexions qui viennent d'Internet. Sans lui, il faudrait ouvrir le port 3389 sur le réseau de l'entreprise — ce qui est dangereux.

⚠️ Sans RD Gateway : port 3389 exposé sur Internet = attaqué en permanence par des robots.
✅ Avec RD Gateway : tout passe par le port 443 (HTTPS). Discret, chiffré, bien mieux protégé. Pas besoin de VPN.
Port 443 (HTTPS)Remplace le VPN pour RDSChiffrement fort
06
RD Licensing (RDL) — Le compteur de licences
▼

Ce rôle gère les licences d'accès (CAL) qui autorisent légalement chaque utilisateur ou chaque appareil à se connecter au serveur RDS.

⚠️ Piège classique — les 120 jours : RDS fonctionne sans licence pendant 120 jours (mode grâce), puis bloque toutes les connexions — y compris les administrateurs.
➜ Toujours configurer RD Licensing dès le départ.

3. Protocole RDP & Accès

07
Ce qui circule sur le réseau
▼

RDS utilise le protocole RDP (Remote Desktop Protocol) pour faire circuler les informations entre l'utilisateur et le serveur. RDP ne transporte pas les fichiers ni les logiciels — seulement l'image de l'écran.

💡 C'est pour ça que RDS fonctionne même avec une connexion lente : seule l'image de l'écran transite. Une page Word affichée pèse quelques kilo-octets, pas le fichier Word complet.
Fibre → image HD, son HD4G/Wi-Fi faible → qualité réduite autoMauvaise connexion → session vivante côté serveur
08
Bureau complet vs RemoteApp
▼

Bureau complet : L'utilisateur obtient un bureau Windows entier hébergé sur le serveur. Idéal pour les télétravailleurs.

RemoteApp : Seule l'application publiée s'affiche dans une fenêtre sur le bureau local de l'utilisateur. Idéal pour les logiciels métier lourds (ERP, comptabilité, CAO).

🍕 Analogie RemoteApp : Tu commandes un seul plat à emporter. Tu ne t'assieds pas dans la salle, tu ne vois pas la cuisine. Tu reçois juste ton plat dans une boîte — c'est exactement ce que fait RemoteApp.

4. Sessions, Licences CAL & Sécurité

09
États d'une session & bonnes pratiques
▼
Active → utilisateur travailleDéconnectée → session tourne sans utilisateurEn veille → sans activité depuis un moment
⚠️ Déconnexion ≠ Fermeture de session :
Déconnexion : la session reste active sur le serveur (consomme RAM + CAL).
Fermeture de session (log off) : toutes les applications se ferment, la session est supprimée.
💡 Configurez une limite automatique : sessions déconnectées depuis plus de 30 min se ferment toutes seules.
10
Licences CAL — User CAL vs Device CAL
▼

User CAL : Attribuée à un utilisateur. Il peut se connecter depuis autant d'appareils qu'il veut. Idéal pour les commerciaux qui changent d'appareil.

Device CAL : Attribuée à un appareil. N'importe quel utilisateur peut s'y connecter. Idéal pour les postes partagés (ateliers, hôpitaux).

⚠️ Les CAL s'achètent en quantité. Une CAL RDS s'ajoute toujours à la licence Windows Server (qui ne couvre que 2 connexions admin par défaut).
11
Sécurité RDS — Points essentiels
▼

NLA (Network Level Authentication) : Oblige l'utilisateur à prouver son identité AVANT que le serveur ouvre une session. Toujours activer.

❌ Ne jamais exposer le port 3389 sur Internet✅ Utiliser RD Gateway (port 443)MDP 12+ caractèresVerrouillage après 5 échecs2FA si possible
💡 Règle d'or : Principe du moindre privilège — chaque utilisateur ne doit avoir accès qu'à ce dont il a strictement besoin. Restriction presse-papiers, clés USB, impression via GPO.

5. Récapitulatif & Architectures

12
Architectures typiques
▼

Petite structure (< 20 utilisateurs) : 1 seul serveur → RDSH + RDCB + RDWA + RDL. Simple, peu coûteux, mais pas de redondance.

Moyenne/Grande structure : Chaque rôle sur un serveur dédié. Plusieurs RDSH pour la charge. Redondance. Scalabilité (ajout d'un RDSH lors de pics d'activité).

Serveur 1 → RD Connection BrokerServeurs 2 & 3 → RD Session HostServeur 4 → RD GatewayServeur 5 → RD Web AccessServeur 6 → RD Licensing
13
Glossaire complet
▼
RDS
Permet d'accéder à des logiciels et bureaux Windows depuis n'importe quel appareil, à distance
RDSH
Remote Desktop Session Host — Le serveur où tournent vraiment les applications, le moteur
RDCB
Remote Desktop Connection Broker — L'aiguilleur
RDWA
Remote Desktop Web Access — Le portail web
RDGW
Remote Desktop Gateway — Point d'entrée sécurisé depuis Internet (remplace le VPN pour RDS)
RDL
Remote Desktop Licensing — Le contrôleur de licences, obligatoire légalement
RDP
Remote Desktop Protocol — Transporte l'image de l'écran et les clics (port 3389)
RemoteApp
Publier un seul logiciel dans une fenêtre, sans tout le bureau Windows
User CAL
Licence liée à une personne — peut se connecter depuis plusieurs appareils
Device CAL
Licence liée à un PC — plusieurs personnes peuvent utiliser ce PC
NLA
Network Level Authentication — Vérification d'identité avant ouverture de session
🎯 La règle des 3 indispensables : Pour qu'un RDS fonctionne, il faut : RDSH (le moteur) + RDCB (le chef d'orchestre) + RDL (les licences). Tout le reste améliore le confort et la sécurité.

1. Rôle d'un commutateur virtuel

Dans Hyper-V, un commutateur virtuel (ou vSwitch) joue le même rôle qu'un switch physique dans une infrastructure réelle : il connecte les machines virtuelles entre elles et/ou vers l'extérieur. Il s'agit d'un composant logiciel qui opère au niveau du noyau Windows et qui est géré depuis le Gestionnaire de commutateurs virtuels.

Hyper-V propose trois types de commutateurs, chacun répondant à un besoin précis :

🌐
Externe
Accès au réseau physique (LAN / Internet)
🔗
Interne
VMs ↔ VMs + hôte Hyper-V, sans réseau physique
🔒
Privé
VMs ↔ VMs uniquement, hôte exclu

2. Commutateur Externe

01
🌐 Commutateur Externe — définition
▼

Le commutateur Externe est le plus courant en production. Il est lié directement à une carte réseau physique de l'hôte Hyper-V et permet aux machines virtuelles de communiquer avec le réseau local (LAN) et Internet comme n'importe quelle machine physique.

🍕 Analogie : C'est comme brancher chaque VM sur le même switch physique que les PC du bureau. Elles obtiennent une vraie adresse IP (via DHCP ou en statique) et sont accessibles depuis le réseau.
✅ Ce commutateur permet :
  • 🔸 Communication VM → Internet
  • 🔸 Communication VM → LAN (autres PCs, serveurs physiques)
  • 🔸 Communication VM → VM (via le réseau physique)
  • 🔸 Communication VM → Hôte Hyper-V
💡 En cochant "Autoriser le système d'exploitation de gestion à partager cette carte réseau", l'hôte Hyper-V lui-même obtient aussi une connexion réseau via ce commutateur.
02
Cas d'usage typiques du commutateur Externe
▼
ScénarioUtilisation
Serveur de production (DC, DHCP, RDS…)Doit être joignable depuis tout le réseau LAN
VM cliente rejoignant le domaine ADDoit accéder au contrôleur de domaine sur le LAN
Serveur Web accessible depuis InternetDoit avoir une IP routable
Lab avec accès Internet requisMises à jour Windows, téléchargements…
⚠️ Lier le commutateur externe à la bonne carte physique est essentiel. Si l'hôte a plusieurs cartes réseau, bien sélectionner celle reliée au réseau cible.

3. Commutateur Interne

03
🔗 Commutateur Interne — définition
▼

Le commutateur Interne crée un réseau isolé entre les VMs et l'hôte Hyper-V. Il n'est pas connecté à une carte réseau physique — le trafic reste entièrement confiné à l'hôte. Cependant, l'hôte lui-même fait partie du réseau, ce qui lui permet d'interagir avec les VMs.

🍕 Analogie : C'est un réseau privé dans lequel les VMs et l'ordinateur hôte peuvent se parler, mais sans aucune connection au monde extérieur. Comme un intranet d'appartement.
✅ Ce commutateur permet :
  • 🔸 Communication VM → VM
  • 🔸 Communication VM → Hôte Hyper-V
  • 🔸 Communication Hôte → VM
❌ Ce commutateur NE permet PAS :
  • 🔴 Accès des VMs à Internet
  • 🔴 Accès des VMs au LAN physique
💡 Une carte réseau virtuelle (vNIC) est automatiquement créée sur l'hôte lors de la création du commutateur interne. On peut lui attribuer une IP statique pour gérer les VMs depuis l'hôte.
04
Cas d'usage typiques du commutateur Interne
▼
ScénarioUtilisation
Lab de test isolé avec accès depuis l'hôteDéveloppeur voulant accéder aux VMs en SSH/RDP depuis son PC
Réseau de gestion Hyper-VL'hôte administre ses VMs sur un réseau dédié
Partage Internet par NATActiver le partage de connexion Windows (ICS) sur l'hôte pour donner Internet aux VMs via le commutateur interne
💡 Pour donner Internet aux VMs avec un commutateur interne, activer le Partage de connexion Internet (ICS) sur la carte physique de l'hôte et la partager vers la vNIC interne.

4. Commutateur Privé

05
🔒 Commutateur Privé — définition
▼

Le commutateur Privé est le plus restrictif des trois. Il isole totalement les VMs dans leur propre bulle : elles peuvent communiquer entre elles, mais ni avec l'hôte, ni avec le réseau physique, ni avec Internet.

🍕 Analogie : C'est une pièce fermée à clé dans laquelle les VMs peuvent se parler entre elles, mais personne de l'extérieur — pas même l'hôte — ne peut entrer ou sortir.
✅ Ce commutateur permet :
  • 🔸 Communication VM → VM uniquement
❌ Ce commutateur NE permet PAS :
  • 🔴 Accès des VMs à Internet
  • 🔴 Accès des VMs au LAN physique
  • 🔴 Accès des VMs à l'hôte Hyper-V
  • 🔴 Accès de l'hôte aux VMs
06
Cas d'usage typiques du commutateur Privé
▼
ScénarioUtilisation
Lab de cybersécurité (malware, CTF)Isoler totalement les VMs dangereuses pour ne pas contaminer le réseau
Test de communication inter-VMsVérifier qu'un protocole fonctionne entre deux VMs sans pollution réseau
Infrastructure AD ferméeDC + clients dans un réseau complètement isolé pour un examen ou une démo
⚠️ Contrairement au commutateur interne, aucune vNIC n'est créée sur l'hôte. L'hôte est complètement absent de ce réseau.

5. Tableau comparatif

Critère 🌐 Externe 🔗 Interne 🔒 Privé
VM → VM✅✅✅
VM → Hôte✅✅❌
VM → LAN physique✅❌❌
VM → Internet✅❌ (sauf ICS)❌
Lié à une carte réseau physique✅ Obligatoire❌❌
vNIC créée sur l'hôteOptionnelle✅ Automatique❌
Niveau d'isolationFaibleMoyenTotal
✅ Règle rapide : Externe = production / accès LAN · Interne = lab avec accès hôte · Privé = isolation totale (sécurité, tests dangereux).

6. Créer un commutateur virtuel

07
Via le Gestionnaire Hyper-V (interface graphique)
▼
Gestionnaire Hyper-V → (nom de l'hôte) → Action → Gestionnaire de commutateurs virtuels → Nouveau commutateur réseau virtuel

Choisissez le type souhaité (Externe / Interne / Privé) puis cliquez sur Créer un commutateur virtuel.

⚠️ Pour un commutateur Externe, sélectionnez la carte réseau physique cible dans la liste déroulante et décidez si l'hôte partage cette connexion.
08
Via PowerShell
▼

Créer les trois types de commutateurs en PowerShell :

# Commutateur Externe (lié à la carte physique "Ethernet") New-VMSwitch -Name "vSwitch-Externe" -NetAdapterName "Ethernet" -AllowManagementOS $true # Commutateur Interne New-VMSwitch -Name "vSwitch-Interne" -SwitchType Internal # Commutateur Privé New-VMSwitch -Name "vSwitch-Prive" -SwitchType Private
# Lister tous les commutateurs virtuels existants Get-VMSwitch # Connecter une VM à un commutateur Connect-VMNetworkAdapter -VMName "NomDeLaVM" -SwitchName "vSwitch-Externe" # Supprimer un commutateur virtuel Remove-VMSwitch -Name "vSwitch-Prive"
✅ Get-NetAdapter permet de lister les noms exacts des cartes réseau physiques disponibles sur l'hôte avant de créer un commutateur externe.

Architecture & Prérequis

01
Structure de l'infrastructure
▼

L'infrastructure utilisée dans cette procédure se compose de :

1 × SRV-DC-01 (AD + DNS)2 × SRV-HOTE (Hyper-V)1 × SRV-BROKER (RDS)1 × PC-CLI-01 (Windows 11)

Le flux typique est : Client → Broker → Hôte 01 ou 02, le tout sous le contrôle d'authentification du DC.

💡 Prérequis : Tous les serveurs doivent être joints au domaine avant de commencer l'installation RDS.

Installation du service Bureau à Distance

02
Ajouter les serveurs hôtes au Broker
▼

Sur le SRV-BROKER, se connecter avec tssr\Administrateur et ajouter les serveurs hôtes SRV-HOTE-01 et SRV-HOTE-02.

03
Lancer l'installation du service Bureau à Distance
▼

Dans le Gestionnaire de serveur, cliquer sur Installation du service Bureau à distance.

Sélectionner Déploiement standard deux fois de suite.

Suivre l'assistant pour configurer le RD Session Host et le RD Connection Broker.

⚠️
Échec d'actualisation — correction WinRM
▼

S'il y a une erreur échec d'actualisation après l'ajout du rôle :

Il faut rentrer la commande suivante dans PowerShell en administrateur sur les 2 SRV-HOTE et le SRV-BROKER :

Set-WSManInstance -ResourceURI winrm/config -ValueSet @{MaxEnvelopeSizekb = "600"}

Création de la Collection

04
Créer une collection dans Services Bureau à Distance
▼

Dans SRV-BROKER, aller dans Services de Bureau à Distance et créer une nouvelle collection.

05
Créer le groupe AD et l'associer à la collection
▼

Créer un groupe GG_Acces_Collection dans l'Active Directory et y ajouter les membres qui pourront accéder à la collection.

Revenir sur le Broker et ajouter le groupe GG précédemment créé.

DNS & Licences

06
Ajouter les hôtes au service DNS (Round Robin)
▼

Aller dans le DNS sur le SRV-DC-01 et créer 2 nouveaux hôtes avec le même nom, chacun pointant vers l'adresse IP d'un serveur hôte.

⚠️ Un enregistrement du même nom avec plusieurs IPs s'appelle Round Robin (ou Tourniquet). Cela répartit automatiquement les connexions entre les deux SRV-HOTE.
07
Gestionnaire de licences RDS
▼

Aller dans le gestionnaire de licences et configurer le serveur de licences.

Pour connecter plus de 2 utilisateurs sur le même serveur hôte, aller sur le SRV-BROKER → Collection → Modifier les paramètres de déploiement.

Connexion depuis le client

08
Se connecter depuis PC-CLI-01
▼

Sur le PC-CLI-01, afficher les entrées DNS pour vérifier la résolution :

ipconfig /displaydns

Ouvrir le Bureau à distance et se connecter avec :

Ordinateur = nom-collection.nom-domaineUtilisateur = membre de GG_Acces_Collection
💡 Pour connecter plusieurs utilisateurs simultanément, cocher la case (option n°3) dans les options avancées.

Modification de la Collection

09
Modifier les propriétés de la collection
▼

Depuis le SRV-BROKER, il est possible de modifier les paramètres de la collection à tout moment.

Modifier les éléments activés sur le bureau à distance (presse-papiers, imprimantes, sons...).

Passerelle & Certificats

10
Ajouter la passerelle RD Gateway
▼

Dans les paramètres de déploiement, ajouter la passerelle et renseigner le SRV-BROKER.

11
Créer les certificats SSL
▼

Créer les certificats depuis le menu de déploiement. Le nom du certificat doit être :

Nom du serveur.nom de domaine

Pour la Passerelle :

Pour l'accès Web :

✅ Les 2 certificats (Passerelle + Web Access) doivent apparaître avec un statut OK.

Connexion Web & RemoteApp

12
Connexion via le portail RD Web Access
▼

Depuis le PC client, ouvrir un navigateur et aller sur :

https://srv-broker.tssr.lab/rdweb
13
Publier des programmes RemoteApp
▼

Dans la collection, aller dans Programmes RemoteApp → Tâches → Publier les programmes.

Sur le PC Client, cliquer sur l'icône du programme voulu, attendre le téléchargement puis cliquer sur Conserver puis Ouvrir fichiers.

Disque de Profil Utilisateur

14
Créer et partager le dossier de profils
▼

Sur le SRV-DC-01, créer un dossier C:\profile_rds.

Partage SMB du dossier (partage simple).

15
Configurer les permissions NTFS pour les hôtes
▼

Dans les propriétés NTFS du dossier, choisir Type d'objet pour pouvoir chercher des ordinateurs.

Chercher les SRV-HOTE et leur attribuer le Contrôle Total.

16
Activer le Disque de Profil Utilisateur dans la collection
▼

Sur le SRV-BROKER, aller dans Collection → Tâches → Modifier propriétés.

Sélectionner Disque de Profil Utilisateur et renseigner le chemin UNC du partage \SRV-DC-01\profile_rds.

Valider, puis fermer les sessions utilisateurs connectés sur les SRV-HOTE. Se reconnecter depuis le PC Client.

Pour vérifier, aller dans le partage sur le SRV-DC-01 :

✅ Si tu vois un fichier .VHDX dans le dossier de partage, le disque de profil utilisateur est bien pris en charge.

1. Prérequis

01
Prérequis
▼
Serveur de fichiers dédié aux profils (SRV-DC-01) FSLogixAppsSetup.exe installé sur chaque Session Host Domaine Active Directory tssr.lab opérationnel
💡 Télécharger FSLogix : https://aka.ms/fslogix_download

2. Préparer le partage réseau

02
Créer et partager le dossier FSLogix
▼

Sur SRV-DC-01, créer le dossier :

C:\FSLogix

Partager le dossier sous le nom FSLogix :

\\SRV-DC-01\FSLogix

Permissions NTFS requises :

PrincipalAccèsS'applique à
SystèmeContrôle totalCe dossier, sous-dossiers et fichiers
AdministrateurContrôle totalCe dossier, sous-dossiers et fichiers
tssr\AdministrateursContrôle totalCe dossier, sous-dossiers et fichiers
CREATEUR PROPRIETAIREModificationLes sous-dossiers et les fichiers seulement
tssr\UtilisateursModificationCe dossier seulement

3. Importer les templates ADMX FSLogix

03
Créer le Central Store dans SYSVOL
▼
⚠️ Par défaut, le dossier PolicyDefinitions n'existe pas dans SYSVOL. Il faut créer le Central Store manuellement.

Naviguer vers :

\\tssr.lab\SYSVOL\tssr.lab\Policies\

Créer un nouveau dossier nommé :

PolicyDefinitions
04
Copier les templates Windows natifs
▼
⚠️ Indispensable pour que toutes les GPO Windows standard restent disponibles dans l'éditeur de GPO.

Sur SRV-DC-01, copier tout le contenu de :

C:\Windows\PolicyDefinitions

Coller dans :

\\tssr.lab\SYSVOL\tssr.lab\Policies\PolicyDefinitions\
05
Copier les fichiers FSLogix ADMX
▼

Dans le ZIP FSLogix extrait, trouver les fichiers dans le dossier templates\ :

fslogix.admxfslogix.adml

Copier fslogix.admx vers :

\\tssr.lab\SYSVOL\tssr.lab\Policies\PolicyDefinitions\

Copier fslogix.adml vers :

\\tssr.lab\SYSVOL\tssr.lab\Policies\PolicyDefinitions\en-US\
⚠️ Les templates FSLogix sont uniquement en anglais. Le fichier .adml doit aller dans en-US et non fr-FR.
✅ Fermer et rouvrir l'éditeur de GPO pour voir apparaître les paramètres FSLogix.

4. Configurer FSLogix via GPO

06
Créer et configurer la GPO FSLogix
▼

Créer une GPO appliquée sur l'OU contenant les Session Hosts, puis naviguer dans :

Configuration ordinateur → Modèles d'administration → FSLogix → Profile Containers

Paramètres à configurer :

ParamètreValeur
EnabledActivé
VHD Locations\\SRV-DC-01\FSLogix
Delete Local Profile When VHD Should ApplyActivé
Is Dynamic (VHD)Activé
Size In MBs10240 (10 Go — à adapter)
Profile TypeRead / Write profile - fallback to Read Only
⚠️ Sans Is Dynamic (VHD), FSLogix crée un VHDX de taille maximale dès la première connexion (30 Go par défaut). Avec cette option, le fichier commence petit et grandit selon les besoins réels.

5. Fermeture automatique des sessions RemoteApp

07
Configurer la fermeture automatique des sessions RemoteApp
▼
⚠️ Sans ce paramètre, quand un utilisateur ferme une RemoteApp, la session reste ouverte en état déconnecté et le VHDX reste monté. Un autre utilisateur ne peut alors pas monter ce même VHDX.

Dans la même GPO :

Configuration ordinateur → Modèles d'administration → Composants Windows → Services Bureau à distance → Hôte de session Bureau à distance → Delais d'expiration des sessions → Définir la limite de temps pour la fermeture de sessions RemoteApp
ParamètreValeur
Définir la limite de temps pour la fermeture de sessions RemoteAppImmédiatement
✅ Dès que l'utilisateur ferme la RemoteApp, la session est fermée et le VHDX FSLogix est démonté proprement.

6. Appliquer & Vérifier

08
Appliquer la GPO et vérifier
▼

Sur chaque Session Host :

gpupdate /force

Vérifier que la GPO est appliquée :

gpresult /r
✅ La GPO FSLogix doit apparaître dans la liste des GPO appliquées.

Connecter un utilisateur test et vérifier que le dossier + le fichier .vhdx sont créés dans \\SRV-DC-01\FSLogix.

Ouvrir l'Observateur d'événements sur le Session Host :

Journaux des applications et des services → Microsoft → FSLogix → Apps → Operational
✅ Le message Profile successfully loaded doit apparaître à la connexion.

Vérifier le chemin du profil dans une session utilisateur :

echo %userprofile%
✅ Résultat attendu : C:\Users\nomdutilisateur (et non C:\Users\TEMP).
⚠️
Points clés à retenir
▼
⛔ Pas de sessions simultanées sur plusieurs Session Hosts pour le même utilisateur 📁 Un seul VHDX par utilisateur dans le partage 💾 Sauvegardes régulières du partage FSLogix obligatoires
⚠️ Si plusieurs VHDX apparaissent pour le même utilisateur, vérifier les permissions NTFS sur le partage. Les VHDX contiennent l'intégralité des profils utilisateurs — les sauvegardes sont critiques.

Qu'est-ce que Fail2ban ?

Fail2ban est un système de prévention des intrusions (IPS) qui analyse les logs des services (SSH, HTTP, FTP…) en temps réel pour détecter les comportements malveillants et bloquer automatiquement les adresses IP responsables.

Contrairement à un pare-feu traditionnel, Fail2ban est adaptatif : il apprend des comportements anormaux (tentatives de connexion échouées répétées, requêtes malveillantes…) et réagit automatiquement.

Fonctionnement — 3 étapes clés

Fail2ban fonctionne en trois étapes distinctes :

1️⃣ Surveillance

  • Analyse en continu des logs des services (SSH, Apache, Nginx, FTP…)
  • Repère les comportements suspects : échecs de connexion, requêtes malveillantes, patterns anormaux
  • Utilise des expressions régulières (regex) pour identifier les tentatives malveillantes

2️⃣ Détection

  • Dès qu'un seuil de tentatives est atteint (ex: 5 échecs de connexion SSH)
  • L'IP est identifiée comme malveillante
  • Déclenche une action automatique et immédiate

3️⃣ Action

  • L'IP est automatiquement bloquée via iptables/nftables pour une durée configurable
  • Autres actions possibles : envoi d'email, logging personnalisé, scripts personnalisés

Cas d'usage réels

📌 Exemple 1 — Protection SSH

Attaquant lance 50 tentatives de connexion SSH en 1 minute avec des mots de passe aléatoires. Fail2ban détecte 5 échecs en 10 minutes, bloque l'IP pendant 1 heure. Plus aucune tentative réussie.

📌 Exemple 2 — Protection Web (WordPress)

Scanneur automatisé teste des milliers de chemins URL (ex: /wp-admin, /config.php). Fail2ban détecte les erreurs 404 répétées, bloque le scanneur.

📌 Exemple 3 — Protection API

Bot tente 100 requêtes API par seconde. Fail2ban décode ce pattern, bloque l'adresse IP. Les utilisateurs légitimes ne sont pas affectés.

Architecture de Fail2ban

Fail2ban est composé de plusieurs modules interconnectés :

ComposantRôle
BackendLit les logs (syslog, fichiers…)
FiltersPatterns regex pour détecter les comportements malveillants
ActionsRéactions automatiques (blocage IP, email, webhooks…)
JailsConteneurs combinant filters + actions pour un service

Configuration — Structure des fichiers

La configuration est modularisée dans /etc/fail2ban/ :

FichierRôle
jail.confConfiguration globale (durée de ban, seuils…)
jail.d/*.confConfigurations spécifiques par service (SSH, Apache…)
filter.d/*.confPatterns regex pour détecter les attaques
action.d/*.confActions à exécuter (iptables, email…)
💡 La clé de la flexibilité de Fail2ban réside dans ces fichiers de configuration modulaires. Vous pouvez créer vos propres jails, filters et actions.

Paramètres importants

Voici les paramètres clés que vous rencontrerez :

ParamètreSignificationExemple
bantimeDurée du ban en secondes3600 = 1 heure
findtimeFenêtre de temps pour compter les tentatives600 = 10 minutes
maxretryNombre d'erreurs avant ban5 = 5 tentatives échouées
portPort du service à protégerssh = port 22
logpathChemin du fichier de logs à surveiller/var/log/auth.log
⚠️ Exemple concret : avec bantime=3600, findtime=600 et maxretry=5, Fail2ban banne une IP pendant 1 heure si elle accumule 5 tentatives échouées en 10 minutes.

Avantages et limitations

✅ Avantages

  • Léger — Faible consommation CPU/mémoire
  • Flexible — Customisable pour n'importe quel service
  • Réactif — Détecte et bloque en quasi temps réel
  • Pas d'intervention manuelle — Tout est automatisé
  • Logs détaillés — Traçabilité complète des actions

❌ Limitations

  • Pas de protection contre les attaques distribuées (DDoS) — Les attaquants utilisent des centaines d'IPs différentes
  • Dépend des logs — Si le log n'enregistre pas l'erreur, Fail2ban ne le voit pas
  • Les vrais attaquants contournent facilement — Avec des proxies ou botnets
  • Peut créer des faux positifs — Un utilisateur oubliant son mot de passe peut se bloquer soi-même
💡 Fail2ban est une première couche de défense, pas une solution miracle. À combiner avec un VPN, un reverse proxy, une authentification forte (SSH keys)…
01
Installation de Fail2ban
▼

Installez Fail2ban et ses dépendances :

sudo apt update sudo apt install -y fail2ban fail2ban-doc # Vérifiez l'installation sudo systemctl status fail2ban
💡 Fail2ban est disponible dans tous les dépôts des principales distributions Linux.
02
Structure des fichiers de configuration
▼

Explorez la structure de configuration :

ls -la /etc/fail2ban/ tree /etc/fail2ban/ # si tree est installé

Fichiers importants :

FichierRôle
/etc/fail2ban/jail.confConfiguration globale par défaut
/etc/fail2ban/jail.localVos personnalisations (prend priorité)
/etc/fail2ban/jail.d/Configurations spécifiques par service
/etc/fail2ban/filter.d/Patterns regex pour détecter les attaques
/etc/fail2ban/action.d/Actions (blocage iptables, emails…)
⚠️ Ne modifiez jamais jail.conf directement. Créez plutôt jail.local pour vos personnalisations.
03
Créer une prison (jail) pour SSH
▼

Créez un fichier de configuration personnalisé pour protéger SSH :

sudo nano /etc/fail2ban/jail.d/myconf.conf

Ajoutez le contenu suivant :

[ssh] enabled = true bantime = 1h maxretry = 3 port = ssh filter = sshd logpath = /var/log/auth.log

Explication des paramètres :

  • enabled = true → Active cette prison
  • bantime = 1h → Bannit l'IP pendant 1 heure
  • maxretry = 3 → Ban après 3 tentatives échouées
  • port = ssh → Port SSH (22 par défaut)
  • filter = sshd → Filtre SSH prédéfini
  • logpath = /var/log/auth.log → Fichier de logs SSH
ℹ️ Configuration essentielle pour protéger SSH. Les autres options sont optionnelles et peuvent être ajoutées selon vos besoins.
04
Vérifier la syntaxe et redémarrer
▼

Vérifiez que votre configuration est correcte :

sudo fail2ban-client -d sudo fail2ban-client validate-config

Si tout est bon, redémarrez Fail2ban :

sudo systemctl restart fail2ban sudo systemctl status fail2ban
05
Vérifier les prisons actives
▼

Consultez l'état de votre prison SSH :

sudo fail2ban-client status sudo fail2ban-client status sshd

Exemple de sortie :

Status for the jail: sshd ├─ Filter │ ├─ Currently failed: 0 │ ├─ Total failed: 0 │ └─ Journal matches: 0 └─ Actions ├─ Currently banned: 0 └─ Total banned: 0
💡 Currently banned = IPs actuellement bloquées. Total banned = historique total.
06
Tester l'attaque (simulation)
▼

Simulez une attaque en lançant plusieurs tentatives SSH échouées depuis une autre machine :

# Effectuez 3+ tentatives SSH avec un mauvais mot de passe ssh root@votre_serveur # ssh root@votre_serveur # ssh root@votre_serveur #
⚠️ Attention : la 3e tentative échouée va bloquer votre IP ! Vérifiez depuis le serveur que l'IP est bien bannée :
sudo fail2ban-client status sshd sudo iptables -L -n | grep votre_ip
07
Débannir une IP (manuellement)
▼

Si vous êtes accidentellement banni, débannissez votre IP :

# Débannir une IP spécifique sudo fail2ban-client set sshd unbanip 192.168.1.100 # Débannir toutes les IPs de la prison sshd sudo fail2ban-client set sshd unbanip --all # Vérifier que c'est bien débannie sudo fail2ban-client status sshd
08
Configurer des exclusions (whitelist)
▼

Pour éviter de vous bannir vous-même, ajoutez votre IP ou sous-réseau à la whitelist :

sudo nano /etc/fail2ban/jail.d/myconf.conf

Configuration essentielles + optionnels :

# Jail SSH - Configuration essentielle [ssh] enabled = true bantime = 1h maxretry = 3 port = ssh filter = sshd logpath = /var/log/auth.log # OPTIONNEL : Ajouter une whitelist ignoreip = 127.0.0.1/8 192.168.1.0/24
💡 Ajoutez ignoreip pour protéger votre propre réseau. Par exemple : 192.168.1.0/24 protège tout le sous-réseau 192.168.1.x
09
Surveiller les logs en temps réel
▼

Consultez les logs de Fail2ban pour voir ce qui se passe :

sudo tail -f /var/log/fail2ban.log sudo tail -50 /var/log/fail2ban.log sudo grep sshd /var/log/fail2ban.log | tail -20

Exemple de log lors d'un ban :

2025-01-21 15:42:01,123 fail2ban.filter [1234]: INFO [sshd] Found 192.168.1.100 2025-01-21 15:42:09,012 fail2ban.actions [1234]: NOTICE [sshd] Ban 192.168.1.100
10
Configuration avancée — Personnaliser les actions
▼

Par défaut, Fail2ban bloque les IPs via iptables. Vous pouvez ajouter des actions supplémentaires :

sudo nano /etc/fail2ban/jail.d/myconf.conf
# Configuration essentielle [ssh] enabled = true bantime = 1h maxretry = 3 port = ssh filter = sshd logpath = /var/log/auth.log # OPTIONNEL : Ajouter des actions personnalisées # Envoyer un email à chaque ban action = iptables-multiport[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, [email protected]]

Actions disponibles (optionnelles) :

  • iptables-multiport → Blocage via iptables (défaut)
  • sendmail-whois → Email avec infos du hacker
  • sendmail → Email simple
  • slack → Notification Slack
💡 L'action par défaut (iptables) est suffisante pour la plupart des cas. Les autres actions sont optionnelles.
11
Récupérer et débannir les IPs
▼

Visualisez et gérez les IPs bannies :

# Voir les IPs actuellement bannies sudo fail2ban-client status sshd # Via iptables sudo iptables -L -n | grep f2b-sshd # Débannir une IP spécifique sudo fail2ban-client set sshd unbanip 192.168.1.100 # Débannir toutes les IPs sudo fail2ban-client set sshd unbanip --all
12
Dépannage courant
▼

La prison sshd n'apparaît pas :

sudo fail2ban-client -d sudo systemctl restart fail2ban

Fail2ban ne détecte aucune tentative :

cat /var/log/auth.log | tail -20 journalctl -u ssh -n 20

Le blocage ne fonctionne pas :

sudo iptables -L -n -v | grep fail2ban
ℹ️ Consultez toujours /var/log/fail2ban.log en cas de problème.
01
Installer Nginx
▼

Mettez à jour les dépôts et installez le paquet Nginx :

sudo apt update && sudo apt install nginx -y
02
Comprendre l'arborescence
▼

Voici les deux répertoires principaux à connaître :

  • /var/www : Contient les fichiers sources des sites web (pages HTML, images, etc.).
  • /etc/nginx : Contient les fichiers de configuration du serveur et des sites.
03
Préparer le répertoire du site
▼

On commence par se rendre dans le répertoire web et nettoyer l'existant si besoin :

cd /var/www
sudo rm -rf html

Créez la structure pour votre nouveau site (ex: c2rt) :

sudo mkdir -p c2rt/html
04
Créer la page d'accueil
▼

Créez un fichier index.html de base pour tester :

sudo nano c2rt/html/index.html

Ajoutez un code HTML simple, par exemple :

<h1>Bienvenue sur le site c2rt.lab</h1>
05
Configurer le Virtual Host
▼

Allez dans le dossier des configurations disponibles et supprimez la config par défaut :

cd /etc/nginx/sites-available
sudo rm default

Créez le fichier de configuration pour votre site :

sudo nano c2rt.lab
06
Paramétrage du bloc serveur
▼

Copiez et adaptez la configuration suivante :

server { listen 80; server_name c2rt.lab; root /var/www/c2rt/html; index index.html; location / { try_files $uri $uri/ =404; } }
Explication des lignes :
- listen 80 : Port d'écoute (HTTP).
- server_name : Nom de domaine associé.
- root : Emplacement des fichiers du site.
- index : Fichier chargé par défaut.
- location / : Définit une règle pour toutes les URL commençant par /.
- try_files : C'est la logique de recherche des fichiers. Si pas de fichier -> Erreur 404.
07
Activer le site
▼

Créez un lien symbolique vers le dossier sites-enabled pour activer la config :

sudo ln -s /etc/nginx/sites-available/c2rt.lab /etc/nginx/sites-enabled/c2rt.lab

Supprimez le lien par défaut dans sites-enabled s'il existe :

cd /etc/nginx/sites-enabled && sudo rm default
08
Vérification et redémarrage
▼

Testez la syntaxe de la configuration :

sudo nginx -t

Si tout est OK, rechargez Nginx :

sudo systemctl reload nginx
09
Identifier l'IP du serveur
▼

Récupérez l'adresse IP de votre serveur Ubuntu pour le test final :

ip a
10
Enregistrement DNS Local (Windows)
▼

Pour faire l'enregistrement DNS local, allez dans C:\Windows\System32\drivers\etc, ouvrez le Bloc-notes en tant qu'administrateur et ouvrez le fichier hosts (sans extension de fichier).

Ajoutez la ligne suivante à la fin (en remplaçant par l'IP de votre serveur) :

172.31.245.81 c2rt.lab
✅ Vous pouvez maintenant taper http://c2rt.lab dans votre navigateur !
01
Installation de BIND9
▼

Installez BIND9 et les outils de gestion DNS :

sudo apt update sudo apt install -y bind9 bind9-utils bind9-doc dnsutils sudo systemctl status bind9
💡 bind9-utils fournit des outils comme dig, nslookup et host pour tester votre serveur DNS.
02
Fichiers de configuration BIND9
▼

BIND9 utilise plusieurs fichiers de configuration situés dans /etc/bind/ :

FichierRôle
/etc/bind/named.confFichier principal qui inclut les autres
/etc/bind/named.conf.optionsOptions globales du serveur (forwarders, ACLs…)
/etc/bind/named.conf.localDéclaration des zones locales
/var/lib/bind/Répertoire contenant les fichiers de zones
ls -la /etc/bind/ cat /etc/bind/named.conf
03
Créer une zone DNS
▼

Créez un fichier de zone pour votre domaine. Exemple : créer une zone pour exemple.lab

Étape 1 : Déclarer la zone dans named.conf.local

sudo nano /etc/bind/named.conf.local

Ajoutez à la fin du fichier :

zone "exemple.lab" { type master; file "/var/lib/bind/exemple.lab.zone"; allow-transfer { any; }; };
💡 type master signifie que ce serveur est authoritative (maître) pour cette zone.

Étape 2 : Créer le fichier de zone

sudo nano /var/lib/bind/exemple.lab.zone

Remplissez le fichier avec :

$TTL 86400 @ IN SOA ns1.exemple.lab. admin.exemple.lab. ( 2024010101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) IN NS ns1.exemple.lab. IN MX 10 mail.exemple.lab. ns1 IN A 192.168.1.50 mail IN A 192.168.1.51 www IN A 192.168.1.52 app IN A 192.168.1.53 @ IN A 192.168.1.54
⚠️ Important : Les enregistrements SOA et NS sont obligatoires pour déclarer une zone. Remplacez les IP par vos vraies adresses.
04
Vérifier la syntaxe
▼

Vérifiez que votre configuration est correcte :

# Vérifier la syntaxe du fichier named.conf sudo named-checkconf /etc/bind/named.conf # Vérifier la syntaxe du fichier de zone sudo named-checkzone exemple.lab /var/lib/bind/exemple.lab.zone
💡 Ces commandes vous aideront à identifier les erreurs avant de relancer BIND9.
05
Corriger les permissions
▼

BIND9 s'exécute sous l'utilisateur bind. Il faut que ce dernier puisse lire les fichiers de zone :

sudo chown -R bind:bind /var/lib/bind/ sudo chmod 755 /var/lib/bind/ sudo chmod 644 /var/lib/bind/exemple.lab.zone
06
Redémarrer BIND9
▼

Redémarrez le service BIND9 pour charger la nouvelle configuration :

sudo systemctl restart bind9 sudo systemctl status bind9
# Vérifier que BIND9 écoute sur le port 53 sudo netstat -tlnp | grep :53 # ou sudo ss -tlnp | grep :53
07
Tester votre serveur DNS
▼

Testez que votre serveur DNS fonctionne correctement :

Sur la machine elle-même

# Interroger le serveur DNS local dig @localhost www.exemple.lab +short nslookup www.exemple.lab localhost host www.exemple.lab 127.0.0.1

Depuis une autre machine du réseau

# Remplacez 192.168.1.50 par l'IP de votre serveur DNS dig @192.168.1.50 www.exemple.lab +short nslookup www.exemple.lab 192.168.1.50
✅ Si vous voyez l'IP (ex: 192.168.1.52), c'est bon ! Votre serveur DNS répond correctement.
08
Configurer le serveur comme DNS client
▼

Pour que d'autres machines utilisent votre serveur DNS, configurez-les pour utiliser son IP :

Sous Linux (Netplan)

sudo nano /etc/netplan/01-netcfg.yaml
network: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [192.168.1.50] # IP de votre serveur DNS search: [exemple.lab]

Appliquer la configuration

sudo netplan apply cat /etc/resolv.conf # Vérifier le changement

Sous Windows

Paramètres → Réseau et Internet → Propriétés Ethernet → Modifier → Paramètres DNS → Manuel

Entrez l'IP du serveur DNS (ex: 192.168.1.50)

09
Ajouter des enregistrements supplémentaires
▼

Vous pouvez ajouter différents types d'enregistrements dans votre zone :

Types d'enregistrements courants

TypeExempleUtilité
Awww IN A 192.168.1.52Associer un domaine à une adresse IPv4
AAAAwww IN AAAA 2001:db8::1Associer un domaine à une adresse IPv6
CNAMEblog IN CNAME www.exemple.lab.Alias pour un autre domaine
MXIN MX 10 mail.exemple.lab.Serveur de mail pour le domaine
NSIN NS ns1.exemple.lab.Serveur DNS authoritative
TXTIN TXT "v=spf1 mx ~all"Texte libre (SPF, DKIM, DMARC…)

Exemple complet avec différents types

$TTL 86400 @ IN SOA ns1.exemple.lab. admin.exemple.lab. ( 2024010102 ; Serial (AUGMENTEZ CE CHIFFRE à chaque modification) 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) IN NS ns1.exemple.lab. IN MX 10 mail.exemple.lab. IN TXT "v=spf1 mx ~all" ns1 IN A 192.168.1.50 mail IN A 192.168.1.51 www IN A 192.168.1.52 app IN A 192.168.1.53 @ IN A 192.168.1.54 blog IN CNAME www.exemple.lab. ftp IN CNAME www.exemple.lab.
⚠️ Important : Augmentez le numéro de Serial à chaque modification de la zone, sinon les autres serveurs DNS ne verront pas les changements !

Appliquer les changements

sudo named-checkzone exemple.lab /var/lib/bind/exemple.lab.zone sudo systemctl reload bind9
10
Configurer les forwarders (optionnel)
▼

Si vous voulez que votre serveur DNS transmette les requêtes qu'il ne peut pas résoudre à d'autres serveurs DNS publics :

sudo nano /etc/bind/named.conf.options

Modifiez la section forwarders :

options { directory "/var/cache/bind"; # Transférer les requêtes non résolues aux DNS publics forwarders { 8.8.8.8; # Google DNS 8.8.4.4; # Google DNS 2 1.1.1.1; # Cloudflare DNS }; # Résoudre les zones locales en priorité recursion yes; allow-recursion { 127.0.0.1; 192.168.1.0/24; }; };
sudo named-checkconf /etc/bind/named.conf sudo systemctl reload bind9
11
Logs et dépannage
▼

En cas de problème, consultez les logs BIND9 :

# Voir les logs en temps réel sudo journalctl -u bind9 -f # Voir les derniers logs sudo journalctl -u bind9 -n 50 # Voir les logs du system tail -50 /var/log/syslog | grep named

Erreurs courantes

Erreur : named[xxx]: zone exemple.lab/IN: loading from master file /var/lib/bind/exemple.lab.zone failed: file not found

Solution : Vérifiez que le fichier existe et que le chemin dans named.conf.local est correct.

Erreur : permission denied quand BIND9 redémarre

Solution : Vérifiez que les permissions sont correctes : sudo chown bind:bind /var/lib/bind/

Erreur : dig n'affiche pas de réponse

Solution : Vérifiez que BIND9 écoute sur le port 53 : sudo ss -tlnp | grep :53

01
C'est quoi un CMS ?
▼

Un CMS (Content Management System) est un Système de Gestion de Contenu. C'est un logiciel qui permet de concevoir, gérer et mettre à jour des sites web de manière dynamique, sans avoir besoin de coder chaque page à la main.

💡 WordPress est le CMS le plus utilisé au monde (plus de 40% du web).
02
Comprendre les Stacks : LEMP vs LAMP
▼

Pour faire tourner un CMS comme WordPress, il faut un ensemble de logiciels appelé "Stack".

Stack LEMP

Linux (OS)
Engine-X (Nginx)
MariaDB (Base de données)
PHP (Langage)

Stack LAMP

Linux (OS)
Apache (Serveur Web)
MariaDB (Base de données)
PHP (Langage)

Ici, nous installons Nginx, installez-le avec la commande suivante :

sudo apt install nginx
03
Installer PHP et ses dépendances
▼

WordPress nécessite PHP et plusieurs modules spécifiques pour traiter les images, les scripts et les connexions :

sudo apt install php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-zip

Vérifiez le status du service (adaptez la version, ex: 8.3) :

sudo systemctl status php8.3-fpm.service
04
Installer et configurer MariaDB
▼

Installez le serveur de base de données (version améliorée de MySQL) :

sudo apt install mariadb-server

Créez un mot de passe root si nécessaire et connectez-vous :

sudo passwd
su -
mysql -u root -p
05
Créer la base de données WordPress
▼

Exécutez ces requêtes SQL pour préparer le terrain :

CREATE DATABASE Wordpress; CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'XXXX'; GRANT ALL PRIVILEGES ON Wordpress.* TO 'wordpressuser'@'localhost'; FLUSH PRIVILEGES; EXIT;

Notez bien : Base = Wordpress | User = wordpressuser | Pass = XXXX

06
Télécharger et extraire WordPress
▼

On télécharge la dernière version dans le dossier temporaire :

cd /tmp
sudo wget https://wordpress.org/latest.zip

On décompresse l'archive directement dans le répertoire web :

sudo apt install unzip
sudo unzip latest.zip -d /var/www/
07
Droits d'accès (Permissions)
▼

Donnez la propriété du dossier à l'utilisateur www-data (le serveur web) pour qu'il puisse écrire les fichiers :

sudo chown -R www-data:www-data /var/www/wordpress/
08
Configuration du Virtual Host Nginx
▼

Créez le fichier de configuration de votre site :

sudo nano /etc/nginx/sites-available/wordpress.c2rt.lab

Insérez ce bloc de configuration :

server { listen 80; server_name wordpress.c2rt.lab; root /var/www/wordpress; index index.html index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } }
09
Activation et rechargement
▼

Activez le site via un lien symbolique et redémarrez Nginx :

sudo ln -s /etc/nginx/sites-available/wordpress.c2rt.lab /etc/nginx/sites-enabled/wordpress.c2rt.lab
sudo systemctl reload nginx
10
Finalisation via le navigateur
▼

Accédez à l'IP de votre serveur dans un navigateur et suivez l'assistant :

Langue : Français
Base : Wordpress
Utilisateur : wordpressuser
MDP : XXXX
✅ Installation terminée ! Votre site est prêt.
01
Mises à jour & Installation LAMP
▼

Commencez par mettre à jour le système et installer les composants de la stack LAMP :

sudo apt update && sudo apt upgrade -y
sudo apt install apache2 php php-mysql libapache2-mod-php -y
sudo apt install mariadb-server mariadb-client -y

Sécurisez votre installation MariaDB :

sudo mysql_secure_installation
02
Créer la base de données WordPress
▼

Connectez-vous à MariaDB :

sudo mysql -u root -p

Exécutez les requêtes SQL suivantes (pensez à remplacer MOT_DE_PASSE) :

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'MOT_DE_PASSE'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost'; FLUSH PRIVILEGES; EXIT;
03
Télécharger et installer WordPress
▼

Téléchargez et extrayez la dernière version de WordPress :

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz
sudo mv wordpress /var/www/html/
04
Droits et permissions
▼

Configurez les permissions pour qu'Apache puisse gérer les fichiers :

sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress/ -type f -exec chmod 644 {} \;
05
Configurer le VirtualHost Apache
▼

Créez le fichier de configuration pour votre site c4rt.lab :

sudo nano /etc/apache2/sites-available/c4rt.lab.conf

Collez la configuration suivante :

<VirtualHost *:80> ServerName c4rt.lab ServerAlias www.c4rt.lab DocumentRoot /var/www/html/wordpress <Directory /var/www/html/wordpress> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/c4rt.lab-error.log CustomLog ${APACHE_LOG_DIR}/c4rt.lab-access.log combined </VirtualHost>
06
Activation et rechargement
▼

Activez le nouveau site, le module rewrite et redémarrez Apache :

sudo a2ensite c4rt.lab.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
07
Finalisation via le navigateur
▼

Ouvrez votre navigateur sur http://c4rt.lab et suivez l'assistant d'installation (choisir le titre du site, l'admin et le mot de passe).

⚠️ Attention : Si vous tombez sur la page par défaut d'Apache au lieu de l'installation WordPress, essayez d'utiliser l'URL complète car le dossier a été déplacé dans /var/www/html/wordpress/ :
http://c4rt.lab/wordpress
✅ Votre site WordPress sous Apache est maintenant opérationnel !
01
Identifier le fichier de configuration
▼

Sur Ubuntu Server, la configuration réseau se trouve dans le dossier /etc/netplan/. Le fichier se nomme généralement 50-cloud-init.yaml ou 01-netcfg.yaml.

ls /etc/netplan/
02
Modifier le fichier YAML
▼

Ouvrez le fichier avec l'éditeur nano :

sudo nano /etc/netplan/50-cloud-init.yaml

Modifiez le contenu en respectant scrupuleusement les indentations (espaces) :

network: version: 2 ethernets: eth0: dhcp4: false addresses: - 172.31.245.80/20 routes: - to: default via: 172.31.240.1 nameservers: addresses: - 8.8.8.8 - 1.1.1.1
03
Appliquer la configuration
▼

Une fois le fichier enregistré (Ctrl+O, Entrée, Ctrl+X), appliquez les changements :

sudo netplan apply
💡 Si vous êtes à distance via SSH, utilisez sudo netplan try qui annulera les changements après 120s si la connexion est perdue.
04
Vérifier les changements
▼

Vérifiez que la nouvelle adresse IP est bien appliquée sur l'interface :

ip a
01
Ouvrir le fichier des interfaces
▼

Sur Debian, la configuration réseau se gère traditionnellement via le fichier /etc/network/interfaces.

sudo nano /etc/network/interfaces
02
Modifier la configuration
▼

Adaptez le fichier pour passer d'une configuration DHCP à une configuration statique :

auto eth0 iface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 1.1.1.1
⚠️ Vérifiez bien le nom de votre interface (ex: eth0, ens33, enp0s3) avec la commande ip a avant de modifier le fichier.
03
Redémarrer le service réseau
▼

Pour appliquer les changements sans redémarrer la machine entière :

sudo systemctl restart networking

Ou si vous préférez redémarrer l'interface spécifiquement :

sudo ifdown eth0 && sudo ifup eth0
04
Vérification
▼

Vérifiez que la nouvelle adresse est bien active :

ip a
01
Générer les clés sur le client
▼

Sur votre poste client (Windows en PowerShell Admin ou Linux), générez votre paire de clés :

ssh-keygen

Ou pour une clé RSA 4096 bits plus robuste :

ssh-keygen -b 4096

Appuyez sur Entrée pour l'emplacement par défaut et saisissez une passphrase (recommandé).

02
Emplacement des clés
▼

Vos clés sont stockées dans le dossier caché .ssh :

  • Windows : C:\Users\MartinDepanne\.ssh\id_ed25519 (ou id_rsa)
  • Linux : /home/MartinDepanne/.ssh/
⚠️ Ne partagez JAMAIS votre clé privée (sans extension). Seule la clé publique (.pub) doit être envoyée sur les serveurs.
03
Préparer le serveur distant
▼

Vérifiez si le dossier .ssh existe sur le serveur. S'il n'existe pas, créez-le depuis le client :

ssh username@ip_du_serveur "mkdir -p ~/.ssh && chmod 700 ~/.ssh"
04
Copier la clé publique sur le serveur
▼

Depuis Windows :

scp "C:\Users\MartinDepanne\.ssh\id_ed25519.pub" username@ip_du_serveur:/home/MartinDepanne/.ssh/

Ou pour l'ajouter directement à la suite du fichier existant :

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh username@ip_du_serveur "cat >> ~/.ssh/authorized_keys"

Depuis Linux :

ssh-copy-id utilisateur@serveur

Ou manuellement :

cat ~/.ssh/id_ed25519.pub | ssh username@ip_du_serveur "cat >> ~/.ssh/authorized_keys"
05
Désactiver la connexion par mot de passe
▼

Pour forcer l'usage des clés, modifiez la configuration SSH du serveur :

sudo nano /etc/ssh/sshd_config

Cherchez et modifiez la ligne suivante :

PasswordAuthentication no

Supprimez également le fichier de config cloud-init s'il existe :

cd /etc/ssh/sshd_config.d/ && sudo rm 50-cloud-init.conf
sudo systemctl restart ssh
🎁
BONUS : Récupérer une clé depuis le serveur
▼

Si vous avez bloqué l'accès par mot de passe mais souhaitez ajouter un nouveau client, vous pouvez aller chercher la clé générée sur le nouveau client depuis le serveur :

Client Linux (avec serveur SSH installé) :

ssh nom_user_client@ip_client "cat ~/.ssh/id_clef.pub" >> ~/.ssh/authorized_keys

Client Windows (avec serveur SSH installé) :

ssh nom_user_client@ip_client "type C:/users/MartinDepanne/.ssh/id_clef.pub" >> ~/.ssh/authorized_keys

1. Les Racines — L'ère Unix (Années 60 - 80)

Avant l'ordinateur personnel, l'informatique était une affaire de colosses. Unix est né en 1969 aux Laboratoires Bell (AT&T) — bien avant Windows, bien avant le PC.

L'âge d'or dans les universités américaines

Dans les années 70 et 80, Unix n'était pas un produit de consommation, mais un outil de recherche. AT&T a distribué le code source d'Unix aux grandes universités pour presque rien. Les étudiants et chercheurs (notamment à Berkeley avec la version BSD) ont modifié le code, ajouté des fonctionnalités, et créé les protocoles qui font l'Internet d'aujourd'hui, comme le TCP/IP. On l'utilisait sur des Mainframes — ordinateurs géants occupant des pièces entières — pour calculer des trajectoires, gérer des bases de données ou faire de la recherche nucléaire.

2. La Révolte — GNU et Linus Torvalds

Vers 1980, Unix devient propriétaire : AT&T commence à facturer très cher et interdit de voir le code source.

🧔 1983 — Richard Stallman

Il lance le projet GNU. Idée radicale : créer un système Libre — lisible, modifiable, partageable. Il écrit presque tout, sauf le cœur du système.

👨‍💻 1991 — Linus Torvalds

Cet étudiant finlandais veut un système Unix sur son PC personnel, mais les licences sont trop chères. Il écrit un Noyau (Kernel) et le publie sur internet.

🔀 La fusion — GNU/Linux

En ajoutant les outils de Stallman au noyau de Torvalds, on obtient GNU/Linux : un système complet, libre, gratuit et ouvert à tous.

3. Le Noyau (Kernel) — Le Chef d'Orchestre

Le noyau est la partie la plus critique du système. Il travaille sous le capot, entre le matériel et les applications, sans interface visuelle.

#MissionDescription
01Gestion du HardwareParle au processeur, à la RAM, aux disques et périphériques
02Gestion des ProcessusDécide quel logiciel utilise le processeur et pendant combien de temps (multitâche)
03Gestion de la MémoireEmpêche un processus d'accéder aux données d'un autre (isolation mémoire)
04Droits & PermissionsVérifie si un utilisateur a le droit de lire, écrire ou exécuter un fichier

4. Les Distributions — Linux pour tous

Comme Linux est gratuit et ouvert, chaque groupe de personnes a créé sa propre version : la Distribution. Le noyau est identique, mais les outils et l'interface diffèrent.

UsageDistributionsCaractéristique principale
ServeursDebian, Red Hat, CentOSStabilité maximale, mises à jour contrôlées
Grand PublicUbuntu, Linux MintSimplicité, interface graphique soignée
Sécurité / PentestKali Linux, Parrot OSOutils offensifs préinstallés (hackers éthiques)
Embarqué / IoTAlpine, RaspbianTrès léger, faible empreinte mémoire

5. La Structure des Fichiers (Arborescence)

Oubliez le C:\. Sous Linux, tout commence à la racine / — disques, périphériques, fichiers système.

DossierContenuAnalogie
/binCommandes de base (ls, cp, mv…)🧰 Le sac à outils
/etcFichiers de configuration du système⚙️ Les réglages machine
/homeRépertoires personnels des utilisateurs🏠 Les chambres des utilisateurs
/rootRépertoire du super-utilisateur (root)🏰 La chambre forte de l'admin
/varDonnées variables : logs, bases de données, spool…📋 Les archives dynamiques
/tmpFichiers temporaires, vidés au redémarrage🗑️ La corbeille temporaire
/devFichiers représentant les périphériques matériels🖨️ Les périphériques (tout est fichier)
/procSystème de fichiers virtuel — état du noyau en temps réel🧠 La mémoire vive du noyau

6. Pourquoi Linux domine le monde ?

Si vous ne le voyez pas sur votre bureau, Linux est pourtant partout :

🌐
Serveurs Web
~90% des serveurs internet tournent sous Linux
⚡
Supercalculateurs
100% des 500 ordinateurs les plus puissants au monde
📱
Smartphones
Android est basé sur un noyau Linux
🏠
Objets connectés
Box internet, frigos connectés, voitures Tesla…

Contexte — Pourquoi Samba ?

Samba est une implémentation libre du protocole SMB/CIFS (Server Message Block), le protocole utilisé par Windows pour le partage de fichiers et d'imprimantes sur un réseau. Grâce à Samba, un serveur Linux peut partager des dossiers directement accessibles depuis l'explorateur Windows, sans aucun logiciel supplémentaire côté client.

01
Mettre à jour le système et installer Samba
▼

Commencez par mettre à jour les paquets du système, puis installez Samba :

sudo apt update && sudo apt upgrade sudo apt install samba

Vérifiez que Samba est bien installé et que le service est actif :

sudo systemctl status smbd
💡 Le service principal de Samba s'appelle smbd (SMB Daemon). Un second service nmbd gère la résolution de noms NetBIOS — utile pour retrouver le serveur par son nom sur le réseau.
02
Créer le dossier à partager
▼

Créez le répertoire DossierPartage dans votre répertoire personnel, puis ajoutez-y quelques fichiers de test :

mkdir ~/DossierPartage touch ~/DossierPartage/fichier1.txt touch ~/DossierPartage/fichier2.txt mkdir ~/DossierPartage/sous-dossier

Attribuez les bonnes permissions au dossier pour que Samba puisse y accéder :

sudo chown -R votre_utilisateur:groupe_de_lutilisateur ~/DossierPartage sudo chmod 755 ~/DossierPartage
03
Sauvegarder et éditer la configuration Samba
▼

Avant de modifier le fichier de configuration, faites-en une sauvegarde :

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Ouvrez ensuite le fichier de configuration principal de Samba :

sudo nano /etc/samba/smb.conf

Faites défiler jusqu'à la fin du fichier et ajoutez le bloc suivant pour définir votre partage :

[DossierPartage] comment = Partage de fichiers Linux path = /home/votre_utilisateur/DossierPartage browseable = yes read only = no writable = yes # Paramètres optionnels : valid users = votre_utilisateur create mask = 0664 directory mask = 0775
ℹ️ Remplacez votre_utilisateur par votre nom d'utilisateur Linux réel. Vous pouvez le connaître avec la commande whoami.

Explication des paramètres clés :

  • comment — Description du partage visible depuis les clients réseau
  • path — Chemin absolu du répertoire partagé sur le serveur
  • browseable — Rend le partage visible lors de la navigation réseau
  • writable — Autorise l'écriture dans le dossier partagé
  • valid users — Restreint l'accès aux utilisateurs listés
  • create mask — Permissions appliquées aux nouveaux fichiers créés
04
Vérifier la configuration et créer l'utilisateur Samba
▼

Samba utilise sa propre base de mots de passe, indépendante du système Linux. Il faut donc enregistrer l'utilisateur dans Samba avec un mot de passe dédié :

sudo smbpasswd -a VOTRE_UTILISATEUR

Saisissez et confirmez le mot de passe Samba demandé. Ce sera le mot de passe utilisé pour se connecter depuis un client Windows ou Linux.

Vérifiez ensuite que la syntaxe du fichier de configuration est correcte :

testparm

Si aucune erreur n'est signalée, la configuration est valide.

💡 testparm est un outil fourni avec Samba qui analyse le fichier smb.conf et signale les erreurs de syntaxe avant même de redémarrer le service.
05
Redémarrer Samba pour appliquer les modifications
▼

Redémarrez les deux services Samba pour appliquer la nouvelle configuration :

sudo systemctl restart smbd sudo systemctl restart nmbd

Activez le démarrage automatique au boot :

sudo systemctl enable smbd sudo systemctl enable nmbd
06
Configurer le pare-feu UFW Optionnel — Recommandé
▼

Si le pare-feu UFW est actif sur votre système, autorisez le trafic Samba :

sudo ufw allow samba

Ou manuellement en ouvrant les ports utilisés par SMB :

sudo ufw allow 137/udp sudo ufw allow 138/udp sudo ufw allow 139/tcp sudo ufw allow 445/tcp
07
Récupérer l'adresse IP du serveur
▼

Notez l'adresse IP de votre serveur Linux — les clients en auront besoin pour s'y connecter :

ip a

Repérez l'interface réseau active (généralement eth0 ou ens33) et notez son adresse IPv4 (ex : 192.168.1.50).

08
Accéder au partage depuis un autre poste
▼

Depuis Windows

Ouvrez l'Explorateur de fichiers, puis dans la barre d'adresse saisissez :

\\192.168.1.50\DossierPartage

Windows vous demandera un nom d'utilisateur et un mot de passe — saisissez ceux définis avec smbpasswd.

Depuis un autre Linux

Montez le partage Samba dans un répertoire local :

sudo mkdir /mnt/partage sudo mount -t cifs //192.168.1.50/DossierPartage /mnt/partage -o username=VOTRE_UTILISATEUR

Ou installez le gestionnaire de fichiers Nautilus et parcourez via Autres emplacements → Connexion à un serveur avec l'adresse :

smb://192.168.1.50/DossierPartage
ℹ️ Remplacez 192.168.1.50 par l'adresse IP réelle relevée à l'étape précédente.
🎁
BONUS — Partage public sans mot de passe
▼

Si vous souhaitez un partage accessible par tous sans authentification (à utiliser uniquement sur un réseau local de confiance), modifiez le bloc dans smb.conf comme suit :

[DossierPartage] comment = Partage public path = /home/VOTRE_UTILISATEUR/DossierPartage browseable = yes read only = no guest ok = yes public = yes

Puis donnez les droits en écriture à tous les utilisateurs sur le dossier :

sudo chmod 777 ~/DossierPartage sudo systemctl restart smbd
⚠️ Un partage public sans mot de passe est pratique en environnement de lab, mais à proscrire en production ou sur un réseau exposé à Internet.

Informations document

  • Version : 2.0 — 21/05/2026
  • Domaine : tssr.lab — Réseau : 192.168.30.0/24
  • Serveur PKI : 192.168.30.11 (Debian / Proxmox)
  • Rôle : CA Root + CA Intermédiaire (2 niveaux)

0. Logique globale — À lire avant tout

Avant de saisir la moindre commande, il est indispensable de comprendre comment la PKI s'articule dans cette infrastructure. Cette section résume l'architecture de confiance que vous allez construire, les responsabilités de chaque machine, et les règles fondamentales à respecter.

Qu'est-ce qu'une PKI ?

ℹ Public Key Infrastructure (PKI)
Une PKI est l'ensemble des outils, procédures et politiques permettant de créer, distribuer, gérer et révoquer des certificats numériques. Dans cette infrastructure, OpenSSL hébergé sur 192.168.30.11 joue le rôle d'autorité de certification (CA) : il signe les certificats de chaque service pour prouver leur identité sur le réseau local tssr.lab.

Un certificat = une identité numérique signée par une autorité de confiance. Sans PKI, toutes les connexions SSL/TLS génèrent des avertissements de sécurité.

Hiérarchie de confiance

La PKI C2RT utilise une architecture à deux niveaux (Root CA + Intermediate CA). La Root CA reste hors ligne après création ; seule l'Intermediate CA est utilisée au quotidien pour signer les certificats des services.

C2RT Root CA (maître absolu — clé chiffrée AES-256, 20 ans) │ └──► C2RT Intermediate CA (signe tous les certificats services, 10 ans) │ ├──► tssr.lab (192.168.30.10) → Samba AD / LDAP ├──► glpi.tssr.lab (192.168.30.4) → GLPI ├──► teleport.tssr.lab (192.168.70.50) → Teleport (Docker) ├──► crowdsec.tssr.lab (192.168.30.20) → CrowdSec Manager ├──► vault.tssr.lab (192.168.30.6) → VaultWarden ├──► truenas.tssr.lab (192.168.30.3) → TrueNAS ├──► patchmon.tssr.lab (192.168.30.22) → Patchmon ├──► proxmox.tssr.lab (192.168.30.2) → Proxmox VE :8006 └──► pfsense.tssr.lab (192.168.60.254) → pfSense (Hyper-V)

Plan d'adressage

Machine IP / Accès Rôle
SRV Proxmox192.168.30.2:8006Hyperviseur – VM/CT Linux
TrueNAS192.168.30.3NAS – stockage SMB/NFS
GLPI192.168.30.4Gestionnaire parc & tickets
SRV Windows 2025192.168.30.5Windows Server – WSUS / Bastion / VPN
Patchmon192.168.30.22Surveillance MAJ machine Linux
VaultWarden192.168.30.6Gestionnaire de mots de passe
Samba LDAP192.168.30.10Contrôleur de domaine AD
⭐ OpenSSL PKI192.168.30.11Serveur PKI – CA Root & Intermédiaire
CrowdSec192.168.30.20:8081SIEM – supervision & sécurité (Docker)
Bastion Teleport192.168.30.20:8080Accès distant RDP/SSH (Docker)
Patchmon192.168.30.20:5601Linux WSUS – mises à jour (Docker)
WSUS192.168.30.21Mises à jour Windows
pfSense192.168.60.254Pare-feu / routeur (VM Hyper-V)

Règles fondamentales — À ne jamais enfreindre

Élément Règle Critique
*.key.pem Restent TOUJOURS sur la machine qui héberge le service. Ne circulent pas sur le réseau sauf déploiement initial via scp chiffré SSH. 🔴
*.cert.pem Peuvent être copiés et distribués librement — ils ne contiennent que la partie publique. 🟢
rootCA.cert.pem Doit être installée sur TOUS les serveurs et postes clients AVANT de configurer les services SSL. 🔴
Génération Tout se génère sur le serveur OpenSSL (192.168.30.11), puis on copie vers la machine cible via scp. 🟡
Mots de passe Root CA et Intermediate CA ont des mots de passe DIFFÉRENTS. Les noter immédiatement dans KeePass. 🔴

Tableau de déploiement des fichiers

Fichier Généré sur Déployé sur Emplacement destination
rootCA.cert.pem 192.168.30.11 TOUS les serveurs + clients /usr/local/share/ca-certificates/c2rt-rootCA.crt
intermediateCA.cert.pem 192.168.30.11 TOUS les serveurs + clients /usr/local/share/ca-certificates/c2rt-intermediateCA.crt
ca-chain.cert.pem 192.168.30.11 Tous les services Dossier SSL du service concerné
samba.cert.pem + .key 192.168.30.11 Samba — 192.168.30.10 /etc/samba/tls/
glpi.cert.pem + .key 192.168.30.11 GLPI — 192.168.30.4 /etc/ssl/c2rt/
teleport.cert.pem + .key 192.168.30.11 WinSrv — 192.168.70.50 /etc/ssl/c2rt/
vaultwarden.cert.pem + .key 192.168.30.11 VaultWarden — 192.168.30.6 /opt/vaultwarden/ssl/
truenas.cert.pem + .key 192.168.30.11 TrueNAS — 192.168.30.3 Via interface web
proxmox.cert.pem + .key 192.168.30.11 Proxmox — 192.168.30.2 Via interface web (Node > Certificates)
pfsense.cert.pem + .key 192.168.30.11 pfSense — 192.168.60.254 System > Cert Manager (copier/coller)
patchmon.cert.pem + .key 192.168.30.11 PatchMon — 192.168.30.22 /etc/ssl/c2rt/ (reverse proxy Nginx)
01
Préparation du système — Serveur OpenSSL (192.168.30.11)
▼

Cette étape se réalise uniquement sur le serveur OpenSSL (192.168.30.11), VM Debian hébergée sur Proxmox. Il doit être dédié exclusivement à la PKI — aucun autre service ne doit tourner dessus pour limiter la surface d'attaque.

1.1 — Mise à jour du système

# Se connecter en root (ou utiliser sudo) ssh admin@192.168.30.11 sudo -i # Mise à jour complète du système apt update && apt upgrade -y # Installation des outils nécessaires apt install -y openssl ca-certificates vim tree curl # Vérification de la version OpenSSL (doit être >= 1.1.1 ou 3.x) openssl version -a
✓ Résultat attendu
OpenSSL 3.0.x dd Mon yyyy
Si la version est inférieure à 1.1.1 : apt dist-upgrade -y puis relancer openssl version.

1.2 — Vérification de la connectivité réseau

# Vérifier l'IP du serveur ip a | grep '192.168.30' # Doit afficher : inet 192.168.30.11/24 # Vérifier la passerelle ip route | grep default # Doit afficher : default via 192.168.30.254 # Test de connectivité vers les autres serveurs ping -c 2 192.168.30.10 # Samba LDAP ping -c 2 192.168.30.4 # GLPI ping -c 2 192.168.30.20 # Windows Server ping -c 2 192.168.60.254 # pfSense ping -c 2 192.168.30.3 # TrueNAS (pour backup)
02
Création de la structure PKI
▼

On crée l'arborescence complète de dossiers qui va accueillir tous les fichiers de la PKI. Cette structure suit les meilleures pratiques OpenSSL avec séparation stricte entre Root CA et Intermediate CA.

# ─── Création de tous les dossiers nécessaires ────────────────────── mkdir -p /etc/ssl/c2rt/rootCA/private mkdir -p /etc/ssl/c2rt/rootCA/certs mkdir -p /etc/ssl/c2rt/intermediateCA/private mkdir -p /etc/ssl/c2rt/intermediateCA/certs mkdir -p /etc/ssl/c2rt/intermediateCA/csr mkdir -p /etc/ssl/c2rt/certs mkdir -p /etc/ssl/c2rt/crl mkdir -p /etc/ssl/c2rt/csr mkdir -p /etc/ssl/c2rt/private mkdir -p /etc/ssl/c2rt/newcerts # ─── Permissions strictes sur les dossiers clés privées ───────────── chmod 700 /etc/ssl/c2rt/rootCA chmod 700 /etc/ssl/c2rt/rootCA/private chmod 700 /etc/ssl/c2rt/intermediateCA chmod 700 /etc/ssl/c2rt/intermediateCA/private chmod 700 /etc/ssl/c2rt/private # ─── Fichiers de base requis par OpenSSL ───────────────────────────── touch /etc/ssl/c2rt/rootCA/index.txt echo 1000 > /etc/ssl/c2rt/rootCA/serial echo 1000 > /etc/ssl/c2rt/rootCA/crlnumber touch /etc/ssl/c2rt/intermediateCA/index.txt echo 2000 > /etc/ssl/c2rt/intermediateCA/serial echo 2000 > /etc/ssl/c2rt/intermediateCA/crlnumber # ─── Vérification de la structure ──────────────────────────────────── tree /etc/ssl/c2rt/
✓ Structure attendue après tree /etc/ssl/c2rt/
/etc/ssl/c2rt/
├── certs/          ← Certificats des services (samba, glpi, etc.)
├── crl/            ← Listes de révocation (CRL)
├── csr/            ← Demandes de signature (CSR) des services
├── newcerts/       ← Copies automatiques des certs signés (OpenSSL)
├── private/        ← Clés privées des services
├── rootCA/
│   ├── certs/      ← Certificat rootCA.cert.pem
│   ├── index.txt   ← Base de données (vide au départ)
│   ├── private/    ← Clé privée rootCA.key.pem (chmod 400)
│   ├── serial      ← Compteur de série (commence à 1000)
│   └── crlnumber
└── intermediateCA/
    ├── certs/      ← Certificat intermediateCA.cert.pem + ca-chain.cert.pem
    ├── csr/        ← CSR de l'Intermediate CA
    ├── index.txt
    ├── private/    ← Clé privée intermediateCA.key.pem (chmod 400)
    ├── serial      ← Compteur de série (commence à 2000)
    └── crlnumber
03
Fichier de configuration Root CA
▼

Ce fichier de configuration dit à OpenSSL comment se comporter quand il agit en tant que Root CA (signature de l'Intermediate CA, génération des CRL, politique de certificats). Il doit être créé une seule fois.

nano /etc/ssl/c2rt/rootCA/openssl.cnf
[ ca ] default_ca = CA_default [ CA_default ] dir = /etc/ssl/c2rt/rootCA certs = $dir/../certs crl_dir = $dir/../crl new_certs_dir = $dir/../newcerts database = $dir/index.txt serial = $dir/serial RANDFILE = $dir/private/.rand private_key = $dir/private/rootCA.key.pem certificate = $dir/certs/rootCA.cert.pem crlnumber = $dir/crlnumber crl = $dir/../crl/rootCA.crl.pem crl_extensions = crl_ext default_crl_days = 365 default_md = sha256 name_opt = ca_default cert_opt = ca_default default_days = 3650 preserve = no policy = policy_strict # Politique stricte : Country, State et Organization doivent correspondre [ policy_strict ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional # Politique souple : pour les certificats services (Intermediate CA) [ policy_loose ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 4096 distinguished_name = req_distinguished_name string_mask = utf8only default_md = sha256 x509_extensions = v3_ca [ req_distinguished_name ] countryName_default = FR stateOrProvinceName_default = Nouvelle-Aquitaine localityName_default = Agen 0.organizationName_default = C2RT organizationalUnitName_default = TSSR emailAddress_default = admin@tssr.lab # Extensions pour la Root CA (CA:true, peut signer d'autres CA) [ v3_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign # Extensions pour la CA intermédiaire (pathlen:0 = ne peut pas créer de sous-CA) [ v3_intermediate_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true, pathlen:0 keyUsage = critical, digitalSignature, cRLSign, keyCertSign # Extensions pour les certificats serveurs [ server_cert ] basicConstraints = CA:FALSE nsCertType = server nsComment = "OpenSSL Generated Server Certificate - C2RT" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth [ crl_ext ] authorityKeyIdentifier = keyid:always
# Vérification de la syntaxe du fichier de configuration openssl req -config /etc/ssl/c2rt/rootCA/openssl.cnf \ -new -nodes -keyout /dev/null -out /dev/null -subj "/C=FR"
04
Création de la Root CA
▼

La Root CA est l'autorité de certification racine. Elle est auto-signée et constitue le sommet de la hiérarchie de confiance. Sa clé privée doit être protégée par un mot de passe fort — sa compromission nécessiterait de reconstruire toute la PKI.

4.1 — Clé privée Root CA (RSA 4096 bits, chiffrée AES-256)

# Génération de la clé RSA 4096 bits chiffrée AES-256 # OpenSSL demandera un mot de passe — choisir un mot de passe robuste (min. 20 caractères) openssl genrsa \ -aes256 \ -out /etc/ssl/c2rt/rootCA/private/rootCA.key.pem 4096 # Restriction des permissions (lecture root uniquement) chmod 400 /etc/ssl/c2rt/rootCA/private/rootCA.key.pem # Vérification ls -la /etc/ssl/c2rt/rootCA/private/ # Doit afficher : -r-------- 1 root root ... rootCA.key.pem
⚠ CRITIQUE — Mot de passe Root CA
OpenSSL demande de saisir et confirmer un mot de passe. Ce mot de passe est UNIQUE et irremplaçable :
• Minimum 20 caractères, mixte (majuscules, minuscules, chiffres, symboles)
• Exemple fort : C2RT-Root@2026!Agen#PKI
• Le noter IMMÉDIATEMENT dans KeePass sous l'entrée C2RT Root CA password
• Ce mot de passe sera demandé UNE SEULE FOIS : pour signer l'Intermediate CA
• Si perdu → toute la PKI est à reconstruire depuis zéro

4.2 — Certificat Root CA auto-signé (validité 20 ans)

Le certificat Root CA est auto-signé. Il sera distribué sur tous les serveurs et postes clients comme ancre de confiance.

openssl req \ -config /etc/ssl/c2rt/rootCA/openssl.cnf \ -key /etc/ssl/c2rt/rootCA/private/rootCA.key.pem \ -new -x509 \ -days 7300 \ -sha256 \ -extensions v3_ca \ -out /etc/ssl/c2rt/rootCA/certs/rootCA.cert.pem \ -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Agen/O=C2RT/OU=TSSR/CN=C2RT Root CA" # Permissions lecture seule chmod 444 /etc/ssl/c2rt/rootCA/certs/rootCA.cert.pem

4.3 — Vérification de la Root CA

# Afficher les informations essentielles du certificat openssl x509 -noout -text \ -in /etc/ssl/c2rt/rootCA/certs/rootCA.cert.pem \ | grep -E 'Subject:|Issuer:|Not Before|Not After|CA:'
✓ Résultat attendu
Issuer: C=FR, ST=Nouvelle-Aquitaine, L=Agen, O=C2RT, OU=TSSR, CN=C2RT Root CA
Subject: C=FR, ST=Nouvelle-Aquitaine, L=Agen, O=C2RT, OU=TSSR, CN=C2RT Root CA
(Subject = Issuer → normal, c'est auto-signé)
CA:TRUE → confirme que c'est bien une autorité de certification
05
Création de la CA Intermédiaire
▼

L'Intermediate CA est l'autorité qui signe tous les certificats des services au quotidien. Grâce à cette architecture à deux niveaux, la Root CA peut être mise hors ligne après avoir signé l'Intermediate CA, ce qui réduit considérablement les risques.

5.1 — Fichier de configuration Intermediate CA

nano /etc/ssl/c2rt/intermediateCA/openssl.cnf
[ ca ] default_ca = CA_default [ CA_default ] dir = /etc/ssl/c2rt/intermediateCA certs = $dir/../certs crl_dir = $dir/../crl new_certs_dir = $dir/../newcerts database = $dir/index.txt serial = $dir/serial RANDFILE = $dir/private/.rand private_key = $dir/private/intermediateCA.key.pem certificate = $dir/certs/intermediateCA.cert.pem crlnumber = $dir/crlnumber crl = $dir/../crl/intermediateCA.crl.pem crl_extensions = crl_ext default_crl_days = 180 default_md = sha256 name_opt = ca_default cert_opt = ca_default default_days = 825 preserve = no policy = policy_loose [ policy_loose ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 2048 distinguished_name = req_distinguished_name string_mask = utf8only default_md = sha256 [ req_distinguished_name ] countryName_default = FR stateOrProvinceName_default = Nouvelle-Aquitaine localityName_default = Agen 0.organizationName_default = C2RT organizationalUnitName_default = TSSR [ v3_intermediate_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true, pathlen:0 keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ server_cert ] basicConstraints = CA:FALSE nsCertType = server nsComment = "OpenSSL Generated Server Certificate - C2RT" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth [ crl_ext ] authorityKeyIdentifier = keyid:always

5.2 — Clé privée Intermediate CA

openssl genrsa \ -aes256 \ -out /etc/ssl/c2rt/intermediateCA/private/intermediateCA.key.pem 4096 chmod 400 /etc/ssl/c2rt/intermediateCA/private/intermediateCA.key.pem
⚠ IMPORTANT — Mot de passe Intermediate CA
Choisir un mot de passe DIFFÉRENT de celui de la Root CA.
Le noter dans KeePass sous C2RT Intermediate CA password.
Ce mot de passe sera demandé à chaque signature de certificat service.

5.3 — CSR de la CA Intermédiaire

La CA Intermédiaire génère une demande de signature (CSR) qui sera soumise à la Root CA pour obtenir son certificat.

openssl req \ -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -new -sha256 \ -key /etc/ssl/c2rt/intermediateCA/private/intermediateCA.key.pem \ -out /etc/ssl/c2rt/intermediateCA/csr/intermediateCA.csr.pem \ -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Agen/O=C2RT/OU=TSSR/CN=C2RT Intermediate CA"

5.4 — Signature de l'Intermediate CA par la Root CA

C'est ici que la Root CA entre en jeu pour la dernière fois. OpenSSL demandera le mot de passe de la Root CA.

openssl ca \ -config /etc/ssl/c2rt/rootCA/openssl.cnf \ -extensions v3_intermediate_ca \ -days 3650 \ -notext -md sha256 \ -in /etc/ssl/c2rt/intermediateCA/csr/intermediateCA.csr.pem \ -out /etc/ssl/c2rt/intermediateCA/certs/intermediateCA.cert.pem # OpenSSL demande le mot de passe de la ROOT CA # Répondre 'y' aux deux questions : # Sign the certificate? [y/n] → y # 1 out of 1 certificate requests certified...? → y chmod 444 /etc/ssl/c2rt/intermediateCA/certs/intermediateCA.cert.pem

5.5 — Création de la chaîne de certificats (ca-chain.cert.pem)

La chaîne de certification contient les deux certificats dans l'ordre requis : Intermediate CA en premier, puis Root CA.

cat /etc/ssl/c2rt/intermediateCA/certs/intermediateCA.cert.pem \ /etc/ssl/c2rt/rootCA/certs/rootCA.cert.pem \ > /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem chmod 444 /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem # Vérification : le fichier doit contenir deux blocs -----BEGIN CERTIFICATE----- grep -c 'BEGIN CERTIFICATE' /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem # Doit afficher : 2

5.6 — Vérification de la chaîne de confiance

# Vérifier que l'Intermediate CA est bien signée par la Root CA openssl verify \ -CAfile /etc/ssl/c2rt/rootCA/certs/rootCA.cert.pem \ /etc/ssl/c2rt/intermediateCA/certs/intermediateCA.cert.pem # Résultat attendu : # /etc/ssl/c2rt/intermediateCA/certs/intermediateCA.cert.pem: OK
06
Certificats des services
▼
💡 Attention — IPs déjà intégrées dans les SAN
Les IP dans les SAN (Subject Alternative Names) sont incluses dans le certificat et ne peuvent PAS être modifiées après signature. Si une IP change, le certificat doit être révoqué et regénéré.

Samba LDAP : 192.168.30.10  |  GLPI : 192.168.30.4  |  Teleport : 192.168.70.50
VaultWarden : 192.168.30.6  |  TrueNAS : 192.168.30.3  |  pfSense : 192.168.60.254
Proxmox : 192.168.30.2

6.1 — Certificat Samba AD / LDAP (192.168.30.10)

ℹ Particularité Samba AD
Machine : Samba LDAP — 192.168.30.10 | Déploiement : scp depuis 192.168.30.11
Spécificité : extendedKeyUsage inclut clientAuth en plus de serverAuth (requis par Samba AD pour LDAPS)
Port LDAPS : 636
# ─── 1) Génération de la clé privée ────────────────────────────────── openssl genrsa -out /etc/ssl/c2rt/private/samba.key.pem 2048 chmod 400 /etc/ssl/c2rt/private/samba.key.pem # ─── 2) Génération du CSR ───────────────────────────────────────────── openssl req -new -sha256 \ -key /etc/ssl/c2rt/private/samba.key.pem \ -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Agen/O=C2RT/OU=TSSR/CN=srv-ad-dc.tssr.lab" \ -out /etc/ssl/c2rt/csr/samba.csr.pem # ─── 3) Fichier d'extensions SAN ────────────────────────────────────── cat > /tmp/samba-ext.cnf << 'EOF' basicConstraints = CA:FALSE nsCertType = server subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth, clientAuth subjectAltName = DNS:srv-ad-dc.tssr.lab, DNS:localhost, IP:192.168.30.10 EOF # ─── 4) Signature par l'Intermediate CA ─────────────────────────────── openssl ca \ -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -extfile /tmp/samba-ext.cnf \ -days 825 -notext -md sha256 \ -in /etc/ssl/c2rt/csr/samba.csr.pem \ -out /etc/ssl/c2rt/certs/samba.cert.pem # ─── 5) Déploiement vers 192.168.30.10 ──────────────────────────────── ssh root@192.168.30.10 'mkdir -p /etc/samba/tls' scp /etc/ssl/c2rt/certs/samba.cert.pem root@192.168.30.10:/etc/samba/tls/ scp /etc/ssl/c2rt/private/samba.key.pem root@192.168.30.10:/etc/samba/tls/ scp /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem root@192.168.30.10:/etc/samba/tls/ # ─── 6) Configuration sur 192.168.30.10 ─────────────────────────────── chmod 400 /etc/samba/tls/samba.key.pem chmod 444 /etc/samba/tls/samba.cert.pem chmod 444 /etc/samba/tls/ca-chain.cert.pem # Ajouter dans /etc/samba/smb.conf — section [global] : tls enabled = yes tls keyfile = /etc/samba/tls/samba.key.pem tls certfile = /etc/samba/tls/samba.cert.pem tls cafile = /etc/samba/tls/ca-chain.cert.pem systemctl restart samba-ad-dc # ─── 7) Vérification ────────────────────────────────────────────────── openssl s_client -connect 192.168.30.10:636 \ -CAfile /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem # Résultat attendu : Verify return code: 0 (ok)

6.2 — Certificat GLPI (192.168.30.4)

ℹ Déploiement GLPI
Machine : GLPI — 192.168.30.4 | Serveur web : Nginx — HTTPS port 443
URL d'accès : https://glpi.tssr.lab
# ─── 1) Clé + CSR ──────────────────────────────────────────────────── openssl genrsa -out /etc/ssl/c2rt/private/glpi.key.pem 2048 chmod 400 /etc/ssl/c2rt/private/glpi.key.pem openssl req -new -sha256 \ -key /etc/ssl/c2rt/private/glpi.key.pem \ -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Agen/O=C2RT/OU=TSSR/CN=glpi.tssr.lab" \ -out /etc/ssl/c2rt/csr/glpi.csr.pem # ─── 2) Extensions SAN ──────────────────────────────────────────────── cat > /tmp/glpi-ext.cnf << 'EOF' basicConstraints = CA:FALSE nsCertType = server subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = DNS:glpi.tssr.lab, IP:192.168.30.4 EOF # ─── 3) Signature ───────────────────────────────────────────────────── openssl ca -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -extfile /tmp/glpi-ext.cnf \ -days 825 -notext -md sha256 \ -in /etc/ssl/c2rt/csr/glpi.csr.pem \ -out /etc/ssl/c2rt/certs/glpi.cert.pem # ─── 4) Fullchain pour Nginx ────────────────────────────────────────── cat /etc/ssl/c2rt/certs/glpi.cert.pem \ /etc/ssl/c2rt/intermediateCA/certs/intermediateCA.cert.pem \ > /etc/ssl/c2rt/certs/glpi-fullchain.pem # ─── 5) Déploiement vers 192.168.30.4 ───────────────────────────────── ssh admin@192.168.30.4 'mkdir -p /etc/ssl/c2rt' scp /etc/ssl/c2rt/certs/glpi-fullchain.pem admin@192.168.30.4:/etc/ssl/c2rt/ scp /etc/ssl/c2rt/private/glpi.key.pem admin@192.168.30.4:/etc/ssl/c2rt/ # ─── 6) Configuration Nginx sur 192.168.30.4 ────────────────────────── # /etc/nginx/sites-available/glpi-ssl.conf server { listen 443 ssl; server_name glpi.tssr.lab; root /var/www/glpi/public; index index.php; ssl_certificate /etc/ssl/c2rt/glpi-fullchain.pem; ssl_certificate_key /etc/ssl/c2rt/glpi.key.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; } systemctl restart nginx # ─── 7) Vérification ────────────────────────────────────────────────── openssl s_client -connect 192.168.30.4:443 \ -CAfile /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem

6.3 — Certificat Teleport / Bastion Teleport (192.168.70.50)

ℹ Déploiement Teleport
Machine : Windows Server / Docker — 192.168.70.50
Reverse proxy : Nginx devant Teleport pour le SSL | Ports : 8080 interne, 443 via Nginx
# ─── 1) Clé + CSR ──────────────────────────────────────────────────── openssl genrsa -out /etc/ssl/c2rt/private/teleport.key.pem 2048 chmod 400 /etc/ssl/c2rt/private/teleport.key.pem openssl req -new -sha256 \ -key /etc/ssl/c2rt/private/teleport.key.pem \ -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Agen/O=C2RT/OU=TSSR/CN=teleport.tssr.lab" \ -out /etc/ssl/c2rt/csr/teleport.csr.pem # ─── 2) Extensions SAN ──────────────────────────────────────────────── cat > /tmp/teleport-ext.cnf << 'EOF' basicConstraints = CA:FALSE nsCertType = server subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = DNS:teleport.tssr.lab, DNS:*.teleport.tssr.lab, IP:192.168.70.50 EOF # ─── 3) Signature ───────────────────────────────────────────────────── openssl ca -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -extfile /tmp/teleport-ext.cnf \ -days 825 -notext -md sha256 \ -in /etc/ssl/c2rt/csr/teleport.csr.pem \ -out /etc/ssl/c2rt/certs/teleport.cert.pem # ─── 4) Déploiement vers 192.168.70.50 ──────────────────────────────── ssh giu@192.168.70.50 'mkdir -p /etc/ssl/c2rt' scp /etc/ssl/c2rt/certs/teleport.cert.pem giu@192.168.70.50:/etc/ssl/c2rt/ scp /etc/ssl/c2rt/private/teleport.key.pem giu@192.168.70.50:/etc/ssl/c2rt/ scp /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem giu@192.168.70.50:/etc/ssl/c2rt/ # ─── 5) Vérification ────────────────────────────────────────────────── openssl s_client -connect 192.168.70.50:443 \ -CAfile /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem

6.4 — Certificat TrueNAS (192.168.30.3)

ℹ Déploiement TrueNAS
Machine : TrueNAS — 192.168.30.3
Déploiement : Import via interface web (Credentials > Certificates > Add)
# ─── 1) Clé + CSR ──────────────────────────────────────────────────── openssl genrsa -out /etc/ssl/c2rt/private/truenas.key.pem 2048 chmod 400 /etc/ssl/c2rt/private/truenas.key.pem openssl req -new -sha256 \ -key /etc/ssl/c2rt/private/truenas.key.pem \ -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Agen/O=C2RT/OU=TSSR/CN=truenas.tssr.lab" \ -out /etc/ssl/c2rt/csr/truenas.csr.pem # ─── 2) Extensions SAN ──────────────────────────────────────────────── cat > /tmp/truenas-ext.cnf << 'EOF' basicConstraints = CA:FALSE nsCertType = server subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = DNS:truenas.tssr.lab, IP:192.168.30.3 EOF # ─── 3) Signature ───────────────────────────────────────────────────── openssl ca -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -extfile /tmp/truenas-ext.cnf \ -days 825 -notext -md sha256 \ -in /etc/ssl/c2rt/csr/truenas.csr.pem \ -out /etc/ssl/c2rt/certs/truenas.cert.pem # ─── 4) Export pour import dans l'interface web ─────────────────────── echo '=== CERTIFICAT ===' && cat /etc/ssl/c2rt/certs/truenas.cert.pem echo '=== CLÉ PRIVÉE ===' && cat /etc/ssl/c2rt/private/truenas.key.pem # Dans TrueNAS : System > Certificates > Add > Import Certificate

6.5 — Certificat pfSense (192.168.60.254) — VM Hyper-V

ℹ Particularité pfSense — Import via interface web
Machine : pfSense — 192.168.60.254 (VM Hyper-V sur Windows Server 2025)
Pas de scp direct possible. On exporte le certificat et la clé en texte, puis on les copie-colle dans l'interface web.
# ─── 1) Clé + CSR ──────────────────────────────────────────────────── openssl genrsa -out /etc/ssl/c2rt/private/pfsense.key.pem 2048 chmod 400 /etc/ssl/c2rt/private/pfsense.key.pem openssl req -new -sha256 \ -key /etc/ssl/c2rt/private/pfsense.key.pem \ -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Agen/O=C2RT/OU=TSSR/CN=pfsense.tssr.lab" \ -out /etc/ssl/c2rt/csr/pfsense.csr.pem # ─── 2) Extensions SAN ──────────────────────────────────────────────── cat > /tmp/pfsense-ext.cnf << 'EOF' basicConstraints = CA:FALSE nsCertType = server subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = DNS:pfsense.tssr.lab, IP:192.168.60.254 EOF # ─── 3) Signature ───────────────────────────────────────────────────── openssl ca -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -extfile /tmp/pfsense-ext.cnf \ -days 825 -notext -md sha256 \ -in /etc/ssl/c2rt/csr/pfsense.csr.pem \ -out /etc/ssl/c2rt/certs/pfsense.cert.pem # ─── 4) Afficher les contenus à copier-coller dans pfSense ─────────── echo '=== CERTIFICAT (à coller dans Certificate data) ===' cat /etc/ssl/c2rt/certs/pfsense.cert.pem echo '=== CLÉ PRIVÉE (à coller dans Private key data) ===' cat /etc/ssl/c2rt/private/pfsense.key.pem

Procédure d'import dans l'interface web pfSense (https://192.168.60.254) :

  • Naviguer vers System > Cert Manager > Certificates > Add/Sign
  • Method : Import an existing Certificate
  • Certificate data : coller le contenu de pfsense.cert.pem
  • Private key data : coller le contenu de pfsense.key.pem
  • Sauvegarder, puis System > Advanced > Admin Access → choisir ce certificat pour HTTPS

6.6 — Certificat Proxmox (192.168.30.2) — Interface web port 8006

ℹ Déploiement Proxmox
Machine : Proxmox VE — 192.168.30.2 (port 8006)
Import via : Datacenter > Node > System > Certificates
URL d'accès : https://proxmox.tssr.lab:8006
# ─── 1) Clé + CSR ──────────────────────────────────────────────────── openssl genrsa -out /etc/ssl/c2rt/private/proxmox.key.pem 2048 chmod 400 /etc/ssl/c2rt/private/proxmox.key.pem openssl req -new -sha256 \ -key /etc/ssl/c2rt/private/proxmox.key.pem \ -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Agen/O=C2RT/OU=TSSR/CN=proxmox.tssr.lab" \ -out /etc/ssl/c2rt/csr/proxmox.csr.pem # ─── 2) Extensions SAN ──────────────────────────────────────────────── cat > /tmp/proxmox-ext.cnf << 'EOF' basicConstraints = CA:FALSE nsCertType = server subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = DNS:proxmox.tssr.lab, IP:192.168.30.2 EOF # ─── 3) Signature ───────────────────────────────────────────────────── openssl ca -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -extfile /tmp/proxmox-ext.cnf \ -days 825 -notext -md sha256 \ -in /etc/ssl/c2rt/csr/proxmox.csr.pem \ -out /etc/ssl/c2rt/certs/proxmox.cert.pem # ─── 4) Afficher pour copier-coller dans l'UI Proxmox ──────────────── echo '=== CERTIFICAT ===' && cat /etc/ssl/c2rt/certs/proxmox.cert.pem echo '=== CLÉ PRIVÉE ===' && cat /etc/ssl/c2rt/private/proxmox.key.pem echo '=== CHAÎNE CA ===' && cat /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem # ─── 5) Redémarrer pveproxy sur Proxmox ────────────────────────────── systemctl restart pveproxy # ─── 6) Vérification ────────────────────────────────────────────────── openssl s_client -connect 192.168.30.2:8006 \ -CAfile /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem # Résultat attendu : Verify return code: 0 (ok)

6.7 — Certificat VaultWarden (192.168.30.6)

ℹ Déploiement VaultWarden
Machine : Debian — 192.168.30.6 | Chemin standard : /opt/vaultwarden/ssl/
# ─── 1) Clé + CSR ──────────────────────────────────────────────────── openssl genrsa -out /etc/ssl/c2rt/private/vaultwarden.key.pem 2048 chmod 400 /etc/ssl/c2rt/private/vaultwarden.key.pem openssl req -new -sha256 \ -key /etc/ssl/c2rt/private/vaultwarden.key.pem \ -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Agen/O=C2RT/OU=TSSR/CN=vault.tssr.lab" \ -out /etc/ssl/c2rt/csr/vaultwarden.csr.pem # ─── 2) Extensions SAN ──────────────────────────────────────────────── cat > /tmp/vaultwarden-ext.cnf << 'EOF' basicConstraints = CA:FALSE nsCertType = server subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = DNS:vault.tssr.lab, IP:192.168.30.6 EOF # ─── 3) Signature ───────────────────────────────────────────────────── openssl ca -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -extfile /tmp/vaultwarden-ext.cnf \ -days 825 -notext -md sha256 \ -in /etc/ssl/c2rt/csr/vaultwarden.csr.pem \ -out /etc/ssl/c2rt/certs/vaultwarden.cert.pem # ─── 4) Déploiement vers 192.168.30.6 ───────────────────────────────── scp /etc/ssl/c2rt/certs/vaultwarden.cert.pem tssr@192.168.30.6:/opt/vaultwarden/ssl/ scp /etc/ssl/c2rt/private/vaultwarden.key.pem tssr@192.168.30.6:/opt/vaultwarden/ssl/ scp /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem tssr@192.168.30.6:/opt/vaultwarden/ssl/ # ─── 5) Vérification ────────────────────────────────────────────────── openssl s_client -connect 192.168.30.6:443 \ -CAfile /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem

6.8 — Certificat PatchMon (192.168.30.22)

ℹ Déploiement PatchMon
Machine : Debian — 192.168.30.22 | PatchMon tourne en Docker sur le port 3000.
On place un reverse proxy en front pour exposer le service en HTTPS (443) avec le certificat C2RT.
Reverse proxy utilisé ici : Nginx — alternatives possibles : Apache2, Caddy, HAProxy, Traefik.
# ─── 1) Clé + CSR (sur le serveur OpenSSL 192.168.30.11) ───────────── openssl genrsa -out /etc/ssl/c2rt/private/patchmon.key.pem 2048 chmod 400 /etc/ssl/c2rt/private/patchmon.key.pem openssl req -new -sha256 \ -key /etc/ssl/c2rt/private/patchmon.key.pem \ -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Agen/O=C2RT/OU=TSSR/CN=patchmon.tssr.lab" \ -out /etc/ssl/c2rt/csr/patchmon.csr.pem # ─── 2) Extensions SAN ──────────────────────────────────────────────── cat > /tmp/patchmon-ext.cnf << 'EOF' basicConstraints = CA:FALSE nsCertType = server subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = DNS:patchmon.tssr.lab, IP:192.168.30.22 EOF # ─── 3) Signature ───────────────────────────────────────────────────── openssl ca -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -extfile /tmp/patchmon-ext.cnf \ -days 825 -notext -md sha256 \ -in /etc/ssl/c2rt/csr/patchmon.csr.pem \ -out /etc/ssl/c2rt/certs/patchmon.cert.pem # ─── 4) Déploiement vers 192.168.30.22 ──────────────────────────────── ssh tssr@192.168.30.22 'mkdir -p /etc/ssl/c2rt' scp /etc/ssl/c2rt/certs/patchmon.cert.pem tssr@192.168.30.22:/etc/ssl/c2rt/ scp /etc/ssl/c2rt/private/patchmon.key.pem tssr@192.168.30.22:/etc/ssl/c2rt/ scp /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem tssr@192.168.30.22:/etc/ssl/c2rt/

Mise en place du reverse proxy Nginx (sur 192.168.30.22). Alternatives possibles : Apache2, Caddy, HAProxy, Traefik.

1. Installation de Nginx :

apt update apt install nginx -y # Vérifier nginx -v systemctl status nginx # Activer le service systemctl enable nginx systemctl start nginx

2. Création du fichier de configuration :

nano /etc/nginx/sites-available/patchmon

3. Contenu de la configuration Nginx :

# HTTP -> HTTPS server { listen 80; listen [::]:80; server_name patchmon.tssr.lab; return 301 https://$server_name$request_uri; } # HTTPS server { listen 443 ssl; listen [::]:443 ssl; http2 on; server_name patchmon.tssr.lab; ssl_certificate /etc/ssl/c2rt/patchmon.cert.pem; ssl_certificate_key /etc/ssl/c2rt/patchmon.key.pem; ssl_trusted_certificate /etc/ssl/c2rt/ca-chain.cert.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5:!3DES; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port 443; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }

4. Activation du site :

ln -s /etc/nginx/sites-available/patchmon \ /etc/nginx/sites-enabled/ # Supprimer le site par défaut rm -f /etc/nginx/sites-enabled/default

5. Vérification de la configuration :

nginx -t # Résultat attendu : # nginx: the configuration file /etc/nginx/nginx.conf syntax is ok # nginx: configuration file /etc/nginx/nginx.conf test is successful

6. Rechargement de Nginx :

systemctl reload nginx

7. Configuration de PatchMon — éditer le fichier .env :

nano /opt/patchmon/.env

Mettre :

SERVER_PROTOCOL=https SERVER_HOST=patchmon.tssr.lab SERVER_PORT=443 CORS_ORIGIN=https://patchmon.tssr.lab TRUST_PROXY=true ENABLE_HSTS=true
⚠ Ne pas mettre : http://192.168.30.22:3000 — PatchMon doit voir l'URL publique HTTPS, pas l'adresse interne du conteneur.

8. Redémarrage de PatchMon :

cd /opt/patchmon docker compose down docker compose up -d

9. Vérification des variables d'environnement injectées :

docker exec -it patchmon-server-1 printenv | grep -E 'CORS|SERVER|TRUST' # Tu dois voir : # SERVER_PROTOCOL=https # SERVER_HOST=patchmon.tssr.lab # SERVER_PORT=443 # CORS_ORIGIN=https://patchmon.tssr.lab # TRUST_PROXY=true

10. Vérification des ports :

# PatchMon (conteneur Docker) docker ps # Tu dois voir : 0.0.0.0:3000->3000/tcp # Nginx (front HTTPS) ss -tlnp | grep :443 # Tu dois voir : nginx

11. Test HTTPS depuis le serveur :

curl -v https://patchmon.tssr.lab \ --cacert /etc/ssl/c2rt/ca-chain.cert.pem # Résultat attendu : HTTP/2 200

12. Vérification finale du certificat :

openssl s_client -connect 192.168.30.22:443 -servername patchmon.tssr.lab \ -CAfile /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem # Résultat attendu : Verify return code: 0 (ok)
07
Déploiement de la Root CA sur tous les systèmes
▼

Cette étape est indispensable avant d'utiliser les certificats. Sans la Root CA installée, tous les navigateurs et outils système afficheront des erreurs SSL même si les certificats sont techniquement valides.

7.1 — Sur le serveur OpenSSL lui-même (192.168.30.11)

# Copie dans le store système (extension .crt obligatoire pour update-ca-certificates) cp /etc/ssl/c2rt/rootCA/certs/rootCA.cert.pem \ /usr/local/share/ca-certificates/c2rt-rootCA.crt cp /etc/ssl/c2rt/intermediateCA/certs/intermediateCA.cert.pem \ /usr/local/share/ca-certificates/c2rt-intermediateCA.crt # Mise à jour du store système update-ca-certificates # Vérification ls /etc/ssl/certs/ | grep c2rt # Doit afficher : c2rt-rootCA.pem et c2rt-intermediateCA.pem

7.2 — Sur les serveurs Linux (Samba, GLPI, TrueNAS, VaultWarden)

# Depuis le serveur OpenSSL (192.168.30.11) — déploiement en boucle for SERVER in 192.168.30.10 192.168.30.4 192.168.30.3 192.168.30.6; do echo "==> Déploiement Root CA sur $SERVER" scp /etc/ssl/c2rt/rootCA/certs/rootCA.cert.pem \ admin@$SERVER:/usr/local/share/ca-certificates/c2rt-rootCA.crt scp /etc/ssl/c2rt/intermediateCA/certs/intermediateCA.cert.pem \ admin@$SERVER:/usr/local/share/ca-certificates/c2rt-intermediateCA.crt ssh admin@$SERVER 'update-ca-certificates' done

7.3 — Sur le Bastion Teleport (192.168.70.50)

scp /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem \ giu@192.168.70.50:/usr/local/share/ca-certificates/c2rt-ca.crt ssh giu@192.168.70.50 'update-ca-certificates'

7.4 — Sur les postes clients Windows via GPO

  • Ouvrir la console Gestion des stratégies de groupe sur Windows Server (192.168.30.5)
  • Créer ou éditer une GPO liée au domaine tssr.lab
  • Naviguer vers : Configuration ordinateur > Paramètres Windows > Paramètres de sécurité > Stratégies de clé publique
  • Clic droit sur Autorités de certification racines de confiance > Importer
  • Sélectionner rootCA.cert.pem (renommer en rootCA.crt si Windows refuse .pem)
  • Répéter pour Autorités de certification intermédiaires avec intermediateCA.cert.pem
# Sur chaque poste Windows — forcer l'application des GPO gpupdate /force # Vérifier dans certmgr.msc : # Autorités de certification racines de confiance > Certificats # → Chercher 'C2RT Root CA'
⚠ Si la GPO place la Root CA dans le mauvais store
Supprimer manuellement avec :
certutil -delstore "Intermediate Certification Authorities" "C2RT Root CA"
Puis forcer à nouveau la GPO.

7.5 — Sur les conteneurs Docker (192.168.30.20)

# Copie de la CA vers le serveur Docker scp /etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem \ admin@192.168.30.20:/etc/ssl/c2rt/ # Vérifier les noms des conteneurs docker ps # Injecter la CA dans chaque conteneur (adapter le nom) docker cp /etc/ssl/c2rt/ca-chain.cert.pem \ patchmon:/usr/local/share/ca-certificates/c2rt-ca.crt docker exec patchmon update-ca-certificates

7.6 — Dans pfSense (192.168.60.254) — Import Root CA

  • Naviguer vers System > Cert Manager > CAs > Add
  • Method : Import an existing Certificate Authority
  • Certificate data : coller le contenu de rootCA.cert.pem
  • Private key : laisser vide
  • Sauvegarder — pfSense reconnaîtra désormais tous les certificats signés par C2RT
08
Génération des CRL — Listes de révocation
▼

Les CRL (Certificate Revocation Lists) permettent de révoquer un certificat compromis ou expiré avant sa date normale d'expiration.

8.1 — Génération initiale des CRL

# ─── CRL de la Root CA ─────────────────────────────────────────────── openssl ca \ -config /etc/ssl/c2rt/rootCA/openssl.cnf \ -gencrl \ -out /etc/ssl/c2rt/crl/rootCA.crl.pem # OpenSSL demande le mot de passe de la Root CA # ─── CRL de l'Intermediate CA ──────────────────────────────────────── openssl ca \ -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -gencrl \ -out /etc/ssl/c2rt/crl/intermediateCA.crl.pem # OpenSSL demande le mot de passe de l'Intermediate CA # ─── Vérification des CRL ───────────────────────────────────────────── openssl crl -in /etc/ssl/c2rt/crl/rootCA.crl.pem -noout -text | head -20 openssl crl -in /etc/ssl/c2rt/crl/intermediateCA.crl.pem -noout -text | head -20

8.2 — Révoquer un certificat compromis

# Exemple : révoquer le certificat d'un service openssl ca \ -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -revoke /etc/ssl/c2rt/certs/crowdsec.cert.pem # Régénérer immédiatement la CRL openssl ca \ -config /etc/ssl/c2rt/intermediateCA/openssl.cnf \ -gencrl \ -out /etc/ssl/c2rt/crl/intermediateCA.crl.pem # Générer un nouveau certificat si nécessaire (reprendre la section 6)
⚠ Renouvellement des CRL — Planification
Intermediate CA CRL : expire dans 180 jours (default_crl_days = 180)
Root CA CRL : expire dans 365 jours (default_crl_days = 365)
Une CRL expirée peut bloquer toutes les connexions SSL de l'infrastructure.

Exemple cron (sur le serveur 192.168.30.11) :
0 2 */150 * * openssl ca -config /etc/ssl/c2rt/intermediateCA/openssl.cnf -gencrl -out /etc/ssl/c2rt/crl/intermediateCA.crl.pem
09
Vérification globale de tous les certificats
▼

9.1 — Script de vérification en batch

#!/bin/bash # Script de vérification de tous les certificats services CHAIN='/etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem' CERTSDIR='/etc/ssl/c2rt/certs' echo '════════════════════════════════════════════════════' echo ' VÉRIFICATION PKI C2RT — Infrastructure TSSR' echo '════════════════════════════════════════════════════' for cert in samba glpi teleport truenas vaultwarden proxmox pfsense; do echo "" echo "── $cert ──────────────────────────────────────────" RESULT=$(openssl verify -CAfile $CHAIN $CERTSDIR/$cert.cert.pem 2>&1) if echo "$RESULT" | grep -q ': OK'; then echo " [OK] Certificat valide" else echo " [ERREUR] $RESULT" fi openssl x509 -noout -subject -dates -in $CERTSDIR/$cert.cert.pem done echo "" echo '════════════════════════════════════════════════════' echo ' Vérification chaîne de confiance complète' openssl verify -CAfile /etc/ssl/c2rt/rootCA/certs/rootCA.cert.pem \ /etc/ssl/c2rt/intermediateCA/certs/intermediateCA.cert.pem echo '════════════════════════════════════════════════════'

9.2 — Vérification de la connectivité SSL des services

# Tester la connexion SSL de chaque service depuis 192.168.30.11 CHAIN='/etc/ssl/c2rt/intermediateCA/certs/ca-chain.cert.pem' # LDAPS — Samba (port 636) echo | openssl s_client -connect 192.168.30.10:636 -CAfile $CHAIN 2>&1 | grep 'Verify return' # HTTPS — GLPI (port 443) echo | openssl s_client -connect 192.168.30.4:443 -CAfile $CHAIN 2>&1 | grep 'Verify return' # HTTPS — Proxmox (port 8006) echo | openssl s_client -connect 192.168.30.2:8006 -CAfile $CHAIN 2>&1 | grep 'Verify return' # HTTPS — VaultWarden (port 443) echo | openssl s_client -connect 192.168.30.6:443 -CAfile $CHAIN 2>&1 | grep 'Verify return' # Résultat attendu pour chaque : # Verify return code: 0 (ok)
10
Sauvegarde de la PKI vers le NAS (192.168.30.3)
▼
⚠ CRITIQUE — Sauvegarde indispensable
Cette archive contient TOUTES les clés privées de l'infrastructure.
Sans cette sauvegarde : perte du serveur OpenSSL = reconstruire toute la PKI + redistribuer tous les certificats.
#!/bin/bash # À exécuter sur 192.168.30.11 (serveur OpenSSL) DATE=$(date +%Y%m%d-%H%M) BACKUP_FILE="/root/pki-c2rt-backup-$DATE.tar.gz" NAS_PATH="/mnt/nas/backups/pki" # ─── Créer l'archive ───────────────────────────────────────────── tar -czf $BACKUP_FILE /etc/ssl/c2rt/ # ─── Vérifier l'archive ────────────────────────────────────────── tar -tzf $BACKUP_FILE | head -20 # ─── Restreindre les permissions ────────────────────────────────── chmod 600 $BACKUP_FILE # ─── Copier vers le NAS TrueNAS (192.168.30.3) ─────────────────── # Option 1 : via scp scp $BACKUP_FILE admin@192.168.30.3:$NAS_PATH/ # Option 2 : via montage NFS/SMB # mount -t nfs 192.168.30.3:/mnt/pool/backups /mnt/nas # cp $BACKUP_FILE /mnt/nas/pki/ echo "Sauvegarde effectuée : $BACKUP_FILE" echo "Copie vers NAS (192.168.30.3) : OK" # ─── Nettoyage des sauvegardes locales de plus de 30 jours ────── find /root -name 'pki-c2rt-backup-*.tar.gz' -mtime +30 -delete
11
Récapitulatif — Points critiques
▼
#Point critiqueAction requiseFréquence
1Mots de passe Root CA & Intermediate CAStocker IMMÉDIATEMENT dans KeePass. Si perdus → PKI à refaire depuis zéro.Unique
2IP dans les SAN des certificatsRemplacer TOUTES les IP par les vraies IP du plan d'adressage AVANT signature.À chaque génération
3Déploiement Root CAInstaller rootCA.cert.pem sur TOUS serveurs + postes clients AVANT les services.Une fois + nouveaux postes
4Renouvellement CRL IntermediateRégénérer avec openssl ca -gencrl avant expiration (180j).Tous les 6 mois
5Renouvellement CRL RootRégénérer avant expiration (365j).Tous les 12 mois
6Protection des clés privées (*.key.pem)Jamais distribuer, chmod 400, uniquement root.Permanent
7Sauvegarde PKI sur NASArchiver /etc/ssl/c2rt/ chiffré vers 192.168.30.3.Après chaque changement
8Renouvellement certificats servicesCertificats valides 825j (~2,2 ans). Planifier le renouvellement.Tous les 2 ans

0. Principe général et architecture du projet

Objectif du projet

Le but est de mettre en place un pare-feu applicatif (WAF) qui protège un serveur web interne contre les attaques web courantes (injection SQL, XSS, etc.), en s'appuyant sur Nginx + ModSecurity + OWASP Core Rule Set (CRS), avec du TLS signé par une PKI interne (autorité de certification maison), le tout dans un lab Hyper-V.

Architecture

Internet / LAN │ (switch externe Switch-LAN-TSSR) │ ┌──────────┴──────────┐ │ PC hôte │ 192.168.30.100 (exemple) │ (Windows + Hyper-V) │ - lance les VM └──────────┬──────────┘ - exécute les tests (curl, Test-NetConnection) │ ┌──────────────────────┼──────────────────────┐ │ │ │ ┌───────┴────────┐ ┌─────────┴─────────┐ ┌─────────┴─────────┐ │ PKI-CA-01 │ │ WAF-NGX-01 │ │ APP-SRV-01 │ │ 192.168.30.10 │ │ 192.168.30.50 │ │ 192.168.30.60 │ │ Autorité de │ │ Reverse proxy + │ │ Serveur │ │ certification │ │ pare-feu │ │ applicatif │ │ (Root + Interm.)│ │ applicatif │ │ (Nginx interne) │ │ │ │ Nginx + │ │ │ │ │ │ ModSecurity+CRS │ │ │ └─────────────────┘ └───────────────────┘ └───────────────────┘ ▲ │ HTTPS:443 │ HTTP:80 │ signe le certificat │ filtré ─────────────▶│ (accepte └───────────────────── ┘ par ModSecurity uniquement CSR envoyé / certificat renvoyé le WAF, via ufw)

Rôle de chaque brique :

  • PKI-CA-01 délivre et signe le certificat TLS utilisé par le WAF (Root CA + Intermediate CA), pour que le HTTPS présenté par waf.c2rt.local soit vérifiable via une chaîne de confiance.
  • WAF-NGX-01 est le seul point d'entrée exposé : il termine le TLS, filtre le trafic avec ModSecurity/CRS (injections SQL, XSS, etc.), applique du rate-limiting, puis relaie les requêtes légitimes vers le serveur applicatif en HTTP interne.
  • APP-SRV-01 héberge l'application web réelle et n'accepte de connexions sur le port 80 que depuis l'IP du WAF (règle ufw) : il est injoignable directement depuis le PC hôte ou le reste du réseau.
  • Le PC hôte Windows fait tourner Hyper-V, héberge les 3 VM et sert de poste de test (résolution DNS locale via le fichier hosts, curl, Test-NetConnection).

Pour que ton PC (l'hôte) puisse communiquer avec les VM, il faut un commutateur virtuel externe : il relie les VM à ta carte réseau physique, ce qui les met sur le même réseau que ton PC (et leur donne aussi Internet, nécessaire pour les apt install).

Les VM créées :

Nom VMRôleOSIPUtilisateur
PKI-CA-01Autorité de certificationDebian 12 (minimal, sans interface graphique)192.168.30.10pki
WAF-NGX-01Reverse proxy / pare-feu applicatifDebian 12 (minimal, sans interface graphique)192.168.30.50waf
APP-SRV-01Serveur applicatif interneDebian 12 (minimal, sans interface graphique)192.168.30.60app

Si tu as déjà une VM PKI ou une VM applicative issues de ton précédent projet PKI, tu peux les réutiliser telles quelles et sauter leur création — va directement à la partie qui les concerne.

💡 Adapte le plan d'adressage (192.168.30.0/24) à ton réseau physique réel si besoin. Avec un switch externe, les VM et ton PC doivent être sur le même sous-réseau que ta box/routeur — si ton LAN est en 192.168.1.0/24 par exemple, utilise cette plage à la place, en gardant les mêmes derniers octets (.10, .50, .60).

PARTIE 0 — Configurer Hyper-V pour que les VM parlent à ton PC

0.1 Créer le commutateur virtuel externe

Sur ton PC hôte :

  1. Ouvre Gestionnaire Hyper-V.
  2. Dans le panneau de droite, clique sur Gestionnaire de commutateurs virtuels.
  3. Sélectionne Externe, clique sur Créer un commutateur virtuel.
  4. Nomme-le par exemple Switch-LAN-TSSR.
  5. Dans Type de connexion, choisis ta carte réseau physique (Wi-Fi ou Ethernet, celle qui te donne Internet).
  6. Coche « Autoriser le système d'exploitation de gestion à partager cette carte réseau » — c'est cette case qui permet à ton PC hôte de continuer à communiquer avec les VM sur ce switch.
  7. Valide (OK).

📸 À capturer : la fenêtre du Gestionnaire de commutateurs virtuels avec le switch créé.

⚠️ Si tu es en Wi-Fi et que la création du switch externe échoue ou coupe ta connexion, c'est fréquent sur certaines cartes Wi-Fi : dis-le-moi, il existe une solution de repli (switch interne + partage de connexion Windows).

PARTIE 1 — Créer et installer chaque VM

Répète cette partie pour PKI-CA-01, WAF-NGX-01 et APP-SRV-01.

1.1 Télécharger l'ISO

Télécharge l'image d'installation nette de Debian 12 (« netinst ») : https://www.debian.org/distrib/netinst → choisis l'image amd64.

1.2 Créer la VM dans Hyper-V

  1. Gestionnaire Hyper-V → Nouveau → Ordinateur virtuel.
  2. Nom : PKI-CA-01 (puis répète avec WAF-NGX-01, APP-SRV-01).
  3. Génération 2 (recommandé, plus rapide, supporte l'UEFI).
  4. Mémoire : 2048 Mo suffisent pour ces rôles (RAM dynamique activable).
  5. Réseau : sélectionne Switch-LAN-TSSR (le switch externe créé en Partie 0) — c'est l'étape qui garantit que la VM sera joignable depuis ton PC.
  6. Disque dur virtuel : 20 Go suffisent.
  7. Options d'installation : « Installer un système d'exploitation à partir d'un fichier image (.iso) » → sélectionne l'ISO Debian téléchargée.
  8. Termine l'assistant.

1.3 Désactiver le Secure Boot (Debian ne le supporte pas nativement en génération 2)

Avant de démarrer la VM :

  1. Clic droit sur la VM → Paramètres.
  2. Sécurité → décoche Activer le démarrage sécurisé (Secure Boot). (Ou, si tu veux le garder : change le modèle en « Microsoft UEFI Certificate Authority » — mais le plus simple pour un lab est de le décocher.)
  3. Applique, puis démarre la VM.

1.4 Installation de Debian 12

Démarre la VM (double-clic, puis Démarrer dans la fenêtre de connexion) et suis l'installateur :

  • Langue : Français (ou English, comme tu préfères pour les logs)
  • Nom de machine : pki-ca-01 (adapte selon la VM)
  • Utilisateur root : définis un mot de passe
  • Partitionnement : « Assisté – utiliser un disque entier » (simple, suffisant pour un lab)
  • Sélection de logiciels : décoche Environnement de bureau / GNOME, garde uniquement Utilitaires usuels du système et éventuellement Serveur SSH (coche-le, ça te permettra de t'y connecter depuis ton PC ensuite au lieu de rester dans la fenêtre Hyper-V)
  • Installe GRUB sur le disque principal
  • Redémarre à la fin de l'installation

📸 À capturer : l'écran de connexion Debian après le premier redémarrage.

1.5 Configurer une IP statique

Une fois connecté (root), identifie le nom de l'interface réseau :

ip a

Édite /etc/network/interfaces (adapte ens18/eth0 au nom réel vu ci-dessus, et l'IP selon la machine — .10 pour PKI-CA-01, .50 pour WAF-NGX-01, .60 pour APP-SRV-01) :

auto ens18 iface ens18 inet static address 192.168.30.10 netmask 255.255.255.0 gateway 192.168.30.1 dns-nameservers 8.8.8.8
systemctl restart networking ip a

Vérifier depuis ton PC hôte (PowerShell) que la VM répond :

ping 192.168.30.10

📸 À capturer : réponse au ping depuis PowerShell.

1.6 Se connecter en SSH depuis ton PC (plus confortable que la console Hyper-V)

Si tu as installé le serveur SSH à l'étape 1.4, depuis PowerShell sur ton PC :

ssh root@192.168.30.10

Accepte l'empreinte de la clé au premier lancement.

💡 À partir d'ici, toutes les commandes des parties suivantes s'exécutent en SSH depuis ton PC, chacune sur la bonne VM — plus besoin de la fenêtre de connexion Hyper-V.

Répète toute la Partie 1 pour WAF-NGX-01 (192.168.30.50) et APP-SRV-01 (192.168.30.60).

PARTIE 2 — Sur APP-SRV-01 (serveur applicatif)

Installe une application web simple pour avoir quelque chose à protéger (tu peux remplacer par ton GLPI existant si tu en as déjà un) :

apt update && apt install -y nginx systemctl enable --now nginx curl -I http://localhost

Restreins l'accès HTTP pour n'accepter que le WAF :

apt install -y ufw ufw allow from 192.168.30.50 to any port 80 proto tcp ufw allow from 192.168.30.100 to any port 22 proto tcp # garde-toi l'accès SSH depuis ton PC ufw default deny incoming ufw enable

Vérifier depuis ton PC que le port 80 n'est plus ouvert directement :

Test-NetConnection 192.168.30.60 -Port 80

→ TcpTestSucceeded : False attendu (sauf accès direct autorisé pour debug).

📸 À capturer : ufw status sur la VM.

PARTIE 3 — Sur WAF-NGX-01 (le cœur de la procédure)

3.1 Système et Nginx

apt update && apt upgrade -y apt install -y nginx git build-essential libpcre3-dev libpcre3 zlib1g-dev \ libxml2-dev libyajl-dev libgeoip-dev libtool automake wget systemctl enable --now nginx systemctl status nginx

📸 À capturer.

3.2 Générer le CSR (à envoyer vers PKI-CA-01, Partie 4.3)

mkdir -p /etc/nginx/ssl && cd /etc/nginx/ssl openssl genrsa -out waf.c2rt.local.key 4096 openssl req -new -key waf.c2rt.local.key -out waf.c2rt.local.csr \ -subj "/C=FR/ST=Lot-et-Garonne/L=Agen/O=C2RT/OU=TSSR/CN=waf.c2rt.local"

→ va faire signer ce fichier sur PKI-CA-01 (Partie 4) avant de continuer.

Une fois les fichiers reçus (waf.c2rt.local.crt et ca-chain.crt, envoyés depuis PKI-CA-01 en Partie 4.4) :

cat /etc/nginx/ssl/waf.c2rt.local.crt /etc/nginx/ssl/ca-chain.crt > /etc/nginx/ssl/waf-chain.crt

3.3 ModSecurity + connecteur Nginx

apt install -y libmodsecurity3 libnginx-mod-http-modsecurity

Sur Debian 12, ce paquet dépose automatiquement un fichier de chargement du module dans /etc/nginx/modules-enabled/, dossier déjà inclus par défaut dans /etc/nginx/nginx.conf (ligne include /etc/nginx/modules-enabled/*.conf;). Il ne faut donc pas ajouter le load_module à la main sans vérifier d'abord, sous peine d'obtenir une erreur de directive en double.

Vérifie d'abord si le module est déjà chargé :

ls -l /etc/nginx/modules-enabled/ cat /etc/nginx/modules-enabled/*modsecurity*
  • Si un fichier contenant load_module modules/ngx_http_modsecurity_module.so; apparaît déjà dans le résultat → ne touche pas à nginx.conf, le module est déjà chargé. C'est le cas normal avec le paquet libnginx-mod-http-modsecurity sur Debian 12.
  • Seulement si aucun fichier de ce type n'existe dans modules-enabled/, ajoute alors manuellement en tête de /etc/nginx/nginx.conf :
load_module modules/ngx_http_modsecurity_module.so;
⚠️ C'est cette étape qui provoque l'erreur de doublon ("load_module" directive is duplicate) : le module est en réalité déjà chargé via modules-enabled/, donc ajouter la ligne une seconde fois dans nginx.conf fait échouer nginx -t. Si tu l'avais déjà ajoutée par erreur, retire la ligne de nginx.conf et relance le test.
nginx -t

📸 À capturer.

3.4 Configuration ModSecurity + OWASP CRS

Sur Debian 12, le paquet libnginx-mod-http-modsecurity crée déjà un dossier /etc/nginx/modsec/ et dépose parfois directement des fichiers d'exemple à la racine de /etc/nginx/ (modsecurity.conf, modsecurity_includes.conf). Le chemin /etc/modsecurity/modsecurity.conf-recommended utilisé dans certains tutoriels basés sur une compilation depuis les sources n'existe pas avec ce paquet — vérifie d'abord ce qui est réellement présent :

ls -la /etc/nginx/modsec/ ls /etc/nginx/ | grep -i modsec
  • Si /etc/nginx/modsecurity.conf existe déjà (cas le plus fréquent avec ce paquet) : utilise-le comme base plutôt que d'aller chercher un fichier -recommended qui n'est pas fourni ici.
mkdir -p /etc/nginx/modsec cp /etc/nginx/modsecurity.conf /etc/nginx/modsec/modsecurity.conf
  • Sinon, si tu as installé ModSecurity depuis les sources et que /etc/modsecurity/modsecurity.conf-recommended existe bien chez toi, utilise plutôt :
mkdir -p /etc/nginx/modsec cp /etc/modsecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

Copie ensuite la table Unicode, si elle n'est pas déjà dans /etc/nginx/modsec/ :

find / -xdev -name unicode.mapping 2>/dev/null
  • Si un résultat apparaît (par ex. /usr/share/.../unicode.mapping), copie-le :
cp <chemin_trouvé>/unicode.mapping /etc/nginx/modsec/
  • Sinon, télécharge-le directement depuis le dépôt officiel :
curl -o /etc/nginx/modsec/unicode.mapping \ https://raw.githubusercontent.com/owasp-modsecurity/ModSecurity/v3/master/unicode.mapping

Récupère ensuite l'OWASP Core Rule Set :

cd /etc/nginx/modsec git clone https://github.com/coreruleset/coreruleset.git crs cp crs/crs-setup.conf.example crs/crs-setup.conf

Crée le fichier /etc/nginx/modsec/main.conf (il n'existe pas encore, nano le crée) :

nano /etc/nginx/modsec/main.conf

Colle-y exactement ces trois lignes, puis enregistre (Ctrl+O, Entrée, Ctrl+X) :

Include /etc/nginx/modsec/modsecurity.conf Include /etc/nginx/modsec/crs/crs-setup.conf Include /etc/nginx/modsec/crs/rules/*.conf

Ensuite, édite (ce fichier existe déjà, tu l'as copié en 3.4) /etc/nginx/modsec/modsecurity.conf :

nano /etc/nginx/modsec/modsecurity.conf

Cherche la ligne qui commence par SecRuleEngine (déjà présente dans le fichier copié, en général réglée sur On) et remplace-la pour commencer en observation. Vérifie aussi que les lignes SecAuditEngine, SecAuditLog et SecAuditLogParts existent et ont bien ces valeurs — ajoute-les si elles manquent, ou corrige-les si elles diffèrent :

SecRuleEngine DetectionOnly SecAuditEngine RelevantOnly SecAuditLog /var/log/nginx/modsec_audit.log SecAuditLogParts ABIJDEFHZ

Enregistre (Ctrl+O, Entrée, Ctrl+X).

💡 Astuce rapide pour repérer la ligne sans ouvrir tout le fichier : ``bash grep -n "SecRuleEngine\|SecAuditEngine\|SecAuditLog" /etc/nginx/modsec/modsecurity.conf ``

3.5 Reverse proxy, TLS et filtrage

/etc/nginx/sites-available/waf-app.conf
server { listen 80; server_name waf.c2rt.local; return 301 https://$host$request_uri; } server { listen 443 ssl; http2 on; server_name waf.c2rt.local; ssl_certificate /etc/nginx/ssl/waf-chain.crt; ssl_certificate_key /etc/nginx/ssl/waf.c2rt.local.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; modsecurity on; modsecurity_rules_file /etc/nginx/modsec/main.conf; limit_req zone=waf_zone burst=20 nodelay; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; location /admin/ { allow 192.168.30.0/24; deny all; proxy_pass http://192.168.30.60:80; } location / { proxy_pass http://192.168.30.60:80; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } }

Dans le bloc http {} de /etc/nginx/nginx.conf :

limit_req_zone $binary_remote_addr zone=waf_zone:10m rate=10r/s;
⚠️ Avant de tester, vérifie que /etc/nginx/ssl/waf-chain.crt existe et n'est pas vide (cat /etc/nginx/ssl/waf-chain.crt) — il doit avoir été créé en 3.2, ce qui suppose que la Partie 4 (signature du certificat par PKI-CA-01) est déjà terminée. Un fichier vide ou absent provoque une erreur cannot load certificate ... PEM_read_bio_X509_AUX() failed au démarrage de Nginx.
ln -s /etc/nginx/sites-available/waf-app.conf /etc/nginx/sites-enabled/ nginx -t systemctl reload nginx

📸 À capturer.

PARTIE 4 — Sur PKI-CA-01 (autorité de certification)

Cette partie met en place une PKI à deux étages : une Root CA (racine, hors ligne dans l'idéal, ici sur la même VM pour le lab) qui ne signe qu'un seul certificat — celui de l'Intermediate CA — laquelle signe ensuite les certificats "de production" comme celui du WAF. C'est la pratique standard (la clé Root reste la plus protégée possible).

4.1 Arborescence et fichiers de base

apt update && apt install -y openssl # --- Root CA --- mkdir -p /root/pki/root/{certs,crl,newcerts,private,csr} chmod 700 /root/pki/root/private touch /root/pki/root/index.txt echo 1000 > /root/pki/root/serial echo 1000 > /root/pki/root/crlnumber # --- Intermediate CA --- mkdir -p /root/pki/intermediate/{certs,crl,csr,newcerts,private,chain} chmod 700 /root/pki/intermediate/private touch /root/pki/intermediate/index.txt echo 1000 > /root/pki/intermediate/serial echo 1000 > /root/pki/intermediate/crlnumber

4.2 Fichier de configuration OpenSSL de la Root CA

Crée /root/pki/root/openssl.cnf :

[ ca ] default_ca = CA_default [ CA_default ] dir = /root/pki/root certs = $dir/certs crl_dir = $dir/crl new_certs_dir = $dir/newcerts database = $dir/index.txt serial = $dir/serial RANDFILE = $dir/private/.rand private_key = $dir/private/ca.key.pem certificate = $dir/certs/ca.cert.pem crlnumber = $dir/crlnumber crl = $dir/crl/ca.crl.pem crl_extensions = crl_ext default_crl_days = 30 default_md = sha256 name_opt = ca_default cert_opt = ca_default default_days = 7300 preserve = no policy = policy_strict unique_subject = no [ policy_strict ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 4096 distinguished_name = req_distinguished_name string_mask = utf8only default_md = sha256 x509_extensions = v3_ca [ req_distinguished_name ] countryName = Country Name (2 letter code) stateOrProvinceName = State or Province Name localityName = Locality Name 0.organizationName = Organization Name organizationalUnitName = Organizational Unit Name commonName = Common Name emailAddress = Email Address [ v3_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ v3_intermediate_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true, pathlen:0 keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ crl_ext ] authorityKeyIdentifier = keyid:always

4.3 Créer la clé et le certificat auto-signé de la Root CA

cd /root/pki/root openssl genrsa -aes256 -out private/ca.key.pem 4096 chmod 400 private/ca.key.pem

(choisis une passphrase forte — elle protège la clé la plus sensible de toute la PKI)

openssl req -config openssl.cnf -key private/ca.key.pem \ -new -x509 -days 7300 -sha256 -extensions v3_ca \ -subj "/C=FR/ST=Lot-et-Garonne/L=Agen/O=C2RT/OU=TSSR/CN=C2RT Root CA" \ -out certs/ca.cert.pem chmod 444 certs/ca.cert.pem

Vérifier :

openssl x509 -noout -text -in certs/ca.cert.pem | head -20

📸 À capturer.

4.4 Fichier de configuration OpenSSL de l'Intermediate CA

Crée /root/pki/intermediate/openssl.cnf :

[ ca ] default_ca = CA_default [ CA_default ] dir = /root/pki/intermediate certs = $dir/certs crl_dir = $dir/crl new_certs_dir = $dir/newcerts database = $dir/index.txt serial = $dir/serial RANDFILE = $dir/private/.rand private_key = $dir/private/intermediate.key.pem certificate = $dir/certs/intermediate.cert.pem crlnumber = $dir/crlnumber crl = $dir/crl/intermediate.crl.pem crl_extensions = crl_ext default_crl_days = 30 default_md = sha256 name_opt = ca_default cert_opt = ca_default default_days = 375 preserve = no policy = policy_loose unique_subject = no [ policy_loose ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 4096 distinguished_name = req_distinguished_name string_mask = utf8only default_md = sha256 x509_extensions = v3_intermediate_ca [ req_distinguished_name ] countryName = Country Name (2 letter code) stateOrProvinceName = State or Province Name localityName = Locality Name 0.organizationName = Organization Name organizationalUnitName = Organizational Unit Name commonName = Common Name emailAddress = Email Address [ v3_intermediate_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true, pathlen:0 keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ server_cert ] basicConstraints = CA:FALSE nsCertType = server nsComment = "C2RT PKI Generated Server Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [ alt_names ] DNS.1 = waf.c2rt.local [ crl_ext ] authorityKeyIdentifier = keyid:always
💡 Le bloc [ alt_names ] définit le(s) nom(s) DNS couvert(s) par les certificats serveur signés avec l'extension server_cert. Ajoute une ligne DNS.2 = ... si tu dois couvrir d'autres noms plus tard.

4.5 Créer la clé, le CSR et le certificat de l'Intermediate CA (signé par la Root)

cd /root/pki/intermediate openssl genrsa -aes256 -out private/intermediate.key.pem 4096 chmod 400 private/intermediate.key.pem openssl req -config openssl.cnf -new -sha256 \ -key private/intermediate.key.pem \ -subj "/C=FR/ST=Lot-et-Garonne/L=Agen/O=C2RT/OU=TSSR/CN=C2RT Intermediate CA" \ -out csr/intermediate.csr.pem

Signature du CSR de l'intermédiaire par la Root CA :

cd /root/pki/root openssl ca -config openssl.cnf -extensions v3_intermediate_ca \ -days 3650 -notext -md sha256 \ -in /root/pki/intermediate/csr/intermediate.csr.pem \ -out /root/pki/intermediate/certs/intermediate.cert.pem chmod 444 /root/pki/intermediate/certs/intermediate.cert.pem

Vérifier la chaîne :

openssl x509 -noout -text \ -in /root/pki/intermediate/certs/intermediate.cert.pem | head -20 openssl verify -CAfile /root/pki/root/certs/ca.cert.pem \ /root/pki/intermediate/certs/intermediate.cert.pem

→ doit répondre OK. 📸 À capturer.

4.6 Construire le fichier de chaîne (chain)

mkdir -p /root/pki/intermediate/chain cat /root/pki/intermediate/certs/intermediate.cert.pem \ /root/pki/root/certs/ca.cert.pem \ > /root/pki/intermediate/chain/ca-chain.crt chmod 444 /root/pki/intermediate/chain/ca-chain.crt

(Si tu as déjà ta PKI du projet précédent sur une autre VM avec cette même arborescence, réutilise-la directement et saute à l'étape 4.7 — pas besoin de la refaire.)

4.7 Réceptionner et signer le CSR du WAF

Le CSR arrive depuis WAF-NGX-01 (généré en Partie 3.2). Depuis PKI-CA-01 :

scp root@192.168.30.50:/etc/nginx/ssl/waf.c2rt.local.csr /root/pki/intermediate/csr/ cd /root/pki/intermediate openssl ca -config openssl.cnf -extensions server_cert \ -days 365 -notext -md sha256 \ -in csr/waf.c2rt.local.csr \ -out certs/waf.c2rt.local.crt

Vérifier :

openssl verify -CAfile chain/ca-chain.crt certs/waf.c2rt.local.crt

→ doit répondre OK.

📸 À capturer.

4.8 Renvoyer le certificat signé et la chaîne au WAF

scp certs/waf.c2rt.local.crt root@192.168.30.50:/etc/nginx/ssl/ scp chain/ca-chain.crt root@192.168.30.50:/etc/nginx/ssl/

PARTIE 5 — Tests depuis ton PC hôte Windows

5.1 Résoudre le nom (fichier hosts local)

Ajoute une entrée dans le fichier hosts Windows pour pointer waf.c2rt.local vers le WAF (PowerShell en administrateur) :

Add-Content -Path C:\Windows\System32\drivers\etc\hosts -Value "192.168.30.50`twaf.c2rt.local"

5.2 Installer curl si besoin

Windows 10/11 inclut curl nativement dans PowerShell. Vérifie :

curl --version

5.3 Redirection et certificat

curl.exe -Iv http://waf.c2rt.local curl.exe -Iv --cacert ca-chain.crt https://waf.c2rt.local

(Copie d'abord ca-chain.crt depuis PKI-CA-01 vers ton PC, par exemple avec scp depuis PowerShell : scp root@192.168.30.10:/root/pki/intermediate/chain/ca-chain.crt .)

Attendu : 301 puis 200 avec chaîne de certification validée. 📸 À capturer.

5.4 Requête légitime, en observation

curl.exe -k https://waf.c2rt.local/

En parallèle, sur WAF-NGX-01 :

tail -f /var/log/nginx/modsec_audit.log

→ aucune alerte ne doit apparaître.

5.5 Attaques simulées (toujours en DetectionOnly)

curl.exe -k "https://waf.c2rt.local/?id=1'%20OR%20'1'='1" curl.exe -k "https://waf.c2rt.local/?q=<script>alert(1)</script>"
⚠️ Les espaces dans la charge utile SQLi sont encodés en %20 : les versions récentes de curl.exe sous Windows (curl 8.x) appliquent un contrôle strict de l'URL (RFC 3986) et rejettent les espaces bruts avec l'erreur URL rejected: Malformed input to a URL function. L'encodage %20 est décodé normalement côté serveur et déclenche toujours la règle CRS attendue.

→ ces deux requêtes doivent apparaître dans modsec_audit.log sur le WAF, avec un ID de règle CRS. 📸 À capturer.

5.6 Passage en blocage (sur WAF-NGX-01)

sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/nginx/modsec/modsecurity.conf nginx -t && systemctl reload nginx

5.7 Re-test depuis ton PC, en blocage actif

curl.exe -k -o NUL -w "%{http_code}`n" "https://waf.c2rt.local/?id=1'%20OR%20'1'='1" curl.exe -k -o NUL -w "%{http_code}`n" "https://waf.c2rt.local/?q=<script>alert(1)</script>" curl.exe -k -o NUL -w "%{http_code}`n" "https://waf.c2rt.local/"

Attendu : 403, 403, 200. 📸 À capturer.

5.8 Limitation de débit

1..40 | ForEach-Object { curl.exe -s -o NUL -w "%{http_code}`n" -k https://waf.c2rt.local/ }

Attendu : des 503/429 après quelques dizaines de requêtes. 📸 À capturer.

5.9 Vérifier qu'APP-SRV-01 reste injoignable en direct

Test-NetConnection 192.168.30.60 -Port 80

→ TcpTestSucceeded : False attendu, preuve que le WAF est le seul point d'entrée.

Récapitulatif de l'ordre global

  1. Hyper-V — créer le switch externe (Partie 0)
  2. Hyper-V — créer et installer les 3 VM Debian 12, IP statiques (Partie 1)
  3. APP-SRV-01 — restreindre l'accès au WAF uniquement (Partie 2)
  4. WAF-NGX-01 — installer Nginx, générer le CSR (Partie 3.1–3.2)
  5. PKI-CA-01 — construire la PKI (Root + Intermediate) si pas déjà fait, puis signer le certificat du WAF et le renvoyer (Partie 4)
  6. WAF-NGX-01 — assembler la chaîne, installer ModSecurity/CRS, configurer TLS + reverse proxy + filtrage, mode DetectionOnly (Partie 3.2–3.5)
  7. PC hôte — tests de fonctionnement et d'attaque en observation (Partie 5.1–5.5)
  8. WAF-NGX-01 — bascule SecRuleEngine On (Partie 5.6)
  9. PC hôte — re-tests en blocage, rate-limiting, vérification qu'APP-SRV-01 est injoignable en direct (Partie 5.7–5.9)

Envoie-moi le message d'erreur exact (copié-collé) dès que quelque chose coince, surtout pour la partie réseau Hyper-V qui est souvent la plus délicate.

Principe

Exécute les étapes dans l'ordre, du réseau jusqu'aux tests d'attaque. Chaque étape a un résultat attendu. Dès qu'un résultat ne correspond pas, arrête-toi : c'est très probablement là qu'est le problème, inutile d'aller plus loin. Note l'étape et le message d'erreur exact pour qu'on puisse le corriger précisément.

A. Réseau de base (depuis le PC hôte, PowerShell)

ping 192.168.30.10 # PKI-CA-01 ping 192.168.30.50 # WAF-NGX-01 ping 192.168.30.60 # APP-SRV-01

✅ Attendu : réponse des 3 VM, 0% perte. ❌ Si une VM ne répond pas : vérifie qu'elle est démarrée, sa config IP (ip a en console Hyper-V), et qu'elle utilise bien Switch-LAN-TSSR.

ssh root@192.168.30.10 ssh root@192.168.30.50 ssh root@192.168.30.60

✅ Attendu : connexion SSH réussie sur les 3.

B. APP-SRV-01

systemctl status nginx curl -I http://localhost

✅ Attendu : active (running), réponse HTTP/1.1 200 OK.

ufw status

✅ Attendu :

80/tcp ALLOW 192.168.30.50 22/tcp ALLOW 192.168.30.100 Default: deny (incoming)

Depuis le PC hôte :

Test-NetConnection 192.168.30.60 -Port 80

✅ Attendu : TcpTestSucceeded : False (seul le WAF doit pouvoir joindre le port 80).

C. PKI-CA-01

openssl x509 -noout -text -in /root/pki/root/certs/ca.cert.pem | head -5 openssl x509 -noout -text -in /root/pki/intermediate/certs/intermediate.cert.pem | head -5 openssl verify -CAfile /root/pki/root/certs/ca.cert.pem \ /root/pki/intermediate/certs/intermediate.cert.pem

✅ Attendu : les deux openssl x509 affichent un certificat lisible (Subject, Issuer, Validity), et le verify répond OK.

head -n 1 /root/pki/intermediate/certs/waf.c2rt.local.crt openssl x509 -noout -text -in /root/pki/intermediate/certs/waf.c2rt.local.crt openssl verify -CAfile /root/pki/intermediate/chain/ca-chain.crt \ /root/pki/intermediate/certs/waf.c2rt.local.crt

✅ Attendu : head -n 1 affiche exactement -----BEGIN CERTIFICATE-----, openssl x509 affiche bien le certificat du WAF (CN=waf.c2rt.local), et verify répond OK. ❌ Si head -n 1 n'affiche pas -----BEGIN CERTIFICATE----- : le certificat source est corrompu, il faut le régénérer (openssl ca ..., voir Partie 4.7 de la procédure principale) avant de le renvoyer au WAF.

D. WAF-NGX-01 — fichiers de certificat

for f in waf.c2rt.local.key waf.c2rt.local.crt ca-chain.crt waf-chain.crt; do echo "== $f ==" head -n 1 /etc/nginx/ssl/$f done

✅ Attendu :

  • waf.c2rt.local.key → -----BEGIN PRIVATE KEY----- (ou RSA PRIVATE KEY)
  • waf.c2rt.local.crt → -----BEGIN CERTIFICATE-----
  • ca-chain.crt → -----BEGIN CERTIFICATE-----
  • waf-chain.crt → -----BEGIN CERTIFICATE-----

❌ Si un de ces fichiers n'affiche pas la bonne ligne d'en-tête : il faut le retransférer depuis PKI-CA-01 (scp) et/ou reconstruire waf-chain.crt :

cat /etc/nginx/ssl/waf.c2rt.local.crt /etc/nginx/ssl/ca-chain.crt > /etc/nginx/ssl/waf-chain.crt
openssl verify -CAfile /etc/nginx/ssl/ca-chain.crt /etc/nginx/ssl/waf.c2rt.local.crt openssl x509 -noout -modulus -in /etc/nginx/ssl/waf.c2rt.local.crt | openssl md5 openssl rsa -noout -modulus -in /etc/nginx/ssl/waf.c2rt.local.key | openssl md5

✅ Attendu : verify répond OK, et les deux md5 (certificat et clé privée) sont identiques — sinon la clé et le certificat ne correspondent pas (mauvaise paire).

E. WAF-NGX-01 — configuration Nginx / ModSecurity

ls -l /etc/nginx/modules-enabled/ | grep -i modsec

✅ Attendu : un fichier présent référençant ngx_http_modsecurity_module.so.

ls /etc/nginx/modsec/ cat /etc/nginx/modsec/main.conf grep -n "SecRuleEngine" /etc/nginx/modsec/modsecurity.conf

✅ Attendu : main.conf contient les 3 Include, crs/ existe avec crs-setup.conf et rules/, et SecRuleEngine est réglé sur DetectionOnly (phase de test) ou On (phase de blocage, selon où tu en es).

ls -l /etc/nginx/sites-enabled/ nginx -t

✅ Attendu : waf-app.conf est bien lié dans sites-enabled/, et nginx -t répond :

nginx: configuration file /etc/nginx/nginx.conf test is successful

❌ C'est l'étape critique. Si nginx -t échoue, note le message exact — Nginx ne redémarrera pas et rien ne répondra sur le WAF tant que ce n'est pas corrigé.

systemctl status nginx ss -tlnp | grep -E ':80|:443'

✅ Attendu : active (running), et les ports 80 et 443 en écoute (LISTEN).

F. Depuis le PC hôte — résolution et accès

Get-Content C:\Windows\System32\drivers\etc\hosts | Select-String "waf.c2rt.local"

✅ Attendu : une ligne 192.168.30.50 waf.c2rt.local.

ping waf.c2rt.local

✅ Attendu : répond depuis 192.168.30.50. Si ping échoue mais que ping 192.168.30.50 fonctionnait en étape A, le souci est uniquement la résolution de nom (fichier hosts mal écrit — vérifie l'absence de faute de frappe et l'encodage du fichier).

Test-NetConnection 192.168.30.50 -Port 443 Test-NetConnection 192.168.30.50 -Port 80

✅ Attendu : TcpTestSucceeded : True pour les deux. Si c'est False alors que Nginx est active (running) côté WAF (étape E), vérifie qu'il n'y a pas de pare-feu Windows ou de routage bloquant entre le PC et la VM, et confirme que le PC est bien sur le même switch externe / sous-réseau que les VM.

curl.exe -Iv http://waf.c2rt.local

✅ Attendu : 301 Moved Permanently vers https://....

curl.exe -Iv --cacert ca-chain.crt https://waf.c2rt.local

✅ Attendu : 200 OK, avec la chaîne de certificats validée (pas d'erreur SSL certificate problem). ❌ Si tu obtiens une erreur TLS/certificat ici alors que l'étape D était bonne côté WAF : vérifie que tu as bien recopié le ca-chain.crt à jour depuis PKI-CA-01 vers ton PC (scp root@192.168.30.10:/root/pki/intermediate/chain/ca-chain.crt .), au même moment que la dernière régénération côté WAF.

G. Test fonctionnel complet

curl.exe -k https://waf.c2rt.local/

En parallèle, sur WAF-NGX-01 :

tail -f /var/log/nginx/modsec_audit.log

✅ Attendu : 200 OK côté PC, rien d'alarmant dans le log.

curl.exe -k "https://waf.c2rt.local/?id=1'%20OR%20'1'='1"

✅ Attendu : une entrée apparaît dans modsec_audit.log avec un ID de règle CRS (mode DetectionOnly) ou un 403 direct (mode On).

Test-NetConnection 192.168.30.60 -Port 80

✅ Attendu : TcpTestSucceeded : False — confirme que seul le WAF est exposé.

Résumé express (si tu es pressé)

# PC hôte Test-NetConnection 192.168.30.50 -Port 443
# WAF-NGX-01 nginx -t && systemctl status nginx --no-pager

Si les deux sont bons, le problème d'accès est résolu. Si nginx -t échoue, c'est toujours la cause n°1 d'un waf.c2rt.local injoignable.

Contexte — Pourquoi les ACL ?

Les permissions Linux classiques (chmod) ne permettent de définir des droits que pour 3 entités : le propriétaire, le groupe et les autres. Dès qu'on veut donner des droits spécifiques à un utilisateur particulier sans le mettre dans un groupe, les permissions standard atteignent leurs limites.

Les ACL (Access Control Lists) permettent d'ajouter des entrées de permissions supplémentaires, ciblées par utilisateur ou par groupe, indépendamment de la propriété du fichier.

01
Installer les outils ACL
▼

Les outils getfacl et setfacl sont généralement inclus dans le paquet acl. Installez-le si nécessaire :

sudo apt install acl

Vérifiez que les commandes sont bien disponibles :

getfacl --version setfacl --version
02
Créer l'environnement de test
▼

Créez un répertoire de travail appelé TestPermissions dans lequel nous allons appliquer les ACL :

sudo mkdir /TestPermissions sudo touch /TestPermissions/fichier_test.txt

Créez ensuite deux utilisateurs : utilisateur1 (le propriétaire) et utilisateur2 (à qui on accordera des droits via ACL) :

sudo adduser utilisateur1 sudo adduser utilisateur2

Attribuez utilisateur1 comme propriétaire du répertoire :

sudo chown utilisateur1:utilisateur1 /TestPermissions sudo chmod 700 /TestPermissions
ℹ️ Avec chmod 700, seul utilisateur1 a accès au répertoire. utilisateur2 n'a pour l'instant aucun droit — nous allons le lui accorder via les ACL.
03
Vérifier les ACL actuelles avec getfacl
▼

Avant d'ajouter des entrées ACL, consultez l'état actuel des permissions du répertoire :

getfacl /TestPermissions

La sortie devrait ressembler à ceci :

# file: TestPermissions # owner: utilisateur1 # group: utilisateur1 user::rwx group::--- other::---

On constate qu'il n'y a que les 3 entrées classiques. utilisateur2 n'apparaît pas encore.

04
Ajouter une entrée ACL pour utilisateur2
▼

Utilisez setfacl pour accorder à utilisateur2 les droits de lecture et d'écriture sur le répertoire :

sudo setfacl -m u:utilisateur2:rw /TestPermissions

Détail des options utilisées :

  • -m — modify : ajoute ou modifie une entrée ACL existante
  • u:utilisateur2 — cible l'utilisateur nommé utilisateur2
  • :rw — accorde les droits de lecture (r) et d'écriture (w)
💡 Pour appliquer récursivement à tout le contenu d'un répertoire, ajoutez l'option -R : sudo setfacl -R -m u:utilisateur2:rw /TestPermissions
05
Vérifier les ACL après modification
▼

Relancez getfacl pour confirmer que l'entrée ACL a bien été ajoutée :

getfacl /TestPermissions

La sortie devrait maintenant afficher une ligne supplémentaire pour utilisateur2 :

# file: TestPermissions # owner: utilisateur1 # group: utilisateur1 user::rwx user:utilisateur2:rw- group::--- mask::rw- other::---

Deux nouvelles lignes sont apparues :

  • user:utilisateur2:rw- — l'entrée ACL que vous venez d'ajouter
  • mask::rw- — le masque effectif, qui représente le maximum de droits que peuvent avoir les entrées ACL (hors propriétaire)
ℹ️ La présence du signe + après les permissions dans un ls -l (ex : drwx------+) indique qu'une ACL est active sur ce fichier ou répertoire.
06
Commandes ACL utiles
▼

Voici les commandes les plus courantes pour gérer les ACL au quotidien :

Ajouter des droits à un groupe

sudo setfacl -m g:nomgroupe:rx /repertoire

Supprimer l'entrée ACL d'un utilisateur

sudo setfacl -x u:utilisateur2 /TestPermissions

Supprimer toutes les ACL d'un fichier/dossier

sudo setfacl -b /TestPermissions

Définir des ACL par défaut (héritées par les nouveaux fichiers)

sudo setfacl -d -m u:utilisateur2:rw /TestPermissions

Copier les ACL d'un fichier vers un autre

getfacl /TestPermissions | sudo setfacl --set-file=- /AutreRepertoire
💡 L'option -d (default) est très utile sur les répertoires partagés : tous les nouveaux fichiers créés dedans hériteront automatiquement des ACL définies.
📋
Récapitulatif — Syntaxe setfacl
▼
CommandeDescription
setfacl -m u:user:rwxAjouter/modifier droits pour un utilisateur
setfacl -m g:group:rxAjouter/modifier droits pour un groupe
setfacl -x u:userSupprimer l'entrée ACL d'un utilisateur
setfacl -bSupprimer toutes les ACL
setfacl -R -mAppliquer récursivement
setfacl -d -mDéfinir des ACL par défaut (héritage)
getfacl fichierAfficher toutes les ACL d'un fichier/dossier

Les droits ACL utilisent la même notation que chmod :

  • r — lecture
  • w — écriture
  • x — exécution
  • - — droit non accordé
01
Installer le serveur SSH
▼

Le SFTP repose sur SSH. Si le serveur SSH n'est pas encore installé sur votre système, installez-le avec la commande suivante :

sudo apt install ssh
💡 Sur la plupart des distributions Ubuntu serveur, OpenSSH est déjà installé par défaut. Vous pouvez vérifier avec sudo service ssh status.
02
Modifier la configuration SSHD
▼

Une fois SSH installé, ouvrez le fichier de configuration du démon SSH pour y apporter les modifications nécessaires :

sudo nano /etc/ssh/sshd_config

Faites défiler jusqu'à la fin du fichier et ajoutez ces 5 lignes :

Match group sftp ChrootDirectory /home X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
ℹ️ Ces lignes indiquent à SSH que tous les membres du groupe sftp seront automatiquement redirigés vers le sous-système SFTP interne, avec leur accès restreint au répertoire /home.
03
Redémarrer le service SSH
▼

Redémarrez le service SSH pour que les modifications prennent effet :

sudo systemctl restart ssh
04
Créer le groupe SFTP
▼

Créez un groupe dédié appelé sftp. Tous les utilisateurs SFTP devront appartenir à ce groupe :

sudo addgroup sftp
05
Créer un utilisateur SFTP
▼

Créez un nouvel utilisateur et ajoutez-le directement au groupe sftp. Dans cet exemple, l'utilisateur s'appellera sftpuser :

sudo useradd -m sftpuser -g sftp

Définissez ensuite un mot de passe pour cet utilisateur :

sudo passwd sftpuser

Saisissez le mot de passe lorsque demandé, puis confirmez-le. Le système affichera passwd: password updated successfully en cas de succès.

06
Définir les permissions du répertoire utilisateur
▼

Accordez un accès complet à l'utilisateur sur son propre répertoire personnel, tout en interdisant l'accès aux autres utilisateurs du système :

sudo chmod 700 /home/sftpuser/
ℹ️ Le chmod 700 signifie : lecture + écriture + exécution pour le propriétaire uniquement — les autres utilisateurs n'ont aucun droit sur ce dossier.
01
Mettre à jour le système et installer VSFTPD
▼

Avant toute installation, assurez-vous que le système est à jour :

sudo apt update && sudo apt upgrade

Installez ensuite VSFTPD :

sudo apt install vsftpd

Une fois l'installation terminée, VSFTPD sera opérationnel sur votre système Ubuntu.

02
Vérifier l'état du service et activer le démarrage automatique
▼

Vérifiez que VSFTPD est bien en cours d'exécution :

sudo service vsftpd status

Activez le démarrage automatique au boot :

sudo systemctl start vsftpd sudo systemctl enable vsftpd
03
Configurer VSFTPD
▼

La configuration de VSFTPD se fait via le fichier /etc/vsftpd.conf. Ouvrez-le avec votre éditeur de texte :

sudo nano /etc/vsftpd.conf

Voici les paramètres courants à connaître :

  • anonymous_enable : Active ou désactive l'accès anonyme au serveur FTP.
  • local_enable : Active ou désactive l'accès des utilisateurs locaux au serveur FTP.
  • write_enable : Autorise ou interdit l'écriture de fichiers sur le serveur FTP.
  • chroot_local_user : Restreint les utilisateurs locaux à leur répertoire personnel.

Modifiez ces lignes comme suit :

local_enable=YES write_enable=YES chroot_local_user=YES

Ajoutez ensuite ces lignes à la fin du fichier pour le mode passif et la gestion de la liste d'utilisateurs :

user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=10000 pasv_max_port=10100 userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO

Redémarrez VSFTPD pour appliquer les changements :

sudo systemctl restart vsftpd.service
04
Gestion des utilisateurs FTP
▼

Vous pouvez créer de nouveaux utilisateurs FTP avec adduser ou useradd et leur attribuer un accès en modifiant le fichier /etc/vsftpd.userlist.

sudo adduser utilisateur sudo mkdir -p /home/utilisateur/ftp sudo chown nobody:nogroup /home/utilisateur/ftp sudo chmod a-w /home/utilisateur/ftp sudo mkdir /home/utilisateur/ftp/fichiers sudo chown utilisateur:utilisateur /home/utilisateur/ftp/fichiers sudo nano /home/utilisateur/ftp/fichiers/liste.txt echo "utilisateur" | sudo tee -a /etc/vsftpd.userlist sudo systemctl restart vsftpd
ℹ️ La structure du répertoire FTP impose que le dossier racine (/home/utilisateur/ftp) n'appartienne pas à l'utilisateur, mais que le sous-dossier fichiers lui appartienne — c'est là qu'il pourra écrire.
05
Se connecter depuis Windows avec WinSCP
▼

Pour vous connecter au serveur FTP depuis un poste Windows, utilisez le logiciel WinSCP. Au lancement, la fenêtre de connexion s'ouvre automatiquement :

Renseignez les champs suivants :

  • Protocole de fichier : FTP
  • Nom d'hôte : l'adresse IP de votre serveur (ex : 172.31.254.80)
  • Numéro de port : 21
  • Nom d'utilisateur : le compte créé sur le serveur (ex : martin)
  • Mot de passe : le mot de passe associé à cet utilisateur

Cliquez sur Connexion pour accéder au serveur FTP.

💡 Si vous avez activé SSL/TLS sur le serveur, sélectionnez FTP avec chiffrement TLS/SSL explicite dans le champ "Chiffrement" au lieu de "Pas de chiffrement".
⚙️
Configurer le pare-feu UFW Optionnel — Recommandé
▼

Si votre serveur utilise le pare-feu ufw, autorisez les ports nécessaires pour le FTP et le mode passif :

sudo ufw allow 20:21/tcp sudo ufw allow 10000:10100/tcp
💡 Le port 21 est le port de commande FTP, le port 20 est utilisé pour le transfert de données en mode actif. Les ports 10000 à 10100 sont les ports passifs définis dans la configuration.
🔐
Sécuriser VSFTPD avec SSL/TLS
▼

Pour renforcer la sécurité de votre serveur FTP, vous pouvez activer le chiffrement SSL/TLS. Commencez par générer un certificat auto-signé :

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Ajoutez ensuite les lignes suivantes à /etc/vsftpd.conf :

rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO require_ssl_reuse=NO ssl_ciphers=HIGH pasv_min_port=40000 pasv_max_port=50000
⚠️ Avec SSL/TLS activé, les clients FTP basiques (comme le navigateur) ne fonctionneront plus. Utilisez un client comme FileZilla qui supporte FTPS.
📋 Principe : Squid agit comme proxy transparent — les clients n’ont rien à configurer. Tout le trafic web passe automatiquement par le proxy grâce aux règles du pare-feu PfSense.
01
Installation du paquet Squid
▼

Dans l’interface d’administration PfSense, aller dans :

System > Package Manager > Available Packages

Rechercher squid et cliquer sur + Install à droite de la ligne squid.

À la fin de l’installation, le message “pfSense-pkg-squid installation successfully completed” doit s’afficher.

02
Configurer le cache local (Local Cache)
▼

La configuration de Squid s’effectue via le menu :

Services > Squid Proxy Server
⚠️ Il faut impérativement configurer le cache local avant d’activer Squid, sinon le démarrage du processus échouera.

Cliquer sur l’onglet Local Cache.

  • Hard Disk Cache Size : par défaut 100 Mo. Augmenter à 1024 Mo pour 1 Go de cache.
  • Hard Disk Cache Location : emplacement par défaut /var/squid/cache.
💾 Cliquer sur Save en bas de la page même si aucun paramètre n’a été modifié.
03
Configurer les paramètres généraux (General)
▼

Cliquer sur l’onglet General. Voici les options essentielles à configurer :

  • Enable Squid Proxy : cocher pour activer Squid sur le pare-feu.
  • Listen IP Version : [facultatif] IPv4, IPv6 ou les deux.
  • Proxy Interface(s) : sélectionner LAN uniquement — ne jamais sélectionner WAN.
  • Proxy Port : laisser à 3128 (ne sera pas déclaré sur les clients en mode transparent).
  • Allow Users on Interface : cocher pour autoriser implicitement les utilisateurs du réseau LAN.

Descendre dans la page et cocher Transparent HTTP Proxy. Dans le champ Transparent Proxy Interface(s), sélectionner LAN.

💡 Les options Bypass Proxy for these Source IPs et Bypass Proxy for these Destination IPs permettent de laisser passer certaines adresses directement sans passer par le proxy.

Laisser Enable SSL filtering décochée pour l’instant — elle sera activée à l’étape SSL Inspection.

Continuer de descendre et activer les journaux :

  • Enable Access Logging : cocher pour savoir qui fait quoi sur Internet.
  • Rotate Logs : durée de conservation des logs. En milieu scolaire : 365 jours.

Dans la section Headers Handling, Language and Other Customizations :

  • Visible Hostname : nom d’hôte affiché sur les pages de blocage.
  • Administrator’s Email : e-mail affiché sur les pages d’erreur.
  • Error Language : sélectionner fr pour les messages en français.
  • Suppress Squid Version : cocher pour masquer la version de Squid pour des raisons de sécurité.
✅ Cliquer sur Save en bas de page pour valider tous ces paramètres.
04
Tester le proxy — Blacklist HTTP
▼

Cliquer sur l’onglet ACLs dans la configuration de Squid.

  • Allowed Subnets : sous-réseaux autorisés (implicite si “Allow Users on Interface” est coché).
  • Unrestricted IPs : adresses IP qui contournent toutes les restrictions.
  • Blacklist : domaines à bloquer — un par ligne, expressions régulières supportées.

Ajouter un domaine de test dans la Blacklist (ex : horizons21.fr) :

Sauvegarder, puis depuis un poste client tenter d’accéder au site bloqué. La page “Accès interdit” renvoyée par Squid doit s’afficher.

✔ Le proxy transparent HTTP fonctionne correctement si la page de blocage Squid s’affiche.

🔒 Configuration HTTPS — SSL Inspection

📌 Le proxy transparent ne couvre que le HTTP par défaut. Pour inspecter le HTTPS, il faut mettre en place le SSL Inspection (MITM) : le proxy déchiffre, inspecte et rechiffre chaque flux HTTPS.
01
Créer l’autorité de certification PfSense
▼

Aller dans :

System > Cert. Manager > CAs > Add

Renseigner les champs et valider. Une CA est créée (ex : CA-ITCONNECT).

💡 Si une autorité de certification Active Directory existe déjà, il est possible d’importer le certificat existant directement.
02
Activer le SSL Inspection dans Squid
▼

Retourner dans Services > Squid Proxy Server > General.

  • Cocher Resolve DNS IPv4 First pour activer la résolution DNS en amont du filtrage HTTPS.
  • Cocher Enable SSL filtering.
  • SSL/MITM Mode : choisir Splice All — le mode le moins contraignant, ne nécessite pas de déployer le certificat sur chaque poste client.
  • CA : sélectionner l’autorité de certification créée à l’étape précédente.
⚠️ En mode Bump Otherwise ou autre, il faut exporter le certificat de la CA et le déployer sur toutes les machines clientes qui passeront par le proxy.

Sauvegarder via le bouton en bas de page.

03
Erreur probable — SSL_ERROR_RX_RECORD_TOO_LONG
▼

Après activation du SSL Inspection, les postes clients qui tentent de naviguer en HTTPS obtiennent très probablement cette erreur :

🚫 Cause : le proxy transparent n’arrive pas à résoudre correctement les noms de domaine HTTPS. Solution : utiliser le proxy PfSense comme résolveur DNS sur les postes clients (directement ou indirectement via le contrôleur de domaine).
04
Ajuster les paramètres DNS [optionnel]
▼

Deux approches pour corriger la résolution DNS :

  • Option A : Définir l’adresse IP du proxy (PfSense) comme DNS sur les postes de travail, manuellement ou via DHCP.
    Attention si Active Directory : créer une règle dans le résolveur DNS PfSense pour renvoyer les requêtes du domaine AD vers le DC.
  • Option B : Définir l’adresse IP du contrôleur de domaine comme DNS sur les postes, et configurer PfSense comme redirecteur DNS sur le serveur AD — ainsi les requêtes Internet inconnues du DNS interne sont transmises à PfSense.
✅ Une fois la configuration DNS correcte, retourner sur le poste client et tenter à nouveau de naviguer en HTTPS — le proxy transparent HTTPS doit fonctionner.
📋 Prérequis : Squid doit être installé et opérationnel sur PfSense avant de configurer SquidGuard. SquidGuard est un complément qui ajoute le filtrage par catégories, les plages horaires et les groupes utilisateurs — des fonctions absentes de Squid seul.
01
Installation de SquidGuard
▼

Aller dans :

System > Package Manager > Available Packages

Rechercher squid — le paquet squidGuard apparaît dans la liste. Cliquer sur + Install.

Une fois installé, accéder à la configuration via :

Services > SquidGuard Proxy Filter
02
Paramètres généraux et blacklist URL
▼
⚠️ Ne pas cocher “Check this option to enable SquidGuard” pour l’instant — il faut d’abord tout préconfigurer avant de l’activer.

Dans l’onglet General Settings, activer les journaux :

  • Enable GUI Log : cocher pour journaliser les accès dans l’interface.
  • Enable log : cocher pour journaliser le filtrage des catégories et Target Categories.

Dans la section Blacklist, cocher “Check this option to enable blacklist” puis renseigner la Blacklist URL avec la liste noire de l’Université Toulouse Capitole :

http://dsi.ut-capitole.fr/blacklists/download/blacklists_for_pfsense.tar.gz
💡 Cette liste est française, fiable, mise à jour régulièrement et contient de nombreuses catégories (adult, vpn, warez, malware, etc.).

Cliquer sur Save.

03
Télécharger la blacklist
▼

Aller dans l’onglet Blacklist de SquidGuard et cliquer sur le bouton Download.

Le journal affiche le progrès : Download complete → Unpack archive → Scan blacklist categories → Found 63 items → Start rebuild DB → Completed.

✅ Une fois la reconstruction terminée, les catégories sont disponibles dans l’onglet Common ACL.
04
Configurer les règles ACL (Common ACL)
▼

Cliquer sur l’onglet Common ACL. La Target Rules List affiche toutes les catégories de la blacklist Toulouse.

  • Pour chaque catégorie à bloquer, passer le champ access sur deny. Exemple : [blk_blacklists_vpn] → deny.
  • Laisser Default access [all] sur allow pour autoriser tout ce qui n’est pas explicitement bloqué.
  • Cocher Do not allow IP-Addresses in URL pour empêcher de contourner le filtre en tapant une IP directement.
  • Cocher Use SafeSearch Engine pour activer le mode sécurisé sur Google, Bing, DuckDuckGo, Qwant, etc.
  • Cocher Log en bas pour activer la journalisation de cette règle.

Cliquer sur Save.

05
Activer SquidGuard et vérifier
▼

Retourner dans General Settings, cocher “Check this option to enable SquidGuard” puis cliquer sur Apply.

Le statut doit passer à STARTED. Depuis un poste client, tenter d’accéder à un site de la catégorie bloquée (ex : nordvpn.com pour la catégorie VPN) — la connexion doit être bloquée.

⚠️ Important : à chaque modification de la configuration SquidGuard (nouvelle catégorie bloquée, etc.), il faut impérativement revenir dans General Settings et cliquer sur Apply pour que les changements soient pris en compte.
💡 Pour aller plus loin : l’onglet Times permet de créer des plages horaires, Groups ACL des règles basées sur des groupes Active Directory, et Target categories des listes personnalisées.
📋 Principe : HAProxy peut fonctionner de 2 manières quand il y a plusieurs sites sur le serveur web : soit via les ports (chaque site écoute sur un port différent), soit via le Server Name (le server_name dans la config du site correspond au NAME du backend HAProxy). Dans la procédure ci-dessous, on utilise la méthode des ports d'écoute. Il est recommandé de combiner la correspondance via port ET Host/Server_name.

1. Installation du paquet HAProxy

01
Installer HAProxy via le Package Manager
▼

Dans l'interface d'administration pfSense, aller dans :

System > Package Manager > Available Packages

Rechercher haproxy et cliquer sur + Install à droite de la ligne haproxy.

02
Configurer les paramètres généraux (Settings)
▼

Une fois installé, aller dans :

Services > HAProxy > Settings

Dans l'onglet Settings, renseigner le champ Maximum connections à 1000.

Descendre dans la page jusqu'à la section Stats tab, 'internal' stats port. Ajouter le port 2200 dans le champ Internal stats port.

Un peu plus bas dans la page, dans la section Tuning, indiquer la taille 2048 pour l'option Max SSL Diffie-Hellman size (afin d'éviter un avertissement dans les logs HAProxy).

💾 Ne pas oublier de cliquer sur SAVE après ces modifications.

2. Déclarer le Backend (serveur web)

03
Créer le Backend dans HAProxy
▼

Aller dans l'onglet Backend et cliquer sur Add pour créer un nouveau backend.

Remplir les champs suivants dans la Server List :

ChampValeurExplication
ModeActiveServeur actif dans le pool
Namesrv-webNom de l'hôte serveur web pour s'y retrouver (ex: "debian-11")
ForwardtoAddress+PortOn va interroger ce serveur via son adresse IP directement
Address192.168.30.1Adresse IP du serveur web (adapter à votre configuration)
Port80Port sur lequel est en ligne le site sur le serveur web

Plus bas dans la page, dans la section Health checking, passer l'option Http check method sur GET.

💾 Cliquer sur SAVE.

3. Déclarer le Frontend (point d'entrée)

04
Créer le Frontend HAProxy
▼

Aller dans l'onglet Frontend et cliquer sur Add.

Dans la section Edit HAProxy Frontend, pour le HTTP sur le port 80, on peut laisser la configuration par défaut. Vérifier que :

Listen address : WAN address (IPv4) Port : 80 Type : http / https (offloading)
05
Configurer les ACL et Actions dans le Frontend
▼

Descendre jusqu'à la section Default Backend, access control lists and actions.

🔑 PARTIE ACCESS CONTROL LISTS
  • Name : nom de l'ACL — par exemple AccessSite1
  • Expression : choisir Host matches:, car on cherche à repérer la présence du nom de domaine dans l'en-tête HTTP Host
  • Value : préciser le nom de domaine du site — par exemple c2rt.test
⚡ PARTIE ACTIONS
  • Action : sélectionner Use backend et choisir le backend créé précédemment
  • Condition acl names : spécifier AccessSite1 (le nom de l'ACL que l'on vient de créer)
🔑 PARTIE ACCESS CONTROL LISTS
  • Name : nom de l’ACL — par exemple AccesSite.
  • Expression : choisir Host matches:, car on cherche à repérer la présence du nom de domaine dans l’URL / la requête.
  • Value : préciser le nom de domaine du site — par exemple c2rt.test.
⚡ PARTIE ACTIONS
  • Action : sélectionner Use backend et choisir le backend créé précédemment — cela permet d’utiliser ce Backend lorsque la requête correspond à l’ACL.
  • Condition acl names : spécifier AccesSite — c’est le nom de l’ACL que l’on vient de créer.
⚠️ Créer une ACL par nom de domaine. Exemple : AccessSite1 pour c2rt.test ET www.c2rt.test (deux lignes séparées avec le même nom d'ACL).
06
Activer l'option "Use forwardfor" et sauvegarder
▼

Descendre dans la page jusqu'à la section Advanced settings. Cocher l'option "Use 'forwardfor' option" pour ajouter le champ X-Forwarded-For à l'en-tête HTTP.

💡 Cela permet au serveur web de connaître l'adresse IP d'origine du client, et non seulement l'adresse IP du serveur reverse proxy.

SAVE → Retourner dans Settings pour activer HAProxy en cochant Enable HAProxy.

4. Configurer le fichier HOSTS et tester

07
Ajouter le nom de domaine dans le fichier HOSTS (Windows)
▼

Sur l'hôte client, ouvrir le Bloc Note en Administrateur et éditer le fichier HOSTS :

C:\Windows\System32\drivers\etc\hosts

Ajouter la ligne suivante en bas du fichier, avec l'IP de pfSense suivie du nom de domaine :

✅ Ouvrir un navigateur et taper http://c2rt.test — le site doit s'afficher via HAProxy.

5. Ajouter un second site web

08
Configurer le second site sur Nginx (port différent)
▼

Pour rajouter un second site, il faut d'abord le créer sur le serveur web et le faire écouter sur un port différent du port 80. Exemple avec le port 8080 dans le fichier de configuration Nginx :

server { listen 8080; server_name c2rt.lab; root /var/www/c2rt/html; index index.html; location / { try_files $uri $uri/ =404; } }
09
Créer le Backend pour le site 2
▼

Retourner dans HAProxy → Backend → Add. Créer un second backend en indiquant cette fois le port 8080 (ou le port dédié au site 2 sur le serveur web).

⚠️ Ne pas oublier de passer le Http check method en GET comme pour le premier backend, puis SAVE.
10
Ajouter l'ACL du site 2 dans le Frontend
▼

Aller dans Frontend → éditer le frontend existant. Dans la section Access Control Lists and Actions, ajouter une nouvelle ACL pour le second site :

ChampSite 1Site 2
NameAccessSite1AccessSite2
ExpressionHost matches:Host matches:
Valuec2rt.testc2rt.coucou

Dans la section Actions, ajouter une nouvelle ligne :

ActionParametersCondition acl names
Use Backendbackend: Monsite1AccessSite1
Use Backendbackend: Monsite2AccessSite2
💾 Cliquer sur SAVE.
11
Ajouter le second domaine dans le fichier HOSTS
▼

Pour finir, rouvrir le fichier HOSTS en administrateur et ajouter le nom de domaine du second site :

Résultat final : les deux sites sont accessibles depuis le même HAProxy sur pfSense, chacun répondant à son nom de domaine :

✅ Ne pas oublier d'autoriser le flux HTTP sur l'interface WAN dans les règles de pare-feu pfSense.
📋 Principe : Un client nomade (PC distant) se connecte via Internet à pfSense. Un tunnel chiffré est créé — le client obtient une IP dans le réseau tunnel (192.168.67.0/24) et peut accéder au réseau local de l’entreprise (10.0.100.0/24).
01
Lancer le Wizard OpenVPN
▼

1. Architecture cible du VPN Client-to-Site : (une carte externe pour l'acces et une privé pour le lan)

2. Aller dans VPN > OpenVPN :

3. Cliquer sur l’onglet Wizards. Dans Type of Server, choisir Local User Access puis Next :

💡 D’autres méthodes : LDAP pour Active Directory, RADIUS pour un serveur d’authentification centralisé.
02
Créer l’autorité de certification (CA) et le certificat serveur
▼

1. Add New CA — remplir les champs (Descriptive name, Country, State, City, Organization). La longueur de clé et la durée de vie peuvent rester par défaut :

2. Add New Certificate — créer le certificat pour le serveur VPN lui-même (Descriptive name ex : VPNserv-CERTIF, mêmes infos). Cliquer Create new Certificate :

03
Configurer le serveur — Général & Chiffrement
▼

Server Setup — informations générales :

  • Description : nom du VPN (ex : VPN_Test).
  • Protocol : UDP on IPv4 only — TCP est beaucoup plus lent.
  • Interface : WAN.
  • Local Port : 1194 (port par défaut OpenVPN).

Cryptographic Settings :

  • DH Parameters Length : 4096 bit (2048 est acceptable en production).
  • Data Encryption Algorithm : AES-256-GCM.
  • Auth Digest Algorithm : SHA512.
04
Configurer le tunnel et les règles firewall
▼

Tunnel Settings :

  • IPv4 Tunnel Network : 192.168.67.0/24 — réseau privé attribué aux clients VPN.
  • IPv4 Local Network : 10.0.100.0/24 — réseau local accessible via le tunnel.

Dans Client Settings, ne rien modifier (DNS, NTP, WINS optionnels). Cliquer Next.

Firewall Rule Configuration — cocher les deux cases pour créer automatiquement les règles :

Le serveur est prêt, les règles WAN et OpenVPN sont créées automatiquement :

05
Créer l’utilisateur client et son certificat
▼

1. Aller dans System > User Manager :

2. Cliquer + Add dans la liste des utilisateurs :

3. Remplir les informations et cocher Certificate :

4. Renseigner le certificat utilisateur et cliquer Save :

06
Installer le paquet Client Export et télécharger la configuration
▼

1. Aller dans System > Package Manager :

2. Dans Available Packages, rechercher openvpn et installer openvpn-client-export :

3. Retourner dans VPN > OpenVPN — l’onglet Client Export est maintenant disponible :

4. Dans OpenVPN Clients, télécharger l’installeur Windows pour l’utilisateur jean :

⚠️ Si Windows bloque l’installeur, aller dans Sécurité Windows > Contrôle des applications > Contrôle intelligent > Désactivé.

5. Exécuter l’installeur sur la machine cliente :

07
Connexion et vérification
▼

1. Lancer le client OpenVPN et entrer les identifiants de l’utilisateur :

2. Vérifier avec ipconfig — une carte TAP-Windows doit apparaître avec une IP dans le tunnel (192.168.67.x) :

3. Pinguer le réseau local et accéder à une ressource web interne :

✔ Le VPN Client-to-Site est opérationnel. L’utilisateur distant accède au réseau local comme s’il y était connecté physiquement.
📋 Architecture : Deux pfSense reliés par un tunnel IPsec. Les machines des deux réseaux LAN peuvent communiquer de façon transparente et chiffrée.
Prérequis — Architecture réseau
▼
MachineWANLANRôle
pfSense 1192.168.12.136/24192.168.2.1/24Site A — Initiateur
pfSense 2192.168.12.202/24192.168.3.1/24Site B — Répondeur
PC-CLIENT-01—192.168.2.10/24Client Site A
PC-CLIENT-02—192.168.3.10/24Client Site B
🏠 Site A
  • Réseau LAN : 192.168.2.0/24
  • pfSense WAN : 192.168.12.136
  • PC-CLIENT-01 : 192.168.2.10
  • Commutateur Site A
🏢 Site B
  • Réseau LAN : 192.168.3.0/24
  • pfSense WAN : 192.168.12.202
  • PC-CLIENT-02 : 192.168.3.10
  • Commutateur Site B
01
Configuration Phase 1 sur pfSense 1 (Initiateur)
▼

1. Aller dans VPN > IPsec.

2. Cliquer sur + Add P1.

3. Remplir les informations générales :

  • Description : saisir un nom mémo (ex : VPN01).
  • Key Exchange version : IKEv2.
  • Internet Protocol : IPv4.
  • Interface : WAN.
  • Remote Gateway : IP WAN du pfSense distant — 192.168.12.202 (WAN de pfSense 2).

4. Dans la section Phase 1 Proposal (Authentication), générer la clé PSK :

  • Authentication Method : Mutual PSK.
  • Pre-Shared Key : cliquer Generate new Pre-Shared Key. Conserver cette clé — identique des deux côtés.
  • Phase 1 Encryption : laisser par défaut (AES 256 bits, SHA256, DH 14).

5. Cliquer Save puis Apply Changes.

02
Configuration Phase 2 — Réseaux à interconnecter
▼

Cliquer sur Show Phase 2 Entries puis + Add P2. Renseigner les réseaux :

  • Description : ex : LAN01.
  • Mode : Tunnel IPv4.
  • Local Network : 192.168.2.0/24 (LAN Site A).
  • Remote Network : 192.168.3.0/24 (LAN Site B).

Cliquer Save puis Apply Changes.

03
Configuration de pfSense 2 (Répondeur)
▼

Répéter la même procédure sur pfSense 2 en inversant les adresses :

  • Remote Gateway : 192.168.12.136 (WAN de pfSense 1).
  • Pre-Shared Key : coller la même clé que celle générée sur pfSense 1.
  • Phase 2 — Local Network : 192.168.3.0/24 — Remote Network : 192.168.2.0/24.
💡 La clé PSK doit être strictement identique sur les deux pfSense.
04
Règles Firewall — Autoriser le trafic IPsec
▼

Sur chacun des deux pfSense, aller dans Firewall > Rules > IPsec et ajouter une règle.

  • Action : Pass.
  • Interface : IPsec.
  • Protocol : ICMP pour tester (ou Any pour tout autoriser selon vos besoins).
⚠️ Effectuer la même opération sur pfSense 2 sinon le trafic sera bloqué dans un sens.
05
Activation et vérification du tunnel
▼

Aller dans Status > IPsec sur chaque pfSense et cliquer sur Connect P1 and P2s.

Le statut doit passer à Established sur les deux pfSense :

  • pfSense 1 : rôle Initiator — statut Established.
  • pfSense 2 : rôle Responder — statut Established.
06
Test de connectivité (Ping)
▼

Depuis PC-CLIENT-01 (192.168.2.10), pinguer PC-CLIENT-02 (192.168.3.10) et inversement.

✔ La connexion est établie. Si le ping échoue, vérifier le Windows Defender Firewall sur les postes clients (autoriser ICMP entrant).

1. Qu'est-ce que le FTP ?

Le FTP (File Transfer Protocol) est un protocole réseau standard permettant le transfert de fichiers entre un client et un serveur via un réseau TCP/IP. Il a été défini dans le RFC 959 en 1985.

Il utilise deux canaux de communication distincts :

  • Port 21 — Canal de commande : pour envoyer des instructions (login, navigation, liste de fichiers…)
  • Port 20 — Canal de données : pour le transfert effectif des fichiers (en mode actif)

2. Mode Actif vs Mode Passif

Le FTP fonctionne selon deux modes qui diffèrent dans la façon dont la connexion de données est établie :

CritèreMode ActifMode Passif (PASV)
Qui initie la connexion data ?Le serveur contacte le clientLe client contacte le serveur
Port de données côté serveurPort 20Port aléatoire défini par le serveur
Problèmes avec les pare-feuxSouvent bloqué (le serveur initie)Plus compatible (le client initie)
Usage recommandéRéseaux internes sans NATInternet, derrière un routeur NAT
💡 En pratique, le mode passif est presque toujours utilisé sur Internet, car les pare-feux des clients bloquent les connexions entrantes initiées depuis l'extérieur.

3. Qu'est-ce que VSFTPD ?

VSFTPD (Very Secure FTP Daemon) est l'un des serveurs FTP les plus utilisés sous Linux. Il est notamment utilisé par des systèmes comme Ubuntu et est réputé pour :

  • Sa sécurité : conçu avec la sécurité en priorité, d'où son nom
  • Ses performances : très léger et efficace même sous forte charge
  • Sa stabilité : utilisé en production sur de nombreux serveurs
  • Sa simplicité de configuration via un seul fichier /etc/vsftpd.conf

4. Principaux paramètres de configuration

ParamètreValeurDescription
anonymous_enableYES/NOAutorise ou interdit les connexions sans mot de passe
local_enableYES/NOAutorise les comptes locaux Linux à se connecter
write_enableYES/NOAutorise l'écriture de fichiers sur le serveur
chroot_local_userYES/NOEmprisonne l'utilisateur dans son répertoire personnel (jail)
userlist_enableYES/NOActive l'utilisation d'une liste blanche/noire d'utilisateurs
userlist_denyYES/NONO = liste blanche (seuls les listés ont accès)
pasv_min_portNombrePort minimal pour le mode passif
pasv_max_portNombrePort maximal pour le mode passif
ssl_enableYES/NOActive le chiffrement FTPS (SSL/TLS)

5. FTP vs FTPS vs SFTP

Il est important de ne pas confondre ces trois protocoles :

ProtocolePortChiffrementDescription
FTP21 / 20❌ NonProtocole classique — données en clair sur le réseau
FTPS990 / 989✅ Oui (SSL/TLS)FTP avec couche SSL/TLS — ce que configure VSFTPD
SFTP22✅ Oui (SSH)Protocole différent — transfert via tunnel SSH, sans lien avec FTP
⚠️ SFTP n'est pas du FTP sécurisé — c'est un protocole totalement différent qui passe par SSH. Si vous voulez du FTP chiffré, utilisez FTPS (configuré via VSFTPD avec ssl_enable=YES).

6. Structure des répertoires VSFTPD

Pour que le chroot fonctionne correctement avec VSFTPD, la structure de répertoires doit respecter une règle précise : le répertoire racine de l'utilisateur ne doit pas lui appartenir, mais il doit posséder un sous-dossier pour écrire.

/home/utilisateur/ └── ftp/ ← propriétaire : nobody:nogroup, droits : a-w (pas d'écriture) └── fichiers/ ← propriétaire : utilisateur:utilisateur (peut écrire ici)
💡 Cette structure est requise car VSFTPD refuse de chroiter un utilisateur dans un répertoire où il a les droits d'écriture à la racine — c'est une mesure de sécurité.

1. Le groupe de sécurité Active Directory

01
Créer le groupe de sécurité GRP-Redirection
▼

Dans la console Active Directory Utilisateurs et Ordinateurs, créer un nouveau groupe de sécurité nommé GRP-Redirection.

⚠️ Ce groupe contiendra uniquement les utilisateurs pour lesquels la redirection de dossiers doit être activée.

Ajoutez ensuite les membres souhaités dans ce groupe.

2. Le partage SMB et attribution des droits

02
Créer le partage SMB — Profiles$
▼

Dans la console Gestionnaire de serveur, accédez à Services de fichiers et de stockage et créez un nouveau partage :

Type : Partage SMB - Rapide Nom : Profiles$
✅ Le symbole $ à la fin du nom masque le partage lors de la navigation réseau — bonne pratique de sécurité.

Options à activer :

OptionEffet
Activer l'énumération basée sur l'accèsL'utilisateur ne voit que son propre dossier lors de la navigation
Autoriser la mise en cache du partageActive la synchronisation des fichiers hors connexion
03
Configurer les autorisations NTFS
▼
⚠️ C'est l'étape la plus délicate. Les permissions NTFS doivent être configurées précisément pour que chaque utilisateur accède uniquement à son propre dossier.
PrincipalAccèsS'applique à
SystèmeContrôle totalCe dossier, sous-dossiers et fichiers
AdministrateurContrôle totalCe dossier, sous-dossiers et fichiers
GRP-RedirectionLecture & Exécution, Création de dossiersCe dossier seulement
CRÉATEUR PROPRIÉTAIREContrôle totalSous-dossiers et fichiers seulement

3. La GPO de redirection de dossiers

04
Créer et cibler la GPO FOLDER_REDIRECTION
▼

Via la console Gestion de stratégie de groupe, créez une GPO nommée FOLDER_REDIRECTION.

Filtrage de sécurité : modifiez-le pour qu'il contienne uniquement GRP-Redirection (retirez Utilisateurs authentifiés du filtrage).

⚠️ Suite à la mise à jour MS16-072, vous devez ajouter Utilisateurs authentifiés en Lecture dans l'onglet Délégation pour que la redirection fonctionne correctement.
05
Configurer la redirection du dossier Documents
▼

Dans la GPO, naviguez vers :

Configuration utilisateur → Stratégies → Paramètres Windows → Redirection de dossiers → Documents

Clic droit sur Documents → Propriétés :

ParamètreValeur recommandée
ParamètreDe base — Rediriger le dossier de tout le monde vers le même emplacement
OptionCréer un dossier pour chaque utilisateur sous le chemin d'accès racine
Chemin d'accès à la racine\\SRV-DC-01\Profiles$
✅ Dans l'onglet Paramètres : cochez "Accorder à l'utilisateur des droits exclusifs sur Documents" pour que seul l'utilisateur puisse accéder à son dossier.
⚠️ La procédure est identique pour Bureau, Images, etc. Répétez pour chaque dossier à rediriger.

4. Tester la redirection

06
Appliquer la GPO et vérifier
▼

Sur le poste client, ouvrir une invite de commandes ou PowerShell en tant qu'administrateur :

gpupdate /force
⚠️ La commande vous avertira de la redirection et proposera de fermer la session. Validez avec O puis Entrée.

Reconnectez-vous avec l'utilisateur concerné et vérifiez :

✅ Un dossier au nom de l'utilisateur existe dans \\SRV-DC-01\Profiles$ ✅ Les fichiers Documents sont stockés sur le serveur ✅ L'utilisateur voit ses fichiers normalement
🎯
Jeu chronométré
Binaire & Sous-réseaux
Convertis des IPs en binaire ou calcule des sous-réseaux sous pression. Streak, bonus et niveaux progressifs.
✂️
Exercice TSSR
Découpage en sous-réseaux égaux
Découpe un réseau en N sous-réseaux égaux : puissance de 2, bits empruntés, CIDR, masque, incrément et table complète.
🧠
QCM aléatoire
Quiz Réseau
Questions aléatoires sur l'OSI, les protocoles, les acronymes et la théorie réseau. Plusieurs niveaux de difficulté.
⌨️
Speed test
Test de Frappe WPM
Mesure ta vitesse de frappe en mots par minute. Entraîne-toi sur des textes techniques réseau.
📐
Calcul IP
Découpage VLSM
Découpe un réseau en VLANs de tailles différentes. Calcule l'adresse réseau, le masque et les hôtes.
🔢
Calcul IP
Conversion Binaire
Convertis des nombres décimaux en binaire 8 bits et vice-versa. Base indispensable pour tout calcul réseau.
🛡️
Calcul IP
Trouver le Masque
À partir d'un CIDR ou du nombre d'hôtes requis, retrouve le masque décimal et le préfixe correspondant.
📍
Calcul IP
ID Réseau & Broadcast
Retrouve l'adresse réseau et l'adresse de diffusion à partir d'une IP et d'un masque donnés.
🚪
Protocoles
Ports TCP/UDP
Associe les bons numéros de ports aux services réseau courants : HTTP, FTP, DNS, SSH, SMTP…
🧱
Modèle OSI
Couches OSI
Identifie à quelle couche OSI appartient un protocole ou un équipement réseau donné.
🔐
Linux
Droits Linux (chmod)
Calcule les permissions en notation octale et symbolique. Maîtrise rwx, les groupes et les droits spéciaux.
💻
Linux
Commandes Essentielles
Retrouve la commande Linux correspondant à une action système : navigation, fichiers, réseau, processus.
🧑‍💻
Linux pratique
Missions Linux & crontab
Écris la commande complète pour résoudre une situation réelle : fichiers, services, journaux, utilisateurs et tâches planifiées.