m4nifest0-tech

Cerca nel sito

Linux e Windows Server

Windows Server: laboratorio Active Directory di base con AD DS, DNS e GPO

Come costruire su una VM Proxmox un dominio Active Directory di prova: ruolo AD DS, DNS integrato, OU, utenti, gruppi, GPO, join di un client e backup.
Pubblicato il 7 min di letturaLivello: Intermedio

Un dominio Active Directory si impara costruendolo e rompendolo. Una VM su Proxmox permette di farlo senza rischi: si crea il dominio, si organizzano utenti e computer, si applica una policy di gruppo e, se qualcosa va storto, si torna a uno snapshot. La guida riguarda Windows Server 2022 o 2025 e un laboratorio con un solo controller di dominio e un client. Tutti i nomi e gli indirizzi sono esempi.

Requisiti del laboratorio

La VM ospita il controller di dominio (DC) e servono poche risorse: due vCPU e alcuni GiB di RAM bastano per un dominio senza carico. Sui guest Windows conviene installare i driver VirtIO e il QEMU guest agent, che consente backup consistenti dall'hypervisor. La rete di laboratorio deve essere isolata da quella dei servizi reali, per esempio su una VLAN dedicata.

Prima della promozione servono un nome host definitivo, un indirizzo IP statico e un DNS che punti al server stesso: il nome non si cambia in modo indolore dopo la promozione. Anche l'orario conta, perché Kerberos tollera per impostazione predefinita al massimo cinque minuti di scarto tra DC e client.

ElementoValore d'esempio
Dominioad.example.com
Nome NetBIOSLAB
Nome host del DCdc1
Indirizzo del DC192.0.2.10/24
Gateway192.0.2.1
Sulla VM del DC, PowerShell come amministratore
Get-NetAdapter
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.0.2.10 -PrefixLength 24 -DefaultGateway 192.0.2.1
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 192.0.2.10
Rename-Computer -NewName "dc1" -Restart

Nota

ad.example.com è un dominio riservato alla documentazione. In una rete reale si usa un sottodominio (per esempio ad) di un dominio effettivamente posseduto.

Installazione del ruolo AD DS

Sulla VM del DC
Install-WindowsFeature AD-Domain-Services -IncludeManagementTools

Il comando installa il ruolo e gli strumenti di gestione, compreso il modulo PowerShell ActiveDirectory. Il server non è ancora un controller di dominio: manca la promozione.

Promozione a controller di dominio

Scelta del nome di dominio

Il nome va scelto prima: cambiarlo dopo è un'operazione complessa. Non conviene usare il suffisso «local» o altri suffissi inventati: «local» è riservato al multicast DNS (RFC 6762) e genera conflitti di risoluzione con client macOS, Linux e Windows recenti, mentre un suffisso non registrato impedisce di ottenere certificati pubblici e può coincidere con un dominio altrui. La pratica consigliata è un sottodominio di un dominio posseduto, come ad.example.com.

Creazione della foresta

La password della modalità ripristino servizi directory (DSRM) viene richiesta in modo interattivo e non compare mai nello script.

Sulla VM del DC
$dsrm = Read-Host -Prompt "Credenziale DSRM" -AsSecureString
Test-ADDSForestInstallation -DomainName "ad.example.com" -InstallDns -SafeModeAdministratorPassword $dsrm
Install-ADDSForest -DomainName "ad.example.com" -DomainNetbiosName "LAB" -InstallDns -SafeModeAdministratorPassword $dsrm -Force

Test-ADDSForestInstallation esegue solo i controlli preliminari, senza modifiche. Install-ADDSForest promuove il server e lo riavvia. I livelli funzionali di foresta e dominio possono restare ai valori predefiniti, cioè quelli massimi supportati dal sistema operativo.

Importante

La credenziale DSRM serve per il ripristino del DC e non si recupera in altro modo: va conservata in un gestore di segreti, non in un file di testo né in uno script.

DNS integrato

Active Directory dipende dal DNS: i client trovano il DC tramite record SRV, per esempio _ldap._tcp.dc._msdcs.ad.example.com, pubblicati dal DC stesso. Con -InstallDns la zona ad.example.com nasce integrata in AD e viene replicata con la directory. Il DNS del DC è il solo che i client del dominio devono usare. La risoluzione dei nomi esterni si delega a un forwarder:

Sulla VM del DC
Add-DnsServerForwarder -IPAddress 198.51.100.53
Resolve-DnsName -Name "_ldap._tcp.dc._msdcs.ad.example.com" -Type SRV

Se il secondo comando restituisce il record, la registrazione del DC nel DNS è corretta.

OU, utenti e gruppi

I criteri di gruppo si collegano alle unità organizzative (OU), non ai contenitori predefiniti Users e Computers: conviene quindi una struttura propria. I permessi si assegnano ai gruppi, non ai singoli utenti.

