L'AVVISO
Sarà capitato a tutti di vedere il seguente avviso durante il setup /domainprep prima dell'installazione di Exchange 2003 (ma anche del vecchio Exchange 2000).
 

domainprep  

Probabilmente però, come in tanti altri casi, dato che l'avviso non è bloccante, molti saranno andati avanti senza approfondire la cosa (e confesso che alle prime volte anche io ho proseguito senza curarmi molto!).

LA SPIEGAZIONE
Il gruppo AD Pre-Windows 2000 Compatible Access è stato creato per garantire ai suoi membri l'accesso in lettura agli oggetti di tipo utente e gruppo ovvero i membri di questo gruppo possono "leggere" gli attributi di un qualunque utente/gruppo in AD.

Per capire le motivazioni che stanno alla base di questo gruppo dobbiamo tornare indietro al mondo NT: su questo sistema operativo infatti chiundue (comprese le sessioni "anonime" o null session) avevano il diritto di ottenere l'elenco degli utenti, dei gruppi e le relative relazioni; tra l'altro uno degli utilizzatori di questa funzione era il servizio RAS di NT. Ovviamente questa configurazione rappresentava un buco di sicurezza abbastanza evidente, tanto che in Windows 2000 Microsoft ha rimediato consentendo tale diritto non ad "everyone" ma agli "authenticated users" (ovvero solo a chi si presenta con delle credenziali valide).
 
Quando si crea un dominio AD, viene posta la fantastica domanda se si vuole i permessi compatibili con NT oppure solo con Windows 2000/2003: in base alla scelta che viene fatta, cambiano anche i membri di questo gruppo:

  • Se si scegle i permessi compatibili con NT, nel gruppo Pre-Windows 2000 Compatible Access verranno inseriti sia il gruppo Authenticated Users che il gruppo Everyone
  • Al contrario, se si vota per permessi compatibili solo con Windows 2000  il gruppo conterrà esclusivamente gli Authenticated Users

Quindi, indipendentemente dalla scelta operata in fase di creazione del dominio (scelta che poi può comunque essere modificata semplicemente agendo sul gruppo), tutti i gli utenti autenticati avranno diritto di lettura su un qualunque oggetto in Active Directory

In prima approssimazione si potrebbe pensare che l'avviso venga fuori solo quando il gruppo Pre-Windows 2000 Compatible Accesso contiene il gruppo EVERYONE: con una veloce prova si scopre invece che l'avviso compare anche quando il suddetto gruppo contiene solo gli Authenticated Users. Ovvero l'avviso in questione in pratica compare sempre quando si seguono le configurazioni di default proposte da Microsoft!

Leggendo con più attenzione l'avviso, si scopre che la situazione è un pochino più articolata: il testo infatti recita che "Le distribution list  [ovvero i gruppi mail-enabled] con la membership nascosta [ovvero se da Outlook apro una DL non vedo i membri che ne fanno parte] saranno comunque completamente visibili ai membri del gruppo Pre-Windows 2000 Compatible Access; quindi, nascondere i membri di una DL potrebbe non produrre gli effetti desiderati dato che la membership del relativo gruppo è comunque visibile.

