Настройка аудита доступа к файлам и папкам в Windows (GPO)
Политика аудита файловой системы в Windows позволяет отслеживать все события доступа к определенным файлам и папкам на диске. Администратор может включить политику аудита для определения событий создания, чтения, изменения и удаления файлов и папок в файловой системе NTFS. Аудит файловой системы чаще всего используется для контроля доступа и изменений в общих сетевых папках на файловых серверах Windows, к которым одновременно могут иметь доступ несколько пользователей.
Включить политику аудита доступа к объектам файловой системы в Windows
Аудит доступа к объектам файловой системы по умолчанию в Windows не включен. Аудит доступа можно включить с помощью групповой политики. Чтобы настроить политику аудита на автономном сервере, используйте консоль редактора локальной групповой политики (
gpedit.msc). Если вам необходимо включить политику аудита на нескольких компьютерах в домене AD, используйте консоль управления объектами групповой политики домена (
gpmc.msc).
Откройте редактор объектов групповой политики и перейдите в Настройки Windows -> Настройки безопасности -> Конфигурация расширенной политики аудита -> Политики аудита системы -> Доступ к объектам.
-
Откройте Аудит файловой системы и укажите, что должен регистрироваться только успешный доступ к объектам файловой системы (Настройте следующие события аудита -> Успех).
Сохраните изменения и обновите настройки локальной групповой политики с помощью команды:
gpupdate /force
Или включите политику аудита локальной файловой системы из командной строки.
Список доступных категорий аудита:
AuditPol.exe /list /subcategory:*Включите аудит успешных событий доступа к объектам файловой системы:
AuditPol.exe /set /subcategory:"File System" /success:enableПроверьте текущие настройки аудита:
AuditPol.exe /get /category:"Object Access"Как применить политику аудита к папке или файлу в Windows
Даже если в политике включен аудит доступа к файлам и папкам, фактические события не отправляются в средство просмотра событий. Параметры аудита для отслеживаемых файлов и папок должны быть включены и настроены вручную администратором.
Например, ваша задача — отслеживать события чтения/изменения/создания всех файлов в папке C:\Docs.
-
Откройте свойства папки и перейдите на вкладку Безопасность -> Дополнительно -> Аудит.
Нажмите Добавить и в поле Основной выберите пользователей и/или группы, события доступа к объектам которых вы хотите отслеживать. Выберите Пользователи, чтобы проверять доступ к файлам для всех пользователей, или выберите Все, если вы хотите включить события доступа к файлам по системным процессам.
В поле «Тип» укажите отслеживать только успешные события доступа (
Success)
В разделе Применяется к вы можете указать, должна ли политика аудита применяться к папке, файлам или подпапкам (значение по умолчанию — Эта папка, подпапки и файлы).
В списке Дополнительные разрешения выберите только те действия над файлами и папками, которые вы хотите отправить в журнал аудита. Например, чтобы отслеживать только события чтения и изменения файлов, выберите параметры:
List folder/read data,
Create files / write data,
Create folders / append data)
См. пример использования политик аудита Windows для поиска пользователя, который удалил файл из общей папки.
Сохраните настройки аудита.
При настройке политик аудита доступа к файловой системе включите аудит только для тех папок и файлов, которые вам нужны. Размер файла журнала средства просмотра событий значительно увеличивается, если включен аудит доступа для большого количества элементов.
Чтобы включить аудит для определенного каталога, можно использовать PowerShell:
$Path = "C:\Docs"
$AuditChangesRules = New-Object System.Security.AccessControl.FileSystemAuditRule('BUILTIN\Users', 'Delete,DeleteSubdirectoriesAndFiles', 'none', 'none', 'Success')
$Acl = Get-Acl -Path $Path
$Acl.AddAuditRule($AuditChangesRules)
Set-Acl -Path $Path -AclObject $AclПеречислите настройки аудита папок:
(Get-Acl "C:\Docs\" -Audit).AuditЕсли вы хотите рекурсивно сканировать все каталоги и найти подпапки, для которых включен аудит файловой системы, используйте этот скрипт:
$folders=Get-ChildItem "c:\docs" -Recurse |Where-Object {$_.PSIsContainer}
foreach ($folder in $folders)
{
$auditacl=(Get-Acl $folder.FullName -Audit).audit
if ($auditacl -ne "") {write-host $folder.FullName}
}Просмотр событий доступа к файловой системе в Windows
Политика аудита будет записывать журнал в средство просмотра событий, если какие-либо действия выполняются над файлами в папке с включенным аудитом. Чтобы просмотреть события:
Откройте оснастку «Просмотр событий» (
eventvwr.msc)
Перейдите в раздел Журналы Windows -> Безопасность и отфильтруйте события по источнику:
Microsoft Windows security auditing, Категория задачи:
File SystemОткройте любое найденное событие. Например, событие с EventID 4663 («
An attempt was made to access an object«) содержит информацию о пользователе, который взаимодействовал с файлом:
Account Name:
Имя файла:object_name:
тип операции (в данном случае запись в файл): Доступ:WriteData (or AddFile)
Однако возможности фильтрации и поиска консоли «Просмотр событий» достаточно скудны, и использовать ее для поиска всех действий над конкретным файлом неудобно.
Лучше использовать PowerShell для поиска и перечисления всех событий доступа к определенному объекту файловой системы. Следующий сценарий PowerShell находит и перечисляет все события доступа к указанному файлу в средстве просмотра событий (командлет Get-WinEvent используется для запроса средства просмотра событий):
$fileName = "C:\\docs\\new_test_file.txt"
$results = Get-WinEvent -FilterHashtable @{logname='Security'; id=4663,4659} |`
Where-Object { $_.message -match $fileName -and $_.message -notmatch "Account Name:\s*machine$*"}`
foreach ($result in $results) {
$Account = $result.properties[1].Value
$objectName = $result.properties[6].Value
$accessMask = $result.properties[8].Value
if ( $accessMask -like "*00000000-*") { $accessMask=$result.properties[9].Value}
$accessMask2 = $result.properties[9].Value
$fileOperation = ""
switch -Wildcard ($accessMask) {
"*%%1538*" { $fileOperation = "READ_CONTROL" }
"*%%4416*" { $fileOperation = "ReadData (or ListDirectory)" }
"*%%4417*" { $fileOperation = "WriteData (or AddFile)" }
"*%%4418*" { $fileOperation = "AppendData (or AddSubdirectory or CreatePipeInstance)" }
"*%%4419*" { $fileOperation = "ReadEA" }
"*%%4420*" { $fileOperation = "WriteEA" }
"*%%4423*" { $fileOperation = "ReadAttributes" }
"*%%4424*" { $fileOperation = "WriteAttributes" }
"*%%4426*" { $fileOperation = "Delete" }
"*%%4428*" { $fileOperation = "ReadControl" }
"*%%4429*" { $fileOperation = "WriteDAC" }
"*%%4430*" { $fileOperation = "WriteOwner" }
"*%%4432*" { $fileOperation = "Synchronize" }
"*%%4433*" { $fileOperation = "AccessSystemSecurity" }
"*%%4434*" { $fileOperation = "MaximumAllowed" }
"*%%4436*" { $fileOperation = "GenericAll" }
"*%%4437*" { $fileOperation = "GenericExecute" }
"*%%4438*" { $fileOperation = "GenericWrite" }
"*%%4439*" { $fileOperation = "GenericRead" }
"*%%1537*" { $fileOperation = "DELETE" }
default { $fileOperation = "Unknown" }
}
Write-Host $result.Id $result.TimeCreated $Account $objectName $fileOperation
}
Write-Host $result.Id $result.TimeCreated $Account $objectName $fileOperation
}
Вы можете отправить полученный список событий аудита доступа в сборщик журналов, базу данных, текстовый файл журнала или отправить уведомление по электронной почте с помощью Send-MailMessage при доступе или изменении отслеживаемого файла.







