Аудит доменных служб Active Directory за минуту. Настройка аудита файловых серверов: подробная инструкция и шпаргалка (.pdf)

В каждом из журналов накапливается большое количество событий, в которых трудно иногда найти нужные события. Заметим вначале, что щелчок мышью на заголовке любого столбца в консоли (оснастке) " Просмотр событий " позволяет отсортировать события по убыванию или возрастанию значений данного столбца. Для более точного отбора искомых событий служат средства фильтрации в " Просмотре событий ". Если открыть свойства какого-либо журнала, то в открывшейся панели, кроме закладки " Общие ", имеется также закладка " Фильтр ", позволяющая установить правила для отбора событий. Посмотрим внимательно на данную закладку (рис. 16.4):


Рис. 16.4.

Можно установить правила отбора:

  • по типу событий - уведомления, предупреждения, ошибки, аудит успехов, аудит отказов;
  • по источнику (например, компоненты системы Alerter , Browser , DCOM , DHCP , disk , eventlog , Server , System и др.);
  • по категории (например, Диск , Оболочка , Принтеры , Сеть , Службы , Устройства и др.);
  • по известному коду события;
  • по имени пользователя;
  • по имени компьютера;
  • задать период времени - с какого по какой момент времени отобрать события.


Рис. 16.7.

Аудит

Настройка политик аудита - важный фактор обеспечения безопасности и целостности системы. Каждая компьютерная система в сети должна быть настроена для протоколирования определенных событий, относящихся к системе безопасности. Политики аудита определяют, какие именно события в области безопасности системы должны регистрироваться в журнале " Безопасность ".

Процесс аудита безопасности настраивается с помощью групповых политик (напомним, что групповые политики можно определять для сайта, домена или организационного подразделения, а также для отдельной рабочей станции или сервера). Параметры аудита безопасности находятся в разделе " Параметры безопасности - Локальные политики - Политики аудита " любого объекта групповых политик .


Рис. 16.9.

