Monitor DFS Namespace Usage

Tijdens een migratie van Domain Controllers op basis van Windows Server 2008 R2 naar Windows Server 2012 R2 moest ook DFS Namespaces worden overgezet. Na een paar onsuccesvolle pogingen om DFS namespaces te migreren, omdat gebruiker X op locatie Y toch problemen had, ben ik op zoek gegaan naar een methode om het gebruik van DFS namespaces op de oude domain controllers te monitoren. Helaas is dit geen standaard functionaliteit van DFS.

Op het moment dat we gingen monitoren stonden de oude Domain Controllers al op ‘Last among all targets’ om het gebruik van de oude domain controllers te minimaliseren. Open hiervoor de ‘DFS Management’ console en ga naar ‘DFS Management > Namespaces > Namespace’. Ga naar de ‘Namespace Servers’ tab en selecteer de properties van de gewenste namespace server. Op de ‘Advanced’ tab kan je kiezen voor ‘Override referral ordering’.

 

Object Access Auditing

Het alternatief is om op basis van folder access auditing te controleren welke gebruikers nog gebruik maken van de oude omgeving. Hiervoor moet de ‘Local Security Policy’ worden gewijzigd en op de desbetreffende folder moet auditing aangezet worden.

Open de ‘Administrative Tools > Local Security Policy’ op de desbetreffende namespace server en ga naar ‘Security Settings > Local Policies > Audit Policy’ en pas de ‘Audit object access’ policy aan, zodat ‘Success’ actief is. Mocht de mogelijkheid hier ‘grayed out’ zijn dan moet het worden aangepast in de Domain Group Policy. In ons geval moest het met die reden worden aangepast in de ‘Default Domain Controller Policy’ (Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Audit Policy).

DSF1

Daarnaast moet auditing nog worden aangezet op de desbetreffende map. Ga hiervoor naar de C:\DFSroots\ op de namespace server en selecteer de properties van de namespace. Ga naar de Security tab en selecteer ‘Advanced’. Ga naar de Auditing tab, klik op Edit en klik vervolgens op Add om een nieuwe ‘Auditing entry’ aan te maken:

–  Name: Authenticated Users

–  Apply onto: This folder only

–  Access: Read attributes (Successfull)

DSF2

Vervolgens kan je de events terugvinden in de Security eventlog. Er worden events met verschillende ID’s gegenereerd, maar als je filtert op Event_ID 4663 dan heb je een goed overzicht.

Events uitlezen met powershell

Met meerdere Namespace servers is het lastig om het overzicht te krijgen, maar gelukkig is er altijd nog powershell. Met Get-Winevent kan je de events in een variabele stoppen, maar om het aantal events te beperken geven we gelijk de volgende parameter mee -FilterHashtable @{logname=’security’; id=4663}. Echter bleek in dit geval de message parameter leeg te zijn. Gelukkig zat de informatie die we nodig hadden nog wel verstopt in een subvalue van het desbetreffende event:

PS C:\Windows\system32> $Events = Get-WinEvent -Computername [computername] –FilterHashtable @{logname='security';
 id=4663}
PS C:\Windows\system32> $Events[1].Properties

Value
-----
S-1-5-21-***
C.Sluis
GTS
42431513799
Security
File
C:\DFSRoots\data
242228
%%4423...
128
4

De gebruikersnaam en het pad kunnen we er op de volgende manier uithalen:

PS C:\Windows\system32>  $Events[1].Properties[1].Value
C.Sluis

PS C:\Windows\system32>  $Events[1].Properties[6].Value
C:\DFSRoots\data

Uiteindelijk kan je met het volgende script de events verzamelen van de verschillende namespace servers en deze exporteren naar een CSV.

$Servers = "DC01", "DC02", "DC03"
$Outputlocation = "C:\temp\Namespace_Usage.csv"

ForEach ($Server in $Servers) {
   $Events = Get-WinEvent -Computername $Server -FilterHashtable @{logname='security'; id=4663} | 
Sort-Object @{expression="TimeCreated";Descending=$true}
   $Events | Select @{Name="Servername";Expression={$Server}},TimeCreated,@{Name="DfsUser";
Expression={$_.Properties[1].Value}},@{Name="DfsPath";Expression={$_.Properties[6].Value}} | 
Export-Csv $Outputlocation -Append -NoTypeInformation}


Wilt u graag een afspraak maken? Dat kan!

Wij ontvangen u met plezier of komen graag bij u op locatie.

[contact-form-7 id="605" title="Contactformulier 1"]
Heeft u een vraag?

Vul onderstaand formulier in en wij nemen zo snel mogelijk contact op!

[contact-form-7 id="606" title="Mail icoon popup"]
X