Hai pre‑creato un oggetto computer in Active Directory, ma il join al dominio fallisce se non lo esegue chi ha creato l’oggetto? È un effetto della hardening introdotta da Windows: qui trovi sintomi, cause e la procedura completa per ripristinare il flusso di lavoro in sicurezza.
Panoramica del problema
In molti ambienti si pre‑creano (prestage) gli account computer nelle OU corrette per applicare da subito criteri e deleghe. Da ottobre 2022, con gli aggiornamenti cumulativi di Windows, è stata rafforzata la logica di join: il riuso di un account computer pre‑esistente viene bloccato quando l’operazione non è eseguita dal proprietario (owner) dell’oggetto o da un utente con privilegi elevati (tipicamente Domain Admin). Il risultato è un join che fino a ieri funzionava con un account tecnico delegato e oggi fallisce.
Sintomi più comuni
- Join al dominio che fallisce solo quando si usa un account diverso da chi ha creato il computer in AD.
- Errore in fase di NetJoin con codice
0xAAC(NERR_AccountReuseBlockedByPolicy). - Eventi di sistema con ID 4101 correlati al NetJoin/NetSetup e traccia nel
Netsetup.log. - Stesso join che riesce immediatamente se eseguito dal creatore dell’oggetto o da un Domain Admin.
Perché succede
Gli aggiornamenti di sicurezza introdotti a partire dall’11 ottobre 2022 (nota pubblica associata a CVE‑2022‑38042) hanno inasprito la verifica sul riutilizzo degli account computer pre‑esistenti per impedire scenari di hijacking. In breve: se un utente A crea l’oggetto, un utente B — anche con diritti di join — non può più “reclamare” quell’oggetto durante il join, a meno che non sia esplicitamente autorizzato o non appartenga a ruoli amministrativi.
Nel marzo 2023 Microsoft ha reso disponibile una nuova opzione di criteri di sicurezza (Security Options) che consente ai controller di dominio di consentire il riuso degli account computer a una lista di utenti o gruppi fidati. Da settembre 2023 sono poi entrate in vigore ulteriori protezioni legate alle chiamate remote alla SAM che, se impostate in modo troppo restrittivo, possono interferire con la validazione lato DC.
Tabella di diagnosi e rimedio
| Passo | Cosa verificare / fare | Perché è utile |
|---|---|---|
| Controlla la versione di Windows e gli update installati | Se sui client o sui DC è presente un cumulativo pari o successivo all’11 ottobre 2022, è attiva la hardening che blocca il riuso degli account computer quando il join non è eseguito dal proprietario o da un Domain Admin. L’errore tipico è 0xAAC NERR_AccountReuseBlockedByPolicy, registrato nel Netsetup.log e con Event ID 4101. | Conferma che stai davvero colpendo la nuova protezione e non un problema di rete, DNS o credenziali. |
| Event Viewer e Netsetup.log | Individua nel registro eventi l’ID 4101 e, nel %windir%\debug\netsetup.log, la riga che menziona Account reuse blocked by policy. Annota anche chi risulta owner dell’oggetto computer in AD. | Prova che il blocco è dovuto alla protezione di riuso e ti indica il proprietario attuale. |
| Configura la GPO “Domain controller: Allow computer account re‑use during domain join” | Abilita il criterio in Computer Configuration → Policies → Windows Settings → Security Options su tutti i DC. Inserisci un gruppo (es. “Join Operators”) contenente i tecnici o l’account di deployment autorizzati a riutilizzare account computer pre‑creati. | Ripristina il flusso di lavoro precedente in modo controllato e tracciabile, senza concedere privilegi eccessivi. |
| Alternative rapide | a) Esegui il join con l’utente che ha creato l’oggetto. b) Elimina e ricrea l’account computer poco prima del join. c) Esegui il join con un Domain Admin. | Soluzioni di emergenza che aggirano il controllo, utili per sbloccare attività urgenti (non curano la causa). |
| Permessi legacy | Verifica che i tecnici abbiano ancora i diritti Create/Delete Computer Objects sull’OU e il diritto utente Add workstations to domain. | Il nuovo controllo non sostituisce i prerequisiti storici: mancando questi, il join fallirà comunque. |
Quota di join (ms-DS-MachineAccountQuota) | Ricorda che gli utenti non‑admin possono creare per default al massimo 10 computer. Se usi nuovi oggetti computer invece del riuso, potresti urtare questa quota. | Evita falsi positivi: errori di quota somigliano a problemi di delega o hardening, ma sono un tema diverso. |
Procedura consigliata, passo per passo
- Inventaria gli aggiornamenti su client e DC
Verifica la presenza di cumulativi a partire dall’11 ottobre 2022 e, per l’abilitazione della nuova GPO, assicurati che i DC siano almeno ai cumulativi del 12 settembre 2023 o successivi. Esempi rapidi:# Su Windows Server / Windows 10/11 Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 20 HotFixID, Description, InstalledOn Su più server DC Invoke-Command -ComputerName (Get-ADDomainController -Filter *).Hostname ` -ScriptBlock { Get-HotFix | Select HotFixID,InstalledOn | Sort InstalledOn -desc } - Conferma la diagnostica nei log
Controlla il Visualizzatore eventi del client che tenta il join (Registro di sistema) e il fileNetsetup.log:- Event ID 4101 (NetJoin/NetSetup) con testo che indica il blocco del riuso.
- Nel
Netsetup.logtrovi stringhe come:NERR_AccountReuseBlockedByPolicy,0x00000AAC.
C:\Windows\debug\Netsetup.logIndividua il proprietario dell’oggetto computer in AD:# Sostituisci con il DN del computer pre-creato $comp = Get-ADComputer "PC-123" -Properties msDS-CreatorSID $adsi = [ADSI]"LDAP://$(($comp.DistinguishedName))" $acl = Get-Acl -Path ("AD:\" + $comp.DistinguishedName) [Security.Principal.SecurityIdentifier]$ownerSid = $acl.Owner $ownerSid.Translate([Security.Principal.NTAccount])Nota:msDS-CreatorSIDpuò non essere valorizzato in tutti gli scenari; l’owner effettivo è quello dell’ACL. - Crea il gruppo di autorizzazione
Definisci un gruppo dedicato (es. Join Operators) dove inserire gli account che devono poter riutilizzare gli oggetti computer pre‑creati. Consiglio: Global Security nel dominio, membership gestita via change request.New-ADGroup -Name "Join Operators" -SamAccountName "JoinOperators" ` -GroupCategory Security -GroupScope Global -Path "OU=Groups,DC=contoso,DC=com" Add-ADGroupMember "Join Operators" user1,user2,"svc-deploy" - Abilita e configura la Security Option sui DC
Apri la GPMC e modifica una GPO applicata ai controller di dominio:- Vai in Computer Configuration → Policies → Windows Settings → Security Settings → Local Policies → Security Options.
- Apri Domain controller: Allow computer account re‑use during domain join.
- Imposta su Enabled e aggiungi il gruppo Join Operators (o l’account di deployment) nell’elenco consentito.
# Su ogni DC gpupdate /force Verifica applicazione lato DC gpresult /r /scope computer Replica AD forzata (opzionale) repadmin /syncall /AdeP - Riprova il join
Esegui nuovamente il join da un client usando un account presente nel gruppo autorizzato. Se la GPO è correttamente applicata ai DC, il riuso dell’oggetto computer pre‑creato andrà a buon fine.# Esempi Add-Computer -DomainName contoso.com -Credential contoso\user1 -Restart oppure netdom join %COMPUTERNAME% /domain:contoso.com /userd:contoso\user1 /passwordd:* /reboot - Controlli aggiuntivi
Se il join fallisce ancora:- Rivedi Network access: Restrict clients allowed to make remote calls to SAM sui DC. Un’impostazione troppo restrittiva può impedire la validazione: per prova, riportala allo stato predefinito o includi i principal necessari (ad es. gli account che effettuano il join) e testa.
- Assicurati che i tecnici conservino i diritti Create/Delete Computer Objects sull’OU di destinazione e il diritto utente Add workstations to domain.
- Se stai creando nuovi account e non riutilizzando oggetti, verifica la quota
ms-DS-MachineAccountQuotadel dominio.
Esempi pratici e script utili
Elenco dei computer pre‑creati bloccati dal riuso
Questo script cerca gli oggetti computer creati recentemente e mostra proprietario ACL e creatore, per aiutarti a capire dove intervenire con la GPO.
$since = (Get-Date).AddDays(-30)
$computers = Get-ADComputer -Filter { whenCreated -ge $since } -Properties whenCreated,msDS-CreatorSID,DistinguishedName
$result = foreach($c in $computers){
try{
$acl = Get-Acl -Path ("AD:\" + $c.DistinguishedName)
$owner = ([System.Security.Principal.SecurityIdentifier]$acl.Owner).Translate([System.Security.Principal.NTAccount]).Value
}catch{
$owner = "N/D"
}
[pscustomobject]@{
Name = $c.Name
WhenCreated = $c.whenCreated
CreatorSID = $c.'msDS-CreatorSID'
Owner = $owner
OU = ($c.DistinguishedName -replace '^CN=[^,]+,','')
}
}
$result | Sort WhenCreated -Descending | Format-Table -Auto
Verifica quota di join
# Lettura della quota (default 10)
(Get-ADDomain).DomainMode | Out-Null # forza il caricamento del modulo
Get-ADDomain | Select-Object -ExpandProperty "MachineAccountQuota"
Modifica (richiede privilegi): imposta a 0 per rimuovere la quota, o un numero specifico
Set-ADDomain -Replace @{'ms-DS-MachineAccountQuota'=0}
Attenzione: ridurre o azzerare la quota va ponderato: è una misura di sicurezza. Preferisci deleghe e processi controllati.
Controllo rapido dei prerequisiti di delega su una OU
# Mostra ACE rilevanti per creazione/eliminazione computer su una OU
$ou = "OU=Workstations,DC=contoso,DC=com"
(Get-Acl "AD:$ou").Access |
Where-Object { $_.ObjectType -in @(
'bf967a86-0de6-11d0-a285-00aa003049e2', # computer class
'00000000-0000-0000-0000-000000000000' # generico
) } |
Select-Object IdentityReference, ActiveDirectoryRights, AccessControlType |
Format-Table -Auto
Alternative di emergenza (pro e contro)
| Opzione | Pro | Contro | Quando usarla |
|---|---|---|---|
| Join con il creatore dell’oggetto | Immediato, nessun cambio lato DC | Dipendenza dalla persona; non scala | Urgenze puntuali |
| Elimina e ricrea l’oggetto | Eviti il riuso; join “pulito” | Perdi riferimenti/ACL particolari; rischio errori | Quando l’oggetto è appena creato o non ha storia |
| Join con Domain Admin | Bypass garantito | Non conforme a least privilege; auditing più complesso | Solo come ultima risorsa |
Best practice di sicurezza e compliance
- Principio del privilegio minimo: usa gruppi dedicati (Join Operators) e assegna l’opzione di riuso solo agli account strettamente necessari (tecnici, service account di deployment).
- Segregazione dei ruoli: separa chi prestage gli oggetti da chi esegue la fase di join, ma consenti a entrambi di operare tramite la GPO con elenco di allowlist.
- Auditing: abilita il tracciamento delle modifiche ai computer (Directory Service Changes) e l’audit dei logon dei service account di deployment.
- Automazione: integra la membership del gruppo autorizzato nei processi ITSM (richieste approvate e revocate automaticamente al termine del progetto).
- Rotazione e protezione dei service account: usa password lunghe o, meglio, credenziali gestite (gMSA) laddove possibile per strumenti di deployment.
Domande frequenti
Il criterio “Allow computer account re‑use…” è sicuro?
Sì, perché funziona per allowlist: abiliti il riuso solo a utenti/gruppi espliciti. È preferibile al concedere ruolo di Domain Admin o a usare workaround permanenti.
Serve riavviare i DC dopo aver configurato la GPO?
No. È sufficiente l’aggiornamento dei criteri di sicurezza (gpupdate /force) e il tempo di replica. Puoi verificare con gpresult /r e con rsop.msc.
“Reset account” in ADUC risolve?
No, il reset ripristina la trust machine‑account vs dominio ma non cambia l’owner né la policy di riuso. Se il problema è la hardening, continuerai a vedere 0xAAC.
Il join offline (djoin.exe) aggira la protezione?
No: anche l’ODJ con riuso di un oggetto pre‑creato è soggetto alle stesse verifiche lato DC.
Perché a volte funziona comunque?
Se l’owner dell’oggetto è un gruppo (ad es. Domain Admins) di cui fa parte l’utente che tenta il join, oppure se il join crea un nuovo oggetto (nessun riuso), il controllo non scatta.
Checklist finale
- DC e client aggiornati (cumulativi ≥ 11/10/2022; per la GPO, ≥ 12/09/2023).
- Log confermano
0xAACe/o Event ID 4101. - Creato gruppo Join Operators e popolato con gli account corretti.
- GPO “Domain controller: Allow computer account re‑use during domain join” abilitata e distribuita ai DC.
- Replica e
gpupdateeseguiti; verifica effetto con un join di prova. - Permessi OU e Add workstations to domain confermati.
- Quota
ms-DS-MachineAccountQuotacompresa e gestita. - Eventuale policy Restrict clients allowed to make remote calls to SAM verificata.
Esempio di runbook operativo
- Precheck: inventario patch su DC e client; verifica reachability DNS/LDAP/Kerberos.
- Diagnostica: cattura Event ID 4101 e gli estratti di
Netsetup.log. - Progettazione: definisci con il team SecOps chi deve essere in allowlist per il riuso.
- Implementazione: crea/aggiorna il gruppo autorizzato, abilita la Security Option sui DC.
- Validazione: esegui 2–3 join di prova (diverse OU, tecnici diversi) e registra i risultati.
- Operativizzazione: aggiorna la documentazione (KB interna), integra nel tool di deployment e nell’ITSM.
- Monitoraggio: dashboard con eventi di join e alert su errori
0xAAC.
Modello di comunicazione verso il service desk
Oggetto: Join di PC pre‑creati in AD — nuova procedura
Messaggio: Da ottobre 2022 il riuso degli account computer è protetto. Per eseguire il join di PC pre‑creati, usa un account membro del gruppo “Join Operators”. Se ricevi errore
0xAAC, apri ticket indicando hostname, OU di destinazione e account usato.
Troubleshooting avanzato
- Oggetto computer orfano: se l’owner è un utente dismesso, rialloca la proprietà a un gruppo IT centrale (es. “IT Operations”) e usa la GPO con allowlist per consentire il riuso ai tecnici.
- ACL non standard: se il computer è stato spostato tra OU con ACL diverse, ereditarietà spezzata o ACE esplicite possono impedire la modifica. Valuta il ripristino dell’ereditarietà e una delega coerente.
- Join da immagini gold: assicurati che il SID del client sia rigenerato (
sysprep) e che non restino residui di tentativi precedenti nelNetsetup.log. - Conflitti DNS: record A/ PTR già presenti con permessi in conflitto possono far sembrare un problema di riuso. Pulisci i record obsoleti o abilita DHCP/DNS dynamic update con credenziali di servizio.
Conclusioni
Il blocco del riuso degli account computer pre‑creati non è un “bug” del join, ma una misura di sicurezza. La soluzione corretta non è tornare ad ampi privilegi, bensì abilitare in modo mirato la Security Option Domain controller: Allow computer account re‑use during domain join e delegare l’operazione a un gruppo fidato. In questo modo ripristini l’operatività abituale (prestage + join da parte dei tecnici) restando allineato alle best practice e alle protezioni più recenti del sistema.
Riepilogo operativo
- Aggiorna tutti i sistemi: DC almeno ai cumulativi di settembre 2023.
- Crea un gruppo “Join Operators” con gli account tecnici e/o i service account di deployment.
- Abilita sui DC la Security Option “Domain controller: Allow computer account re‑use during domain join” e aggiungi il gruppo.
- Forza replica e
gpupdatesui DC; verifica con join di prova. - Se fallisce: controlla policy SAM, deleghe OU e quota
ms-DS-MachineAccountQuota.
