- Аудит файлового сервера
- Для чего нужно проводить аудит серверов?
- Как провести аудит: алгоритм настройки Microsoft Windows Server с записью событий в отдельную базу данных на MySQL
- Шаг 1. Настройка доступа с помощью групповых политик
- Шаг 2. Отслеживание удаления данных
- Шаг 3. Создание таблицы базы данных MySQL
- Программы для аудита событий
- Аудит удаления файлов в сетевой папке на Windows Server
- Включаем политику аудита доступа к файлам и папкам в Windows
- Настройка аудита событий удаления файлов из конкретной папки
- Запись событий удаления файлов в SQL базу (MySQL/MSSQL)
- Запись информации о событиях удаления файлов в текстовый файл
Аудит файлового сервера
Аудит и классификация данных
на базе системы
Ф айловым сервером называется приложение, предназначенное для хранения файлов с разными расширениями. Такие приложения встраиваются в серверные операционные системы либо устанавливаются дополнительно. Они обеспечивают взаимодействие сервера с пользователями системы.
Самой распространенной серверной операционной системой является Microsoft Windows Server. Поэтому рассмотрим, как и для чего проводить аудит файловых серверов, которые встраиваются в эту операционную систему.
Для чего нужно проводить аудит серверов?
Основной целью аудита доступа к файлам является обеспечение информационной безопасности, то есть сохранение информации в файлах от изменения, удаления и утечки. В рамках этой процедуры выполняются следующие задачи:
- отслеживаются действия пользователей;
- собираются, систематизируются и анализируются данные об активности пользователей;
- формируются отчеты о выявленных угрозах, попытках несанкционированного доступа и уязвимостях системы.
Проще говоря, благодаря аудиту администратор может определить, кто и когда вносил изменения в файлы и папки. Также при правильно настроенной системе аудита можно восстанавливать случайно или намерено удаленные файлы, распределять права пользователей, получать отчеты о всех событиях в системе.
Как провести аудит: алгоритм настройки Microsoft Windows Server с записью событий в отдельную базу данных на MySQL
Аудит Microsoft Windows Server можно проводить с помощью встроенных инструментов: журналов учета, политик безопасности и т.д. Однако на практике встроенные инструменты неудобны в использовании и обладают низкой функциональностью. Поэтому их нужно дополнять другим ПО. Самый простой вариант – синхронизировать встроенные инструменты с отдельной базой данных на MySQL. Таким образом будут устранены основные недостатки встроенных инструментов:
- отсутствие системы выборки;
- перезапись регистров учета;
- уязвимость перед пользователями с правами системных администраторов.
Благодаря записи событий в базу данных на MySQL системный администратор быстро определит, кто и когда имел доступ к файлам системы, из какой папки был удален файл, как именно восстановить данные.
Шаг 1. Настройка доступа с помощью групповых политик
На томах с NTFS настроить политику безопасности можно в консоли управления локальными политиками. Для этого следует развернуть Local Policies и выбрать из списка Audit Policy, а после этого найти Audit Object Access и выполнить настройку. Это позволит определить права разных групп пользователей на чтение, изменение и удаление папок и документов. Затем можно раздать права на использование приложений.
При необходимости можно ограничить права пользователей на чтение, изменение и удаление определенной папки или файла. Для этого нужно зайти в Свойства объекта, перейти по вкладке Security Settings и выбрать Advanced. Это откроет окно расширенных настроек безопасности, где следует определить список пользователей, которые могут вносить изменения в этот объект.
Кроме групповых политик, можно использовать расширенные политики в GPO. Для этого нужно перейти из Security Settings в Audit File System. При этом следует помнить, что аудит перегружает оборудование. Поэтому настройки нужно делать такими, чтобы они не требовали большого количества ресурсов.
Шаг 2. Отслеживание удаления данных
Чтобы настроить отслеживание удаления данных, нужно пользоваться аудитом событий удаления (Delete subfolders and files). Для этого необходимо зайти в Свойства объекта, перейти по вкладке Security Settings и найти строку Delete subfolders and files на вкладке Auditing.
Также эту операцию можно выполнить через PowerShell. Для этого следует прописать такой скрипт:
После активации и настройки Delete subfolders and files при удалении данных будут автоматически генерироваться события (Event ID 4663) с информацией о том, кто и когда удалил данные.
Шаг 3. Создание таблицы базы данных MySQL
Чтобы создать таблицу, в строках которой будут отражаться наименования серверов, названия удаленных файлов, время удаления и информация о пользователях, необходимо ввести в MySQL такой запрос:
Следующий скрипт позволяет отслеживать информацию, которая отражается в журнале событий:
Чтобы собранные данные сохранились в базе данных MySQL, нужно воспользоваться таким скриптом:
Это один из способов провести аудит без использования стороннего ПО.
Программы для аудита событий
Далеко не все системные администраторы могут свободно пользоваться скриптами и синхронизировать запись событий с базами данных MySQL. В этом случае лучше использовать для аудита стороннее ПО с удобным интерфейсом и широким функционалом.
В качестве примера можно привести Netwrix Auditor for Windows File Servers. Эта программа позволяет:
- отслеживать все события (изменение прав доступа, создание, удаление или изменение папок и хранилищ, другие события);
- проводить аудит, классифицировать и анализировать собранные данные;
- усилить защиту данных путем отслеживания событий и сбора информации о доступе пользователей к данным.
Для автоматизированного анализа и аудита файловой системы предприятия, поиска нарушений прав доступа и отслеживания изменений в критичных данных можно использовать «СёрчИнформ FileAuditor».
С помощью этой программы можно обеспечить информационную безопасность и сохранность важных данных без использования сложных алгоритмов.
Аудит удаления файлов в сетевой папке на 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
>
>
Итак, мы предложили идею и некий общий каркас системы аудита и хранения информации об удаленных файлах в сетевых шарах, при желании ее с лёгкостью можно будет модифицировать под ваши нужды.