Любой администратор 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 не смогла записать новую информа-

Иногда случаются события, которые требуют от нас ответить на вопрос «кто это сделал?» Такое может происходить «редко, но метко», поэтому к ответу на вопрос следует готовиться заранее.

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

    Когда и во сколько произошла проблема?

    Из какой наиболее близкой к этому времени резервной копии следует восстановить данные?

    Может, имел место системный сбой, который может повториться ещё раз?

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

Система Аудита встроена во все операционные системы Microsoft Windows NT : Windows XP/Vista/7, Windows Server 2000/2003/2008. К сожалению, в системах серии Windows Home аудит спрятан глубоко, и его настраивать слишком сложно.

Что нужно настроить?

Для включения аудита зайдите с правами администратора в компьютер, предоставляющий доступ к общим документам, и выполните команду Start Run gpedit.msc . В разделе Computer Configuration раскройте папку Windows Settings Security Settings Local Policies Audit Policies:

Дважды щёлкните по политике Audit object access (Аудит доступа к объектам) и выберите галочку Success . Этот параметр включает механизм слежения за успешным доступом к файлам и реестру. Действительно, ведь нас интересуют только удавшиеся попытки удаления файлов или папок. Включите Аудит только на компьютерах, непосредственно на которых хранятся отслеживаемые объекты.

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

Заранее угадать, кто именно удалит файл, невозможно, поэтому слежение и указывается за Всеми (Everyone). Удавшиеся попытки удаления отслеживаемых объектов любым пользователем будут заноситься в журнал. Вызовите свойства требуемой папки (если таких папок несколько, то всех их по очереди) и на закладке Security (Безопасность) → Advanced (Дополнительно) → Auditing (Аудит) добавьте слежение за субъектом Everyone (Все), его успешными попытками доступа Delete (Удаление) и Delete Subfolders and Files (Удаление подкаталогов и файлов):


Событий может журналироваться довольно много, поэтому также следует отрегулировать размер журнала Security (Безопасность) , в который они будут записываться. Для
этого выполните команду Start Run eventvwr . msc . В появившемся окне вызовите свойства журнала Security и укажите следующие параметры:

    Maximum Log Size = 65536 KB (для рабочих станций) или 262144 KB (для серверов)

    Overwrite events as needed.

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

Windows 2003/ XP )?

Нажмите Start Run eventvwr.msc Security (Безопасность). View Filter

  • Event Source:Security;
  • Category: Object Access;
  • Event Types: Success Audit;
  • Event ID: 560;


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

  • Object Name . Название искомой папки или файла;
  • Image File Name . Имя программы, с помощью которой удалили файл;
  • Accesses . Набор запрашиваемых прав.

Программа может запрашивать у системы сразу несколько типов доступа - например, Delete + Synchronize или Delete + Read _ Control . Значимым для нас правом является Delete .


Итак, кто же удалил документы (Windows 2008/ Vista )?

Нажмите Start Run eventvwr.msc и откройте для просмотра журнал Security (Безопасность). Журнал может быть заполнен событиями, прямого отношения к проблеме не имеющими. Щёлкнув правой кнопкой по журналу Security, выберите команду View Filter и отфильтруйте просмотр по следующим критериям:

  • Event Source: Security;
  • Category: Object Access;
  • Event Types: Success Audit;
  • Event ID: 4663;

Не спешите интерпретировать все удаления как злонамеренные. Эта функция зачастую используется при обычной работе программ - например, исполненяя команду Save (Сохранить), программы пакета Microsoft Office сначала создают новый временный файл, сохраняют в него документ, после чего удаляют предыдущую версию файла. Аналогично, многие приложения баз данных при запуске сначала создают временный файл блокировок (. lck ), затем удаляют его при выходе из программы.

Мне приходилось на практике сталкиваться и со злонамеренными действиями пользователей. Например, конфликтный сотрудник некоей компании при увольнении с места работы решил уничтожить все результаты своего труда, удалив файлы и папки, к которым он имел отношение. События такого рода хорошо заметны - они генерируют десятки, сотни записей в секунду в журнале безопасности. Конечно, восстановление документов из Shadow Copies (Теневых Копий) или ежесуточно автоматически создаваемого архива не составляет особого труда, но при этом я мог ответить на вопросы «Кто это сделал?» и «Когда это произошло?».

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

Контроль на двух уровнях

