С помощью аудита событий доступа к объектам файловой системы вы можете определить конкретного пользователя, который создал, удалил или изменил определенный файл. В этой статье мы покажем, как настроить аудит событий удаления объектов в общей сетевой папке на Windows Server 2016. После настройки аудита, вы можете с помощью информации в журнале событий найти пользователя, который удалил на файловом сервере.
При удалении файла из сетевой папки, он удаляется сразу, а не отправляется в корзину пользователя. Список открытых по сети файлов в сетевой папке можно получить так.
Содержание:
- Включаем политику аудита доступа к файлам и папкам в Windows
- Настройка аудита событий удаления файлов из конкретной папки
- Запись событий удаления файлов в SQL базу (MySQL/MSSQL)
- Запись информации о событиях удаления файлов в текстовый файл
Включаем политику аудита доступа к файлам и папкам в 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);
Также можно включить аудит доступа к локальным объектам с помощью политики Audit Object Access в разделе Windows Settings -> Security Settings -> Local Policy -> Audit Policy. Однако использование политики Audit File System предпочтительнее, поскольку она отслеживает только события NTFS.
- Сохраните изменения и обновите настройки локальной групповой политики с помощью команды
gpupdate /force
.
Настройка аудита событий удаления файлов из конкретной папки
Теперь нужно настроить аудит в свойствах общей сетевой папки, доступ к которой вы хотите отслеживать. Запустите проводник и откройте свойства общей папки. Перейдите на вкладку 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.
Совет. Включение аудита доступа к объектам Windows накладывает дополнительные расходы на ресурсы системы. Всегда старайтесь минимизировать количество объектов и событий аудита, которые нужно отслеживать.
Совет. Вы можете настроить аудит удаления файлов в папке с помощью через PowerShell:
$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. Как вы видите, в нем есть информация об имени удаленного файла и учетной записи пользователя, который удалил файл.
An attempt was made to access an object. Subject: Security ID: CORPaaivanov Account Name: aaivanov Account Domain: CORP Logon ID: 0x61B71716 Object: Object Server: Security Object Type: File Object Name: E:DistrBackup.rar Handle ID: 0x7bc4 Resource Attributes: S:AI Process Information: Process ID: 0x4 Process Name: Access Request Information: Accesses: DELETE Access Mask: 0x10000
После настройки аудита, найдите в журнале 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));
Для получения событий с EventID 4663 из журнала Security за текущий день можно использовать такой PowerShell скрипт:
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | 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)MySQLMySQL Connector Net 6.9.8Assembliesv4.5MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.7.7.13;uid=posh;[email protected];database=aduser'}
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | 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)MySQLMySQL Connector Net 6.9.8Assembliesv4.5MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.7.7.13;uid=posh;[email protected];database=aduser'}
$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 появится имя пользователя и время удаления файла.
Примечание. Была обнаружена проблема — символ «» не записывается в БД, поэтому мы заменили его на «|». Соответственно если нужно вывести полный путь к файлу, при выборке из базы можно выполнить обратную замену:
$DataSet.file_name.Replace(‘|’,’’)
. Спасибо Alex Kornev за замечание!
Скрипт сброса данных из журнала в БД можно выполнять один раз в конце дня по планировщику или повесить триггер на событие удаления (On Event), что более ресурсоемко. Все зависит от требования к системе.
Совет. Нужно убедиться, что вы указали достаточно большой максимальный размер для журнала безопасности, чтобы в него помещались все события за день. Иначе придется запускать задания сброса данных из журнала в базу чаще, чем 1 раз в день, или вообще по триггеру. Для рабочих станция Maximum Log Size как правило стоит задать не менее 64 Мб, на северах – 262 Мб. Опцию перезаписи старых событий нужно оставить включенной (Overwrite events as needed).
Можно создать реагировать простую веб страницу на php для получения информации о событиях удаления файлов в более удобном виде. Задача решается силами любого php программиста за 1-2 часа.
Важный совет. При наличии в журнале информации об удалении файла пользователем не спешите однозначно интерпретировать его как преднамеренное или даже злонамеренное. Многие программы (особенно этим грешат программы пакета MS Office), при сохранении изменений, сначала создается временный файл, данные записываются в него, а старая версия файла удаляется. В этом случае имеет смысл дополнительной записи в БД имени процесса, которым было выполнено удаление файла (поле ProcessName события), и вести анализ событий удаления файлов с учетом этого факта. Либо можно фильтровать события от некоторых процессов, например, winword.exe, excel.exe и пр.
Запись информации о событиях удаления файлов в текстовый файл
Если вы не хотите вести отдельную БД, можно сохранять события аудита удалений файлов в текстовый лог файл. Воспользуйтесь таким PowerShell скриптом:
$Outfile = "C:psdelete-file-log.txt"
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | 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
}
}
[/alert]
Итак, мы предложили идею и некий общий каркас системы аудита и хранения информации об удаленных файлах в сетевых шарах, при желании ее с лёгкостью можно будет модифицировать под ваши нужды.
Любой администратор Windows сталкивался с ситуацией, когда разъяренные пользователи хотят узнать, кто именно удалил мега важный файл с годовым отчетом в общей папке на файловом сервере. Эту информацию можно получить только при условии ведения аудита удаления файлов и папок на файловом сервере, иначе останется только восстановить удаленный файл из резервной копии (а вы их уже делаете?) и развести руками.
Но, даже при включенном аудите удаления файлов, найти что-то в логах бывает проблематично. Во-первых, найти нужную запись среди тысячи событий довольно сложно (в Windows отсутствуют вменяемые средства поиска интересующего события с возможностью гибкой фильтрации), а во-вторых, если файл был удален давно, это событие может просто отсутствовать в журнале, т.к. было перезатерто более новыми.
В этой статье мы покажем пример организации на встроенных средствах Windows системы аудита удаления файлов и папок в общем сетевом каталоге (файловом сервере) с записью событий в отдельную базу данных на MySQL.
Благодаря наличию БД с информацией обо всех удаленных файлах администратор сможет дать ответы на вопросы:
- Кто и когда удалил файл
- Из какого приложения удален файл
- На какой момент времени нужно восстанавливать бэкап
В первую очередь на файловом сервере Windows нужно включить аудит событий, обеспечивающий запись информации об удалении файлов в журнал системы. Эту процедуру мы уже рассматривали в статье Аудит доступа к файлам и папкам в Windows.
Аудит может быть включен через общую политику Audit Object Access в разделе политик Security Settings -> Local Policy -> Audit Policy
Или (предпочтительнее) через расширенные политики аудита в GPO: Security Settings -> Advanced Audit Policy Configuration -> Object Access -> Audit File System.
Совет. Ведения аудита накладывает дополнительные расходы на ресурсы системы. Нужно с осторожностью применять его, особенно для высоконагруженных файловых серверов.
В свойствах общей сетевой папки (Security -> Advanced -> Auditing), удаление файлов в котором мы хотим отслеживать, для группы Everyone включим аудит событий удаления папок и файлов (Delete subfoldersand files).
Совет. Аудит удаления файлов в конкретной папке можно включить и через PowerShell:
$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
При успешном удалении файла в журнале безопасности системы появляется событие Event ID 4663 от источника Microsoft Windows security auditing. В описании события есть информация об имени удаленного файла, учетной записи из-под которой было выполнено удаление и имени процесса.
Итак, интересующие нас события пишутся в журнал, настала пора создать на сервере 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));
Скрипт сбора информации из журнала событий. Мы фильтруем журнал по событию с ID 4663 за текущий день
$today = get-date -DisplayHint date -UFormat %Y-%m-%d Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | 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 } }
Следующий скрипт запишет полученные данные в БД MySQL на удаленном сервере:
Set-ExecutionPolicy RemoteSigned Add-Type –Path ‘C:Program Files (x86)MySQLMySQL Connector Net 6.9.8Assembliesv4.5MySql.Data.dll' $Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.7.7.13;uid=posh;[email protected];database=aduser'} $Connection.Open() $sql = New-Object MySql.Data.MySqlClient.MySqlCommand $sql.Connection = $Connection $today = get-date -DisplayHint date -UFormat %Y-%m-%d Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | 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)MySQLMySQL Connector Net 6.9.8Assembliesv4.5MySql.Data.dll' $Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.7.7.13;uid=posh;[email protected];database=aduser'} $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()
В консоли получаем имя пользователя и время удаления файла.
Примечание. Т.к. была обнаружена проблема, чир символ «» не записывается в БД, мы заменили его на «|». Соответственно если нужно указать вывести полный путь к файлу , при выборке из базы можно выполнить обратную замену $DataSet.file_name.Replace(‘|’,’’). Спасибо Alex Kornev за замечание!
Скрипт сброса данных из журнала в БД можно выполнять один раз в конце дня по планировщику или повесить на событие удаления (On Event), что более ресурсоемко. Все зависит от требования к системе.
Совет. Нужно убедиться, что журнал безопасности имеет достаточный размер, чтобы в него помещались все события за день. Иначе придется запускать задания сброса данных из журнала в базу чаще, чем 1 раз в день, или вообще по триггеру. Для рабочих станция Maximum Log Size как правило стоит задать не менее 64 Мб, на северах – 262 Мб. Опцию перезаписи оставляем включенной (Overwrite events as needed).
При желании по аналогии можно реагировать простую веб страницу на php для получения информации о виновниках удаления файлов в более удобном виде. Задача решается силами любого php программиста за 1-2 часа.
Важный совет! При наличии в журнале информации об удалении файла пользователем не спешите однозначно интерпретировать его как преднамеренное или даже злонамеренное. Многие программы (особенно этим грешат программы пакета MS Office), при сохранении данных сначала создают временный файл, сохраняют документ в него, а старую версию файла удаляют. В этом случае имеет смысл дополнительной записи в БД имени процесса, которым было выполнено удаление файла (поле ProcessName события), и вести анализ удаления файлов с учетом этого факта. Либо совсем радикально отсеивать события от таких мусорных процессов, например, winword.exe, excel.exe и пр.
Итак, мы предложили идею и некий общий каркас системы аудита и хранения информации об удаленных файлах в сетевых шарах, при желании ее с лёгкостью можно будет модифицировать под ваши нужды.
Спасибо WinItPro
Join @AdmNtsRu on Telegram
Смотрите также:
Как посмотреть кто удалил файл из общей папки
Просмотр полной версии : Кто удаляет файлы?
Вирусов точно нет, т.к. стоит NOD32.
гы.
как самонадеяно.
Подробнее можно, какие файлы, как, когда удаляет. Пока версий много: начиная от мастера очиски рабочего стола (он, сцука, ярлыки трет :gigi: ), заканчивая NOD32.
Вам смешно. А меня пытаются подставить. Конечно есть свидетели, что я здесь ничего не удалял, да и вообще за компы не садился.
Подробнее можно, какие файлы, как, когда удаляет.
Всякие *.doc, exel`евские, картинки, файлы баз данных и т.п.
Помогите поймать вредителя.
1. Заходим в LSP: Start -> Settings -> Control Panel -> Administrative tols -> local security policy
2. Включаем аудит доступа к файлам: Local policy -> Audit Policy. Выставляем Object Access в Success, Failure.
3. Выделяем папку, откуда исчезают файлы. Смотрим её свойства -> Security
4. На закладке Security выбираем Advanced, далее — Auditing. Жмём Add.
5. Выбираем группу Everyone, жмём на Check names (название должно подчеркнуться). Жмём ОК
6. Выбираем Delete, всё закрываем.
Потом смотрим в Event Viewer -> Security, ищем нужные файлы
Локальная политика безопасности -> Локальные политики -> Политика аудита.
Аудит доступа к объектам выставляю Отказ.
Выделяю папку -> Свойства -> Безопасность -> Дополнительно -> Аудит -> Добавить
Выбрал группу «Все», нажал «Проверить имена». Жму Ок.
Далее, выбрать Удаление и поставить галочки. А где именно в столбцах: Успех и Отказ, или только отказ?
ruslansstu1146494329
В общем я поставил в политике аудита -> Аудит доступа к объектам: Успех и Отказ.
ruslansstu1146494940
Решил все это дело проверить.
Создал папку, скопировал туда несколько файлов и с другой машины по сети решил удалить. Во что я получил:
Тип события: Аудит успехов
Источник события: Security
Категория события: Доступ к объектам
Код события: 560
Дата: 01.05.2006
Время: 18:41:56
Пользователь: NATASHAАдминистратор
Компьютер: NATASHA
Описание:
Открытие объекта:
Сервер объекта: Security
Тип объекта: File
Имя объекта: D:РусланКопия WineLinux College.files
Код дескриптора: 2276
Код операции:
Код процесса: 4
Имя файла рисунка:
Основной пользователь: NATASHA$
Домен: COMPAUD
Код входа: (0x0,0x3E7)
Пользователь-клиент: Администратор
Домен клиента: NATASHA
Код входа клиента: (0x0,0xA7881)
Доступ DELETE
Привилегии —
Счетчик ограниченного SID: 0
Жаль, что не пишет с какой машины произведено удаление.
Жаль, что не пишет с какой машины произведено удаление.
Всё прекрасно пишет. Комп «NATASHA».
NaimaD1146518236
Компьютер: NATASHA
Жаль, что не пишет с какой машины произведено удаление.
Всё прекрасно пишет. Комп «NATASHA».
Компьютер: NATASHA
э-э-э. дело в том, что комп НАТАША — это тачка, на которой был запущен Эвент Вьюер, то бишь комп, на котором удаляли файлы, а не с которого удаляли файлы; думается, в одноранговой сетке узнать (только средствами оси) кто удалял — не карма
Пользователь: NATASHAАдминистратор
хмм. и одноранговая сеть
Это говорит о том, что удаляют локально. из под учетки локального администратора.
Т.е. это может быть radmin или аналог, telnet (или опять-же аналог) или вредный сервис — прога.
или удалают по сети подключаясь к этому компу под логин-паролем админа — сменить — проверить.
В пакет friendly pinger http://www.kilievich.com/fpinger/ входит логгер сетевых подключений. (по IP)
Сожно попробовать.
Или чтоб наверняка, filemon от sysinternals. Так определишь приложение, которое удаляет. но придется ловить момент.
Аудит удаления и доступа к файлам и запись событий в лог-файл средствами Powershell
Я думаю, многие сталкивались с задачей, когда к Вам приходят и спрашивают: «У нас тут файл пропал на общем ресурсе, был и не стало, похоже кто-то удалил, Вы можете проверить кто это сделал?» В лучшем случае вы говорите, что у вас нет времени, в худшем пытаетесь найти в логах упоминание данного файла. А уж когда включен файловый аудит на файловом сервере, логи там, мягко говоря «ну очень большие», и найти что-то там — нереально.
Вот и я, после очередного такого вопроса (ладно бекапы делаются несколько раз в день) и моего ответа, что: «Я не знаю кто это сделал, но файл я Вам восстановлю», решил, что меня это в корне не устраивает…
Начнем.
Для начала включим к групповых политиках возможность аудита доступа к файлам и папкам.
Локальные политики безопасности->Конфигурация расширенной политики безопасности->Доступ к объектам
Включим «Аудит файловой системы» на успех и отказ.
После этого на необходимые нам папки необходимо настроить аудит.
Проходим в свойства папки общего доступа на файловом сервере, переходим в закладку «Безопасность», жмем «Дополнительно», переходим в закладку «Аудит», жмем «Изменить» и «Добавить». Выбираем пользователей для которых вести аудит. Рекомендую выбрать «Все», иначе бессмысленно. Уровень применения «Для этой папки и ее подпапок и файлов».
Выбираем действия над которыми мы хотим вести аудит. Я выбрал «Создание файлов/дозапись данных» Успех/Отказ, «Создание папок/дозапись данных» Успех/отказ, Удаление подпапок и файлов и просто удаление, так же на Успех/Отказ.
Жмем ОК. Ждем применения политик аудита на все файлы. После этого в журнале событий безопасности, будет появляться очень много событий доступа к файлам и папкам. Количество событий прямопропорционально зависит от количества работающих пользователей с общим ресурсом, и, конечно же, от активности использования.
Итак, данные мы уже имеем в логах, остается только их оттуда вытащить, и только те, которые нас интересуют, без лишней «воды». После этого акурратно построчно занесем наши данные в текстовый файл разделяя данные симовлами табуляции, чтобы в дальнейшем, к примеру, открыть их табличным редактором.
А теперь очень интересный скрипт.
Скрипт пишет лог об удаленных файлах.
Как оказалось при удалении файлов и удалении дескрипторов создается одно и тоже событие в логе, под При этом в теле сообщения могут быть разные значения «Операции доступа»: Запись данных (или добавление файла), DELETE и т.д.
Конечно же нас интересует операция DELETE. Но и это еще не все. Самое интересное, то что, при обычном переименовании файла создается 2 события с ID 4663, первое с Операцией доступа: DELETE, а второе с операцией: Запись данных (или добавление файла). Значит если просто отбирать 4663 то мы будем иметь очень много недостоверной информации: куда попадут файлы и удаленные и просто переименованные.
Однако мной было замечено, что при явном удалении файла создается еще одно событие с ID 4660, в котором, если внимательно изучить тело сообщения, содержится имя пользователя и еще много всякой служебной информации, но нет имени файла. Зато есть код дескриптора.
Однако предшествующим данному событию было событие с ID 4663. Где как раз таки и указывается и имя файла, и имя пользователя и время, и операция как не странно там DELETE. И самое главное там имеется номер дескриптора, который соответствует номеру дескриптора из события выше (4660, помните? которое создается при явном удалении файла). Значит теперь, чтобы точно знать какие файлы удалены, необходимо просто найти все события с ID 4660, а так же предшествующие каждому этому событию, событие с кодом 4663, в котором будет содержаться номер нужного дескриптора.
Эти 2 события генерируются одновременно при удалении файла, но записываются последовательно, сначала 4663, потом 4660. При этом их порядковые номера различаются на один. У 4660 порядковый номер на единицу больше чем у 4663.
Именно по этому свойству и ищется нужное событие.
Т.е. берутся все события с ID 4660. У них берется 2 свойства, время создания и порядковый номер.
Далее в цикле по одному берется каждое событие 4660. Выбирается его свойства, время и порядковый номер.
Далее в переменную $PrevEvent заносится номер нужного нам события, где содержится нужная информация об удаленном файле. А так же определяются временные рамки в которых необходимо искать данное событие с определенным порядковым номером (с тем самым который мы занесли в $PrevEvent). Т.к. событие генерируется практически одновременно, то поиск сократим до 2х секунд: + — 1 секунда.
(Да, именно +1 сек и -1 сек, почему именно так, не могу сказать, было выявлено экспериментально, если не прибавлять секунду, то некоторые может не найти, возможно связано с тем, что возможно два эти события могут создаваться один раньше другой позже и наоборот).
Сразу оговорюсь, что искать только по порядковому номеру по всем событиям в течении часа — очень долго, т.к. порядковый номер находиться в теле события, и чтобы его определить, нужно пропарсить каждое событие — это очень долго. Именно поэтому необходим такой маленький период в 2 секунда (+-1сек от события 4660, помните?).
Именно в этом временном промежутке ищется событие с необходимым порядковым номером.
После того как оно найдено, работают фильтры:
Т.е. не записываем информацию об удаленных временных файлах (.*tmp), файлах блокировок документов MS Office (.*lock), и временных файлах MS Office (.*
$*)
Таким же образом берем необходимые поля из этого события, и пишем их в переменную $BodyL.
После нахождения всех событий, пишем $BodyL в текстовый файл лога.
Для лога удаленных файлов я использую схему: один файл на один месяц с именем содержащим номер месяца и год). Т.к. удаленных файлов в разы меньше чем файлов к которым был доступ.
В итоге вместо бесконечного «рытья» логов в поисках правды, можно открыть лог-файл любым табличным редактором и просмотреть нужные нам данные по пользователю или файлу.
Рекомендации
Вам придется самим определить время в течении которого вы будете искать нужные события. Чем больше период, тем дольше ищет. Все зависит от производительности сервера. Если слабенький — то начните с 10 минут. Посмотрите, как быстро отработает. Если дольше 10 минут, то либо увеличьте еще, вдруг поможет, либо наоборот уменьшите период до 5 минут.
После того как определите период времени. Поместите данный скрипт в планировщик задач и укажите, что выполнять данный скрипт необходимо каждые 5,10,60 минут (в зависимости какой период вы указали в скрипте). У меня указано каждый 60 минут. $time = (get-date) — (new-timespan -min 60).
Простая система аудита удаления файлов и папок для Windows Server
Любой администратор Windows сталкивался с ситуацией, когда разъяренные пользователи хотят узнать, кто именно удалил мега важный файл с годовым отчетом в общей папке на файловом сервере. Эту информацию можно получить только при условии ведения аудита удаления файлов и папок на файловом сервере, иначе останется только восстановить удаленный файл из резервной копии (а вы их уже делаете?) и развести руками.
Но, даже при включенном аудите удаления файлов, найти что-то в логах бывает проблематично. Во-первых, найти нужную запись среди тысячи событий довольно сложно (в Windows отсутствуют вменяемые средства поиска интересующего события с возможностью гибкой фильтрации), а во-вторых, если файл был удален давно, это событие может просто отсутствовать в журнале, т.к. было перезатерто более новыми.
В этой статье мы покажем пример организации на встроенных средствах Windows системы аудита удаления файлов и папок в общем сетевом каталоге (файловом сервере) с записью событий в отдельную базу данных на MySQL.
Благодаря наличию БД с информацией обо всех удаленных файлах администратор сможет дать ответы на вопросы:
- Кто и когда удалил файл
- Из какого приложения удален файл
- На какой момент времени нужно восстанавливать бэкап
В первую очередь на файловом сервере Windows нужно включить аудит событий, обеспечивающий запись информации об удалении файлов в журнал системы. Эту процедуру мы уже рассматривали в статье Аудит доступа к файлам и папкам в Windows.
Аудит может быть включен через общую политику Audit Object Access в разделе политик Security Settings -> Local Policy -> Audit Policy
Или (предпочтительнее) через расширенные политики аудита в GPO: Security Settings -> Advanced Audit Policy Configuration -> Object Access -> Audit File System.
В свойствах общей сетевой папки (Security -> Advanced -> Auditing), удаление файлов в котором мы хотим отслеживать, для группы Everyone включим аудит событий удаления папок и файлов (Delete subfoldersand files).
Совет. Аудит удаления файлов в конкретной папке можно включить и через PowerShell:
$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
При успешном удалении файла в журнале безопасности системы появляется событие Event ID 4663 от источника Microsoft Windows security auditing. В описании события есть информация об имени удаленного файла, учетной записи из-под которой было выполнено удаление и имени процесса.
Итак, интересующие нас события пишутся в журнал, настала пора создать на сервере 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));
Скрипт сбора информации из журнала событий. Мы фильтруем журнал по событию с ID 4663 за текущий день
Следующий скрипт запишет полученные данные в БД MySQL на удаленном сервере:
Теперь, чтобы узнать, кто удалил файл «document1 — Copy.DOC», достаточно в консоли PowerShell выполнить следующий скрипт.
В консоли получаем имя пользователя и время удаления файла.
Скрипт сброса данных из журнала в БД можно выполнять один раз в конце дня по планировщику или повесить на событие удаления (On Event), что более ресурсоемко. Все зависит от требования к системе.
При желании по аналогии можно реагировать простую веб страницу на php для получения информации о виновниках удаления файлов в более удобном виде. Задача решается силами любого php программиста за 1-2 часа.
Итак, мы предложили идею и некий общий каркас системы аудита и хранения информации об удаленных файлах в сетевых шарах, при желании ее с лёгкостью можно будет модифицировать под ваши нужды.
Здравствуйте, у нас стоят 2 сервера с Windows 2019, и на них установлен DFS с авторепликацией на оба сервера.
В результате у нас нет нормального аудита: в списках по событию 4663 (мы используем дополнительно фильтр по маске 0х10000, что предположительно соответствует операции DELETE) есть файлы с названиями типа
D:System Volume InformationDFSRPrivate{ABC…}-{DEF…}InstallingTeil-of-name-{123..}-v123456.doc
(это после удаления всех файлов типа .log, .tmp и ~$ ). Причём в качестве пользователя стоит имя сервера.
Ещё есть удаления целых каталогов (?!), тоже с именем сервера. В поле ProzessName стоит C:WindowsSystem32dfsrs.exe
Есть и удаления от конкретных пользователей, но от них идут несколько удалений одних и тех же файлов — это вероятно результаты неоднократных редактирований того же файла… При этом поле ProzessName вообще пустое!
Вопрос: каким образом можно обнаружить удаления при использовании DFS ?
P.S. На клиентах, соединённых по сети, под именем Диск:доменное имяdfs-sharedимя папки , удаление файла почти всегда не регистрируется.:( Иногда регистрируется нечто похожее на первое сообщение DFSRPrivate{…}Installing…, иногда регистрируется D:имя папкиконкретное имя.doc — но при этом нет последующего сообщения 4660!
P.P.S. Интересно, что при создании и удалении файла (D:…Test.txt) в папке на самом сервере с помощью IE, регистрируются аж 3 события:
4663 (Test.txt), 4660 (без имени), и снова 4663 — с тем же именем Test.txt… почему — тоже неясно.
Содержание
- Аудит удаления и доступа к файлам и запись событий в лог-файл средствами Powershell
- Начнем.
- А теперь очень интересный скрипт.
- Рекомендации
- Настройка аудита файловых серверов: подробная инструкция и шпаргалка (.pdf)
- Простая система аудита удаления файлов и папок для Windows Server
- План аудита доступа к файлам
- Аудит удаления файлов в сетевой папке на windows server
Аудит удаления и доступа к файлам и запись событий в лог-файл средствами Powershell
Начнем.
Для начала включим к групповых политиках возможность аудита доступа к файлам и папкам.
Локальные политики безопасности->Конфигурация расширенной политики безопасности->Доступ к объектам
Включим «Аудит файловой системы» на успех и отказ.
После этого на необходимые нам папки необходимо настроить аудит.
Проходим в свойства папки общего доступа на файловом сервере, переходим в закладку «Безопасность», жмем «Дополнительно», переходим в закладку «Аудит», жмем «Изменить» и «Добавить». Выбираем пользователей для которых вести аудит. Рекомендую выбрать «Все», иначе бессмысленно. Уровень применения «Для этой папки и ее подпапок и файлов».
Выбираем действия над которыми мы хотим вести аудит. Я выбрал «Создание файлов/дозапись данных» Успех/Отказ, «Создание папок/дозапись данных» Успех/отказ, Удаление подпапок и файлов и просто удаление, так же на Успех/Отказ.
Жмем ОК. Ждем применения политик аудита на все файлы. После этого в журнале событий безопасности, будет появляться очень много событий доступа к файлам и папкам. Количество событий прямопропорционально зависит от количества работающих пользователей с общим ресурсом, и, конечно же, от активности использования.
Итак, данные мы уже имеем в логах, остается только их оттуда вытащить, и только те, которые нас интересуют, без лишней «воды». После этого акурратно построчно занесем наши данные в текстовый файл разделяя данные симовлами табуляции, чтобы в дальнейшем, к примеру, открыть их табличным редактором.
А теперь очень интересный скрипт.
Скрипт пишет лог об удаленных файлах.
Как оказалось при удалении файлов и удалении дескрипторов создается одно и тоже событие в логе, под При этом в теле сообщения могут быть разные значения «Операции доступа»: Запись данных (или добавление файла), DELETE и т.д.
Конечно же нас интересует операция DELETE. Но и это еще не все. Самое интересное, то что, при обычном переименовании файла создается 2 события с ID 4663, первое с Операцией доступа: DELETE, а второе с операцией: Запись данных (или добавление файла). Значит если просто отбирать 4663 то мы будем иметь очень много недостоверной информации: куда попадут файлы и удаленные и просто переименованные.
Однако мной было замечено, что при явном удалении файла создается еще одно событие с ID 4660, в котором, если внимательно изучить тело сообщения, содержится имя пользователя и еще много всякой служебной информации, но нет имени файла. Зато есть код дескриптора.
Однако предшествующим данному событию было событие с ID 4663. Где как раз таки и указывается и имя файла, и имя пользователя и время, и операция как не странно там DELETE. И самое главное там имеется номер дескриптора, который соответствует номеру дескриптора из события выше (4660, помните? которое создается при явном удалении файла). Значит теперь, чтобы точно знать какие файлы удалены, необходимо просто найти все события с ID 4660, а так же предшествующие каждому этому событию, событие с кодом 4663, в котором будет содержаться номер нужного дескриптора.
Эти 2 события генерируются одновременно при удалении файла, но записываются последовательно, сначала 4663, потом 4660. При этом их порядковые номера различаются на один. У 4660 порядковый номер на единицу больше чем у 4663.
Именно по этому свойству и ищется нужное событие.
Т.е. не записываем информацию об удаленных временных файлах (.*tmp), файлах блокировок документов MS Office (.*lock), и временных файлах MS Office (.*
Для лога удаленных файлов я использую схему: один файл на один месяц с именем содержащим номер месяца и год). Т.к. удаленных файлов в разы меньше чем файлов к которым был доступ.
В итоге вместо бесконечного «рытья» логов в поисках правды, можно открыть лог-файл любым табличным редактором и просмотреть нужные нам данные по пользователю или файлу.
Рекомендации
Вам придется самим определить время в течении которого вы будете искать нужные события. Чем больше период, тем дольше ищет. Все зависит от производительности сервера. Если слабенький — то начните с 10 минут. Посмотрите, как быстро отработает. Если дольше 10 минут, то либо увеличьте еще, вдруг поможет, либо наоборот уменьшите период до 5 минут.
Источник
Настройка аудита файловых серверов: подробная инструкция и шпаргалка (.pdf)
Продолжаем публиковать шпаргалки по настройке аудита различных систем, в прошлый раз мы говорили об AD habrahabr.ru/company/netwrix/blog/140569, сегодня обсудим файловые серверы. Надо сказать, что чаще всего мы выполняем именно настройки аудита файловых серверов – в ходе пилотных инсталляций у заказчиков. Ничего сложного в этой задаче нет, всего лишь три простых шага:
Настройка аудита на файловых ресурсах
List Folder / Read Data;
Create Files / Write Data;
Create Folders / Append Data;
Write Attributes;
Write Extended Attributes;
Delete Subfolders and File;
Delete;
Change Permissions;
Take Ownership.
Настройка общей политики аудита
Для того, чтобы контролировать изменения на файловом сервере, вам необходимо настроить политику аудита. Перед настройкой политики убедитесь, что ваша учетная запись входит в группу Администраторов или у вас есть права на управление аудитом и журналами событий в оснастке Групповых политик.
Настройка детальной политики аудита
Настройка журналов событий
Для того, чтобы эффективно контролировать изменения, необходимо выполнить настройку журналов событий, а именно — установить максимальный размер журналов. Если размер окажется недостаточным, то события могут перезаписываться перед тем, как попадут в базу данных, которую использует ваше приложение, контролирующее изменения.
Напоследок, хотели бы предложить вам скрипт, который мы сами используем при настройке аудита на файловых серверах. Скрипт выполняет настройку аудита на всех шарах у каждого из компьютеров в заданном OU. Таким образом, не требуется включать настройки на каждом файловом ресурсе вручную.
Перед запуском скрипта нужно отредактировать строчку 19 — вписать вместо «your_ou_name» и «your_domain» необходимые значения. Скрипт необходимо выполнять от имени учетной записи, имеющей права администратора домена.
Скачать шпаргалку(.pdf) по настройке аудита файловых серверов
Источник
Простая система аудита удаления файлов и папок для Windows Server
Любой администратор Windows сталкивался с ситуацией, когда разъяренные пользователи хотят узнать, кто именно удалил мега важный файл с годовым отчетом в общей папке на файловом сервере. Эту информацию можно получить только при условии ведения аудита удаления файлов и папок на файловом сервере, иначе останется только восстановить удаленный файл из резервной копии (а вы их уже делаете?) и развести руками.
Но, даже при включенном аудите удаления файлов, найти что-то в логах бывает проблематично. Во-первых, найти нужную запись среди тысячи событий довольно сложно (в Windows отсутствуют вменяемые средства поиска интересующего события с возможностью гибкой фильтрации), а во-вторых, если файл был удален давно, это событие может просто отсутствовать в журнале, т.к. было перезатерто более новыми.
В этой статье мы покажем пример организации на встроенных средствах Windows системы аудита удаления файлов и папок в общем сетевом каталоге (файловом сервере) с записью событий в отдельную базу данных на MySQL.
Благодаря наличию БД с информацией обо всех удаленных файлах администратор сможет дать ответы на вопросы:
В первую очередь на файловом сервере Windows нужно включить аудит событий, обеспечивающий запись информации об удалении файлов в журнал системы. Эту процедуру мы уже рассматривали в статье Аудит доступа к файлам и папкам в Windows.
Совет. Аудит удаления файлов в конкретной папке можно включить и через PowerShell:
При успешном удалении файла в журнале безопасности системы появляется событие Event ID 4663 от источника Microsoft Windows security auditing. В описании события есть информация об имени удаленного файла, учетной записи из-под которой было выполнено удаление и имени процесса.
Итак, интересующие нас события пишутся в журнал, настала пора создать на сервере 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));
Скрипт сбора информации из журнала событий. Мы фильтруем журнал по событию с ID 4663 за текущий день
Следующий скрипт запишет полученные данные в БД MySQL на удаленном сервере:
Теперь, чтобы узнать, кто удалил файл «document1 — Copy.DOC», достаточно в консоли PowerShell выполнить следующий скрипт.
В консоли получаем имя пользователя и время удаления файла.
При желании по аналогии можно реагировать простую веб страницу на php для получения информации о виновниках удаления файлов в более удобном виде. Задача решается силами любого php программиста за 1-2 часа.
Итак, мы предложили идею и некий общий каркас системы аудита и хранения информации об удаленных файлах в сетевых шарах, при желании ее с лёгкостью можно будет модифицировать под ваши нужды.
Источник
План аудита доступа к файлам
Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012
в этом разделе описываются усовершенствования аудита безопасности, появившиеся в Windows Server 2012, а также новые параметры аудита, которые следует учитывать при развертывании динамического контроля доступа на предприятии. Фактические параметры политики аудита будут зависеть от поставленных целей, которые могут включать проверку соответствия нормативным требованиям, наблюдение, криминалистический анализ и устранение неисправностей.
Для получения подробной информации о планировании и развертывании общей стратегии аудита безопасности предприятия см. статью Планирование и развертывание расширенных политик аудита безопасности. Для получения дополнительной информации о настройке и развертывании политики аудита безопасности см. Пошаговое руководство по расширенной политике аудита безопасности.
следующие возможности аудита безопасности в Windows Server 2012 можно использовать с динамическим контролем доступа для расширения общей стратегии аудита безопасности.
Политики аудита на основе выражений. Динамический контроль доступа позволяет создавать адресные политики аудита, используя выражения на основе требований пользователя, компьютера и ресурсов. Например, можно создать политику аудита для отслеживания всех операций чтения и записи в файлах, которые классифицируются как «оказывающие сильное влияние на бизнес», для сотрудников, не обладающих высокой категорией доступа. Политики аудита на основе выражений могут быть созданы непосредственно для файла или папки либо централизованно через групповую политику. Дополнительные сведения см. в разделе Групповая политика использование аудита доступа к глобальным объектам.
Дополнительная информация от аудита доступа к объектам. Аудит доступа к файлам не является новым Windows Server 2012. Если применяется правильная политика аудита, операционные системы Windows и Windows Server будут создавать событие аудита при каждой попытке пользователя получить доступ к файлу. События доступа к существующим файлам (4656, 4663) содержат сведения об атрибутах файла, к которому был получен доступ. Эту информацию могут использовать средства фильтрации журнала событий, чтобы помочь в определении наиболее значимых событий аудита. Дополнительные сведения см. в разделах Аудит работы с дескрипторами и Диспетчер учетных записей безопасности аудита.
Дополнительные сведения о событиях входа пользователя. Если применяется правильная политика аудита, операционные системы Windows создают событие аудита при каждом локальном или удаленном входе пользователя в систему. в Windows Server 2012 или Windows 8 также можно отслеживать утверждения пользователей и устройств, связанные с маркером безопасности пользователя. Например, это могут быть такие категории доступа, как «Отдел», «Организация», «Проект» и «Безопасность». Событие 4626 содержит информацию об этих заявках пользователей и устройств на доступ, что может использоваться в средствах управления журналом аудита, чтобы связать события входа пользователя с событиями доступа к объектам и разрешить фильтрацию событий на основе атрибутов файлов и атрибутов пользователей. Дополнительные сведения о аудите входа пользователей см. в разделе Аудит входа в систему.
Отслеживание изменений в новых типах защищаемых объектов. В следующих сценариях важно отслеживать изменения в защищаемых объектах.
Отслеживание изменений в централизованных политиках и правилах доступа. Централизованные политики и правила доступа определяют централизованную политику, которая может быть использована при управлении доступом к критическим ресурсам. Любые их изменения могут непосредственно влиять на права доступа к файлам, которые предоставлены пользователям на нескольких компьютерах. Поэтому отслеживание изменений в централизованных политиках и правилах доступа может быть важно для организации. Так как централизованные политики и правила доступа хранятся в доменных службах Active Directory (AD DS), можно проводить аудит попыток их изменения, так же как и проводить аудит изменений любых других защищаемых объектов в доменных службах Active Directory. Дополнительные сведения см. в разделе Аудит доступа к службе каталогов.
Отслеживание изменений в определениях словаря утверждений. Определения утверждений включают имя утверждения, описание и возможные значения. Любые изменения в определении утверждения могут влиять на права доступа к критическим ресурсам. Поэтому отслеживание изменений в определениях утверждений может быть важно для организации. Подобно централизованным политикам и правилам доступа, определения утверждений хранятся в доменных службах Active Directory, поэтому для них аудит может быть выполнен так же, как и для других защищаемых объектов в AD DS. Дополнительные сведения см. в разделе Аудит доступа к службе каталогов.
Отслеживание изменений в атрибутах файла. Атрибуты файла определяют, какое централизованное правило доступа применяется к этому файлу. Изменение атрибутов файла потенциально может влиять на ограничения доступа к файлу. Поэтому важно отслеживать изменения атрибутов файла. Можно отслеживать изменения атрибутов файла на любом компьютере, настроив политику аудита для изменения политики авторизации. Дополнительные сведения см. в разделе Аудит изменения политики авторизации и Аудит доступа к объектам для файловых систем. в Windows Server 2012 событие 4911 отличает изменения политики атрибутов файлов от других событий изменения политики авторизации.
Отслеживание изменений в централизованной политике доступа, связанной с файлом. Событие 4913 отображает идентификаторы безопасности (SID) для старой и новой централизованных политик доступа. Каждая централизованная политика доступа также имеет имя, понятное для пользователя, которое может быть найдено с помощью этого идентификатора безопасности. Дополнительные сведения см. в разделе Аудит изменений политики авторизации.
Отслеживание изменений атрибутов пользователя и компьютера. Как и файлы, объекты пользователей и компьютеров могут иметь атрибуты, а изменения этих атрибутов могут повлиять на возможность доступа пользователя к файлам. Таким образом, важно отслеживать изменения атрибутов пользователя или компьютера. Объект-пользователь и объект-компьютер хранятся в доменных службах Active Directory, следовательно, можно проводить аудит изменения их атрибутов. Дополнительные сведения см. в разделе доступ к службам каталогов.
Промежуточное сохранение изменений политики. Изменения в централизованных политиках доступа могут влиять на решения о предоставлении доступа на всех компьютерах, на которых применяются политики. Нестрогая политика может предоставить больше доступа, чем предполагается, в то время как чрезмерно строгая политика может вызвать огромное количество обращений в службу поддержки. Поэтому очень важно проверить изменения централизованной политики доступа до того, как они будут применены. для этой цели Windows Server 2012 познакомится с понятием промежуточного хранения. Промежуточное сохранение позволяет пользователям проверить предложенные изменения политики до того, как применить их. Для использования промежуточного сохранения предложенные политики разворачиваются вместе с принятыми политиками, но промежуточные политики фактически не предоставляют доступ и не запрещают его. вместо этого Windows Server 2012 регистрирует событие аудита (4818) в любой момент, когда проверка доступа, использующая промежуточную политику, отличается от результата проверки доступа, использующей принудительную политику.
Источник
Аудит удаления файлов в сетевой папке на windows server
Любой администратор Windows сталкивался с ситуацией, когда разъяренные пользователи хотят узнать, кто именно удалил мега важный файл с годовым отчетом в общей папке на файловом сервере. Эту информацию можно получить только при условии ведения аудита удаления файлов и папок на файловом сервере, иначе останется только восстановить удаленный файл из резервной копии (а вы их уже делаете?) и развести руками.
Но, даже при включенном аудите удаления файлов, найти что-то в логах бывает проблематично. Во-первых, найти нужную запись среди тысячи событий довольно сложно (в Windows отсутствуют вменяемые средства поиска интересующего события с возможностью гибкой фильтрации), а во-вторых, если файл был удален давно, это событие может просто отсутствовать в журнале, т.к. было перезатерто более новыми.
В этой статье мы покажем пример организации на встроенных средствах Windows системы аудита удаления файлов и папок в общем сетевом каталоге (файловом сервере) с записью событий в отдельную базу данных на MySQL.
Благодаря наличию БД с информацией обо всех удаленных файлах администратор сможет дать ответы на вопросы:
В первую очередь на файловом сервере Windows нужно включить аудит событий, обеспечивающий запись информации об удалении файлов в журнал системы. Эту процедуру мы уже рассматривали в статье Аудит доступа к файлам и папкам в Windows.
Совет. Аудит удаления файлов в конкретной папке можно включить и через PowerShell:
При успешном удалении файла в журнале безопасности системы появляется событие Event ID 4663 от источника Microsoft Windows security auditing. В описании события есть информация об имени удаленного файла, учетной записи из-под которой было выполнено удаление и имени процесса.
Итак, интересующие нас события пишутся в журнал, настала пора создать на сервере 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));
Скрипт сбора информации из журнала событий. Мы фильтруем журнал по событию с ID 4663 за текущий день
Следующий скрипт запишет полученные данные в БД MySQL на удаленном сервере:
Теперь, чтобы узнать, кто удалил файл «document1 — Copy.DOC», достаточно в консоли PowerShell выполнить следующий скрипт.
В консоли получаем имя пользователя и время удаления файла.
При желании по аналогии можно реагировать простую веб страницу на php для получения информации о виновниках удаления файлов в более удобном виде. Задача решается силами любого php программиста за 1-2 часа.
Итак, мы предложили идею и некий общий каркас системы аудита и хранения информации об удаленных файлах в сетевых шарах, при желании ее с лёгкостью можно будет модифицировать под ваши нужды.
Источник
В локальной сети организации, в общей сетевой папке для обмена документами кто-то периодически удалял папки. Пользователей более 200. Чтоб отследить источник проблемы был применен аудит сетевой папки. Как это сделать написано далее.
Все действия выполняются на файловом сервере с Windows Server 2012 в доменной сети. Файловый сервер не является контроллером домена.
Аудит настроен через графический интерфейс. Альтернативный вариант аудита – через скрипт.
Порядок действий:
Активация политики аудита.
Настройка аудита в нужной сетевой папке.
Просмотр журнала событий аудита.
Активация политики аудита.
Для активации аудита воспользуемся локальной групповой политикой на сервере.
Нажимаем сочетание клавиш Win+R
В открывшейся строке «Выполнить» вводим команду:
В открывшемся редакторе локальной групповой политики переходим в свойства «Аудит файловой системы» по пути:
Конфигурация компьютера >> Конфигурация Windows >> Параметры безопасности >> Конфигурация расширенной политики аудита >> Политика аудита системы – Объект локальной групповой политики >> Доступ к объектам >> Аудит файловой системы (свойства).
Активируем галочкой «Настроить следующие события аудита:»
Отмечаем «Успех».
Нажимаем кнопку «ОК» для сохранения изменений.
Обновляем настройки локальной групповой политики для этого в строке «Выполнить» или в CMD вводим команду:
Настройка аудита сетевой папки.
Выбираем нужную папку.
У папки открыт общий доступ для всех на чтение/запись.
Переходим в свойствах папки на вкладку «Безопасность». Нажимаем кнопку «Дополнительно».
В открывшихся доп. параметрах переходим на вкладку «Аудит». Нажимаем кнопку «Продолжить».
Добавляем новый элемент для аудита.
Нажимаем на строчку «Выберите субъект».
Можно указать каких-то конкретных пользователей или всех сразу, написав Все.
В доменной сети можно создать группы в AD и назначать аудит по группам.
Далее выбираем:
Тип: Успех.
Применяется к: Для этой папки, её подпапок и файлов.
Нажимаем строчку «Отображение дополнительных разрешений».
Отмечаем галочкой:
Удаление подпапок и файлов.
Удаление.
Нажимаем ОК для сохранения настроек.
Аудит можно настроить не только на удаление, но на любые действия, список которых предоставляет система.
Закрываем свойства папки и переходим в журнал событий.
Просмотр журнала событий аудита.
Нажимаем сочетание клавиш Win+R.
Вводим команду
В журнал можно так же попасть через Панель управления >> Система и безопасность >> Просмотр журнала событий.
Открываем Журналы Windows и нажимаем правой кнопкой мыши на вкладке «Безопасность».
Выбираем из раскрывшегося меню «Создать настраиваемое представление…».
В строке код события указываем 4663.
Для удобства использования пишем понятное название при сохранении фильтра.
На этом настройки завершены. Теперь любое удаление файла или папки отображается в отдельном списке. Внизу в подробностях можно посмотреть кто и что удалил.
Аудит не поможет вернуть удаленные файлы, для этого должно выполнятся создание резервных копий. Но знание участников действий поможет выполнять контроль и поддерживать порядок в сети.