Журнал аудита windows server 2012

Аудит удаления файлов в сетевой папке на Windows Server

С помощью аудита событий доступа к объектам файловой системы вы можете определить конкретного пользователя, который создал, удалил или изменил определенный файл. В этой статье мы покажем, как настроить аудит событий удаления объектов в общей сетевой папке на Windows Server 2016. После настройки аудита, вы можете с помощью информации в журнале событий найти пользователя, который удалил на файловом сервере.

Включаем политику аудита доступа к файлам и папкам в Windows

По умолчанию в Windows Server не включен аудит событий доступа к объектам на файловой системе. Вы можете включить и настроить аудит событий с помощью групповой политики. Если нужно включить политики аудита на нескольких серверах или компьютера, можно использовать доменные GPO (настраиваются с помощью консоли управления gpmc.msc). Если нужно настроить аудит только на одном сервере, можно воспользоваться локальной групповой политикой.

  1. Запустите консоль редактора локальной политики – gpedit.msc ;
  2. Перейдитевраздел GPO срасширенными политиками аудитаWindows Settings -> Security Settings -> Advanced Audit Policy Configuration -> Object Access;
  3. Откройте политику 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 @ | Foreach <
$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 @ | Foreach <
$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 @ | Foreach <
$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
>
>

Итак, мы предложили идею и некий общий каркас системы аудита и хранения информации об удаленных файлах в сетевых шарах, при желании ее с лёгкостью можно будет модифицировать под ваши нужды.

Аудит в Windows Server 2008/2012

В Windows Server 2008 система аудита была существенно переработана, увеличено на 53 количество параметров. Стали отслеживаться все попытки создания, изменения, перемещения и восстановление объектов. В журнал записывается предыдущее и текущее значения измененного атрибута и учетная запись пользователя выполнившего операцию. Правда если при создании объектов для атрибутов использовались параметры по умолчанию, их значения в журнал не заносятся. Аудит внедряется при помощи: глобальной политики аудита (Global Audit Policy, GAP), списка управления доступом (SACL, System access control list) и схемы. Управлять аудитом стало возможным на уровне категорий. Например, политики аудита Active Directory разделены на 4 категории в каждой из которых настраиваются специфические параметры:

  • Directory Service Access — доступ к службе каталогов;
  • Directory Service Changes — изменения службы каталогов;
  • Directory Service Replication — репликация службы каталогов;
  • Detailed Directory Service Replication — подробная репликация службы каталогов.

Для просмотра записей в журнале безопасности предложена консоль Просмотр событий (Event Viewer) в Windows Server 2008 умеющая фильтровать события по дате при помощи настраиваемого представления: по уровню (критическое, предупреждение, ошибка и т.д.), источнику, коду, пользователю или компьютеру и ключевым словам. Один раз настроив и сохранив такой фильтр можно затем быстро получить нужные данные одним щелчком. Большим минусом системы аудита Windows Server 2008 было то, что админ по сути ни как не предупреждался и просматривал события только по необходимости (например по жалобе пользователя). В Windows Server 2008 R2 появились возможность связать настраиваемые представления с задачей и в случае срабатывания правил запустить программу, отправить сообщение по email или вывести сообщение на рабочий стол. Забегая чуть вперед, скажу, что из этих трех в Win2012 рекомендуемым является только первый.

Еще одним инструментом автоматизирующим процесс анализа информации является набор командлетов для работы с журналами локального или удаленных систем *-Eventlog и *-WinEvent. Просмотреть полный список с указанием их назначения можно командой:

PS> Get-Help *-Eventlog

Например, просмотрим события с ID 4720 (создание учетной записи):

PS> Get-EventLog security | ?

При знании PowerShell можно отбирать действительно важные события.
В Windows Server возможности аудита были расширены. Появление динамического контроля доступа (Dynamic Access Control) дал возможность задавать expression-based политики аудита на основе выражений и свойств объекта, позволяя получить более точную информацию обо всех попытках доступа к важным документам. Например, можно настроить политику аудита всех пользователей, не имеющих необходимый доступ, но пытавшихся прочитать документ. Активируется такая политика непосредственно в свойствах файла или папки или при помощи аудита доступа к глобальным объектам (Global Object Access Auditing). Настроенные политики генерируют события при каждом обращении пользователя к файлам (с номерами 4656, 4663) содержащие атрибуты файлов, которые можно отбирать при помощи фильтров.
Но, наверное одним из самых важных нововведений появилась возможность отслеживать попытки обращения к съемным устройствам. Система генерирует события с двумя ID: успешное (4663) и неудачные попытки (4656).


По умолчанию для клиентских систем аудит отключен, для серверных активна только подкатегория Доступ к службе каталогов Active Directory. Для политиками используется Редактор управления групповыми политиками перейти в ветку Политики/Параметры безопасности/Локальные политики/Политика аудита. Здесь 9 категорий: аудит входа и событий входа в систему, доступа к объектам, изменения политики, использование привилегий, отслеживание процессов, системных событий, управление учетными записями. Просто переходим сюда и указываем контролируемые события (успех, отказ). Более тонко политики устанавливаются в Политики/Параметры безопасности/Конфигурация расширенной политики аудита(Advanced Audit Policy Configuration)/Политики аудита.
И хотя в Win2012 ссылку на консоль cmd.exe найти не возможно, она никуда не делась, поэтому для настроек можно использовать утилиту командной строки auditpol, получить полный список GAP с установленными параметрами при помощи auditpol достаточно ввести команду:

> auditpol /list /subcategory:*

Активируем аудит съемных носителей:

> auditpol /set /subcategory:»Съемные носители» /success:enable /failure:enable


Вот собственно и все возможности. Система аудита Windows позволяет собрать достаточно много информации, ее главный недостаток состоит в том, что нужно знать что искать. События с одним номером могут означать изменения самых разных объектов, одно действие пользователя может генерировать десяток событий и пропустить что-то действительно важное очень легко. Все это требует знаний и исследований.
Информация собранная системой аудита, используется при расследованиях, а поэтому многие стандарты безопасности (HIPAA, SOX, PCI и другие) требуют чтобы журналы сохранялись длительное время (до 7 лет). Размеры журналов Windows по умолчанию ограничены 128 Мб и при большом количестве событий он будет быстро перезаписан. Избежать этого можно установив в свойствах журнала в Event Viewer больший размер и активацией параметра “Архивировать журнал при заполнении. Не перезаписывать события”. Но об архивации и поиске информации в этом массиве (если такая необходимость возникнет) администратору придется позаботится самому. Встроенный аудит доступа к файлам создает большую дополнительную нагрузку на сервер. То есть аудит в Win есть, но он неудобен.
Эти и многие другие проблемы решают при помощи сторонних приложений, обеспечивающих консолидацию логов с разных источников, лучший аудит изменений, меньший объем данных.

Читайте также:  Maximum segment size windows
Оцените статью