- Аудит общего файлового ресурса Audit File Share
- Аудит удаления файлов в сетевой папке на Windows Server
- Включаем политику аудита доступа к файлам и папкам в Windows
- Настройка аудита событий удаления файлов из конкретной папки
- Запись событий удаления файлов в SQL базу (MySQL/MSSQL)
- Запись информации о событиях удаления файлов в текстовый файл
- Настройка аудита файловых серверов: подробная инструкция и шпаргалка (.pdf)
Аудит общего файлового ресурса Audit File Share
Область применения Applies to
- Windows 10 Windows 10
- Windows Server 2016 Windows Server 2016
Аудит файловой папки позволяет проводить аудит событий, связанных с файлами: создание, удаление, изменение и попытки доступа. Audit File Share allows you to audit events related to file shares: creation, deletion, modification, and access attempts. Кроме того, здесь показаны неудачные проверки SMB SPN. Also, it shows failed SMB SPN checks.
Для всех системных списков управления доступом (SACLs) нет; Таким образом, после включения этого параметра будет проверяться доступ ко всем ресурсам в системе. There are no system access control lists (SACLs) for shares; therefore, after this setting is enabled, access to all shares on the system will be audited.
В сочетании с аудитом файловой системы аудит файлового доступа позволяет отслеживать, к какому содержимому был доступ, источник (IP-адрес и порт) запроса и учетная запись пользователя, использованная для доступа. Combined with File System auditing, File Share auditing enables you to track what content was accessed, the source (IP address and port) of the request, and the user account that was used for the access.
Том события: Event volume:
Высокая на файловом сервере. High on file servers.
Высокая доступность контроллеров домена из-за доступа к сети SYSVOL, требуемого групповой политикой. High on domain controllers because of SYSVOL network access required by Group Policy.
Низкий уровень на серверах-членах и рабочих станциях. Low on member servers and workstations.
Тип компьютера Computer Type | Общий успех General Success | Общий сбой General Failure | Более успешный успех Stronger Success | Более сильное сбой Stronger Failure | Комментарии Comments |
---|---|---|---|---|---|
Контроллер домена Domain Controller | Да Yes | Да Yes | Да Yes | Да Yes | Мы рекомендуем проводить аудит успешности для контроллеров домена, так как важно отслеживать события удаления, создания и изменения для сетевых сетей. We recommend Success auditing for domain controllers, because it’s important to track deletion, creation, and modification events for network shares. Мы рекомендуем проводить аудит сбоев для отслеживания неудачных проверок SMB SPN и неудачных попыток доступа к сетевым сетям. We recommend Failure auditing to track failed SMB SPN checks and failed access attempts to network shares. |
Сервер-член Member Server | Да Yes | Да Yes | Да Yes | Да Yes | Мы рекомендуем проводить аудит успешности для отслеживания попыток удаления, создания, изменения и доступа к объектам сетевого доступа. We recommend Success auditing to track deletion, creation, modification, and access attempts to network share objects. Мы рекомендуем проводить аудит сбоев для отслеживания неудачных проверок SMB SPN и неудачных попыток доступа к сетевым сетям. We recommend Failure auditing to track failed SMB SPN checks and failed access attempts to network shares. |
Workstation Workstation | Да Yes | Да Yes | Да Yes | Да Yes | Мы рекомендуем проводить аудит успешности для отслеживания попыток удаления, создания, изменения и доступа к объектам сетевого доступа. We recommend Success auditing to track deletion, creation, modification and access attempts to network share objects. Мы рекомендуем проводить аудит сбоев для отслеживания неудачных проверок SMB SPN и неудачных попыток доступа к сетевым сетям. We recommend Failure auditing to track failed SMB SPN checks and failed access attempts to network shares. |
Список событий: Events List:
5140(S, F): доступ к объекту сетевого доступа. 5140(S, F): A network share object was accessed.
5142(S): добавлен объект сетевой обоймы. 5142(S): A network share object was added.
5143(S): объект сетевой совместной сети был изменен. 5143(S): A network share object was modified.
5144(S): объект сетевой обоймы был удален. 5144(S): A network share object was deleted.
5168(F): не удалось проверить spN для SMB/SMB2. 5168(F): SPN check for SMB/SMB2 failed.
Аудит удаления файлов в сетевой папке на 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
>
>
Итак, мы предложили идею и некий общий каркас системы аудита и хранения информации об удаленных файлах в сетевых шарах, при желании ее с лёгкостью можно будет модифицировать под ваши нужды.
Настройка аудита файловых серверов: подробная инструкция и шпаргалка (.pdf)
Продолжаем публиковать шпаргалки по настройке аудита различных систем, в прошлый раз мы говорили об AD habrahabr.ru/company/netwrix/blog/140569, сегодня обсудим файловые серверы. Надо сказать, что чаще всего мы выполняем именно настройки аудита файловых серверов – в ходе пилотных инсталляций у заказчиков. Ничего сложного в этой задаче нет, всего лишь три простых шага:
- Настроить аудит на файловых ресурсах (file shares)
- Настроить и применить общую и детальную политики аудита
- Изменить настройки журналов событий
Если у вас большое количество файловых шар, доступ к которым часто требуется сотрудникам – рекомендуем контролировать только изменения объектов аудита. Отслеживание всех событий может привести к тому, что в журналы будет попадать большой объем избыточных данных, которые не представляют особой важности.
Настройка аудита на файловых ресурсах
- Откройте свойства шары, выберите вкладку «Security» и нажмите кнопку «Advanced»
- На вкладке «Auditing», выберите группу пользователей «Everyone» и нажмите кнопку «Edit»
- Включите следующие флажки в колонках «Successfull» и «Failed»:
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.
Настройка общей политики аудита
Для того, чтобы контролировать изменения на файловом сервере, вам необходимо настроить политику аудита. Перед настройкой политики убедитесь, что ваша учетная запись входит в группу Администраторов или у вас есть права на управление аудитом и журналами событий в оснастке Групповых политик.
- Откройте оснастку Групповые политики с помощью команды gpedit.msc или через меню
Start > Programs > Administrative Tools > Group Policy Management. - Раскройте узел «Domains», щелкните правой кнопкой мыши по имени вашего домена и выберите пункт меню «Create a GPO in this domain and Link it here».
- Впишите название новой политики в поле «Name» и нажмите ОК.
- Щелкните правой кнопкой мыши по новой политике, в меню выберите пункт «Edit», откроется редактор групповых политик.
- Раскройте узел «Computer Configuration», затем раскройте «Policies» > «Windows Settings» > «Security Settings» > «Local Policies» > «Audit Policy».
- В правой части окна два раза щелкните левой кнопкой мыши по категории «Audit object access».
Настройка детальной политики аудита
- На контролируемом файловом сервере откройте оснастку Локальные политики безопасности с помощью команды secpol.msc
- Раскройте узел «Security Settings» > «Local Policies» > «Security Options» и найдите в правой части окна категорию «Audit: Force audit policy subcategory settings (Windows Vista or later) policy»
Настройка журналов событий
Для того, чтобы эффективно контролировать изменения, необходимо выполнить настройку журналов событий, а именно — установить максимальный размер журналов. Если размер окажется недостаточным, то события могут перезаписываться перед тем, как попадут в базу данных, которую использует ваше приложение, контролирующее изменения.
- Откройте просмотр событий: «Start» > «Programs» > «Administrative Tools» > «Event Viewer»
- Разверните узел «Windows Logs»
- Правой клавишей мыши щелкните по журналу «Security», выберите пункт меню «Properties»
- Убедитесь, что флажок «Enable logging» включен.
- Установите значения в поле «Maximum log size»: для Windows 2003 – 300MB, для Windows 2008 – 1GB.
Напоследок, хотели бы предложить вам скрипт, который мы сами используем при настройке аудита на файловых серверах. Скрипт выполняет настройку аудита на всех шарах у каждого из компьютеров в заданном OU. Таким образом, не требуется включать настройки на каждом файловом ресурсе вручную.
Перед запуском скрипта нужно отредактировать строчку 19 — вписать вместо «your_ou_name» и «your_domain» необходимые значения. Скрипт необходимо выполнять от имени учетной записи, имеющей права администратора домена.
Получить скрипт можно в нашей базе знаний или сохранить в файл .ps1 следующий текст:
Скачать шпаргалку(.pdf) по настройке аудита файловых серверов