После применения политик настроим аудит доступа для нужных объектов (например, для папки Folder1 на сервере DC1 ) - откроем Свойства данной папки (папка должна быть размещена на разделе с файловой системой NTFS), перейдем на закладку " Безопасность ", нажмем кнопку " Дополнительно " и перейдем на закладку " Аудит ". Добавим в список пользователей, для которых будут отслеживаться попытки доступа к папке Folder1 , группу " Пользователи домена " и установим, какие именно попытки будут регистрироваться в журнале " Безопасность " (например, попытки удаления папок и файлов, успешные и неуспешные,

Всем привет!

Продолжаем публиковать шпаргалки по настройке аудита различных систем, в прошлый раз мы говорили об AD habrahabr.ru/company/netwrix/blog/140569 , сегодня обсудим файловые серверы. Надо сказать, что чаще всего мы выполняем именно настройки аудита файловых серверов – в ходе пилотных инсталляций у заказчиков. Ничего сложного в этой задаче нет, всего лишь три простых шага:

  • Настроить аудит на файловых ресурсах (file shares)
  • Настроить и применить общую и детальную политики аудита
  • Изменить настройки журналов событий
Если у вас большое количество файловых шар, доступ к которым часто требуется сотрудникам – рекомендуем контролировать только изменения объектов аудита. Отслеживание всех событий может привести к тому, что в журналы будет попадать большой объем избыточных данных, которые не представляют особой важности.

Настройка аудита на файловых ресурсах

Настройка общей политики аудита

Для того, чтобы контролировать изменения на файловом сервере, вам необходимо настроить политику аудита. Перед настройкой политики убедитесь, что ваша учетная запись входит в группу Администраторов или у вас есть права на управление аудитом и журналами событий в оснастке Групповых политик.

Настройка детальной политики аудита

Настройка журналов событий

Для того, чтобы эффективно контролировать изменения, необходимо выполнить настройку журналов событий, а именно - установить максимальный размер журналов. Если размер окажется недостаточным, то события могут перезаписываться перед тем, как попадут в базу данных, которую использует ваше приложение, контролирующее изменения.

Напоследок, хотели бы предложить вам скрипт, который мы сами используем при настройке аудита на файловых серверах. Скрипт выполняет настройку аудита на всех шарах у каждого из компьютеров в заданном OU . Таким образом, не требуется включать настройки на каждом файловом ресурсе вручную.

Перед запуском скрипта нужно отредактировать строчку 19 - вписать вместо «your_ou_name» и «your_domain» необходимые значения. Скрипт необходимо выполнять от имени учетной записи, имеющей права администратора домена.

Получить скрипт можно в нашей базе знаний или сохранить в файл.ps1 следующий текст:

#import-module activedirectory #$path = $args; # \\fileserver\share\folder $account = "Everyone" # $args; $flavor = "Success,Failure" #$args; $flags = " ReadData, WriteData, AppendData, WriteExtendedAttributes, DeleteSubdirectoriesAndFiles, WriteAttributes, Delete, ChangePermissions, TakeOwnership " $inheritance = "ContainerInherit, ObjectInherit" $propagation = "None" $comps = Get-ADComputer -Filter * -SearchBase "OU=your_ou_name,DC=your_domain,DC=your_domain" | select -exp DNSHostName foreach ($comp in $comps) { $shares = get-wmiobject -class win32_share -computername $comp -filter "type=0 AND name like "%[^$]"" | select -exp name foreach ($share in $shares) { $path = "\\"+$comp+"\"+$share $path $acl = (Get-Item $path).GetAccessControl("Access,Audit") $ace = new-object System.Security.AccessControl.FileSystemAuditRule($account, $flags, $inheritance, $propagation, $flavor) $acl.AddAuditRule($ace) set-acl -path $path -AclObject $acl } }

Любой администратор Windows сталкивался с ситуацией, когда разъяренные пользователи хотят узнать, кто именно удалил мега важный файл с годовым отчетом в общей папке на файловом сервере. Эту информацию можно получить только при условии ведения аудита удаления файлов и папок на файловом сервере, иначе останется только восстановить удаленный файл из резервной копии (а вы их уже делаете?) и развести руками.

Но, даже при включенном аудите удаления файлов, найти что-то в логах бывает проблематично. Во-первых, найти нужную запись среди тысячи событий довольно сложно (в Windows отсутствуют вменяемые средства поиска интересующего события с возможностью гибкой фильтрации), а во-вторых, если файл был удален давно, это событие может просто отсутствовать в журнале, т.к. было перезатерто более новыми.

В этой статье мы покажем пример организации на встроенных средствах Windows системы аудита удаления файлов и папок в общем сетевом каталоге (файловом сервере) с записью событий в отдельную базу данных на MySQL.

Благодаря наличию БД с информацией обо всех удаленных файлах администратор сможет дать ответы на вопросы:

  • Кто и когда удалил файл
  • Из какого приложения удален файл
  • На какой момент времени нужно восстанавливать бэкап

В первую очередь на файловом сервере 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 subfolders and 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 за текущий день



$event = $_.ToXml()
if($event)
{




}
}

Следующий скрипт запишет полученные данные в БД MySQL на удаленном сервере:




$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 = $_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data."#text"

$File = $File.Replace(‘\’,’|’)
$User = $event.Event.EventData.Data."#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 = @{ConnectionString="server=10.7.7.13;uid=posh;pwd=P@ssw0rd;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)
{
write-host "User:" $DataSet.user_name "at:" $DataSet.dt_time
}
$Connection.Close()

В консоли получаем имя пользователя и время удаления файла.

Примечание . Т.к. была обнаружена проблема, чир символ «\» не записывается в БД, мы заменили его на «|». Соответственно если нужно указать вывести полный путь к файлу, при выборке из базы можно выполнить обратную замену $DataSet.file_name.Replace(‘|’,’\’). Спасибо Alex Kornev за замечание!

Скрипт сброса данных из журнала в БД можно выполнять один раз в конце дня по планировщику или повесить на событие удаления (), что более ресурсоемко. Все зависит от требования к системе.

Совет. Нужно убедиться, что журнал безопасности имеет достаточный размер, чтобы в него помещались все события за день. Иначе придется запускать задания сброса данных из журнала в базу чаще, чем 1 раз в день, или вообще по триггеру. Для рабочих станция Maximum Log Size как правило стоит задать не менее 64 Мб, на северах – 262 Мб. Опцию перезаписи оставляем включенной (Overwrite events as needed ).

При желании по аналогии можно реагировать простую веб страницу на php для получения информации о виновниках удаления файлов в более удобном виде. Задача решается силами любого php программиста за 1-2 часа.

