Windows Server 2008 – Access Based Enumeration


L’Access Based Enumeration (ABE) è una feature molto utile ma poco conosciuta ed utilizzata, essa permette di nascondere ad un security principal (utente o gruppo) tutte le cartelle o file a cui non ha accesso.

L’ABE è gestita dal File System e sostanzialmente agisce durante l’enumerazione del contenuto di una share; molto semplicamente quando un utente richiede il contenuto di una cartella condivisa, l’ABE non restituisce gli oggetti (file e cartelle) sui quali esso non ha il permesso di lettura (READ).

Possiamo quindi vedere questa feature come una sorta di filtro dinamico applicato alle cartelle condivise, che agendo sui permessi (DACL) dei vari oggetti gestisce la “visualizzazione” del contenuto.

L’ABE va abilitato sulle singole cartelle. Di default in Windows 2008 l’ABE è attivo su tutte le share create tramite interfaccia grafica, ma non sulle condivisioni create tramite command prompt “NET SHARE”.

Per abilitare/disabilitare/verificare lo stato dell’ABE si deve utilizzare la console “Share & Storage Management”:

image

Seguono alcuni esempi del suo utilizzo.

Esempio 1 - ABE sul contenuto di una cartella

La cartella ShareRoma2 contiene fisicamente due sottocartelle:

image

sulla cartella fisica HiddenForUser neghiamo la lettura all’utente User

image

Quando l’utente User accede alla share (Sharing2 è un DFS target che punta a ShareRoma2), la cartella HiddenForUser non è visualizzata:

image

È importante notare che pur conoscendo il PATH reale dell’oggetto, non avendo i permessi necessari, l’utente non è in grado di accedervi.

Esempio 2 - ABE sul namespace DFS

Un’utilizzo molto diffuso del ABE è in congiunzione con il servizio di namespace distribuito (DFS-N). Essendo il DFS un sistema distribuito e quindi un insieme di più server che concorrono allo stesso obiettivo, per gestire l’ABE non è possibile utilizzare gli stessi strumenti che si usano localmente ad una singola macchina.

Ad esempio l’ABE va abilitato a livello di namespace e bisogna utilizzare la console di gestione del DFS o il comando dfsutil:

dfsutil property ABE Enable \\domain.int\namespace

Questi strumenti garantiscono che le impostazioni siano applicate a tutti server che partecipano al namespace.

L’ABE attivato su di un namespace DFS, agisce sul contenuto del namespace stesso, in particolare sui vari link alle cartelle condivise (target folders).

Riprendendo l’esempio precedente, all’interno del namespace abbiamo due link:

image

Per nascondere sharing2 ad un utente specifico, come ci siamo detti basta negare il permesso di lettura:

dfsutil property sd deny \\domain.int\namespace\link User:R

Il risultato è il seguente:

image

Il link alla cartella sharing2 non è più visibile!

A differenza dell’esempio precedente, L’ABE a livello di DFS non inibisce l’accesso alle risorse; se l’utente conosce il PATH reale vi ci può accedere direttamente.

In questo esempio possiamo accedere a \\gian.int\gian-ns\sharing2 digitandolo manualmente.

Tuttavia al suo interno non vedremo HiddenForUser in quanto è ancora attivo l’ABE a livello locale. Oltre a non visualizzarlo non vi possiamo neanche accedere per via dei mancati permessi.

A livello NTFS il comando dfsutil ha modificato i permessi dell’utente sul LINK fisico (C:\DFSRoots\sharing2) su tutti i server che mantengono il namespace.

Seppur possibile modificare manualmente i permessi sui link fisici è sconsigliato, in quanto i link all’interno di DFSRoots vengono ricreati ad ogni riavvio del servizio DFS e i permessi non aggiunti tramite il comando dfsutil non vengono ripristinati.

Per concludere, vi consiglio di utilizzare maggiormente questa feature in quanto semplice ed utile per creare delle viste per l’utente finale.

Vi ricordo che sui sistemi Windows 2008 e successivi l’ABE è abilitata di default e le cartelle replicate tramite DFS-R mantengo i permessi durante la copia tra le varie macchine, semplificando così la gestione del contenuto delle cartelle.

Gianluca Bertelli
Support Engineer
Microsoft Enterprise Platforms Support

Comments (0)

Skip to main content