Questo significa che la configurazione considerata "pericolosa" è in realtà relegata ad uno specifico ambito (DL con membri nascosti) peraltro poco "attuale" in Exchange 2003 (mentre al contrario sul 5.5 era abbastanza frequente - c'è un ulteriore articolo di approfondimento su questo argomento).

APPROFONDIMENTO
Se, dopo aver installato Exchange, si prova a creare una distribution list nascondendone i membri, si scopre velocemente che nessuno (nemmeno Administrator) riesce a vedere i membri della DL in oggetto: controllando in particolare la security della DL, si scopre che solo i membri del gruppo Exchange Domain Servers possono leggere i membri del gruppo (anche perchè altrimenti sarebbe difficile per un server Exchange espandere la lista per consegnare le mailwhatchutalkingabout smile).
La sorpresa viene fuori quando da normale utente si prova a vedere la membership del gruppo e si scopre che (correttamente) nessun membro del gruppo viene visualizzato indipendentemente dall'impostazione del gruppo Pre-Windows 2000 Compatible access.
Ricapitoliamo: l'avviso mi dice che se c'è qualcuno nel gruppo Pre-Windows 2000 Compatible Access allora c'è il rischio che un pinco pallino qualunque membro di quell gruppo possa "violare" le DL con utenti nascosti, ma se si fa una prova si scopre che il Sig. pinco pallino di prima non riesce a vedere i membri della lista, esattamente come Mr. Administrator. Ma allora che cavolo dice il messaggio di avviso?

Per scoprire come Mr. Pinco Pallino possa "stanare" i membri della lista dobbiamo fare un passo indietro: come tutti sanno, per vedere se un utente fa parte di un gruppo si può guardare la proprietà members del gruppo oppure la memberOf dell'utente (in realtà l'attributo "che comanda" è il member di un gruppo, visto che il memberOf viene "costruito" solo per comodità).
Quindi, se anche io non posso vedere la proprietà member di un gruppo, potrei controllare tutti gli utenti in AD e vedere chi, nel campo memberOf ha il famoso gruppo segreto! Certo, si tratta di una operazione "lunga" ma con un po' di scripting la cosa non è nemmeno tanto difficile. Il problema si sposta quindi non solo su chi ha il diritto di leggere l'attributo member di un gruppo ma su chi ha anche il diritto di leggere l'attributo memberOf di un utente!
Facciamo un esempio pratico: nel mio dominio AD creo un gruppo chiamato Gruppo Privato dove attivo l'opzione Hide Membership (per attivarla, è necessario andare negli Exchange tasks e selezionare la relativa voce - non è una checkbox che si trova nelle proprietà del gruppo). Il risultato è che aprendo il gruppo come administrator mi trovo questa bella schermata:
 
hidden dl

(nota: naturalmente il gruppo conteneva utenti prima che li rendessi "nascosti"). Analoga schermata si ottiene quando si tenta di vedere il gruppo come utente normale (ovvero, sembra che tutto funzioni come da manuale).

Proviamo però a prendere un utente membro del gruppo ed andiamo a guardare il tab Member Of: il risultato che si ottiene usando l'utente Administrator è questo:
hidden dl user

Da questa operazione si deduce che il Sig. Carlo fa parte del gruppo privato anche se guardando il gruppo questa cosa non è (giustamente) visibile. Ricordiamoci però che questa screenshot è stata ottenuta loggandosi come Administrator (o come un utente che ha la gestione dell'account di Carlo).
 
Se andiamo a guardare la security associata all'oggetto Carlo, scopriamo una cosa interessante, ovvero che, oltre ai gruppi Domain Admins e Account Operator nessun altro gruppo ha il diritto di leggere l'attributo memberOf ad eccezione di Pre-Windows 2000 Compatible Access.

hidden dl user pre

Quindi, se il gruppo Pre-Windows 2000 Compatible Access contiente degli utenti (e di default dentro c'è Authenticated Users) quest'ultimi potranno leggere la proprietà memberOf di tutti gli utenti e quindi "vanificare" l'opzione di nascondere i membri di una DL.

Ricapitolando:
  • Quando si nasconde il contenuto di una Distribution List nessuno (nemmeno l'Administrator) può vederne i membri
  • Per ogni utente esiste un campo (memberOf) che dice di quali gruppi un utente fa parte
  • Questo campo è visualizzabile dai Domain Admins, dagli Account Operators e da eventuale altri utenti delegati.
  • Il campo è inoltre visualizzabile anche dai membri del gruppo Pre-Windows 2000 Compatible Access
  • Il gruppo Pre-Windows 2000 Compatible Access contiene di default gli Authenticated Users
  • Ergo, un qualunque utente può vedere di quali gruppi un account da parte (compresi eventuali distribution lists la cui membership è nascosta)
  • Pet tutti questi motivi, in fase di DOMAINPREP, se il setup vede che nel gruppo c'è qualcuno, manda l'avviso di cui sopra.

Quando si dice le cose semplici.....sad smile


SOLUZIONE

Se comunque la funzione di cui sopra è richiesta, è sufficiente togliere tutti i membri dal gruppo "Pre-Windows 2000 Compatible Access" per ottenere il risultato voluto (e non vedere l'avviso durante il domainprep).