Как определить, кто изменил права доступа к файлам/папкам NTFS в Windows

В некоторых случаях администратору необходимо выяснить, какой процесс (программа) или пользователь изменил NTFS-разрешения на определенную папку или файл на файловом сервере Windows. В этой статье показано, как отслеживать изменения разрешений NTFS, сделанные для объектов файловой системы, с помощью политики аудита, сценариев PowerShell и инструмента ProcMon.

Вам нужно настроить политику аудита для отслеживания изменений разрешений NTFS на объектах файловой системы Windows.

  1. Откройте редактор групповой политики. Если вы хотите настроить политику аудита файловой системы на конкретном сервере, откройте консоль редактора локальной групповой политики (gpedit.msc). Если вы хотите включить аудит на нескольких устройствах в домене (например, на всех файловых серверах), вам нужно создать отдельный GPO с помощью консоли Group Policy Management (gpmc.msc);
  2. Перейдите по ссылке Конфигурация компьютера -> Политики -> Параметры Windows -> Параметры безопасности -> Расширенная конфигурация политики аудита -> Политики аудита -> Доступ к объектам;
  3. Включите опцию Аудит файловой системы и выберите Успех; Включение политики аудита файловой системы в WindowsВключение политики аудита файловой системы в Windows
  4. Теперь вам нужно включить аудит в свойствах каталога, в котором вы хотите отслеживать изменения прав. Откройте свойства папки -> перейдите в Безопасность вкладка -> Дополнительно -> Аудит вкладка -> Продолжение -> нажмите Добавить и добавьте группу (выберите директора), деятельность которой вы хотите отслеживать. Мы указали Все здесь;
    Ранее мы показывали, как использовать аудит файловой системы для поиска пользователя, удалившего файл или папку на файловом сервере Windows.
  5. Выберите Введите=Успех и включите Изменить разрешения и Возьмите на себя ответственность опции в разделе Дополнительные разрешения: Включить аудит общих папок: изменение разрешенийВключить аудит общих папок: изменение разрешений
  6. Не забудьте обновить параметры групповой политики на хосте: gpupdate /force

Теперь, если кто-то изменил NTFS-разрешения на элементы в указанной папке, произойдет событие с идентификатор события 4670 появится в журнале безопасности.

Откройте консоль Event Viewer (eventvwr.msc) -> Журналы Windows -> Безопасность. Отфильтруйте список событий по идентификатору EventID 4670 (Permissions on an object were changed) и откройте последнее событие.

Вы увидите имя пользователя, который изменил разрешение (Имя учетной записи:) и имя процесса ( C:\Windows\explorer.exe ) в описании события. В нем также содержится информация о предыдущем ACL (Оригинальный дескриптор безопасности) и новый список разрешений (Новый дескриптор безопасности).

EventID 4670 - получение пользователя, изменившего разрешения папки NTFSEventID 4670 - получение пользователя, изменившего разрешения папки NTFS

Если вы хотите сохранить больше событий в журнале безопасности (за более длительный промежуток времени), вам нужно увеличить размер журнала Event Viewer.

Обратите внимание, что разрешения представлены в формате 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 группе.

powershell: сравнение нового и старого ACL, получение различий в разрешенияхpowershell: сравните новый и старый ACL, получите различия в разрешениях

Для поиска в журнале событий 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). Позволяет обнаружить источник изменения прав доступа к объектам файловой системы в режиме реального времени.

  1. Скачайте и запустите файл procmon64.exe;
  2. Настройте фильтр: Filter-> Filter (CTRL+S)Путь -> начинается с -> Specify the folder path ->IncludeOperation -> это -> SetSecurityFile -> Включить ; Отслеживание изменений прав доступа к папкам с помощью proc monitorМониторинг изменений прав доступа к папкам с помощью proc monitor
  3. С этого момента, если кто-то изменит NTFS-разрешения на любой объект в этой папке, вы увидите новое событие в окне ProcMon. Здесь отображается процесс (explorer.exe) и имя пользователя, который изменил разрешения.

Как провести аудит изменений разрешений с помощью Process Monitor?Как провести аудит изменений разрешений с помощью Process Monitor?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *