Active Directory: errore 0xAAC nel join di computer pre‑creati. Come sbloccare il riuso dell’account con la nuova GPO

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.

Indice

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

PassoCosa verificare / farePerché è utile
Controlla la versione di Windows e gli update installatiSe 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.logIndividua 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 rapidea) 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 legacyVerifica 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

  1. 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 }
  2. Conferma la diagnostica nei log
    Controlla il Visualizzatore eventi del client che tenta il join (Registro di sistema) e il file Netsetup.log:
    • Event ID 4101 (NetJoin/NetSetup) con testo che indica il blocco del riuso.
    • Nel Netsetup.log trovi stringhe come: NERR_AccountReuseBlockedByPolicy, 0x00000AAC.
    Percorso: C:\Windows\debug\Netsetup.log Individua 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-CreatorSID può non essere valorizzato in tutti gli scenari; l’owner effettivo è quello dell’ACL.
  3. 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"
  4. Abilita e configura la Security Option sui DC
    Apri la GPMC e modifica una GPO applicata ai controller di dominio:
    1. Vai in Computer Configuration → Policies → Windows Settings → Security Settings → Local Policies → Security Options.
    2. Apri Domain controller: Allow computer account re‑use during domain join.
    3. Imposta su Enabled e aggiungi il gruppo Join Operators (o l’account di deployment) nell’elenco consentito.
    Force un aggiornamento dei criteri e verifica la replica: # Su ogni DC gpupdate /force Verifica applicazione lato DC gpresult /r /scope computer Replica AD forzata (opzionale) repadmin /syncall /AdeP
  5. 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
  6. 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-MachineAccountQuota del 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)

OpzioneProControQuando usarla
Join con il creatore dell’oggettoImmediato, nessun cambio lato DCDipendenza dalla persona; non scalaUrgenze puntuali
Elimina e ricrea l’oggettoEviti il riuso; join “pulito”Perdi riferimenti/ACL particolari; rischio erroriQuando l’oggetto è appena creato o non ha storia
Join con Domain AdminBypass garantitoNon conforme a least privilege; auditing più complessoSolo 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 0xAAC e/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 gpupdate eseguiti; verifica effetto con un join di prova.
  • Permessi OU e Add workstations to domain confermati.
  • Quota ms-DS-MachineAccountQuota compresa e gestita.
  • Eventuale policy Restrict clients allowed to make remote calls to SAM verificata.

Esempio di runbook operativo

  1. Precheck: inventario patch su DC e client; verifica reachability DNS/LDAP/Kerberos.
  2. Diagnostica: cattura Event ID 4101 e gli estratti di Netsetup.log.
  3. Progettazione: definisci con il team SecOps chi deve essere in allowlist per il riuso.
  4. Implementazione: crea/aggiorna il gruppo autorizzato, abilita la Security Option sui DC.
  5. Validazione: esegui 2–3 join di prova (diverse OU, tecnici diversi) e registra i risultati.
  6. Operativizzazione: aggiorna la documentazione (KB interna), integra nel tool di deployment e nell’ITSM.
  7. 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 nel Netsetup.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

  1. Aggiorna tutti i sistemi: DC almeno ai cumulativi di settembre 2023.
  2. Crea un gruppo “Join Operators” con gli account tecnici e/o i service account di deployment.
  3. Abilita sui DC la Security Option “Domain controller: Allow computer account re‑use during domain join” e aggiungi il gruppo.
  4. Forza replica e gpupdate sui DC; verifica con join di prova.
  5. Se fallisce: controlla policy SAM, deleghe OU e quota ms-DS-MachineAccountQuota.
Indice