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.
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)
- Rimuovi Domain Users dalla scheda Sicurezza della cartella; mantieni solo i gruppi autorizzati (NTFS).
- Allinea i permessi della share: nessun Everyone, accesso limitato ai gruppi giusti (SMB).
- Abilita Access‑Based Enumeration per nascondere la share ai non autorizzati.
- Configura Access‑Denied Assistance via FSRM e GPO per un messaggio chiaro e una richiesta permessi.
- Aggiorna i client (
gpupdate /force
) e verifica con un utente di test non autorizzato. - Attiva auditing e limita l’accesso SMB (porta 445) a subnet consentite (Firewall/NSG Azure).
Procedura riassunta passo‑passo
Passaggio | Cosa fare | Perché / Note operative |
---|---|---|
Configurare correttamente i permessi NTFS | 1. 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 GPO | Computer 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 client | Esegui 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 periodica | Documenta 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
- Accedi al server con un account amministrativo.
- Vai alla cartella base (es.
D:\Shares\Folder
). - 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 avanzata → Permessi 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:
- Installa File Server Resource Manager (FSRM) se non presente:
Install-WindowsFeature FS-Resource-Manager -IncludeManagementTools
- Apri File Server Resource Manager → Options → Access‑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).
- 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
- Abilita il criterio avanzato: Computer Configuration → Policies → Windows Settings → Security Settings → Advanced Audit Policy Configuration → Object Access → Audit File System (Success e Failure).
- 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)
Oggetto | Tipo | Permessi | Note |
---|---|---|---|
Administrators | NTFS | Full Control | Proprietà e governance. |
Backup Operators | NTFS | Read + speciali | Se usi software di backup agent‑based. |
GRP-Share-FolderRW | NTFS | Modify | Applica a cartella/sottocartelle/file. |
GRP-Share-FolderRO | NTFS | Read & execute | Applica a cartella/sottocartelle/file. |
GRP-Share-FolderRW | Share | Change | Allineato con NTFS. |
GRP-Share-FolderRO | Share | Read | Allineato 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
- Forza il refresh GPO sui client:
gpupdate /force
. - Apri una sessione di test con un utente non appartenente ai gruppi autorizzati (es.
runas /user:CONTOSO\utente.test cmd
). - 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.
- 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
eGRP-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
- Allinea NTFS (nessun Domain Users; sola appartenenza gruppi dedicati).
- Allinea Share (rimuovi Everyone; aggiungi gruppi RO/RW coerenti).
- Abilita ABE.
- Configura Access‑Denied Assistance (FSRM + GPO) per messaggio e richiesta permessi.
- Limita SMB da rete: Firewall locale + NSG Azure.
- Abilita auditing e monitora 4663/Access Denied.
- Rimuovi drive mappati non autorizzati via GPP.
- 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 ABEGrant-SmbShareAccess / Revoke-SmbShareAccess
– Gestisce permessi di shareGet-Acl / Set-Acl
,icacls
– Gestisce ACL NTFSGet-WinEvent
– Interroga i log di sicurezzagpupdate /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”.