Важный совет . При наличии в журнале информации об удалении файла пользователем не спешите однозначно интерпретировать его как преднамеренное или даже злонамеренное. Многие программы (особенно этим грешат программы пакета MS Office), при сохранении данных сначала создают временный файл, сохраняют документ в него, а старую версию файла удаляют. В этом случае имеет смысл дополнительной записи в БД имени процесса, которым было выполнено удаление файла (поле ProcessName события), и вести анализ удаления файлов с учетом этого факта. Либо совсем радикально отсеивать события от таких мусорных процессов, например, winword.exe, excel.exe и пр.

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

нужные ОП отдела сбыта, могут сильно отличаться от ОП ф и- нансового отдела.

Оснастка Group Policy (Групповая политика)разрешает устанавливать параметры безопасности прямо в хранилище Active Directory. Папка Security Settings (Параметры безопасности)находится в узле Computer Configuration (Конфигурация компьютера)и узле User Configuration (Конфигурация пользо-

вателя) . Параметры безопасности разрешают администраторам групповой политики устанавливать политики, которые ограничивают пользователям доступ к файлам и папкам, определяют количество неверных паролей, которое пользователь может вводить до того, как ему будет отказано во входе, управляют правами пользователя, в частности определяют, какие пользователи могут входить на сервер домена.

8.5. Аудит в Microsoft Windows

8.5.1. Обзор аудита в Windows

Аудит в Windows - это процесс отслеживания действий пользователя и действий Windows (называемых событиями). Во время аудита Windows в соответствии с указаниями записывает информацию о событиях в журнал безопасности. В этот журнал записываются попытки входа в систему с правильными и неправильными паролями, а также события, связанные с созданием, открытием, уничтожением файлов или других объектов.

Каждая запись в журнале безопасности содержит:

сведения о выполненном действии;

сведения о пользователе, выполнившем это действие;

сведения о событии, произошедшем при этом, а также о том, было ли оно успешно.

8.5.1.1. Использование политики аудита

Политика аудита определяет, какие типы событий Windows должна записывать в журнал безопасности на каждом компьютере. Этот журнал позволяет отслеживать указанные Вами события.

Windows записывает сведения о событии в журнал безопасности на том компьютере, на котором это событие имело

место. Например, можно настроить аудит так, что каждый раз, когда кто-то неудачно пытается войти в домен с какой -то доменной учетной записью, это событие записывалось в журнал безопасности на контроллере домена.

Это событие записывается на контроллере домена, а не на компьютере, на котором была сделана попытка входа в систему, потому что именно контроллер домена пытался и не смог аутентифицировать вход в систему.

Можно настроить политику аудита на компьютере для:

отслеживания успеха/неудачи событий, таких как попытка входа в систему, попытка определенного пользователя прочесть указанный файл, изменений учетной записи пользователя или членства в группе, а также изменений в Ваших параметрах безопасности;

устранения или минимизации риска несанкционированного использования ресурсов.

Для просмотра событий, записанных Windows в журнал безопасности, можно использовать оснастку Event Viewer (Просмотр событий) . Можно также архивировать журналы для вы-

явления долговременных тенденций - например, для определения интенсивности доступа к принтерам или файлам или для контроля попыток несанкционированного доступа к ресурсам.

8.5.2.Планирование политики аудита

Администратор должен решить, на каких компьютерах вести аудит. По умолчанию аудит отключен.

При определении компьютеров для аудита администратор должен также спланировать, что отслеживать на каждом компьютере. Windows записывает проверяемые события отдельно на каждом компьютере.

Можно вести аудит:

доступа к файлам и папкам;

входа в систему и выхода из н ее определенных пользо-

выключения и перезагрузки компьютера с Windows

изменений учетных записей пользователей и групп;

попыток изменения объектов Active Directory.

Определив, какие события проверять, необходимо решить, отслеживать ли их успех и/или неудачу. Отслеживание успешных событий расскажет, как часто пользователи Windows или ее службы получают доступ к определенным файлам, принтерам и другим объектам. Это пригодится при планировании использования ресурсов. Отслеживание неудачных событий может предупредить о возможных нарушениях безопасности. Например, многочисленные неудачные попытки входа в систему с определенной учетной записью, особенно если они происходили вне обычного рабочего времени, могут означать, что некто, не имеющий прав доступа, пытается взломать систему.

При определении политики аудита целесообразно руководствоваться следующими принципами:

решите, нужно ли отслеживать тенденции в использовании ресурсов системы. В этом случае запланируйте архивацию журналов событий. Это позволит увидеть изменения в использовании системных ресурсов и заблаговременно увеличить их;

