Bloccare l’accesso a una cartella di rete su Windows Server 2022: NTFS, permessi SMB, ABE e messaggio “Accesso negato”

Obiettivo: impedire a utenti di dominio non autorizzati di accedere alla condivisione SMB \\servername\folder_share su Windows Server 2022 (VM in Azure), facendo apparire un chiaro messaggio di “Accesso negato” e riducendo al minimo le chiamate al supporto tramite best practice, GPO e auditing.

Indice

Scenario e risultati attesi

La cartella di rete è pubblicata tramite SMB su un file server Windows Server 2022. Alcuni utenti o gruppi di dominio non devono poterla vedere né aprire. Quando provano ad accedervi, devono ricevere un messaggio di rifiuto (“Accesso negato”). L’azienda desidera anche ridurre la visibilità della risorsa a chi non è autorizzato e tenere traccia dei tentativi di accesso falliti.

Concetti chiave: NTFS, permessi di condivisione e visibilità

  • Permessi NTFS: sono la fonte di verità per la lettura/scrittura/eliminazione sui file. Hanno precedenza logica sull’accesso effettivo ai dati.
  • Permessi di condivisione (SMB): definiscono chi può attraversare la share a monte. L’accesso effettivo è dato dall’intersezione tra Share e NTFS (il livello più restrittivo vince).
  • Access‑Based Enumeration (ABE): nasconde la share (e le sottocartelle) agli utenti che non hanno almeno Read NTFS. È ideale per ridurre i ticket “vedo la cartella ma non entro”.
  • Messaggistica: Windows mostra comunque “Accesso negato” al rifiuto. Per un testo personalizzato e una richiesta guidata di permessi, usa Access‑Denied Assistance con FSRM e GPO.
  • Principio del least privilege: concede solo le autorizzazioni minime, a gruppi di sicurezza dedicati, mai a singoli utenti se non strettamente necessario.

Checklist rapida (per chi ha fretta)

  1. Rimuovi Domain Users dalla scheda Sicurezza della cartella; mantieni solo i gruppi autorizzati (NTFS).
  2. Allinea i permessi della share: nessun Everyone, accesso limitato ai gruppi giusti (SMB).
  3. Abilita Access‑Based Enumeration per nascondere la share ai non autorizzati.
  4. Configura Access‑Denied Assistance via FSRM e GPO per un messaggio chiaro e una richiesta permessi.
  5. Aggiorna i client (gpupdate /force) e verifica con un utente di test non autorizzato.
  6. Attiva auditing e limita l’accesso SMB (porta 445) a subnet consentite (Firewall/NSG Azure).

Procedura riassunta passo‑passo

PassaggioCosa farePerché / Note operative
Configurare correttamente i permessi NTFS1. Apri Proprietà → Sicurezza sulla cartella.
2. Rimuovi il gruppo Domain Users (o altri non autorizzati).
3. Aggiungi solo i gruppi autorizzati con i diritti minimi (least privilege).
I permessi NTFS sono il meccanismo primario di controllo. Evita Deny se non indispensabile: prevale sui consentiti ereditati.
Regolare i permessi di condivisione (SMB)Proprietà → Condivisione → Condivisione avanzata… → Permessi.
• Rimuovi Everyone o limita a Read/Change solo i gruppi autorizzati.
• Allinea Share↔NTFS: l’accesso effettivo è l’intersezione.
Se la share resta visibile a non autorizzati, NTFS nega comunque l’accesso, ma è buona prassi bloccare già a livello SMB.
(Opzionale ma consigliato) Abilitare Access‑Based Enumeration (ABE)In Server Manager → File and Storage Services → Shares, seleziona la share, Properties → Settings e abilita Access‑based enumeration.ABE nasconde automaticamente la share (e le cartelle interne) a chi non ha almeno Read NTFS, riducendo chiamate di supporto.
Impostare un messaggio di accesso negato via GPOComputer Configuration → Policies → Security Settings → Local Policies → Security Options → Interactive logon: Message text…
In alternativa/consigliato: Access‑Denied Assistance con FSRM e GPO per messaggi contestuali e richiesta permessi.
L’avviso di logon non impedisce l’accesso ma informa. Con Access‑Denied Assistance puoi dare un messaggio mirato al tentativo di accesso e un link per la richiesta.
Aggiornare i clientEsegui gpupdate /force sui PC o attendi il normale refresh di GP.Verifica con un account non autorizzato che l’accesso sia bloccato e che il messaggio venga visualizzato.
Documentazione e revisione periodicaDocumenta gruppi autorizzati e modifiche a NTFS/SMB/GPO. Pianifica una revisione trimestrale.Riduce il rischio di “permissive drift” e garantisce tracciabilità per audit.