Sulla VM del DC
$base = "DC=ad,DC=example,DC=com"
New-ADOrganizationalUnit -Name "Laboratorio" -Path $base
New-ADOrganizationalUnit -Name "Utenti" -Path "OU=Laboratorio,$base"
New-ADOrganizationalUnit -Name "Gruppi" -Path "OU=Laboratorio,$base"
New-ADOrganizationalUnit -Name "Computer" -Path "OU=Laboratorio,$base"
 
New-ADGroup -Name "GG-Tecnici" -GroupScope Global -GroupCategory Security -Path "OU=Gruppi,OU=Laboratorio,$base"
 
$iniziale = Read-Host -Prompt "Credenziale iniziale per mario.rossi" -AsSecureString
New-ADUser -Name "Mario Rossi" -SamAccountName "mario.rossi" -UserPrincipalName "mario.rossi@ad.example.com" -Path "OU=Utenti,OU=Laboratorio,$base" -AccountPassword $iniziale -ChangePasswordAtLogon $true -Enabled $true
 
Add-ADGroupMember -Identity "GG-Tecnici" -Members "mario.rossi"

Read-Host -AsSecureString evita di scrivere credenziali nello script e nella cronologia della shell. La credenziale deve rispettare la policy del dominio, altrimenti New-ADUser fallisce, e -ChangePasswordAtLogon impone la sostituzione al primo accesso. Lo schema classico assegna gli utenti a gruppi globali e i gruppi globali a gruppi locali di dominio che ricevono i permessi sulle risorse.

Una GPO d'esempio

La GPO dimostrativa disattiva Autoplay su tutte le unità e viene collegata alla sola OU Computer.

Sulla VM del DC
New-GPO -Name "Esempio-Disattiva-Autoplay" -Comment "GPO dimostrativa"
Set-GPRegistryValue -Name "Esempio-Disattiva-Autoplay" -Key "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" -ValueName "NoDriveTypeAutoRun" -Type DWord -Value 255
New-GPLink -Name "Esempio-Disattiva-Autoplay" -Target "OU=Computer,OU=Laboratorio,DC=ad,DC=example,DC=com" -LinkEnabled Yes

Suggerimento

Le GPO nuove si provano su una OU di test, non alla radice del dominio. Sul client, gpupdate /force forza l'applicazione e gpresult /r elenca le GPO effettivamente applicate.

Unione di un client al dominio

Il client deve usare il DC come DNS e deve essere un'edizione di Windows che supporta il join (le edizioni Home no). L'account richiesto da Get-Credential è un utente con i diritti per unire computer al dominio.

Sul client, PowerShell come amministratore
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 192.0.2.10
Add-Computer -DomainName "ad.example.com" -Credential (Get-Credential) -Restart

I computer nuovi finiscono nel contenitore Computers: per farli rientrare nell'ambito della GPO vanno spostati nella OU dedicata.

Sulla VM del DC
Get-ADComputer -Identity "client1" | Move-ADObject -TargetPath "OU=Computer,OU=Laboratorio,DC=ad,DC=example,DC=com"

Verifica

Sulla VM del DC
dcdiag /q
Get-ADDomain | Select-Object DNSRoot, NetBIOSName, DomainMode, PDCEmulator
Get-ADDomainController -Filter * | Select-Object Name, IPv4Address, IsGlobalCatalog

dcdiag /q mostra solo gli errori: nessun output significa nessun test fallito. Senza /q ogni test riporta l'esito:

Starting test: Connectivity
   ......................... DC1 passed test Connectivity

Snapshot e backup del controller di dominio

Lo snapshot è comodo prima di una promozione o di un test, ma non è un backup: vive sullo stesso storage della VM e segue la sua sorte.

Attenzione

In un dominio con più DC, riportare un controller a uno stato precedente può causare un USN rollback: la directory del DC ripristinato non si riallinea più con le repliche. Proxmox espone il VM-Generation ID (opzione vmgenid), che i DC Windows usano per accorgersi di un ripristino, ma resta valida la regola di ripristinare un DC solo con una procedura supportata, non con un semplice rollback.

Per un backup applicativo si usa il backup dello stato del sistema, su un volume diverso da quello di sistema:

Sulla VM del DC
Install-WindowsFeature Windows-Server-Backup
wbadmin start systemstatebackup -backupTarget:E: -quiet

Il backup dell'intera VM si affianca a quello dello stato di sistema, non lo sostituisce: la strategia di backup 3-2-1 con Proxmox Backup Server descrive come organizzare copie e verifiche di ripristino. Per osservare il DC nel tempo si può usare windows_exporter, come indicato in monitoraggio con Prometheus e Grafana in un LXC.

Articoli correlati