Windows server 2008 R2 – log smazaných souborů

Dlouho jsme v práci nebyli schopni zjistit, kdo vymazal nějakou sloužku. Proto jsem vygooglil řešení, pomocí kterého už můžeme tyto události logovat – http://www.bouska.biz/logovani-udalosti-na-sdilenem-ulozisti. Návod na export do CSV jsem pak našel tady – http://blogs.technet.com/b/mspfe/archive/2013/08/27/auditing-file-access-on-file-servers.aspx

Na windows serveru od verze 7/2008 R2 je k dispozici toto:

Nástroje pro správu / Místní zásady zabezpečení / upřesnit konfiguraci zásad auditování / přístup k objektu / auditovat systém souborů
Administrative tools / local security policy / advanced audit security configuration/ object access / audit file system

Povolíme zde obě možnosti (úspěch i neúspěch).

Zatím se nic nestane, dokud ve vlastnostech sdílené složky (buď vlastnosti složky na lokálním disku serveru nebo vlastnosti sdílené složky ve správě počítače) :

zabezpečení / upřesnit / auditování
security / advanced / auditing

Nastavíme, jaké operace se budou zaznamenávat v logu.
Doporučuji nastavit minimálně úspěšné pokusy o smazání, změnu oprávnění a převzetí vlastnictví.
V systémovém logu (“zabezpečení” resp. audit) pak máme záznamy o všech výmazech a podezřelých operacích, samozřejmě včetně přesného času a už. účtu, ze kterého byly operace provedeny.

 

Vytvořil jsem si soubor smazane.ps1, který provede export do souboru CSV pomocí PowerShell ze http://blogs.technet.com/b/mspfe/archive/2013/08/27/auditing-file-access-on-file-servers.aspx

$server = "DOPLNTE-JMENO-SERVERU"
$out = New-Object System.Text.StringBuilder 
$out.AppendLine("ServerName,EventID,TimeCreated,UserName,File_or_Folder,AccessMask") 
$ns = @{e = "http://schemas.microsoft.com/win/2004/08/events/event"} 
foreach ($svr in $server) 
    {    $evts = Get-WinEvent -computer $svr -FilterHashtable @{logname="security";id="4663"} -oldest
 
    foreach($evt in $evts) 
        { 
        $xml = [xml]$evt.ToXml()
 
        $SubjectUserName = Select-Xml -Xml $xml -Namespace $ns -XPath "//e:Data[@Name='SubjectUserName']/text()" | Select-Object -ExpandProperty Node | Select-Object -ExpandProperty Value
 
        $ObjectName = Select-Xml -Xml $xml -Namespace $ns -XPath "//e:Data[@Name='ObjectName']/text()" | Select-Object -ExpandProperty Node | Select-Object -ExpandProperty Value
 
        $AccessMask = Select-Xml -Xml $xml -Namespace $ns -XPath "//e:Data[@Name='AccessMask']/text()" | Select-Object -ExpandProperty Node | Select-Object -ExpandProperty Value
 
        $out.AppendLine("$($svr),$($evt.id),$($evt.TimeCreated),$SubjectUserName,$ObjectName,$AccessMask")
 
        Write-Host $svr 
        Write-Host $evt.id,$evt.TimeCreated,$SubjectUserName,$ObjectName,$AccessMask
 
        } 
    } 
$out.ToString() | out-file -filepath d:\DOPLNTE-CESTU\4663Events_$(get-date -f yyyy-MM-dd__hh-mm-ss).csv

Ještě jsem musel vytvořit spoštěcí BAT soubor, aby se mohl předchozí skript v pořádku spustit, jehož obsahem bylo:

powershell -ExecutionPolicy ByPass -File c:\smazane.ps1

V kategorii: Windows Server

Komentáře jsou uzavřeny.