чаще просматривайте журнал безопасности. Составьте расписание и регулярно просматривайте этот журнал, поскольку настройка аудита сама по себе не предупредит о нарушениях безопасности;

сделайте политику аудита полезной и легкой в управлении. Всегда проверяйте уязвимые и конфиденциальные данные. Проверяйте только такие события, чтобы получить содержательную информацию об обстановке в сети. Это минимизирует использование ресурсов сервера и позволит легче находить нужную информацию. Аудит слишком многих событий приведет к замедлению работы Windows;

проверяйте доступ к ресурсам не пользователей группы Users (Пользователи), а пользователей группыEveryone (Все) . Это гарантирует, что Вы отследите любого, кто подсоединился к сети, а не только тех, для кого создана учетная запись.

8.5.3.Внедрение политики аудита

Необходимо продумать требования аудита и настроить его политику. Настроив политику аудита на каком-либо компьютере, можно вести аудит файлов, папок, принтеров и объектов Active Directory.

8.5.3.1. Настройка аудита

Можно выполнять политику аудита, основанную на роли данного компьютера в сети Windows. Аудит настраивается поразному для следующих типов компьютеров с Windows:

для рядового сервера домена, изолированного сервера или рабочих станций с Windows политика аудита настраивается отдельно для каждой машины;

для контроллеров домена устанавливается одна политика аудита на весь домен; для аудита событий на контроллерах домена, таких как изменения объектов Active Directory, следует настроить групповую политику для домена, которая будет действовать на всех контроллерах.

Требования для выполнения аудита

Настройка и администрирование аудита требуют выполнения следующих условий:

Вы должны иметь разрешениеManage Auditing And Security Log (Управление аудитом и журналом безопасности) для

компьютера, на котором Вы хотите настроить политику аудита или просмотреть журнал аудита. По умолчанию Windows дает такие права группе Administrators (Администраторы);

файлы и папки, подвергаемые аудиту, должны находиться на дисках NTFS.

Настройка аудита

Вы должны настроить:

политику аудита, которая включает режим проверки, но не осуществляет аудит для конкретных объектов;

аудит для конкретных ресурсов, т,е. указывать определенные отслеживаемые события для файлов, папок, принтеров и

объектов Active Directory. Windows будет отслеживать и записывать в журнал эти события.

8.5.3.2. Настройка политики аудита

В первую очередь надо выбрать типы отслеживаемых событий. Для каждого события устанавливаются параметры

настройки, показывающие, какие попытки отслеживать: успешные или неудачные. Настраивать политики аудита можно через оснастку Group Policy (Групповая политика).

Типы событий, которые могут проверяться в Windows, представлены в таблице 8.1.

Таблица 8.1

Типы событий, которые могут проверяться в Windows

Описание

События входа в

Контроллер домена получил запрос на проверку

систему с

правильности учетной записи пользователя

ной записью

Управление

Администратор создал, изменил или удалил

учетную запись или группу. Учетная запись

пользователя была изменена, включена или вы-

ключена, или пароль был установлен или изме-

Доступ к службе

Пользователь получил доступ к объекту Active

каталогов

Directory . Вы должны указать конкретные объ-

екты Active Directory для отслеживания этого

типа события

События входа в

Пользователь входил в систему и выходил из нее

или подключился/не смог подключиться по сети

к данному компьютеру

Доступ к объе к-

Пользователь получил доступ к файлу, папке

или принтеру. Вы должны указать файлы, папки

или принтеры для проверки. Режим проверки

доступа к службе каталогов проверяет доступ

пользователя к определенному объекту Active

Directory. Режим доступа к объекту проверяет

доступ пользователя к файлам, папкам или

принтерам

Изменение

Были сделаны изменения в пользовательских

настройках безопасности, правах пользователя

или политиках аудита

Использование

Пользователь применил права, например, по из-

привилегий

менению системного времени. (Сюда не вклю-

чаются права, связанные с входом в систему и

выходом из нее)

Отслеживание

Пользователь произвел действие. Эта информа-

процесса

ция полезна программистам, желающим отсле-

дить детали выполнения программы

Системное

Пользователь перезагрузил или выключил ком-

пьютер, или произошло событие, влияющее на

безопасность Windows или на журнал безопас-

ности. (Например, журнал аудита переполнен, и

Windows не смогла записать новую информа-