- Аудит удаления файлов в сетевой папке на Windows Server
- Включаем политику аудита доступа к файлам и папкам в Windows
- Настройка аудита событий удаления файлов из конкретной папки
- Запись событий удаления файлов в SQL базу (MySQL/MSSQL)
- Запись информации о событиях удаления файлов в текстовый файл
- Аудит объектов Active Directory в Windows Server 2003
- Аннотация
- Настройка параметра политики аудита для контроллера домена
- Настройка аудита для определенных объектов Active Directory
- Устранение неполадок
Аудит удаления файлов в сетевой папке на Windows Server
С помощью аудита событий доступа к объектам файловой системы вы можете определить конкретного пользователя, который создал, удалил или изменил определенный файл. В этой статье мы покажем, как настроить аудит событий удаления объектов в общей сетевой папке на Windows Server 2016. После настройки аудита, вы можете с помощью информации в журнале событий найти пользователя, который удалил на файловом сервере.
Включаем политику аудита доступа к файлам и папкам в Windows
По умолчанию в Windows Server не включен аудит событий доступа к объектам на файловой системе. Вы можете включить и настроить аудит событий с помощью групповой политики. Если нужно включить политики аудита на нескольких серверах или компьютера, можно использовать доменные GPO (настраиваются с помощью консоли управления gpmc.msc). Если нужно настроить аудит только на одном сервере, можно воспользоваться локальной групповой политикой.
- Запустите консоль редактора локальной политики – gpedit.msc ;
- Перейдитевраздел GPO срасширенными политиками аудитаWindows Settings -> Security Settings -> Advanced Audit Policy Configuration -> Object Access;
- Откройте политику Audit File System и укажите, что вы хотите сохранять в журнал только успешные события доступа к объектам файловой системы (Configure the following audit events -> Success);
Настройка аудита событий удаления файлов из конкретной папки
Теперь нужно настроить аудит в свойствах общей сетевой папки, доступ к которой вы хотите отслеживать. Запустите проводник и откройте свойства общей папки. Перейдите на вкладку Security. Нажмите кнопку Advanced -> вкладка Auditing.
Если появится сообщение You must be an administrator or have been given the appropriate privileges to view the audit properties of this object, нажмите кнопку Continue.
Затем нажмите кнопку Add чтобы указать пользователя или группу, для которых нужно записывать все события аудита. Если вы хотите отслеживать события для всех пользователей, укажите группу Everyone.
Затем нужно указать использование каких разрешений доступа к объекту нужно записывать в лог. Чтобы сохранять в Event Log только события удаления файлов, нажмите кнопку Show advanced permissions. В списке событий оставьте аудит только для событий удаления папок и файлов — Delete и Delete subfolders and files.
$Path = «D:\Public»
$AuditChangesRules = New-Object System.Security.AccessControl.FileSystemAuditRule(‘Everyone’, ‘Delete,DeleteSubdirectoriesAndFiles’, ‘none’, ‘none’, ‘Success’)
$Acl = Get-Acl -Path $Path
$Acl.AddAuditRule($AuditChangesRules)
Set-Acl -Path $Path -AclObject $Acl
Теперь, если пользователь удалит любой файл или папку в сетевой папке, в журнале безопасности системы появляется событие File System -> Audit Succes c Event ID 4663 от источника Microsoft Windows security auditing.
Откройте mmc консоль Event Viewer ( eventvwr.msc ), разверните секцию Windows Logs -> Security. Включите фильтр событий по EventID 4663.
Откройте любой их оставшихся событий в Event Viewer. Как вы видите, в нем есть информация об имени удаленного файла и учетной записи пользователя, который удалил файл.
После настройки аудита, найдите в журнале Security вы сможете найти с:
- Кто и когда удалил файл в сетевой папке;
- Из какого приложения удален файл;
- На какой момент времени нужно восстанавливать бэкап данного каталога.
Запись событий удаления файлов в SQL базу (MySQL/MSSQL)
Если после включения аудита удаления файлов в сетевой папке, вы видите в журнале много событий, найти что-то в логах бывает проблематично. Во-первых, найти нужную запись среди тысячи событий довольно сложно (в Windows отсутствуют вменяемые средства поиска интересующего события с возможностью гибкой фильтрации), а во-вторых, если файл был удален давно, это событие может просто отсутствовать в журнале, т.к. было перезатерто более новыми.
Вы можете записывать все нужные событий в отдельную SQL базу данных. Для хранения событий можно использовать Microsoft SQL Server, Elasticsearch или MySQL/MariaDB.
В этом примере мы покажем, как записывать события аудита в отдельную таблицу БД на сервере MySQL. Формат таблицы:
- Имя сервера;
- Имя удаленного файла
- Время удаления;
- Имя пользователя, удалившего файл.
MySQL запрос на создание такой таблицы будет выглядеть так:
CREATE TABLE track_del (id INT NOT NULL AUTO_INCREMENT, server VARCHAR(100), file_name VARCHAR(255), dt_time DATETIME, user_name VARCHAR(100), PRIMARY KEY (ID));
Если вы хотите использовать Microsoft SQL, обратите внимание на статью “Как выполнить запрос к MSSQL Server из скрипта PowerShell?”.
Для получения событий с EventID 4663 из журнала Security за текущий день можно использовать такой PowerShell скрипт:
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @
$event = [xml]$_.ToXml()
if($event)
<
$Time = Get-Date $_.TimeCreated -UFormat «%Y-%m-%d %H:%M:%S»
$File = $event.Event.EventData.Data[6].»#text»
$User = $event.Event.EventData.Data[1].»#text»
$Computer = $event.Event.System.computer
>
>
Следующий PowerShell скрипт запишет полученные данные в БД MySQL на удаленном сервере:
Set-ExecutionPolicy RemoteSigned
Add-Type –Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5\MySql.Data.dll’
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @
$event = [xml]$_.ToXml()
if($event)
<
$Time = Get-Date $_.TimeCreated -UFormat «%Y-%m-%d %H:%M:%S»
$File = $event.Event.EventData.Data[6].»#text»
$File = $File.Replace(‘\’,’|’)
$User = $event.Event.EventData.Data[1].»#text»
$Computer = $event.Event.System.computer
$sql.CommandText = «INSERT INTO track_del (server,file_name,dt_time,user_name ) VALUES (‘$Computer’,’$File’,’$Time’,’$User’)»
$sql.ExecuteNonQuery()
>
>
$Reader.Close()
$Connection.Close()
Теперь, чтобы узнать, кто удалил файл «document1 — Copy.DOC». Достаточно в консоли PowerShell выполнить следующий скрипт.
$DeletedFile = «%document1 — Copy.DOC%»
Set-ExecutionPolicy RemoteSigned
Add-Type –Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5\MySql.Data.dll’
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@
$Connection.Open()
$MYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter
$MYSQLDataSet = New-Object System.Data.DataSet
$MYSQLCommand.Connection=$Connection
$MYSQLCommand.CommandText=»SELECT user_name,dt_time from track_del where file_name LIKE ‘$DeletedFile'»
$MYSQLDataAdapter.SelectCommand=$MYSQLCommand
$NumberOfDataSets=$MYSQLDataAdapter.Fill($MYSQLDataSet, «data»)
foreach($DataSet in $MYSQLDataSet.tables[0])
<
write-host «User:» $DataSet.user_name «at:» $DataSet.dt_time
>
$Connection.Close()
В результате в консоли PS появится имя пользователя и время удаления файла.
Скрипт сброса данных из журнала в БД можно выполнять один раз в конце дня по планировщику или повесить триггер на событие удаления (On Event), что более ресурсоемко. Все зависит от требования к системе.
Можно создать реагировать простую веб страницу на php для получения информации о событиях удаления файлов в более удобном виде. Задача решается силами любого php программиста за 1-2 часа.
Запись информации о событиях удаления файлов в текстовый файл
Если вы не хотите вести отдельную БД, можно сохранять события аудита удалений файлов в текстовый лог файл. Воспользуйтесь таким PowerShell скриптом:
$Outfile = «C:\ps\delete-file-log.txt»
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @
$event = [xml]$_.ToXml()
if($event)
<
$Time = Get-Date $_.TimeCreated -UFormat «%Y-%m-%d %H:%M:%S»
$File = $event.Event.EventData.Data[6].»#text»
$User = $event.Event.EventData.Data[1].»#text»
$strLog = $Computer + » » + $File + » » + $Time + » » + $User
$strLog | out-file $Outfile –append
>
>
Итак, мы предложили идею и некий общий каркас системы аудита и хранения информации об удаленных файлах в сетевых шарах, при желании ее с лёгкостью можно будет модифицировать под ваши нужды.
Аудит объектов Active Directory в Windows Server 2003
В этой пошаговой статье описывается использование аудита Windows Server 2003 для отслеживания действий пользователей и системных событий в Active Directory.
Исходная версия продукта: Windows Server 2003
Исходный номер КБ: 814595
Аннотация
При использовании аудита Windows Server 2003 на компьютере можно отслеживать как действия пользователей, так и действия с Windows Server 2003 с именами событий. При использовании аудита можно указать, какие события будут записаны в журнал безопасности. Например, журнал безопасности может вести запись как допустимых, так и недопустимых попыток входа и событий, которые связаны с созданием, открытием или удалением файлов или других объектов. Запись аудита в журнале безопасности содержит следующие сведения:
- Выполнено действие.
- Пользователь, выполвший действие.
- Успех или сбой события и время его проведения.
Параметр политики аудита определяет категории событий, которые Windows Server 2003 регистрет в журнале безопасности на каждом компьютере. Журнал безопасности позволяет отслеживать события, которые вы указали.
При аудите событий Active Directory Windows Server 2003 записывает событие в журнал безопасности контроллера домена. Например, если пользователь попытается войти в домен с помощью учетной записи пользователя домена и попытка входа не будет выполнена, событие будет записано на контроллер домена, а не на компьютер, на котором была предпринята попытка входа. Это происходит из-за того, что контроллер домена попытался проверить подлинность попытки регистрации, но не смог сделать это.
Используйте окно просмотра событий для просмотра событий, которые Windows Server 2003 регистрет в журнале безопасности. Вы также можете архивировать файлы журналов для отслеживания тенденций с течением времени. Например, если вы хотите определить использование принтеров или файлов или проверить использование неавторизованных ресурсов.
Чтобы включить аудит объектов Active Directory:
- Настройка параметра политики аудита для контроллера домена. При настройке параметра политики аудита можно проводить аудит объектов, но нельзя указать объект, который нужно аудитировать.
- Настройка аудита для определенных объектов Active Directory. После указания событий для аудита файлов, папок, принтеров и объектов Active Directory Windows Server 2003 отслеживает и записи этих событий.
Настройка параметра политики аудита для контроллера домена
По умолчанию аудит отключен. Для контроллеров домена параметр политики аудита настраивается для всех контроллеров домена в домене. Для аудита событий, происходящих на контроллерах домена, настройте параметр политики аудита, который применяется ко всем контроллерам домена в не локальном объекте групповой политики (GPO) для домена. Доступ к этому параметру политики можно получить через подразделение «Контроллеры домена». Чтобы проверять доступ пользователей к объектам Active Directory, настройте категорию событий доступа к службе каталогов аудита в параметре политики аудита.
- Необходимо предоставить пользователю журнала аудита и безопасности право на компьютер, на котором необходимо настроить параметр политики аудита или просмотреть журнал аудита. По умолчанию Windows Server 2003 предоставляет эти права группе администраторов.
- Файлы и папки, которые необходимо проверять, должны быть в томах файловой системы Microsoft Windows NT файловой системы (NTFS).
Чтобы настроить параметр политики аудита для контроллера домена:
Нажмите кнопку «Начните», выберите пункт «Программы»,«Администрирование» и «Пользователи и компьютеры Active Directory».
В меню Вид выберите пункт Дополнительные параметры.
Щелкните правой кнопкой мыши контроллеры домена и выберите «Свойства».
Перейдите на вкладку «Групповая политика», выберите политику контроллера домена по умолчанию и нажмите кнопку «Изменить».
Щелкните «Конфигурация компьютера», дважды щелкните «Параметры Windows», дважды щелкните «Параметры безопасности», дважды щелкните «Локальные политики», а затем дважды щелкните «Политика аудита».
В правой области щелкните правой кнопкой мыши доступ к службам каталогов аудита и выберите «Свойства».
Щелкните «Определить эти параметры политики» и выберите один или оба следующих флажка:
- Success: Click to select this check box to audit successful attempts for the event category.
- Failure: Click to select this check box to audit failed attempts for the event category.
Щелкните правой кнопкой мыши любую другую категорию событий, для аудита и выберите «Свойства».
Нажмите кнопку ОК.
Так как изменения, внесенные в параметр политики аудита на компьютере, вступает в силу только при распространении или применении параметра политики на компьютере, выполните одно из следующих действий, чтобы инициировать распространение политики:
- Введите gpupdate /Target:computer в командной области и нажмите ввод.
- Дождись автоматического распространения политики, которое будет происходить через определенные интервалы времени, которые можно настроить. По умолчанию распространение политики происходит каждые пять минут.
Откройте журнал безопасности, чтобы просмотреть зарегистрированные события.
Если вы — администратор домена или предприятия, вы можете включить аудит безопасности рабочих станций, рядовых серверов и контроллеров домена удаленно.
Настройка аудита для определенных объектов Active Directory
После настройки параметра политики аудита можно настроить аудит для определенных объектов, таких как пользователи, компьютеры, подразделения или группы, указав как типы доступа, так и пользователей, доступ к которым нужно проверять. Настройка аудита для определенных объектов Active Directory:
Нажмите кнопку «Начните», выберите пункт «Программы»,«Администрирование» и «Пользователи и компьютеры Active Directory».
Убедитесь, что в меню «Вид» выбраны дополнительные функции, убедившись, что рядом с командой есть контрольный знак.
Щелкните правой кнопкой мыши объект Active Directory, который нужно аудит, и выберите «Свойства».
Щелкните вкладку «Безопасность» и выберите «Дополнительные».
Щелкните вкладку «Аудит» и нажмите кнопку «Добавить».
Выполните одно из следующих ок.
- Введите имя пользователя или группы, доступ к которой нужно отлажать, в поле «Введите имя объекта для выбора» и нажмите кнопку «ОК».
- В списке имен дважды щелкните пользователя или группу, доступ к которой нужно проверять.
Щелкните, чтобы выбрать для действий аудита либо успешное, либо «Сбой», а затем нажмите кнопку «ОК».
Щелкните ОК, а затем щелкните ОК.
Устранение неполадок
Размер журнала безопасности ограничен. В связи с этим корпорация Майкрософт рекомендует тщательно выбирать файлы и папки, которые нужно проверять. Также учитывайте объем дискового пространства, который необходимо выделить в журнале безопасности. Максимальный размер определяется в представлении событий.