Implementazione completa e best practice

Strutturare i gruppi di sicurezza

Crea due gruppi di dominio dedicati per la share (esempio con dominio CONTOSO):

  • GRP-Share-FolderRW: modifica (Change) / scrittura.
  • GRP-Share-FolderRO: sola lettura.

Assegna gli utenti a questi gruppi, non direttamente alla cartella. In questo modo la manutenzione è semplice e auditabile.

Impostare NTFS in modo sicuro

  1. Accedi al server con un account amministrativo.
  2. Vai alla cartella base (es. D:\Shares\Folder).
  3. Proprietà → Sicurezza → Avanzate:
    • Assicurati che il proprietario sia un gruppo amministrativo (es. Administrators o File‑Admins).
    • Rimuovi Domain Users e ogni ACE superflua.
    • Concedi a GRP-Share-FolderRW Modify (applica a cartella, sottocartelle e file).
    • Concedi a GRP-Share-FolderRO Read & execute.

Allineare i permessi della condivisione

Apri Condivisione avanzataPermessi sulla share folder_share:

  • Rimuovi Everyone.
  • Aggiungi GRP-Share-FolderRW con Change e Read.
  • Aggiungi GRP-Share-FolderRO con Read (solo).

Nota: le autorizzazioni effettive saranno sempre le più restrittive tra Share e NTFS; per questo è cruciale mantenerle coerenti.

Abilitare Access‑Based Enumeration (ABE)

Con ABE un utente non autorizzato non vedrà la share e le cartelle a cui non ha diritto. Abilitalo dalla GUI come da tabella o, più rapidamente, via PowerShell:

# Abilita ABE sulla share esistente
Set-SmbShare -Name "folder_share" -FolderEnumerationMode AccessBased

Mostrare un messaggio chiaro con Access‑Denied Assistance

Per un messaggio contestuale e un flusso di richiesta accessi:

  1. Installa File Server Resource Manager (FSRM) se non presente: Install-WindowsFeature FS-Resource-Manager -IncludeManagementTools
  2. Apri File Server Resource ManagerOptionsAccess‑Denied Assistance:
    • Spunta “Enable Access‑Denied Assistance”.
    • Personalizza il testo (es. “Questa risorsa è riservata. Se hai bisogno di accesso, apri un ticket indicando la share e la business need”).
    • Configura l’invio di email al team IT o l’apertura automatica di una richiesta (se integrato con l’helpdesk).
  3. Distribuisci la policy lato client via GPO:
    • Computer Configuration → Policies → Administrative Templates → System → Access‑Denied Assistance.
    • Abilita “Customize message for Access Denied errors”.
    • Facoltativo: “Enable access‑denied assistance on client”.

Nota: la policy “Interactive logon: Message text…” citata nella tabella mostra un banner al logon del PC/Server, utile per avvisi legali ma non contestuale all’accesso file. Per l’evento “accesso negato” sulla share, Access‑Denied Assistance è la scelta indicata.

Gestire drive mappati esistenti

Se gli utenti hanno già mappato l’unità, rimuovila via GPP o script:

# Rimuovi tutte le sessioni SMB lato client
net use * /delete /y

Esempio GPO (User Configuration → Preferences → Windows Settings → Drive Maps):

Imposta "Action: Delete" per l'unità X: che punta a \servername\folder\_share

Auditing: tracciare i tentativi negati

  1. Abilita il criterio avanzato: Computer Configuration → Policies → Windows Settings → Security Settings → Advanced Audit Policy Configuration → Object Access → Audit File System (Success e Failure).
  2. Nella cartella, Sicurezza → Avanzate → Auditing: aggiungi gli utenti/gruppi Everyone o specifici con “List folder/Read data” impostato su Failure.

Con questa configurazione vedrai eventi 4663 nel Security log con “Access denied” quando un utente non autorizzato tenta l’accesso. Filtra per Task Category = File System e Keywords = Audit Failure.

Automazione con PowerShell: script di base

Adatta nomi di dominio, share e percorso. Esegui in una console PowerShell con privilegi elevati sul file server.

# Parametri
$DomainPrefix = "CONTOSO"
$ShareName    = "folder_share"
$SharePath    = "D:\Shares\Folder"
$GrpRW        = "GRP-Share-FolderRW"
$GrpRO        = "GRP-Share-FolderRO"

Crea il percorso se non esiste

if (-not (Test-Path \$SharePath)) { New-Item -Path \$SharePath -ItemType Directory | Out-Null }

(Opzionale) Creazione gruppi AD - eseguire su DC o RSAT

New-ADGroup -Name \$GrpRW -GroupScope Global -GroupCategory Security

New-ADGroup -Name \$GrpRO -GroupScope Global -GroupCategory Security

NTFS: rimuove Domain Users, applica ACL minimi

\$acl = Get-Acl \$SharePath

Rimuovi voci superflue (esempio: Domain Users)

\$acl.Access | Where-Object { \$.IdentityReference -match "Domain Users" } | ForEach-Object { \$acl.RemoveAccessRule(\$) } | Out-Null

Aggiungi RO e RW

