
В некоторых случаях администратору необходимо выяснить, какой процесс (программа) или пользователь изменил NTFS-разрешения на определенную папку или файл на файловом сервере Windows. В этой статье показано, как отслеживать изменения разрешений NTFS, сделанные для объектов файловой системы, с помощью политики аудита, сценариев PowerShell и инструмента ProcMon.
Вам нужно настроить политику аудита для отслеживания изменений разрешений NTFS на объектах файловой системы Windows.
- Откройте редактор групповой политики. Если вы хотите настроить политику аудита файловой системы на конкретном сервере, откройте консоль редактора локальной групповой политики (
gpedit.msc
). Если вы хотите включить аудит на нескольких устройствах в домене (например, на всех файловых серверах), вам нужно создать отдельный GPO с помощью консоли Group Policy Management (gpmc.msc
); - Перейдите по ссылке Конфигурация компьютера -> Политики -> Параметры Windows -> Параметры безопасности -> Расширенная конфигурация политики аудита -> Политики аудита -> Доступ к объектам;
- Включите опцию Аудит файловой системы и выберите Успех;
- Теперь вам нужно включить аудит в свойствах каталога, в котором вы хотите отслеживать изменения прав. Откройте свойства папки -> перейдите в Безопасность вкладка -> Дополнительно -> Аудит вкладка -> Продолжение -> нажмите Добавить и добавьте группу (выберите директора), деятельность которой вы хотите отслеживать. Мы указали Все здесь;
Ранее мы показывали, как использовать аудит файловой системы для поиска пользователя, удалившего файл или папку на файловом сервере Windows.
- Выберите Введите=Успех и включите Изменить разрешения и Возьмите на себя ответственность опции в разделе Дополнительные разрешения:
- Не забудьте обновить параметры групповой политики на хосте:
gpupdate /force
Теперь, если кто-то изменил NTFS-разрешения на элементы в указанной папке, произойдет событие с идентификатор события 4670 появится в журнале безопасности.
Откройте консоль Event Viewer (eventvwr.msc
) -> Журналы Windows -> Безопасность. Отфильтруйте список событий по идентификатору EventID 4670 (Permissions on an object were changed
) и откройте последнее событие.
Вы увидите имя пользователя, который изменил разрешение (Имя учетной записи:) и имя процесса ( C:\Windows\explorer.exe ) в описании события. В нем также содержится информация о предыдущем ACL (Оригинальный дескриптор безопасности) и новый список разрешений (Новый дескриптор безопасности).
Обратите внимание, что разрешения представлены в формате DACL, и их сложно понять. К счастью, вы можете использовать встроенную команду PowerShell ConvertFrom-SddlString для преобразования строки Security Descriptor Definition Language в объект PSCustomObject.
Чтобы узнать, какие группы доступа были изменены в NTFS-разрешениях объекта, сравните старый и новый дескрипторы безопасности (скопируйте значения SDDL из события 4670):
$oldperm=ConvertFrom-SddlString "D:PAI(A;OICIIO;FA;;;CO)(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;S-1-5-21-1774357850-3643260196-2143367957-1125)(A;OICI;0x1301bf;;;S-1-5-21-1774357850-3643260196-2143367957-1124)"
$newperm=ConvertFrom-SddlString "D:PARAI(A;OICIIO;FA;;;CO)(A;OICI;FA;;;SY)(A;OICI;0x1301bf;;;S-1-5-21-1774357850-3643260196-2143367957-1124)(A;OICI;0x1200a9;;;S-1-5-21-1774357850-3643260196-2143367957-1125)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;BU)"
Compare-Object -ReferenceObject $oldperm.DiscretionaryAcl -DifferenceObject $newperm.DiscretionaryAcl|FL
В этом примере видно, что новый ACL предоставляет разрешения на чтение для Builtin\Users
группе.
Для поиска в журнале событий Windows можно использовать команду Get-WinEvent PowerShell. Например, вы можете использовать следующий код, чтобы найти события с идентификатором события 4670 и получить значения OldSD и NewSD из сценария:
$event=Get-WinEvent -FilterHashtable @{logname="Security";id=4670} -MaxEvents 1
[xml]$xmlevent = $event.ToXml()
$eventobj = New-Object System.Management.Automation.PSObject
$eventobj | Add-Member Noteproperty -Name $xmlevent.Event.EventData.Data[1].name -Value $xmlevent.Event.EventData.Data[1].'#text'
$eventobj | Add-Member Noteproperty -Name $xmlevent.Event.EventData.Data[8].name -Value $xmlevent.Event.EventData.Data[8].'#text'
$eventobj | Add-Member Noteproperty -Name $xmlevent.Event.EventData.Data[9].name -Value $xmlevent.Event.EventData.Data[9].'#text'
$eventobj|format-list
icacls.exe
инструмент или Get-ACL
Команда PowerShell для резервного копирования текущих разрешений NTFS каталога.Если вам нужно понять, какой процесс и пользователь изменяет NTFS-разрешения на папку, вы можете использовать команду Монитор процессов утилита. (https://learn.microsoft.com/en-us/sysinternals/downloads/procmon). Позволяет обнаружить источник изменения прав доступа к объектам файловой системы в режиме реального времени.
- Скачайте и запустите файл procmon64.exe;
- Настройте фильтр: Filter-> Filter (
CTRL+S
)Путь -> начинается с ->Specify the folder path
->IncludeOperation -> это ->SetSecurityFile
-> Включить ; - С этого момента, если кто-то изменит NTFS-разрешения на любой объект в этой папке, вы увидите новое событие в окне ProcMon. Здесь отображается процесс (explorer.exe) и имя пользователя, который изменил разрешения.