Чтобы следить за доступом к объектам, необходимо организовать аудит Windows 2000 как на уровне системы, так и на уровне объектов. Сначала следует активизировать категорию Audit object access для успешных и неудачных событий. (Подробнее о том, как использовать системную политику аудита, рассказано в статье «Контроль событий регистрации в Windows 2000». Полный список статей этого автора о журналах безопасности Windows 2000 и Windows NT приведен во врезке «В предыдущих выпусках» - прим. ред.) Затем необходимо обеспечить аудит контролируемого объекта. Каждый объект имеет два ACL (список управления доступом): разграничительный ACL (DACL) и системный ACL (SACL).

Экран 1. Упрощенный вид DACL объекта.

Список DACL. В списке DACL перечислены пользователи, имеющие право доступа к объекту, и способы доступа. (Часто вместо DACL используется термин ACL.) Чтобы открыть DACL объекта из Windows Explorer (для папок и файлов) или в окне Printers (для принтеров), следует щелкнуть на объекте правой кнопкой мыши, выбрать пункт Properties и перейти к закладке Security (см Экран 1). На этой закладке дан упрощенный вид списка DACL, т. е. показаны разрешения только для одного пользователя или группы. Чтобы просмотреть полный список DACL, нужно щелкнуть на кнопке Advanced. Откроется диалоговое окно Access Control Settings объекта, показанное на Экране 2.

Список SACL. В списке SACL перечислены действия над объектом, подлежащие аудиту Windows 2000. SACL объекта состоит из элементов управления доступом (ACE). Элемент ACE точно определяет типы доступа, регистрируемые в журнале безопасности Windows 2000, когда конкретный пользователь или группа обращается к объекту. Специальный флаг каждого ACE показывает, к успешным или неудачным попыткам доступа относится данный элемент. Чтобы обратиться к SACL объекта, следует открыть диалоговое окно Access Control Settings и перейти к закладке Auditing. Каждый элемент в разделе Auditing Entries - это ACE. Из приведенного на Экране 3 списка SACL для файла примера (payroll.xls) видно, что Windows 2000 будет проверять успешные попытки записи и неудачные попытки чтения, предпринятые членами группы Everyone.


Экран 3. SACL объекта.

Контроль попыток доступа к объекту

Windows 2000 производит аудит доступа в тот момент, когда пользователь пытается получить доступ к объекту через прикладную программу. Когда пользователь обращается к объекту из приложения, программа запрашивает у Windows 2000 дескриптор (handle) объекта. С помощью дескриптора приложение выполняет операции над объектом. Прежде чем предоставить дескриптор, Windows 2000 сопоставляет DACL объекта с учетной записью пользователя, запустившего прикладную программу, и типами доступа (например, запись или чтение), запрошенными приложением. Затем Windows 2000 определяет, предусмотрена ли системной политикой аудита запись результатов этого сравнения в журнал. Например, если попытка доступа неудачна, система выясняет, активизирована ли политика аудита для регистрации неудачных обращений к объектам.

Если системной политикой аудита предусмотрена запись результата в журнал, то Windows 2000 обрабатывает SACL объекта. Система исследует каждый элемент ACE, имеющий отношение к результату, и определяет, какие из элементов идентифицируют учетную запись пользователя, запустившего приложение, и все группы, к которым он принадлежит. Затем Windows 2000 исследует типы доступа, указанные в этих ACE. Если хотя бы один тип доступа в ACE совпадает с любым из типов доступа, запрошенных приложением, то Windows 2000 генерирует событие с ID 560 «объект открыт» с соответствующим типом события (Failure Audit или Success Audit). В оснастке Event Viewer консоли Microsoft Management Console (MMC) сообщения о неудачном завершении какой-либо операции отмечены пиктограммой замка, а записи об успешном завершении операции - изображением ключа.

Предположим, что пользователь Гарольд работает с Microsoft Excel и пытается открыть файл payroll.xls. Excel запрашивает у Windows 2000 дескриптор для payroll.xls. Windows 2000 сравнивает DACL файла с учетной записью Гарольда и запросом на чтение, поступившим от Excel; согласно DACL, у Гарольда нет права на чтение payroll.xls. Как показано на Экране 2, доступ к payroll.xls имеют только Administrators и группа HR, а Гарольд не является членом ни одной из этих групп. Windows 2000 выясняет, что системной политикой аудита предусмотрена регистрация неудачных попыток обращения к объекту, поэтому она просматривает SACL файла payroll.xls и исследует каждый элемент ACE, контролирующий неудачные попытки доступа. Windows 2000 определяет, какие из этих элементов ACE указывают на учетную запись Гарольда или группу, к которой он принадлежит. Как показано на Экране 3, SACL объекта содержит ACE, который относит неудавшуюся операцию чтения к группе Everyone, поэтому Windows 2000 регистрирует событие с ID 560 (см. Экран 4).

