Skip to content

File Server sur Windows Server 2022

Configuration du rôle File Server avec partages SMB et DFS.

Composant Version
Windows Server 2022
SMB 3.1.1

Durée estimée : 30 minutes


1. Installation du rôle

# Installer File Server
Install-WindowsFeature -Name FS-FileServer -IncludeManagementTools

# Installer DFS (optionnel)
Install-WindowsFeature -Name FS-DFS-Namespace, FS-DFS-Replication -IncludeManagementTools

# Vérifier
Get-WindowsFeature -Name FS-*

2. Créer un partage SMB

Via PowerShell

# Créer le dossier
New-Item -Path "D:\Shares\Commun" -ItemType Directory

# Créer le partage
New-SmbShare -Name "Commun" `
    -Path "D:\Shares\Commun" `
    -FullAccess "Domain Admins" `
    -ChangeAccess "Domain Users" `
    -ReadAccess "Everyone" `
    -Description "Partage commun"

# Vérifier
Get-SmbShare -Name "Commun"

Permissions NTFS

# Définir les permissions NTFS
$acl = Get-Acl "D:\Shares\Commun"

# Ajouter Domain Users en modification
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    "Domain Users", "Modify", "ContainerInherit,ObjectInherit", "None", "Allow"
)
$acl.SetAccessRule($rule)
Set-Acl "D:\Shares\Commun" $acl

3. Partage avec ABE (Access-Based Enumeration)

# Créer un partage avec ABE activé
New-SmbShare -Name "Projets" `
    -Path "D:\Shares\Projets" `
    -FullAccess "Domain Admins" `
    -FolderEnumerationMode AccessBased `
    -CachingMode None

# L'ABE masque les dossiers auxquels l'utilisateur n'a pas accès

4. Quotas de disque

# Installer le gestionnaire de quotas
Install-WindowsFeature -Name FS-Resource-Manager

# Créer un quota
New-FsrmQuota -Path "D:\Shares\Commun" `
    -Size 10GB `
    -Description "Quota 10GB par dossier"

# Quota avec alertes
New-FsrmQuotaThreshold -Percentage 80 -Action (
    New-FsrmAction -Type Email -MailTo "admin@example.lan" -Subject "Quota 80%"
)

5. DFS Namespace

Créer un namespace

# Namespace autonome
New-DfsnRoot -Path "\\srv-files\Partages" `
    -TargetPath "\\srv-files\Shares" `
    -Type Standalone

# Namespace domaine (recommandé)
New-DfsnRoot -Path "\\example.lan\Partages" `
    -TargetPath "\\srv-files\Shares" `
    -Type DomainV2

Ajouter des dossiers DFS

# Ajouter un dossier au namespace
New-DfsnFolder -Path "\\example.lan\Partages\Commun" `
    -TargetPath "\\srv-files\Commun"

# Avec plusieurs cibles (réplication)
New-DfsnFolderTarget -Path "\\example.lan\Partages\Commun" `
    -TargetPath "\\srv-files2\Commun"

6. DFS Replication

# Créer un groupe de réplication
New-DfsReplicationGroup -GroupName "RG-Commun"

# Ajouter les membres
Add-DfsrMember -GroupName "RG-Commun" -ComputerName "srv-files", "srv-files2"

# Créer le dossier répliqué
New-DfsReplicatedFolder -GroupName "RG-Commun" `
    -FolderName "Commun" `
    -DfsnPath "\\example.lan\Partages\Commun"

# Définir le membre principal
Set-DfsrMembership -GroupName "RG-Commun" `
    -FolderName "Commun" `
    -ComputerName "srv-files" `
    -PrimaryMember $true `
    -ContentPath "D:\Shares\Commun"

7. Shadow Copies (VSS)

# Activer les Shadow Copies sur D:
vssadmin add shadowstorage /for=D: /on=D: /maxsize=10GB

# Créer une shadow copy
vssadmin create shadow /for=D:

# Planifier (via tâche planifiée)
$action = New-ScheduledTaskAction -Execute "vssadmin" -Argument "create shadow /for=D:"
$trigger = New-ScheduledTaskTrigger -Daily -At "12:00"
Register-ScheduledTask -TaskName "ShadowCopy" -Action $action -Trigger $trigger

8. Commandes de gestion

# Lister tous les partages
Get-SmbShare

# Sessions actives
Get-SmbSession

# Fichiers ouverts
Get-SmbOpenFile

# Fermer un fichier
Close-SmbOpenFile -FileId <id> -Force

# Statistiques
Get-SmbShareAccess -Name "Commun"

# Supprimer un partage
Remove-SmbShare -Name "Test" -Force

9. Sécurité SMB

# Désactiver SMB1 (vulnérable)
Set-SmbServerConfiguration -EnableSMB1Protocol $false

# Activer le chiffrement SMB
Set-SmbServerConfiguration -EncryptData $true

# Chiffrement par partage
Set-SmbShare -Name "Confidentiel" -EncryptData $true

# Vérifier la configuration
Get-SmbServerConfiguration

10. Audit des accès

# Activer l'audit sur un dossier
$acl = Get-Acl "D:\Shares\Commun"
$rule = New-Object System.Security.AccessControl.FileSystemAuditRule(
    "Everyone", "Delete,Write", "ContainerInherit,ObjectInherit", "None", "Success,Failure"
)
$acl.AddAuditRule($rule)
Set-Acl "D:\Shares\Commun" $acl

# Voir les événements d'audit
Get-WinEvent -LogName Security -FilterXPath "*[System[EventID=4663]]" -MaxEvents 50

Dépannage

# Tester l'accès
Test-Path "\\srv-files\Commun"

# Vérifier les permissions effectives
Get-SmbShareAccess -Name "Commun"
Get-Acl "D:\Shares\Commun" | Format-List

# Logs DFS
Get-WinEvent -LogName "DFS Replication" -MaxEvents 20

# État réplication DFS
Get-DfsrState -GroupName "RG-Commun"

Changelog

Date Modification
2024-12 Création initiale