--- sidebar_position: 6 --- # Raccordement d'un site distant ## Contexte Intégration d'un site distant au système d'information existant via VPN site-à-site, avec déploiement d'un contrôleur de domaine en lecture seule (RODC) et application de stratégies de groupe. ## Objectifs - Configurer un VPN IPsec site-à-site avec pfSense - Déployer un RODC (Read-Only Domain Controller) - Étendre l'Active Directory au site distant - Appliquer des GPO adaptées au contexte distant - Mettre en place des sauvegardes automatisées ## Technologies utilisées - **pfSense** : firewall et VPN IPsec - **Windows Server** : AD DS, RODC - **Active Directory** : gestion centralisée des identités - **GPO** : stratégies de groupe - **PowerShell** : scripts de sauvegarde (Robocopy) - **VMware** : virtualisation ## Architecture ``` Site Principal Site Distant +-------------+ +-------------+ | DC | | RODC | | (AD DS) | | (Lecture | +------+------+ | seule) | | +------+------+ +------v------+ VPN IPsec +------v------+ | pfSense |<--------------->| pfSense | +-------------+ +-------------+ ``` ## Livrables
Script GPO horaires de travail (PowerShell) ```powershell <# .DESCRIPTION Script pour définir les heures de connexion de 6h à 20h tous les jours de la semaine .NOTES Date de création : 17/03/2025 .AUTEUR BENE Maël .VERSION 1.0 #> # Récupération récursive des utilisateurs (inclut les membres des sous-groupes) $users = Get-ADGroupMember -Identity OpenBank -Recursive | Select-Object -ExpandProperty SamAccountName # Création du tableau de 21 octets (168 heures dans une semaine) $LogonHours = New-Object byte[] 21 # Dimanche = index 0, Lundi = index 1, ..., Samedi = index 6 # Définition des heures de connexion (6h à 20h) pour tous les jours de la semaine for ($day = 0; $day -le 6; $day++) { # Dimanche (0) à Samedi (6) for ($hour = 5; $hour -lt 19; $hour++) { # De 6h à 20h $byteIndex = [math]::Floor(($day * 24 + $hour) / 8) $bitIndex = ($day * 24 + $hour) % 8 $LogonHours[$byteIndex] = $LogonHours[$byteIndex] -bor (1 -shl $bitIndex) } } # Appliquer la restriction à l'utilisateur foreach ($user in $users) { Set-ADUser -Identity $user -Replace @{logonHours=$LogonHours} } ```
Capture GPO horaires de travail ![GPO horaires de travail](/assets/projets-oc/p06/BENE_Mael_gpo_horairesdetravail.png)
Script GPO installation Flux (Batch) ```batch @echo off REM Vérification de l'utilisateur if "%username%"=="agarcia" ( echo Installation de flux-setup.exe pour %username% winget install -e --id flux.flux --silent --accept-package-agreements --accept-source-agreements ) else ( echo Installation non applicable pour cet utilisateur. exit /b ) ```
Capture GPO installation Flux ![GPO installation Flux](/assets/projets-oc/p06/BENE_Mael_gpo_installflux.png)
Capture GPO restriction disque amovible ![GPO restriction disque amovible](/assets/projets-oc/p06/BENE_Mael_gpo_restrictiondisqueamovible.png)
Configuration VPN pfSense Nantes (XML) ```xml 1 ikev2 opt1 194.0.0.1 inet address 194.0.0.2 address 194.0.0.1 aes 256 sha256 sha256 14 28800 bc4b31bbe6ac6eba857a44b8941ed31389cdb6c678635384b676ae34 pre_shared_key on off 10 5 1 67cf001195fba tunnel 1 network
10.0.2.0
24
network
10.0.1.0
24
esp aes 256 hmac_sha256 14 3600 10.0.1.1 disabled
```
Configuration VPN pfSense Paris (XML) ```xml 1 ikev2 opt1 194.0.0.2 inet address 194.0.0.1 address 194.0.0.2 aes 256 sha256 sha256 14 28800 bc4b31bbe6ac6eba857a44b8941ed31389cdb6c678635384b676ae34 pre_shared_key on off 10 5 1 67ceff22aa6e4 tunnel 1 network
10.0.1.0
24
network
10.0.2.0
24
esp aes 256 hmac_sha256 14 3600 10.0.2.1 disabled
```
Script PowerShell de sauvegarde (Robocopy) ```powershell <# .DESCRIPTION Script pour copier les données du disque D vers G:\Mon Drive\projet6 .NOTES Date de création : 17/03/2025 .AUTEUR BENE Maël .VERSION 1.1 #> # Chemins source et destination $SourcePath = "D:\" $DestinationPath = "G:\Mon Drive\projet6" # Copie des fichiers avec Robocopy Write-Host "Copie des données en cours de $SourcePath vers $DestinationPath..." -ForegroundColor Cyan try { Robocopy.exe "$SourcePath" "$DestinationPath" /E /COPY:DAT /R:2 /W:5 /MT:8 /XD "System Volume Information" "$RECYCLE.BIN" "Recovery" # Ajout d'exceptions pour les fichiers systèmes # Affichage détaillé du résultat switch ($LASTEXITCODE) { 0 { Write-Host "Aucun fichier copié - Tous les fichiers étaient déjà synchronisés." -ForegroundColor Green } 1 { Write-Host "Fichiers copiés avec succès." -ForegroundColor Green } 2 { Write-Host "Fichiers supplémentaires détectés." -ForegroundColor Yellow } 4 { Write-Host "Fichiers mal assortis détectés." -ForegroundColor Yellow } 8 { Write-Host "Erreurs de copie détectées." -ForegroundColor Red } 16 { Write-Host "Erreur grave dans la copie." -ForegroundColor Red } default { Write-Host "Code de sortie Robocopy: $LASTEXITCODE" -ForegroundColor Magenta } } } catch { Write-Host "Erreur lors de l'exécution de Robocopy: $_" -ForegroundColor Red } Write-Host "Opération terminée." -ForegroundColor Cyan ```
## Compétences acquises - Configuration de tunnels VPN IPsec site-à-site - Déploiement et gestion de RODC - Extension d'infrastructure Active Directory - Conception de GPO pour sites distants - Automatisation de sauvegardes avec PowerShell