Экран 4. Событие с ID 560 неудачной попытки доступа.

Предположим, что пользователь Салли также пытается открыть файл payroll.xls из Excel. Поскольку Салли является членом группы HR, она имеет право выполнять операции чтения и записи в файле payroll.xls. Системная политика аудита настроена на регистрацию успешных попыток доступа к объектам, и SACL файла содержит ACE, относящийся к успешным операциям записи и группе Everyone, поэтому Windows 2000 регистрирует событие с ID 560 (см. Экран 5).

Экран 5. Событие с ID 560 успешного доступа.

Разобраться в полях события с ID 560 нетрудно. Значение параметра Object Server всегда Security. В поле Object Type идентифицируется объект аудита - файл, папка, раздел реестра, принтер или служба. Windows 2000 заполняет поле New Handle ID лишь в том случае, если доступ к объекту был предоставлен. Если пользователь не имеет соответствующих полномочий, то доступ не предоставляется, и Windows 2000 не создает ID дескриптора. Operation ID - просто число, которое увеличивается на единицу для каждой операции, выполняемой в Active Directory (AD).

Теоретически, с помощью поля Process ID можно вычислить приложение, через которое пользователь открыл объект. Однако соответствующее событие с ID 592 (новый процесс), генерируемое категорией Audit process tracking, показывает ID процесса в другом формате, нежели все остальные события Windows 2000. По некоторым сведениям, разработчики Microsoft устранят эту проблему в версиях Windows XP и Windows Server - известных под названием Whistler. Для событий, отображающих непрямой доступ к объектам, Process ID идентифицирует серверное приложение, а не клиентскую программу, через которую пользователь открыл объект. Если пользователь открывает файл в каталоге общего доступа, то Process ID указывает на процесс System как на программу, открывшую объект. Чтобы проверить эту информацию, можно открыть Task Manager, перейти к закладке Processes и посмотреть идентификатор процесса в столбце PID.

Поля Primary User Name и Primary Domain идентифицируют учетную запись пользователя, напрямую обратившегося к объекту. Когда пользователь обращается к объекту со своего локального компьютера через настольное приложение, такое, как Microsoft Word или Excel, то Primary User Name и Primary Domain показывают учетную запись компьютера, а поля Client User Name и Client Domain - учетную запись пользователя. Например, на Экране 6 показано событие с ID 560, которое было зарегистрировано, когда пользователь Джон подключился к сетевому диску на файл-сервере Tecra и открыл документ budget.doc. Тогда в поле Primary User Name стоит имя TECRA$, соответствующее учетной записи файл-сервера в домене. Client User Name идентифицирует Джона как пользователя, работающего на клиентской стороне.

Экран 6. Событие с ID 560 непрямого доступа.

Поля Primary Logon ID и Client Logon ID содержат идентификатор logon ID, присваиваемый при регистрации с учетной записью пользователя, обратившегося к объекту. Чтобы определить, в каком сеансе был произведен доступ, следует посмотреть на событие с ID 540 (удаленная регистрация) или с ID 528 (все другие виды регистрации) с этим идентификатором (подробнее эти события описаны в статье «Контроль событий регистрации в Windows 2000».) Если пользователь напрямую открывает объект на своей локальной машине, то Primary Logon ID события с ID 560 соответствует Logon ID события с ID 528, зафиксированного Windows 2000 при регистрации пользователя в системе; поле Client Logon ID остается пустым. Если пользователь обращается к файлу на удаленной машине, то поле Primary Logon ID события с ID 560 идентифицирует сеанс, связанный с учетной записью локального компьютера, а поле Client Logon ID события с ID 528 соответствует Primary Logon ID.

В поле Accesses указаны типы доступа, запрошенные приложением. Одни типы доступа специфичны для определенного класса объектов, другие применимы к любому объекту. В Таблице 1 перечислены и описаны самые распространенные типы доступа.

Когда пользователь открывает файл или папку, в поле Accesses отмечаются предоставленные пользователю типы доступа, специфичные для данной папки или файла. Эти типы доступа соответствуют специальным разрешениям, приведенным в DACL файла. Параметры ReadAttributes и WriteAttributes указывают, что пользователь открыл файл с возможностью изменения его свойств (только чтение, архивный, скрытый, системный). ReadEA и WriteEA применяются к расширенным атрибутам файла, определяемым конкретными приложениями. Чтобы увидеть расширенные атрибуты файла, нужно открыть Windows Explorer и щелкнуть на файле правой кнопкой мыши. Выбрав Properties, следует перейти к закладке Custom, а затем к закладке Summary.