\$ruleRO = New-Object System.Security.AccessControl.FileSystemAccessRule("\$DomainPrefix\$GrpRO","ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
\$ruleRW = New-Object System.Security.AccessControl.FileSystemAccessRule("\$DomainPrefix\$GrpRW","Modify","ContainerInherit,ObjectInherit","None","Allow")
\$acl.AddAccessRule(\$ruleRO) | Out-Null
\$acl.AddAccessRule(\$ruleRW) | Out-Null
Set-Acl -Path \$SharePath -AclObject \$acl

Share SMB: crea o riallinea permessi

if (-not (Get-SmbShare -Name \$ShareName -ErrorAction SilentlyContinue)) {
New-SmbShare -Name \$ShareName -Path \$SharePath -CachingMode None | Out-Null
}

Rimuovi Everyone dalla share

Revoke-SmbShareAccess -Name \$ShareName -AccountName "Everyone" -Force -ErrorAction SilentlyContinue

Concedi permessi coerenti

Grant-SmbShareAccess -Name \$ShareName -AccountName "\$DomainPrefix\$GrpRO" -AccessRight Read -Force
Grant-SmbShareAccess -Name \$ShareName -AccountName "\$DomainPrefix\$GrpRW" -AccessRight Change -Force

Abilita ABE

Set-SmbShare -Name \$ShareName -FolderEnumerationMode AccessBased

(Facoltativo) Richiede FSRM installato per Access-Denied Assistance

Install-WindowsFeature FS-Resource-Manager -IncludeManagementTools

La personalizzazione del messaggio si applica via GUI FSRM e GPO come descritto sopra.

Write-Host "Configurazione completata per \\\$env\:COMPUTERNAME\$ShareName" 

Modello ACL consigliato (NTFS + Share)

OggettoTipoPermessiNote
AdministratorsNTFSFull ControlProprietà e governance.
Backup OperatorsNTFSRead + specialiSe usi software di backup agent‑based.
GRP-Share-FolderRWNTFSModifyApplica a cartella/sottocartelle/file.
GRP-Share-FolderRONTFSRead & executeApplica a cartella/sottocartelle/file.
GRP-Share-FolderRWShareChangeAllineato con NTFS.
GRP-Share-FolderROShareReadAllineato con NTFS.

Integrazione con Azure: limitare l’esposizione

  • Windows Defender Firewall (sul server): abilita File and Printer Sharing (SMB‑In) solo per profilo Dominio e limita l’ambito a subnet interne autorizzate.
  • Network Security Group (NSG) / Azure Firewall: consenti la porta 445 soltanto dalle reti di ufficio/VPN. Blocca l’accesso da Internet pubblica.
  • Privileged Access: gestisci il server con Jump/Bastion/RDP con restrizioni. Evita di amministrare la share da macchine non hardenizzate.

Verifica e test operativi

  1. Forza il refresh GPO sui client: gpupdate /force.
  2. Apri una sessione di test con un utente non appartenente ai gruppi autorizzati (es. runas /user:CONTOSO\utente.test cmd).
  3. Tenta di accedere a \\servername\folder_share:
    • Con ABE attivo, la share potrebbe non essere visibile; se digitata manualmente, deve apparire “Accesso negato”.
    • Con Access‑Denied Assistance configurato, l’utente vedrà il testo personalizzato con istruzioni.
  4. Controlla i log: evento 4663 “Access denied” nel registro Sicurezza.

Troubleshooting dei casi più comuni

  • L’utente vede ancora la share: verifica che ABE sia attivo (Get-SmbShare -Name folder_share | fl FolderEnumerationMode) e che i permessi Share non includano Everyone o gruppi ampi.
  • L’utente accede comunque: potrebbe essere membro indiretto dei gruppi autorizzati tramite nested groups. Verifica con whoami /groups.
  • Cache di credenziali o sessioni SMB: chiudi le sessioni (net use * /delete /y) o riavvia il client. Pulisci i ticket Kerberos se necessario (klist purge).
  • ACE “Deny” non intenzionali: ricordati che Deny vince su Allow, può bloccare anche amministratori se mal applicato. Eliminalo tranne dove serve davvero (es. eccezioni mirate).
  • Share nascosta col suffisso $: utile per non esporre nei browse list, ma non è sicurezza. Usa sempre NTFS/SMB + ABE.
  • Servizi/Job: se esistono account di servizio che scrivono sulla share, includili nei gruppi giusti o crea ACL dedicati per i loro percorsi.

Policy e governance

  • Documenta chi è membro di GRP-Share-FolderRW e GRP-Share-FolderRO, quando e perché.
  • Revisione trimestrale delle membership e delle ACL con report firmato dal data owner.
  • Segregazione dei doveri: chi assegna permessi non dovrebbe essere il data owner; usa richieste approvate e tracciate.

Playbook operativo rapido

  1. Allinea NTFS (nessun Domain Users; sola appartenenza gruppi dedicati).
  2. Allinea Share (rimuovi Everyone; aggiungi gruppi RO/RW coerenti).
  3. Abilita ABE.
  4. Configura Access‑Denied Assistance (FSRM + GPO) per messaggio e richiesta permessi.
  5. Limita SMB da rete: Firewall locale + NSG Azure.
  6. Abilita auditing e monitora 4663/Access Denied.
  7. Rimuovi drive mappati non autorizzati via GPP.
  8. Testa con utente non autorizzato e valida i log.

Appendice: esempi aggiuntivi di comandi utili

# Verificare le autorizzazioni effettive della share
Get-SmbShareAccess -Name "folder_share"

Verificare che ABE sia attivo

(Get-SmbShare -Name "folder\_share").FolderEnumerationMode

Esempio: nascondere la share dal browse list (non sicurezza, solo cosmetica)

Set-SmbShare -Name "folder\_share" -Description "Dati reparto" -Temporary:\$false

Per share nascosta usa "folder\share\$" in fase di creazione (New-SmbShare -Name "folder\share\$" ...)

Forzare aggiornamento GPO lato server e client

gpupdate /force

Rimuovere un mapping specifico

net use X: /delete

Controllare ticket Kerberos

klist

Filtrare eventi 4663 (Access Denied) in PowerShell

Get-WinEvent -LogName Security | Where-Object { \$.Id -eq 4663 -and \$.Message -like "Access denied" } | Select-Object -First 10 | Format-List 

Consigli finali

  • Quando possibile, struttura le autorizzazioni con gruppi (RO/RW) e non con utenti singoli.
  • Evita regole Deny globali: usa il least privilege con ACL positive e strutturate.
  • ABE riduce il rumore: meno ticket da utenti che “vedono ma non entrano”.
  • Per messaggi d’errore calzanti e flusso di richiesta autorizzazioni, preferisci Access‑Denied Assistance a un banner generico di logon.
  • In ambiente Azure, ricorda che la superficie d’attacco principale è la porta 445: consenti solo da segmenti fidati.

Conclusione

Bloccando Domain Users a livello NTFS, restringendo i permessi della share, abilitando ABE e impostando Access‑Denied Assistance, ottieni un controllo d’accesso robusto e un’esperienza chiara per gli utenti che non devono accedere alla risorsa. La combinazione di auditing e regole di rete in Azure completa la protezione e fornisce la tracciabilità necessaria per gli audit.

Riepilogo operativo esteso (copiabile nel runbook)

  • Percorso condiviso: \\servername\folder_share
  • Gruppi: GRP-Share-FolderRO, GRP-Share-FolderRW
  • NTFS: RO = Read & Execute; RW = Modify; rimuovi Domain Users
  • Share: RO = Read; RW = Change; rimuovi Everyone
  • ABE: attivo (Set-SmbShare -FolderEnumerationMode AccessBased)
  • Messaggio: Access‑Denied Assistance (FSRM + GPO)
  • Auditing: Advanced Audit Policy → Object Access (Success/Failure) + Auditing sulla cartella
  • Firewall: limita SMB 445 a subnet autorizzate (locale + NSG)
  • Convalida: test con utente non autorizzato + verifica evento 4663

Suggerimenti aggiuntivi

  • Usa gruppi dedicati (GRP‑Share‑FolderRW, GRP‑Share‑FolderRO) per facilità di manutenzione.
  • Abilita l’audit “File System” nella Advanced Audit Policy per tracciare i tentativi negati.
  • Applica policy di firewall interno/NSG per limitare l’accesso da subnet specifiche.
  • Rimuovi mapping automatici via GPO (User Configuration → Preferences → Windows Settings → Drive Maps) o con script di logon.

Con questi passaggi impedisci agli utenti non autorizzati di visualizzare o modificare il contenuto del percorso condiviso, fornisci un riscontro chiaro (“Accesso negato”) e mantieni ordine e tracciabilità nel tempo.

Esempio di messaggio Access‑Denied Assistance suggerito (personalizzabile):

L’accesso a \\servername\folder_share è riservato. Se ritieni di aver bisogno di permessi, apri una richiesta indicando:
• Nome/cognome e UPN
• Unità organizzativa / reparto
• Motivazione business (RO o RW)
• Scadenza dell’accesso (se temporaneo)


Domande frequenti

Q: Posso raggiungere lo stesso obiettivo usando solo la share nascosta ($)?
A: No. La share nascosta è utile a non farla comparire nei browse list, ma chi conosce il nome può provarci comunque. Sicurezza = NTFS/SMB + ABE.

Q: Serve davvero togliere “Everyone” dalla share se NTFS è già restrittivo?
A: È buona prassi. Così eviti traversing non necessario e mantieni il principio del minimo privilegio anche al livello SMB.

Q: Perché evitare ACE “Deny”?
A: Perché prevalgono su consensi ereditati e spesso causano effetti collaterali imprevisti, specie con gruppi nidificati. Usale solo per eccezioni puntuali.


Nota operativa: se la tua istanza in Azure è integrata con un dominio on‑prem (tramite VPN/ExpressRoute) o con Azure AD DS, assicurati che la risoluzione DNS e la connettività con i DC siano stabili: interruzioni Kerberos/LDAP possono generare errori di accesso apparenti che non dipendono dai permessi.


Riferimenti rapidi ai comandi chiave

  • Set-SmbShare -Name "folder_share" -FolderEnumerationMode AccessBased – Abilita ABE
  • Grant-SmbShareAccess / Revoke-SmbShareAccess – Gestisce permessi di share
  • Get-Acl / Set-Acl, icacls – Gestisce ACL NTFS
  • Get-WinEvent – Interroga i log di sicurezza
  • gpupdate /force – Aggiorna policy

Call to action per i team IT: prendi questo articolo come template, adatta i nomi dei gruppi alla tua convenzione, incapsula lo script in un playbook Ansible/DSC o in una procedura SCCM, e istituisci un processo di revisione trimestrale. Avrai una condivisione sicura, invisibile ai non autorizzati e con richiesta permessi “self‑service”.

Indice