Тип AppendData означает, что пользователь имеет право добавить данные в открытый файл. ReadData и WriteData означают, что пользователь, открывший файл, имеет возможность прочитать или изменить его данные. Если задан режим аудита запуска исполняемых файлов, то Windows 2000 регистрирует доступ типа Execute при каждом запуске программы.

Те же типы доступа - с небольшими отличиями - используются Windows 2000 для контроля работы с папками. AppendData указывает, что пользователь создал в папке подпапку. Windows 2000 регистрирует тип WriteData, если в папке создается новый файл. Чтобы определить имя нового файла или подпапки, нужно посмотреть на последующее событие с ID 560, соответствующее новому дочернему объекту. Windows 2000 регистрирует тип ReadData, если пользователь просматривает содержимое папки (например, командой Dir или через Windows Explorer).

Завершение работы с объектом

Когда пользователь открывает объект из приложения, Windows 2000 регистрирует событие с ID 560, а при закрытии объекта операционная система регистрирует событие с ID 562 (дескриптор закрыт). Поля события с ID 562 частично совпадают с полями события с ID 560.

Экран 7. Событие с ID 562.

Следует обратить внимание на поле New Handle ID события с ID 560 (см. Экран 5) и поле Handle ID события с ID 562 (см. Экран 7). Windows 2000 генерирует различные Handle ID для каждого открытого объекта. Таким образом, связав событие с ID 560 и событие с ID 562 с одинаковыми Hand-le ID, можно определить, как долго объект оставался открытым. Из оснастки Event Viewer следует открыть событие с ID 560 и запомнить Handle ID события. Затем нужно щелкнуть правой кнопкой мыши на журнале Security и выбрать функции View, Find. В поле Event ID следует ввести значение 562, а в поле Description - значение Handle ID. Если Event Viewer показывает сначала новые объекты, то следует изменить направление поиска на Up, а затем щелкнуть Find Next.

Не только файлы

Категория Audit object class используется не только для контроля доступа к файлам. Например, с помощью программы regedt32 можно запустить аудит разделов реестра и затем контролировать доступ к разделам и элементам реестра. Элементы реестра не имеют собственных списков DACL и SACL; как и операции управления доступом, операции аудита проводятся через родительский раздел реестра. Windows 2000 регистрирует типы доступа, соответствующие разрешениям в списке DACL раздела, и описывает разрешения, указанные в событии с ID 560. Если обращение к разделу реестра вызывает событие с ID 560, то Windows 2000 указывает в поле Object Type значение Key. Значение в поле Object Name начинается с REGISTRY, за которым следует ветвь и остальной путь к разделу. Например, подраздел HKEY_LOCAL_MACHI-NESOFTWAREAcme отображается как REGISTRYMACHINESOFT-WAREAcme.

Из меню Settings, Printers можно получить доступ к спискам SACL принтеров и реестра. Для этого достаточно выполнить те же операции, что и при доступе к SACL файла или папки, но отправной точкой будет служить не Windows Explorer, а меню Settings, Printers.

В статье Microsoft «Monitoring and Auditing for End Systems» (http://www.microsoft.com/technet/ security/monito.asp ) говорится, что можно выполнять аудит системных служб, но в действительности это не так. Даже если в SACL службы режим аудита включен (с помощью политик Group Policy через ComputerConfiguration, Windows Settings, Security Settings, System Services), Windows 2000 не заносит в журнал безопасности сведений о запуске, остановке и отключении службы. Идентификаторы событий документированы для некоторых других операций (например, удаления объекта), но этот механизм пока не функционирует.

Наследование SACL

В Windows 2000 схема наследования SACL повторяет схему DACL. По умолчанию, элементы SACL автоматически переходят от родительских папок и разделов реестра к дочерним объектам. Например, если разрешить аудит неудачных операций записи в папку, то все файлы и подпапки наследуют этот элемент SACL. Существует несколько уровней настройки наследования SACL.

Дочерний уровень. Чтобы блокировать передачу элементов родительского SACL дочернему объекту, следует открыть окно Access Control Settings (параметры управления доступом) дочернего объекта, перейти к закладке Auditing и снять флажок Allow inheritable auditing entries from parent to propagate to this object. Затем нужно щелкнуть OK или Apply. Если к моменту сброса флажка какие-то наследуемые элементы SACL уже были переданы объекту-потомку, Windows 2000 потребует подтвердить необходимость их удаления или создать их копии без наследования.

Родительский уровень. Чтобы разблокировать наследование в дочерних объектах, следует открыть диалоговое окно Access Control Settings родительского объекта, показанное на Экране 8, перейти к закладке Auditing и установить флажок Reset auditing on all child objects and enable propagation of inheritable auditing entries. После щелчка на кнопке OK или Apply операционная система отменяет аудит на всех дочерних объектах и сбрасывает флажок, чтобы администратор мог выборочно блокировать наследование на дочерних объектах. Данная функция сброса полезна, если администратор не знает, какой режим наследования установлен в системе, и хочет начать все сначала.

Можно также контролировать глубину наследования и указать последний дочерний объект, на который распространяется действие каждого элемента SACL. Чтобы отредактировать отдельный элемент SACL, нужно открыть диалоговое окно Access Control Settings родительского объекта, перейти к закладке Auditing, выбрать элемент и открыть окно Auditing Entry щелчком на кнопке View/Edit, как показано на Экране 9. В данном диалоговом окне предусмотрено два способа реализации наследования дочерними объектами. Раскрывающийся список Apply onto определяет типы объектов, которым передается запись об аудите. По умолчанию из списка выбирается значение This folder, subfolders and files (данная папка, подпапки и файлы), но пользователь может выбрать любое сочетание этих объектов. (На Экране 9 выбран режим аудита неудачных операций чтения только файлов, но не папок.) С помощью флажка Apply these auditing entries to objects and/or containers within this container можно определить, передаст ли Windows 2000 запись объектам, расположенным непосредственно в папке, или рекурсивно распространит эту запись на все дочерние уровни ниже данной точки.

Как лучше провести аудит

Какую стратегию избрать для аудита объектов? Во-первых, если требуется проверить определенный каталог или раздел реестра на нескольких машинах, нужно использовать групповые политики. Например, чтобы исследовать неудачные попытки записи в каталоге \%systemroot% на всех компьютерах домена, следует открыть оснастку MMC Active Directory Users and Computers и щелкнуть правой кнопкой мыши на корневом домене. Затем, выбрав Properties, необходимо перейти к закладке Group Policy. Отметив пункт Default Domain Policy Group Object (GPO), следует щелкнуть на кнопке Edit и пройти по Computer Configuration, Windows Settings, Security Settings, File System. Щелкнув правой кнопкой мыши на File System, нужно выбрать пункт Add File. Затем введите с клавиатуры

%systemroot%

и щелкните OK. На экране появится диалоговое окно разрешений, похожее на то, которое показано на Экране 1. Чтобы запустить процесс аудит объекта, следует повторить описанную ранее последовательность действий. При этом нужно внимательно отнестись к определению области аудита. Не рекомендуется ограничивать круг проверяемых лиц, так как взломщики часто используют чужие пароли. Поэтому в списке управления следует указать аудитом группу Everyone, чтобы охватить всех пользователей. Однако желательно ограничить подлежащие аудиту типы доступа и объекты. В процессе аудита объектов генерируется большой объем данных. Чтобы журнал безопасности не наполнялся бесполезными сведениями, лучше остановиться на небольшом числе типов доступа к немногим объектам.

Неопытным администраторам может показаться, что на самом деле активность системы не столь велика, как можно предположить исходя из событий Audit object access. Следует помнить, что Windows 2000 не выполняет аудит собственно операций (например, чтения и записи) над объектами; вместо этого проверяются запросы на доступ к объектам, поступающие из приложений. Поэтому в поле Accesses события с ID 560 указывается только тип доступа, который мог получить пользователь, но не сам факт выполнения пользователем каких-либо операций. Проблема усугубляется прикладными программами, которые автоматически запрашивают все типы доступа, независимо от того, нужны ли они пользователю. Представители Microsoft заявляют, что в конечном итоге в Windows 2000 может быть реализован аудит действительных операций, а не возможностей доступа.

С помощью категории Audit object access можно решить ряд трудных задач: например, выяснить, имели ли место попытки несанкционированного доступа к данным и кто мог изменить тот или иной файл. Несмотря на трудности анализа избыточных данных журнала, эта категория занимает достойное место в арсенале администратора.

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


Рис. 16.4.

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

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


Рис. 16.7.

Аудит

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

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


Рис. 16.9.

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