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

Прочитано: 2 513


Прочитано:
2 513

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

Система Аудита встроена во все операционные системы Microsoft Windows NT: Windows XP/Vista/7, Windows Server 2000/2003/2008.

Для настройки аудита сначала необходимо через локальную (доменную) политику включить аудит за объектами. Делается это следующим образом:

Открываем меню Выполнить «Alt + F2» и набираем gpedit.msc

Запускаем редактор конфигурирования - gpedit.msc.

Перед нами консоль настройки, как к компьютеру, так и к пользователю. Настраивать будет применительно к компьютеру. Создадим или уже есть каталог с файлами. К примеру, назову его shara.

C:shara

Включим аудитLocal Computer Policy – Computer Configuration – Windows Settings – Security Settings – Local Policies – Audio Policy – Audit object Access (поставить ) – Success.

Включаем политику аудита за объектами.

Далее переходим в свойства папки:

C:shara = Properties – Security – Advanced – Auditing – Add и добавляем пользователей / группу за которой будет производить аудит. В данном примере я, буду рассматривать аудит на Администраторов, которые могут создавать/удалять папки и все внутри.

Настраиваем аудит на каталог / каталоги.

Добавляем пользователей / группа за кем будет производиться аудит.

Добавляем учетные записи на кого мониторим и что мониторим.

При добавлении за кем, будем производить аудит настраиваем, что будем мониторить. В моем случае – это удаление подпапок и файлов.

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

Поставим галочку, чтобы мониторить только конкретный объект в этом каталоге shara.

Применяем настройки – Ok – Apply.

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

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

Данные цифры следует устанавливать только на основе своего опыта.

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

Как анализировать полученные данные аудита Server 2003.???

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

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

Отсортировываем по событиям.

Анализируем отсортированные данные.

Вывод данных.

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

Object Name:   C:shara3

Image File Name:           C:WINDOWSsystem32cmd.exe

Accesses:            DELETE

Удалял с помощью командной строки: rmdir /q c:shara3

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

Параметр на основе которого определяется работа мониторинга.

Вот таким способом можно настроить и проанализировать работу системы. На этом всё.


Наверняка многим из тех, кто читает эту статью, доводилось сталкиваться с ситуацией, когда пользователи обращаются к вам со следующей проблемой: пропал такой-то файл с общего ресурса, возможно, он был удален, или кто-нибудь добавил новый файл. Как можно проверить, кто это сделал? При этом поиск упоминания о данном файле в логах едва ли поможет вам найти то, что вы ищите. А при включенном на файл-сервере файловом аудите, записи в логах настолько объемные, что отыскать в них что-то «руками» попросту невыполнимо.

Но есть ли какое-нибудь более-менее эффективное решение данного вопроса? Об этом мы и поговорим в сегодняшней статье.

Включение и настройка параметров аудита доступа к объектам

Сперва необходимо включить в разделе «Групповые политики» аудит доступа к папкам и файлам. Для этого переходим в «Локальные политики бeзопасности» > «Конфигурирование расширенных политик безопасности» > «Доступ к объекту». Здесь потребуется включить функцию аудита файловой системы на отказ и успех, после чего настроить нужные папки на аудит. Для этого перейдем в свойства папок общего доступа на сервере файлов, далее в раздел «Безопасность», откуда следуем в дополнительные настройки («Дополнительно») > «Аудит». В данном разделе выбираем «Изменить», далее – «Добавить». Рекомендуется выбрать здесь «Все». На уровне применения для текущей папки и входящих в нее папок, а также файлов выберем действия, для которых будет вестись аудит.

Можно использовать следующую схему: «Создание папок» — Отказ/Успех, «Дозапись данных/создание файлов» — Отказ/Успех, «Удаление вложенных папок и файлов – Отказ/Успех. После того, как мы отметили необходимые пункты, нужно нажать «ОК» и дождаться применения выбранных политик к папкам и файлам. Далее появится множество событий, отражающих удачный и неудачный доступ к файлам, в журнале событий безопасности. В данном случае имеется прямо пропорциональная зависимость числа событий к количеству пользователей, которые работают с общим файловым ресурсом, а также их активности.

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

Скрипт поиска событий за определенный временной промежуток

Задаем поисковый параметр за промежуток, равный, к примеру, 1 часу:

$timе = (gеt-dаte) — (nеw-timеspan -min 60)

$BоdуL = «»

Переменная «$BodyL» требуется для записи события в лог файл.

$Bоdу = Gеt-WinEvеnt -FiltеrHashtable

@{LоgName=»Sеcurity»;ID=4663;StаrtTimе=$Timе

$}|whеre{ ([xml]$_.TоXml()).Evеnt.EvеntDаta.Dаta |whеre {$_.nаmе -еq «ObjеctNаmе»}|whеre {($_.’#tеxt’) -nоtmatch «.*tmp»} |whеre {($_.’#text’) -nоtmatch «.*~lоck*»}|whеre {($_.’#tеxt’) -nоtmatch «.*~$*»}} |selеct TimеCrеаtеd, @{n=»File_»;e={([xml]$_.TоXml()).Evеnt.EvеntDаta.Dаtа | ? {$_.Nаmе -еq «ОbjеctNаmе»} | %{$_.’#tеxt’}}},@{n=»User_»;e={([хml]$_.TоХml()).Еvеnt.ЕvеntDаtа.Dаtа | ? {$_.Nаmе -еq «SubjеctUsеrNаmе»} | %{$_.’#tехt’}}} |sоrt TimеCrеаted

В данном случае переменная $Body служит для записи всех событиях с требуемым ID.

Теперь необходимо проверить в цикле событие на наличие определенного слова (к примеру «Sewers»):

fоrеаch ($bоd in $bоdу){

if ($Воdу -mаtсh «.* Sewers *»){

Если в событии было обнаружено искомое слово, в первую строчку переменной $BodyL будут записываться данные, которые включают в себя полный путь к файлу, время, а также имя пользователя. В конце строки нужно будет перевести каретку на новую строку, в которую будут писаться данные о новом файле. Условие будет исполняться до тех пор, пока в эту переменную не будут вписаны все данные о доступе к общим пользовательским файлам.

$BоdyL=$BоdуL+$Bоd.TimеCrеаtеd+»`t»+$Bоd.File_+»`t»+$Bod.User_+»`n»

}

}

Поскольку число таких записей может быть очень большим, что будет также зависеть от активности общего ресурса данных, лучшим решением будет разбивка лога на составные части (например, по дням). Каждый день будет создаваться новый лог. Его имя будет состоять из даты, с указанием дня, месяца и года, а также названия Access:

$Dау = $timе.dау

$Mоnth = $Timе.Mоnth

$Yеаr = $Timе.Yеаr

$nаmе = «Ассеss-«+$Dау+»-«+$Mоnth+»-«+$Yеаr+».tхxt»

$Оutfilе = «sеrverServerLogFilеsAccеssFileLоg»+$nаmе

Теперь осталось записать в логи переменную с данными, собранными за последний час:

$BоdyL | оut-filе $Оutfilе -арреnd

Скрипт записи лога об удаленных файлах

$timе = (get-datе) — (nеw-timеspan -min 60)

#$Evеnts – здесь содержится порядковый номер и время записи ивента, который имеет ID= 4660. Также зададим параметр сортировки по порядковым номерам.

Когда файл удаляется, создается две записи: первая с ID=4660, и вторая с ID, равным 4663.

$Еvеnts = Gеt-WinEvеnt -FilterHаshtable

@{LоgNаmе=»Sеcurity»;ID=4660;StаrtTimе=$timе} | Sеlесt

TimeCrеаted,@{n=»Nоtе»;е={([хml]$_.ToXml()).Event.System.EvеntRecоrdID}} |sоrt Nоtе

$BоdyL = «»

$TimеSpаn = new-TimеSpan -sec 1

fоrеаch($еvеnt in $еvents){

$PrеvEvеnt = $Evеnt.Зaпись

$PrеvEvеnt = $PrеvEvеnt — 1

$TimeEvеnt = $Event.TimеCrеаtеd

$TimеEventEnd = $TimeEvent+$TimеSpan

$TimеEventStart = $TimеEvent- (new-timеspan -sеc 1)

$Bоdy = Gеt-WinEvеnt -FiltеrHаshtable @{LоgNаmе=»Sеcurity»;ID=4663;StаrtTimе=$TimеEventStart;ЕndTime=$TimеEvеntЕnd} |where {([хml]$_.ToХml()).Еvеnt.System.ЕvеntRеcоrdID -mаtch «$PrеvEvеnt»}|whеre{ ([xml]$_.TоXml()).Еvеnt.ЕvеntDаtа.Dаtа |whеre {$_.nаmе -еq «ОbjесtNаmе»}|whеre {($_.’#tеxt’) -nоtmаtсh «.*tmр»} |whеre {($_.’#tехt’) -nоtmаtch «.*~lоck*»}|whеre {($_.’#tеxt’) -nоtmatch «.*~$*»}} |sеlect TimеCrеаted, @{n=»Filе_»;e={([xml]$_.TоXml()).Evеnt.ЕventData.Dаta | ? {$_.Name -eq «ObjectName»} | %{$_.’#tеxt’}}},@{n=»User_»;e={([xml]$_.TоXml()).Evеnt.EventDаta.Data | ? {$_.Nаme -еq «SubjеctUserNаme»} | %{$_.’#text’}}}

if ($Bоdу -mаtch «.*Sewers*»){

$BоdyL=$BоdyL+$Body.TimeCrеаted+»`t»+$Bоdy.Filе_+»`t»+$Bоdу.Usеr_+»`n»

}

}

$Mоnth = $Timе.Mоnth

$Yеаr = $Time.Year

$nаmе = «DelеtedFiles-«+$Mоnth+»-«+$Yеаr+».tхt»

$Оutfile =

«serverSеrverLogFilesDeletedFilesLog»+$nаme

$BоdyL | оut-file $Оutfile –арpend

В двух словах о том, как это работает

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

Здесь мы смотрим нужную информацию с операцией «Delete». При переименовании файла будет создано два события ID=4663, отражающих операции «Запись Данных» и Delete. То есть, в логи будет попадать много лишней информации, и будет не совсем понятно, когда файлы были переименованы, а когда удалены.

В данном случае лучше ориентироваться на событие с ID, равным 4660, которое создается конкретно при удалении данных. Здесь содержится множество информации, кроме имени файла. Зато тут присутствует код дескриптора

Однако в предшествующем событии с ID=4663, такая информация, как время, а также имя файла указывается, а номер его дескриптора соответствует номеру события с ID, равным 4660.

То есть из обоих событий в цикле выборочно берутся определенные свойства с необходимой нам информацией, после чего параметр $BodyL записываются в текстовый лог-файл. В заданном временном промежутке, который определяется в $PrevEvent, осуществляется поиск события с требуемым порядковым номером. Собственно, по тому же принципу можно искать и добавляемые в хранилище файлы.

Учтите, что период времени, в течение которого необходимо искать определенное событие, вы должны определить самостоятельно. В зависимости от мощности серверного оборудования можно задавать от 5 до 10 минут на поиск.


Я думаю, многие сталкивались с задачей, когда к Вам приходят и спрашивают: «У нас тут файл пропал на общем ресурсе, был и не стало, похоже кто-то удалил, Вы можете проверить кто это сделал?» В лучшем случае вы говорите, что у вас нет времени, в худшем пытаетесь найти в логах упоминание данного файла. А уж когда включен файловый аудит на файловом сервере, логи там, мягко говоря «ну очень большие», и найти что-то там — нереально.
Вот и я, после очередного такого вопроса (ладно бекапы делаются несколько раз в день) и моего ответа, что: «Я не знаю кто это сделал, но файл я Вам восстановлю», решил, что меня это в корне не устраивает…

Начнем.

Для начала включим к групповых политиках возможность аудита доступа к файлам и папкам.
Локальные политики безопасности->Конфигурация расширенной политики безопасности->Доступ к объектам
Включим «Аудит файловой системы» на успех и отказ.
После этого на необходимые нам папки необходимо настроить аудит.
Проходим в свойства папки общего доступа на файловом сервере, переходим в закладку «Безопасность», жмем «Дополнительно», переходим в закладку «Аудит», жмем «Изменить» и «Добавить». Выбираем пользователей для которых вести аудит. Рекомендую выбрать «Все», иначе бессмысленно. Уровень применения «Для этой папки и ее подпапок и файлов».
Выбираем действия над которыми мы хотим вести аудит. Я выбрал «Создание файлов/дозапись данных» Успех/Отказ, «Создание папок/дозапись данных» Успех/отказ, Удаление подпапок и файлов и просто удаление, так же на Успех/Отказ.
Жмем ОК. Ждем применения политик аудита на все файлы. После этого в журнале событий безопасности, будет появляться очень много событий доступа к файлам и папкам. Количество событий прямопропорционально зависит от количества работающих пользователей с общим ресурсом, и, конечно же, от активности использования.

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

#Задаем период, в течении которого мы будем запускать один раз скрипт, и искать нужные нам события. Здесь период задан - 1 час. Т.е. проверяются все события за последний час.
$time =  (get-date) - (new-timespan -min 60)

#$BodyL - переменная для записи в лог-файл
$BodyL = ""

#$Body - переменная, в которую записываются ВСЕ события с нужным ID. 
$Body = Get-WinEvent -FilterHashtable @{LogName="Security";ID=4663;StartTime=$Time}|where{ ([xml]$_.ToXml()).Event.EventData.Data |where {$_.name -eq "ObjectName"}|where {($_.'#text') -notmatch ".*tmp"} |where {($_.'#text') -notmatch ".*~lock*"}|where {($_.'#text') -notmatch ".*~$*"}} |select TimeCreated, @{n="Файл_";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "ObjectName"} | %{$_.'#text'}}},@{n="Пользователь_";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "SubjectUserName"} | %{$_.'#text'}}} |sort TimeCreated

#Далее в цикле проверяем содержит ли событие определенное слово (к примеру название шары, например: Secret)	
foreach ($bod in $body){
	if ($Body -match ".*Secret*"){

#Если содержит, то пишем в переменную $BodyL данные в первую строчку: время, полный путь файла, имя пользователя. И #в конце строчки переводим каретку на новую строчку, чтобы писать следующую строчку с данными о новом файле. И так #до тех пор, пока переменная $BodyL не будет содержать в себе все данные о доступах к файлам пользователей.

		$BodyL=$BodyL+$Bod.TimeCreated+"`t"+$Bod.Файл_+"`t"+$Bod.Пользователь_+"`n"
	}
}

#Т.к. записей может быть очень много (в зависимости от активности использования общего ресурса), то лучше разбить лог #на дни. Каждый день - новый лог. Имя лога состоит из Названия AccessFile и даты: день, месяц, год.
$Day = $time.day
$Month = $Time.Month
$Year = $Time.Year
$name = "AccessFile-"+$Day+"-"+$Month+"-"+$Year+".txt"
$Outfile = "serverServerLogFilesAccessFileLog"+$name

#Пишем нашу переменную со всеми данными за последний час в лог-файл.
$BodyL | out-file $Outfile -append

А теперь очень интересный скрипт.

Скрипт пишет лог об удаленных файлах.

#Переменная $Time тут имеет такое же назначение как в предыдущем скрипте.

$time =  (get-date) - (new-timespan -min 60)

#$Events - содержит время и порядковый номер записи евента с ID=4660. И сортируем по порядковому номеру.
#!!!!Это важное замечание!!! При удалении файла создается сразу 2 записи, с ID=4660 и ID=4663.
$Events = Get-WinEvent -FilterHashtable @{LogName="Security";ID=4660;StartTime=$time} | Select TimeCreated,@{n="Запись";e={([xml]$_.ToXml()).Event.System.EventRecordID}} |sort Запись

#Самые важные команды поиска. Опишу принцип ниже, после листинга скрипта.
$BodyL = ""
$TimeSpan = new-TimeSpan -sec 1
foreach($event in $events){
	$PrevEvent = $Event.Запись
	$PrevEvent = $PrevEvent - 1
	$TimeEvent = $Event.TimeCreated
	$TimeEventEnd = $TimeEvent+$TimeSpan
	$TimeEventStart = $TimeEvent- (new-timespan -sec 1)
	$Body = Get-WinEvent -FilterHashtable @{LogName="Security";ID=4663;StartTime=$TimeEventStart;EndTime=$TimeEventEnd} |where {([xml]$_.ToXml()).Event.System.EventRecordID -match "$PrevEvent"}|where{ ([xml]$_.ToXml()).Event.EventData.Data |where {$_.name -eq "ObjectName"}|where {($_.'#text') -notmatch ".*tmp"} |where {($_.'#text') -notmatch ".*~lock*"}|where {($_.'#text') -notmatch ".*~$*"}} |select TimeCreated, @{n="Файл_";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "ObjectName"} | %{$_.'#text'}}},@{n="Пользователь_";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "SubjectUserName"} | %{$_.'#text'}}} 
	if ($Body -match ".*Secret*"){
		$BodyL=$BodyL+$Body.TimeCreated+"`t"+$Body.Файл_+"`t"+$Body.Пользователь_+"`n"
	}
}


$Month = $Time.Month
$Year = $Time.Year
$name = "DeletedFiles-"+$Month+"-"+$Year+".txt"
$Outfile = "serverServerLogFilesDeletedFilesLog"+$name


$BodyL | out-file $Outfile -append

Как оказалось при удалении файлов и удалении дескрипторов создается одно и тоже событие в логе, под ID=4663. При этом в теле сообщения могут быть разные значения «Операции доступа»: Запись данных (или добавление файла), DELETE и т.д.
Конечно же нас интересует операция DELETE. Но и это еще не все. Самое интересное, то что, при обычном переименовании файла создается 2 события с ID 4663, первое с Операцией доступа: DELETE, а второе с операцией: Запись данных (или добавление файла). Значит если просто отбирать 4663 то мы будем иметь очень много недостоверной информации: куда попадут файлы и удаленные и просто переименованные.
Однако мной было замечено, что при явном удалении файла создается еще одно событие с ID 4660, в котором, если внимательно изучить тело сообщения, содержится имя пользователя и еще много всякой служебной информации, но нет имени файла. Зато есть код дескриптора.

Однако предшествующим данному событию было событие с ID 4663. Где как раз таки и указывается и имя файла, и имя пользователя и время, и операция как не странно там DELETE. И самое главное там имеется номер дескриптора, который соответствует номеру дескриптора из события выше (4660, помните? которое создается при явном удалении файла). Значит теперь, чтобы точно знать какие файлы удалены, необходимо просто найти все события с ID 4660, а так же предшествующие каждому этому событию, событие с кодом 4663, в котором будет содержаться номер нужного дескриптора.

Эти 2 события генерируются одновременно при удалении файла, но записываются последовательно, сначала 4663, потом 4660. При этом их порядковые номера различаются на один. У 4660 порядковый номер на единицу больше чем у 4663.
Именно по этому свойству и ищется нужное событие.

Т.е. берутся все события с ID 4660. У них берется 2 свойства, время создания и порядковый номер.
Далее в цикле по одному берется каждое событие 4660. Выбирается его свойства, время и порядковый номер.
Далее в переменную $PrevEvent заносится номер нужного нам события, где содержится нужная информация об удаленном файле. А так же определяются временные рамки в которых необходимо искать данное событие с определенным порядковым номером (с тем самым который мы занесли в $PrevEvent). Т.к. событие генерируется практически одновременно, то поиск сократим до 2х секунд: + — 1 секунда.
(Да, именно +1 сек и -1 сек, почему именно так, не могу сказать, было выявлено экспериментально, если не прибавлять секунду, то некоторые может не найти, возможно связано с тем, что возможно два эти события могут создаваться один раньше другой позже и наоборот).
Сразу оговорюсь, что искать только по порядковому номеру по всем событиям в течении часа — очень долго, т.к. порядковый номер находиться в теле события, и чтобы его определить, нужно пропарсить каждое событие — это очень долго. Именно поэтому необходим такой маленький период в 2 секунда (+-1сек от события 4660, помните?).
Именно в этом временном промежутке ищется событие с необходимым порядковым номером.
После того как оно найдено, работают фильтры:

|where{ ([xml]$_.ToXml()).Event.EventData.Data |where {$_.name -eq "ObjectName"}|where {($_.'#text') -notmatch ".*tmp"} |where {($_.'#text') -notmatch ".*~lock*"}|where {($_.'#text') -notmatch ".*~$*"}}

Т.е. не записываем информацию об удаленных временных файлах (.*tmp), файлах блокировок документов MS Office (.*lock), и временных файлах MS Office (.*~$*)
Таким же образом берем необходимые поля из этого события, и пишем их в переменную $BodyL.
После нахождения всех событий, пишем $BodyL в текстовый файл лога.

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

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

Рекомендации

Вам придется самим определить время в течении которого вы будете искать нужные события. Чем больше период, тем дольше ищет. Все зависит от производительности сервера. Если слабенький — то начните с 10 минут. Посмотрите, как быстро отработает. Если дольше 10 минут, то либо увеличьте еще, вдруг поможет, либо наоборот уменьшите период до 5 минут.

После того как определите период времени. Поместите данный скрипт в планировщик задач и укажите, что выполнять данный скрипт необходимо каждые 5,10,60 минут (в зависимости какой период вы указали в скрипте). У меня указано каждый 60 минут. $time = (get-date) — (new-timespan -min 60).

PS

У меня оба эти скрипта работают для сетевого ресурса в 100Гб, на котором ежедневно активно работают в среднем 50 пользователей.
Время поиска удаленных файлов за час — 10-15 минут.
Время поиска всех файлов, к которым был доступ — от 3 до 10 минут. В зависимости от нагрузки на сервер.

Среда, 31 — Август — 2011

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

        Практически повсеместно существуют проектные отделы, бухгалтерия, разработчики и другие категории сотрудников, совместно работающие над группами документов, хранящихся в общедоступной (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 (Безопасность). Журнал может быть заполнен событиями, прямого отношения к проблеме не имеющими. Щёлкнув правой кнопкой по журналу 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 (Теневых Копий) или ежесуточно автоматически создаваемого архива не составляет особого труда, но при этом я мог ответить на вопросы «Кто это сделал?» и «Когда это произошло?».

Last Content Update: 05-Oct-2010

Аудит — это процесс, позволяющий фиксировать события, происходящие в операционной системе и имеющие отношение к безопасности: например, регистрация в системе или попытки создания объекта файловой системы, получения к нему доступа или удаления. Информация о подобных событиях заносится в файл журнала событий операционной системы.
После включения аудита операционная система начинает отслеживать события, связанные с безопасностью. Полученную в результате информацию (журнал Security) можно просмотреть с помощью оснастки Event Viewer (Просмотр событий). В процессе настройки аудита необходимо указать, какие события должны быть отслежены. Информация о них помещается в журнал событий. Каждая запись журнала хранит данные о типе выполненного действия, пользователе, выполнившем его, а также о дате и моменте времени выполнения данного действия. Аудит позволяет отслеживать как успешные, так и неудачные попытки выполнения определенного действия, поэтому при просмотре журнала событий можно выяснить, кто предпринял попытку выполнения неразрешенного ему действия.
Настройка аудита может выполняться как в один, так и в два приема:
1. Сначала его следует активизировать с помощью оснастки Local Security Settings (Локальная политика безопасности) или Group Policy Object Editor (Редактор объектов групповой политики). При этом необходимо определить набор (тип) отслеживаемых событий. Это могут быть, например, вход и выход из системы, попытки получить доступ к объектам файловой системы и т. д. Для многих системных событий этой операции достаточно, и их регистрация начинается немедленно.
2. Затем следует указать, какие конкретно объекты необходимо подвергнуть аудиту, и для каких групп или пользователей он будет осуществляться. Эта операция выполняется с помощью Редактора списков управления доступом (ACL). Для разных объектов — файлов, реестра или объектов каталога Active Directory — используемый при этом пользовательский интерфейс будет непринципиально различаться.

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

В автономных системах Windows Server 2003 по умолчанию включен аудит событий регистрации в системе (logon events). На контроллерах домена под управлением Windows Server 2003 по умолчанию включен аудит большинства системных событий, за исключением доступа к объектам и процессам, а также событий использования привилегий.

Активизация аудита

Процедура активизации аудита одинакова для любых систем. На контроллерах домена нужно пользоваться оснасткой Domain Controller Security Policy. Для активизации аудита на изолированном компьютере:
1. Запустите оснастку Local Security Settings. Можно также воспользоваться оснасткой Group Policy Object Editor (введите в командной строке gpedit .msc).
2. В окне структуры откройте узел Local Policies | Audit Policy (Локальные политики | Политика аудита) (рис. 10.26).

1

Рис. 10.26. Настройка аудита на локальном компьютере

3. На правой панели появится список политик аудита. По умолчанию большинство из них имеет значение No auditing (Нет аудита). Для включения аудита следует изменить значения нужных параметров. Выполните двойной щелчок на устанавливаемой политике аудита. Появится диалоговое окно, с помощью которого можно разрешить аудит (см. рис. 10.26). В группе Audit these attempts (Вести аудит следующих попыток доступа) установите флажки Success (Успех) или Failure (Отказ), или оба.
4. Нажмите кнопку ОК.
Подобную операцию следует повторить для тех политик аудита, которые вы хотите активизировать. Для того чтобы отключить аудит, флажки Success и Failure следует снять.

Настройка и просмотр параметров аудита для папок и файлов

Чтобы настроить, просмотреть или изменить параметры аудита файлов и папок:
1. В окне программы Windows Explorer установите указатель мыши на файл или папку, для которой следует выполнить аудит, и нажмите правую кнопку. В появившемся контекстном меню выберите команду Properties (Свойства). В окне свойств папки или файла перейдите на вкладку Security (Безопасность).

Внимание
Напомним, что аудит возможен только на томах NTFS.

2. На вкладке Security нажмите кнопку Advanced (Дополнительно) и затем перейдите на вкладку Auditing (Аудит) (рис. 10.27).

2

Рис. 10.27. В этом окне можно настроить параметры аудита для выбранной папки

3. Если вы хотите проводить аудит для пользователя или группы, на вкладке Auditing нажмите кнопку Add (Добавить). Появится диалоговое окно Select Users, Computers, or Groups (см. рис. 4.6). Выберите имя нужного пользователя или группы и нажмите кнопку ОК. Откроется окно Auditing Entry (Элемент аудита) (рис. 10.28).

3

Рис. 10.28. В этом окне задаются события, аудит которых будет вестись для выбранного пользователя или группы

Здесь вы сможете установить все требуемые параметры аудита. В списке Apply onto (Применять) укажите, где следует выполнять аудит (этот список доступен только для папок). В окне Access (Доступ) необходимо указать, какие события нужно отслеживать: окончившиеся успешно (Successful!, Успех), неудачно (Failed, Отказ) или оба типа событий. Флажок Apply these auditing entries to objects and/or containers within this container only (Применять этот аудит к объектам и контейнерам только внутри этого контейнера) определяет, распространяются ли введенные вами настройки аудита на файлы и папки, находящиеся только в выбранной папке (по умолчанию флажок не установлен). В противном случае установите этот флажок (или выберите в списке Apply onto опцию This folder only (Только для этой папки)). Это позволит не выполнять аудит для тех дочерних объектов файловой системы, которые не представляют интереса. После завершения настройки аудита для папки или файла нажмите несколько раз кнопку ОК, чтобы закрыть все диалоговые окна.
4. Если вы хотите просмотреть или изменить настройки аудита для уже существующего пользователя или группы, нажмите кнопку Edit (Изменить). Опять появится окно Auditing Entry. Здесь вы сможете выполнить все необходимые изменения параметров аудита для выбранного вами пользователя или группы. По окончании внесения изменений закройте все окна свойств.

Область действия настроек аудита

Аудит, установленный для родительской папки, автоматически наследуется всеми дочерними папками и файлами. Это поведение можно изменять. Если на вкладке Auditing (Аудит) какая-нибудь строка в поле Auditing entries (Записи аудита) имеет значение, отличное от <not inherited> (не унаследовано), в столбце Inherited From (Наследовано от) и кнопка Remove (Удалить) недоступна, это значит, что данные настройки аудита унаследованы. В этом случае вы можете:

  •  изменить настройки аудита родительской папки, и они будут наследоваться всеми дочерними объектами;
  •  запретить наследование, сняв флажок Allow inheritable auditing entries from the parent to propagate to this object and all child objects (Переносить наследуемый от родительского объекта аудит на дочерние объекты);
  •  добавить другие записи аудита для выбранного объекта, нажав кнопку Add. Эти настройки аудита могут, в свою очередь, наследоваться дочерними объектами этого объекта. В поле Auditing entries новые записи будут иметь значение <not ingerited> (не унаследовано) в столбце Inherited From.

Область действия аудита настраивается в окне Auditing Entry, где в раскрывающемся списке Apply onto можно выбрать «глубину» распространения настроек аудита. Результирующее действие значения, введенного в этом поле, зависит также от того, установлен или нет флажок Apply these auditing entries to objects and/or containers within this container only. По умолчанию этот флажок снят. В табл. 10.8 и 10.9 показано, как настройки аудита действуют в случае, когда данный флажок соответственно снят и установлен. Как можно видеть, его состояние определяет значения последних двух столбцов этих таблиц: при установленном флажке никакие проверки не распространяются на содержимое вложенных папок.

Таблица 10.8. Действие настроек аудита при снятом флажке Apply these auditing entries to objects and/or containers within this container only

Значения в списке Apply onto Выполняется аудит текущей папки Выполняется аудит дочерних папок текущей папки Выполняется аудит файлов в текущей папке Выполняется аудит всех дочерних папок Выполняется аудит файлов во всех дочерних папках
This folder only
(Только для этой папки)
+        
The folder, subfolders and files
(Для этой папки, ее подпапок и файлов)
+ + + + +
This folder and subfolders
(Для этой папки и ее подпапок)
+ +   +  
This folder and files
(Для этой папки и ее файлов)
+   +   +
Subfolders and files only (Только для подпапок и файлов)   + + + +
Subfolders only
(Только для подпапок)
  +   +  
Files only (Только для файлов)     +   +

Таблица 10.9. Действие настроек аудита при установленном флажке Apply these auditing entries to objects and/or containers within this container only

Значения в списке Apply onto Выполняется аудит текущей папки Выполняется аудит дочерних папок текущей папки Выполняется аудит файлов в текущей папке Выполняется аудит всех дочерних папок Выполняется аудит файлов во всех дочерних папках
This folder only
(Только для этой папки)
+        
The folder, subfolders and files
(Для этой папки, ее подпапок и файлов)
+ + +    
This folder and subfolders (Для этой папки и ее подпапок) + +      
This folder and files
(Для этой папки и ее файлов)
о   +    
Subfolders and files only (Только для подпапок и файлов)   + +    
Subfolders only
(Только для подпапок)
  +      
Files only (Только для файлов)     +    

Отключение аудита файлов и папок

Для отключения аудита для некоторого файла или папки:
1. Откройте вкладку Auditing (Аудит) для требуемого файла или папки.
2. В окне Auditing entries (Элементы аудита) выберите нужную запись и нажмите кнопку Remove (Удалить). Аудит для соответствующего пользователя или группы вестись не будет. Если в этом поле не остается ни одной записи, это означает, что аудит данного файла или папки отключен полностью.

Примечание
Если кнопка Remove (Удалить) недоступна, это значит, что настройки аудита наследуются от родительской папки.


21.08.2009 —


Posted by |
ms windows server 2003

Sorry, the comment form is closed at this time.

Несмотря на то что в журнале событий системы безопасности Security Event Log операционной системы Windows 2003 Server теперь содержится значительно больше информации, чем когда-либо раньше, вопросы, связанные с загадочными идентификаторами

событий (ID) и кодами, по-прежнему остаются весьма туманными, а соответствующие описания в документации — неточными. К тому же здесь мы вновь сталкиваемся с теми же проблемами построения отчетов, архивирования, оповещения и объединения данных, которые имели место в Windows NT Server. Дополнительные трудности также связаны со страстью Microsoft к внесению в продукты множественных изменений в интерпретацию ID от версии к версии. Однако, если иметь под рукой необходимые инструменты и знать, что именно следует искать, из журнала безопасности можно почерпнуть очень много ценной информации.

В этой первой статье из планируемой серии материалов, посвященных журналам безопасности Windows 2003, я представлю общий обзор политики аудита и структуры самого журнала безопасности, что наверняка будет полезно для новичков в данной области. Более продвинутых «следопытов» журналов безопасности может заинтересовать информация, содержащаяся в примечаниях «Новое в Windows 2003» по каждой из рассматриваемых здесь категорий. В примечаниях содержится обзор тех существенных изменений, которые претерпел журнал безопасности системы Windows 2003. На экране 1 показана закладка Filter диалогового окна Event Viewer?s Security Properties, из которой следует, что все события, связанные с системой безопасности, делятся на девять категорий аудита. В последующих статьях будет более подробно рассмотрена каждая из этих категорий, а также будет показано, как можно извлечь из этих ценных ресурсов максимальное количество информации.


Экран 1. Категории системы безопасности в Event Viewer

Event Viewer

Журнал безопасности можно просматривать с помощью оснастки Event Viewer консоли Microsoft Management Console (MMC). События отображаются в виде некоторого набора стандартных полей, и каждый ID имеет уникальное описание. Стандартными являются поля идентификатора (ID), даты (date), времени (time), имени пользователя (username), имени компьютера (computer name), источника (source), категории (category) и типа (type). Для многих ID, в соответствии с архитектурой системы безопасности Windows, поле имени пользователя отображается как not useful (не используется), соответственно в таких случаях нужно в описании события просматривать поля, содержащие относящуюся к пользователю информацию. В поле имени компьютера всегда содержится имя локальной системы, поэтому информация из этого поля может быть полезной в основном в тех случаях, когда в общую базу данных объединяется информация из журналов нескольких разных компьютеров. Поле источника служит для того, чтобы отображать информацию о том, какой компонент системы или приложение послужили причиной данного события, но при этом для всех событий, занесенных в журнал безопасности, в данном поле будет установлено значение Security. В поле категории отображается одна из девяти категорий аудита, а поле типа может содержать значение Success Audit (аудит был успешен) или Failure Audit (неудачная попытка аудита). Таким образом, по этому полю можно отделить, например, события успешной регистрации в системе от отказов в регистрации. Описание события представляет собой совокупность статического текста на обычном языке и изменяемого списка динамических строк, вставляемых в определенные позиции в этом статическом тексте. Наиболее важная информация по многим событиям содержится именно в строках описания, существуют и программные инструменты для анализа этих данных и построения соответствующих отчетов.

В утилите Event Viewer имеется ряд механизмов поиска и фильтрации, но их возможности весьма ограниченны. Посредством данной утилиты можно выполнять сохранение и/или очистку журнала безопасности. Для сохранения копии журнала (после щелчка правой кнопкой и выбора пункта Save Event Log As) можно выбрать один из трех предлагаемых форматов: «родной» формат Event Viewer (файл с расширением .evt), формат данных, разделяемых запятой (Comma-Separated Value CSV), или формат с разделителем в виде табуляции.

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

В Event Viewer можно задать максимально допустимый размер журнала безопасности и предопределить те действия, которые система Windows должна выполнить при достижении журналом максимального размера. Чтобы увидеть окно установки этих параметров, следует щелкнуть правой кнопкой мыши на соответствующем журнале и выбрать пункт Properties («Свойства»). Здесь можно предписать Windows при необходимости перезаписывать более ранние события, прекращать дальнейшую регистрацию до тех пор, пока кто-либо не очистит журнал, или перезаписывать события, произошедшие ранее заданного количества дней. В последнем случае при заполнении журнала дальнейшая запись событий будет временно прекращена, пока не пройдет достаточно времени для того, чтобы в журнале появились события, удовлетворяющие установленным временным критериям и, соответственно, допускающие удаление.

Категории аудита

Можно настроить Windows 2003 таким образом, чтобы в журнал безопасности записывались только те события, которые соответствуют заданным категориям аудита. Для этого в списке из девяти категорий политики аудита нужно выбрать только те, что представляют интерес для занесения соответствующих им событий в журнал. Чтобы просмотреть действующие в данный момент настройки политики аудита компьютера, запустите, как показано на экране 2, редактор групповых политик (Group Policy Editor, GPE) и раскройте следующую ветвь: Local Computer PolicyComputer ConfigurationWindows SettingsSecurity SettingsLocal PoliciesAudit Policy. Обратите внимание, что порядок перечисления и наименования категорий журнала безопасности (экран 1) и соответствующих им политик аудита (экран 2) слегка различаются. Если посмотреть на экран 2, увидим, что для каждой категории можно включить аудит событий с успешным и/или неудачным результатом либо вообще отключить аудит для данной категории событий. Например, можно для категории Audit account logon events (выполнять аудит попыток регистрации с учетной записью в системе) включить аудит только для неудачных попыток, в результате чего в журнале событий Windows будут фиксироваться только те попытки регистрации в системе, которые по каким-либо причинам закончились неудачей.


Экран 2. Политики аудита системы безопасности

Упомянутые девять категорий аудита охватывают весьма широкий круг действий. Можно наблюдать за процедурами регистрации в системе и аутентификацией, за работой администратора, за поддержкой пользователей, групп и компьютеров, за действиями пользователей, связанными с доступом к файлам, за изменениями важных настроек параметров безопасности, за выполнением тех или иных программ, за изменениями свойств в Active Directory (AD) и т. д. Ниже приводятся краткие описания для каждой категории событий.

Регистрация и аутентификация

Одним из наиболее эффективных методов контроля действий пользователей и выявления атак на системы являются наблюдения за событиями регистрации в системе. Поскольку среда Windows имеет доменную архитектуру, для процессов регистрации в системе и аутентификации применяются различные подходы: если пользователь осуществляет регистрацию на своем компьютере при помощи доменной учетной записи, то данная система должна пройти процедуру аутентификации в AD на соответствующем контроллере домена (DC). Для отслеживания каждого из типов этих действий (или обоих вместе) в системе безопасности используются две категории событий: с помощью категории Logon/Logoff выполняется аудит событий, связанных с регистрацией, а категория Account Logon позволяет отслеживать события аутентификации.

Если мы вспомним эпоху Windows NT, то там категория Account Logon отсутствовала, а была только категория Logon/Logoff, что создавало значительные проблемы при необходимости отслеживать попытки аутентификации в домене. Информация о событиях категории Logon/Logoff записывалась в журналы тех компьютеров, где эти события произошли, т. е. в журналы рабочих станций и серверов домена, но не контроллеров домена. Поэтому, если требовалось отследить неудачные попытки регистрации в системах, приходилось просматривать журналы событий на каждой рабочей станции и сервере домена. Но еще хуже, что не было возможности отслеживать попытки регистрации с неавторизованных компьютеров.

Ситуация изменилась с появлением семейства продуктов Windows 2000, в них уже была предусмотрена категория Account Logon (хотя, на мой взгляд, название для нее было выбрано неудачно — правильнее было бы назвать эту категорию Authentication). Теперь стало возможным регистрировать все происходящие в домене события категории Account Logon на контроллере домена. Правда, при этом все равно требовалось отслеживать события на всех контроллерах домена, но, согласитесь, это намного лучше, чем просматривать журналы безопасности на каждом компьютере сети.

Несмотря на появление категории Account Logon, сохранилась и существовавшая категория событий Logon/Logoff. Причина этого заключается в том, что данная категория может помочь при необходимости проконтролировать весь сеанс регистрации в целом. При этом события категории Account Logon информируют о том, кем, где и когда предпринимались попытки регистрации в системе, а события категории Logoff/Logon сообщают о продолжительности этих сеансов. Кроме того, события типа Logon/Logoff содержат более подробную информацию о причинах неудачи той или иной попытки регистрации в системе.

Новое в Windows 2003. В Windows 2000 имеется набор идентификаторов для событий успешной аутентификации и еще один набор ID для событий неудачной аутентификации. В Windows XP события категории Account Logon не претерпели каких-либо изменений, но в системе Windows 2003 события этой категории содержат некоторые дополнительные данные. Следует также отметить, что разработчики Microsoft, по совершенно необъяснимым причинам, удалили некоторые ID для определенных событий неудачной аутентификации и объединили их с соответствующими событиями успешной аутентификации.

Управление учетными записями и доступ к службе каталогов

С помощью категории Account Management можно отслеживать изменения в учетных записях пользователей, групп и компьютеров, кроме того, она незаменима при наблюдении за некоторыми видами действий. Наилучший подход к управлению доступом состоит в том, чтобы предоставлять доступ группам, а не отдельным пользователям. С помощью категории событий Account Management можно легко идентифицировать случаи изменения членства в группах. Во многих случаях злоумышленники, получившие права административного доступа к системе, сначала создают новую учетную запись, а затем используют ее для дальнейших атак. С помощью событий категории Account Management факт создания новой учетной записи может быть легко выявлен. Использование категории Account Management может также помочь заставить администратора более ответственно относиться к своей работе. Если кем-то была случайно удалена учетная запись пользователя или внесены некорректные изменения в настройки пользователя или группы, то с помощью аудита событий категории Account Management подобные действия можно отследить.

Категория Directory Service Access обеспечивает низкоуровневый аудит объектов AD и их свойств. Поскольку данная категория имеет непосредственное отношение к AD, то активировать аудит подобных событий на системах, которые не являются контроллерами домена, не имеет ни малейшего смысла. Данная категория в значительной степени пересекается с Account Management, поскольку пользователи, группы и компьютеры тоже являются объектами AD. Но если отчеты Account Management содержат данные по высокоуровневым изменениям для пользователей, групп и компьютеров, то, применяя категорию Directory Service Access, можно обеспечить аудит объектов AD (в том числе пользователей, групп и компьютеров) на очень низком уровне. В категории Account Management каждому типу объектов и каждому событию доступа к объекту соответствует уникальный идентификатор ID. С другой стороны, в категории Directory Service Access для всех типов действий существует единственный идентификатор с ID 566. К ID 566 относятся тип объекта, имя объекта, имя пользователя, получившего доступ к объекту, а также тип доступа. В примере события, показанном на экране 3, администратор изменил в учетной записи Susan параметр job title.

Хотя категория Directory Service Access обладает весьма богатыми возможностями, тем не менее использоваться может лишь небольшая их часть. На контроллерах доменов Windows 2000 политика аудита событий Directory Service Access настроена по умолчанию таким образом, чтобы в журнал записывались как удачные, так и неудачные попытки изменений объектов AD, что приводит к наличию огромного количества событий. Отметим также, что названия типов объектов и свойств поступают в события с ID 566 непосредственно из схемы AD и могут при этом выглядеть весьма загадочно. Например, поле user?s city (город) отображается в виде «/» (местонахождение) а поле last name (фамилия) представлено в виде sn (surname). Обычно для обеспечения аудита событий, связанных с пользователями, группами и компьютерами, наибольший практический интерес представляет категория Account Management. Однако при этом следует понимать, что выполнять аудит изменений, вносимых в другие важнейшие объекты AD, такие как групповые политики (GPO) или организационные подразделения (organizational unit, OU), можно только с помощью категории Directory Service Access.

Новое в Windows 2003. В Windows 2003 исправлена имевшаяся в Windows 2000 ошибка, связанная с изменениями и сбросом пользовательского пароля. В документации на Windows 2000 указывается, что сбросу пароля в журнале событий соответствует ID 628, хотя на самом деле процедурам как сброса, так и изменения пароля в системном журнале соответствует один и тот же ID 627 и они всегда отображаются в отчетах как события смены пароля. В Windows 2003 смене пароля соответствует ID 627, а сбросу пароля — ID 628.

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

В принципе с помощью категории Object Access можно следить за доступом к файлам, папкам, принтерам, разделам реестра и системным службам, но в большинстве случаев данная категория используется для отслеживания доступа к файлам и папкам. Как только будет включен аудит по данной категории, в журнале безопасности сразу же отобразится некоторое количество событий, касающихся доступа к объектам в базе безопасности SAM. Однако каких-либо других событий, связанных с доступом к файлам или другим объектам, вы здесь, вероятнее всего, не увидите, поскольку каждый объект имеет свои настройки параметров аудита, а по умолчанию почти у всех объектов аудит отключен. Это правильная практика, поскольку, если в системе будет включен аудит попыток доступа к каждому файлу или объекту, то данная система до своей полной остановки будет заниматься только обработкой этих событий, а ее журнал безопасности быстро переполнится, вне зависимости от назначенного ему объема. Я рекомендую применять эту категорию только к критически важным файлам, действительно требующим механизмов слежения за доступом к ним.

Для того чтобы активизировать аудит событий для выбранного объекта, нужно открыть его диалоговое окно свойств, выбрать закладку Security, нажать кнопку Advanced, выбрать закладку Auditing, после чего нажать кнопку Add. Например, на экране 4 можно увидеть настройку параметров аудита для файла 1st Quarter Cost Centers.xls, который я открыл из Windows Explorer. Обратите внимание, что можно указывать конкретных пользователей или группы, доступ которых к данному файлу необходимо отслеживать, можно назначать аудит лишь для конкретного типа доступа либо аудит только успешных (или неудачных) попыток доступа к данному объекту. Как только будет включен аудит для соответствующего объекта, Windows начнет регистрировать события открытия, закрытия и другие типы событий для данного объекта согласно выбранной для него политике аудита.


Экран 4. Настройки аудита для объекта

Новое в Windows 2003. Безусловно, журнал безопасности в Windows 2000 выполняет очень важную функцию, информируя о том типе доступа к объекту, который имеет пользователь или приложение, но при этом остается неизвестным, что в действительности пользователь или приложение делают с этим объектом. Предположим, что пользователь А открыл документ, на который у него есть разрешения на чтение и запись. При этом в журнал Windows 2000 записывается событие с ID 560, которое говорит о том, что пользователь, имеющий разрешения доступа List Folder / Read Data и Create Files / Write Data, открыл файл. Когда А закроет файл, в журнал Windows 2000 будет занесено событие с ID 562, означающее, что пользователь закрыл файл. В Windows 2003 добавлено новое событие с ID 567. Если пользователь А изменит содержимое файла на компьютере с Windows 2003, в журнале между событиями открытия и закрытия соответствующего файла будет зарегистрировано событие с ID 567. В нем содержится информация о названии объекта, пользователе и том типе доступа, который этот пользователь в действительности применял. Если в данном месте журнала событие с ID 567 не зарегистрировано, это говорит о том, что пользователь не изменял содержимое файла.

Слежение за выполнением программ

Категория Detailed Tracking предоставляет администратору возможность мониторинга каждой программы, запущенной на системе. Можно контролировать запуск (ID 592) и закрытие (ID 593) пользователями любых приложений. Эти два события могут быть связаны друг с другом через идентификатор процесса (process ID), который можно найти в описаниях обоих событий. Для того чтобы получить полное представление о сеансе работы пользователя, можно задействовать механизмы слежения за процессами с аудитом процедур входа/выхода (logon/logoff), а также открытия/закрытия файлов (file open/close). При этом будет видно, когда пользователь регистрировался в системе, какие запускал программы и к каким файлам из этих программ обращался.

Новое в Windows 2003. В Windows 2003 в категорию Detailed Tracking добавлено два новых события. Событие с ID 601 позволяет отслеживать моменты установки в систему новых служб, что может пригодиться для контроля установки служб на серверах и рабочих станциях с целью проверки их легитимности и выявления наличия несанкционированных служб. При этом нужно понимать, что данное событие может применяться только к системным службам, но не к приложениям, запущенным пользователем на компьютере. Кроме того, для выявления «троянцев» и шпионских программ данное событие также неприменимо, поскольку подобного рода программы обычно не устанавливают себя на системы в качестве служб. Событие с ID 602 информирует о фактах создания задач для службы планировщика, но при этом не отслеживаются моменты внесения изменений, удаления или попыток запуска кем-либо этих задач.

Права пользователей

Для обеспечения контроля возможностей выполнения пользователями функций системного уровня, таких как изменение системного времени или выключение, в Windows применяется система прав пользователей (привилегий). Контроль использования этих прав может быть реализован с помощью категории Privilege Use. Для большинства прав в журнале Windows регистрируются события Privilege Use (ID 577 или 578), однако некоторые виды прав используются настолько часто, что разработчики Microsoft предпочли не регистрировать каждый факт их применения. Вместо этого, когда реализуется какое-либо из этих прав, в журнале Windows просто отражается факт использования права с ID 576.

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

Изменения политик

В тех журналах безопасности, которые мне довелось просматривать, я так и не обнаружил нескольких событий категории Policy Changes, которые, в соответствии с документацией Microsoft, должны записываться в журнал. Так, одни события, связанные с протоколом IP Security (IPSec), похоже, никогда не регистрируются в журнале (например, ID 613, 614 и 616), в то время как другие (ID 615) регистрируются. И тем не менее категория Policy Changes предназначена для регистрации событий, связанных с изменениями конфигурации параметров безопасности, включая изменения доверительных отношений, политики Kerberos, шифрующей файловой системы EFS и параметров QoS.

Новое в Windows 2003. В системе Windows 2000 событие с ID 615 относилось к категории Detailed Tracking, но в Windows 2003 оно перекочевало в категорию Policy Change. И это всего лишь один из примеров тех загадочных и ненужных изменений, которые мне удалось выявить при сравнении событий в системах Windows 2000 и Windows 2003. А вот еще одно интересное изменение: в документации утверждается, что при назначении и аннулировании пользовательских прав в журнал Windows заносятся события, имеющие соответственно ID 608 и 609. Однако в журнале Windows 2000 ни одно из этих событий не регистрируется. Что касается системы Windows 2003, то здесь при изменениях в правах пользователей происходит запись в журнал событий с ID 608 и 609, за исключением тех случаев, когда это связано с изменениями прав регистрации, таких как Allow logon locally и Access this computer from the network. В Windows 2003 для такого рода событий, в отличие от заявленных в документации ID 608 и 609, используются идентификаторы ID 621 и 622 (соответственно для предоставления и лишения прав). Подобные необъяснимые и недокументированные изменения приводят к нарушениям работы программ мониторинга и построения отчетов, которые выполняют фильтрацию и анализ событий, основываясь на категориях, ID, или на поле, расположенном в определенном месте в описании события.

Системные события

Категория System Events является вместилищем для разнообразных событий, касающихся системы безопасности. В данной категории система предоставляет информацию о процессах начальной загрузки (ID 512) и выключения (ID 513), а также о работе различных компонентов системы безопасности (в частности, о процессах регистрации и процедурах аутентификации) во время начальной загрузки системы. Здесь есть два чрезвычайно полезных события, а именно: событие с ID 517, информирующее пользователя об очистке журнала событий и о том, кто это сделал, и событие с ID 520, которое присутствует только в Windows 2003.

Новое в Windows 2003. При тестировании Windows 2003 в категории System Events единственным новым событием, которое мне действительно удалось обнаружить, было событие с ID 520. Наличие данного события в журнале говорит о том, что системные время и дата были изменены, здесь же в его описании приводятся новое и старое значения даты и времени.

Журнал безопасности является чрезвычайно мощным средством контроля действий пользователей и персонала подразделений ИТ, а также обнаружения вторжений, но при этом весьма непростым средством. Чем более глубоко удастся вникнуть в особенности его структуры, тем больших успехов можно добиться при работе с ним и тем больше данных можно извлечь из любых журналов безопасности с помощью имеющихся средств построения отчетов и выдачи оповещений.

Примечание автора

Данная серия статей построена на базе курса Security Log Secrets компании Monterey Technology Group.


Редактор Windows IT Pro и ведущий инструктор и разработчик курсов для программы по безопасности Windows NT/2000 института MIS Training. Его компания, Monterey Technology Group, занимается консалтингом в области информационной безопасности. Связаться с ним можно по адресу: rsmith@monterey techgroup.com

С помощью аудита событий доступа к объектам файловой системы вы можете определить конкретного пользователя, который создал, удалил или изменил определенный файл. В этой статье мы покажем, как настроить аудит событий удаления объектов в общей сетевой папке на Windows Server 2016. После настройки аудита, вы можете с помощью информации в журнале событий найти пользователя, который удалил на файловом сервере.

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

Содержание:

  • Включаем политику аудита доступа к файлам и папкам в Windows
  • Настройка аудита событий удаления файлов из конкретной папки
  • Запись событий удаления файлов в SQL базу (MySQL/MSSQL)
  • Запись информации о событиях удаления файлов в текстовый файл

Включаем политику аудита доступа к файлам и папкам в Windows

По умолчанию в Windows Server не включен аудит событий доступа к объектам на файловой системе. Вы можете включить и настроить аудит событий с помощью групповой политики. Если нужно включить политики аудита на нескольких серверах или компьютера, можно использовать доменные GPO (настраиваются с помощью консоли управления gpmc.msc). Если нужно настроить аудит только на одном сервере, можно воспользоваться локальной групповой политикой.

  1. Запустите консоль редактора локальной политики –
    gpedit.msc
    ;
  2. Перейдитевраздел GPO срасширенными политиками аудита Windows Settings -> Security Settings -> Advanced Audit Policy Configuration -> Object Access;
  3. Откройте политику Audit File System и укажите, что вы хотите сохранять в журнал только успешные события доступа к объектам файловой системы (Configure the following audit events -> Success);

    Также можно включить аудит доступа к локальным объектам с помощью политики Audit Object Access в разделе Windows Settings -> Security Settings -> Local Policy -> Audit Policy. Однако использование политики Audit File System предпочтительнее, поскольку она отслеживает только события NTFS.

    включить политику аудита доступа к сетевым папкам в windows server

  4. Сохраните изменения и обновите настройки локальной групповой политики с помощью команды
    gpupdate /force
    .

Настройка аудита событий удаления файлов из конкретной папки

Теперь нужно настроить аудит в свойствах общей сетевой папки, доступ к которой вы хотите отслеживать. Запустите проводник и откройте свойства общей папки. Перейдите на вкладку Security. Нажмите кнопку Advanced -> вкладка Auditing.

Если появится сообщение You must be an administrator or have been given the appropriate privileges to view the audit properties of this object, нажмите кнопку Continue.

настройка аудита доступа к сетевой папке в windows

Затем нажмите кнопку Add чтобы указать пользователя или группу, для которых нужно записывать все события аудита. Если вы хотите отслеживать события для всех пользователей, укажите группу Everyone.

Затем нужно указать использование каких разрешений доступа к объекту нужно записывать в лог. Чтобы сохранять в Event Log только события удаления файлов, нажмите кнопку Show advanced permissions. В списке событий оставьте аудит только для событий удаления папок и файлов — Delete и Delete subfolders and files.

Совет. Включение аудита доступа к объектам Windows накладывает дополнительные расходы на ресурсы системы. Всегда старайтесь минимизировать количество объектов и событий аудита, которые нужно отслеживать.

отслеживание удаления файлов в сетевой папке

Совет. Вы можете настроить аудит удаления файлов в папке с помощью через PowerShell:

$Path = "D:Public"
$AuditChangesRules = New-Object System.Security.AccessControl.FileSystemAuditRule('Everyone', 'Delete,DeleteSubdirectoriesAndFiles', 'none', 'none', 'Success')
$Acl = Get-Acl -Path $Path
$Acl.AddAuditRule($AuditChangesRules)
Set-Acl -Path $Path -AclObject $Acl

Теперь, если пользователь удалит любой файл или папку в сетевой папке, в журнале безопасности системы появляется событие File System -> Audit Succes c Event ID 4663 от источника Microsoft Windows security auditing.

Откройте mmc консоль Event Viewer (
eventvwr.msc
), разверните секцию Windows Logs -> Security. Включите фильтр событий по EventID 4663.

событие с кодом 4663 - удаление файла

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

An attempt was made to access an object.
Subject:
Security ID:                            CORPaaivanov
Account Name:                     aaivanov
Account Domain:                  CORP
Logon ID:                               0x61B71716
Object:
Object Server:                        Security
Object Type:                          File
Object Name:                        E:DistrBackup.rar
Handle ID:                              0x7bc4
Resource Attributes:            S:AI
Process Information:
Process ID:                             0x4
Process Name:
Access Request Information:
Accesses:                               DELETE
Access Mask:                         0x10000

кто удалил общий файл в сетевой папке

После настройки аудита, найдите в журнале Security вы сможете найти с:

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

Запись событий удаления файлов в SQL базу (MySQL/MSSQL)

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

Вы можете записывать все нужные событий в отдельную SQL базу данных. Для хранения событий можно использовать Microsoft SQL Server, Elasticsearch или MySQL/MariaDB.

В этом примере мы покажем, как записывать события аудита в отдельную таблицу БД на сервере MySQL. Формат таблицы:

  • Имя сервера;
  • Имя удаленного файла
  • Время удаления;
  • Имя пользователя, удалившего файл.

MySQL запрос на создание такой таблицы будет выглядеть так:

CREATE TABLE track_del (id INT NOT NULL AUTO_INCREMENT, server VARCHAR(100), file_name VARCHAR(255), dt_time  DATETIME, user_name VARCHAR(100),  PRIMARY KEY (ID));

Для получения событий с EventID 4663 из журнала Security за текущий день можно использовать такой PowerShell скрипт:

$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$User = $event.Event.EventData.Data[1]."#text"
$Computer = $event.Event.System.computer
}
}

Имеющиеся данные в событии удаления файла

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

Set-ExecutionPolicy RemoteSigned
Add-Type –Path ‘C:Program Files (x86)MySQLMySQL Connector Net 6.9.8Assembliesv4.5MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.7.7.13;uid=posh;[email protected];database=aduser'}
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"

$File = $File.Replace(‘’,’|’)
$User = $event.Event.EventData.Data[1]."#text"
$Computer = $event.Event.System.computer
$sql.CommandText = "INSERT INTO track_del  (server,file_name,dt_time,user_name ) VALUES ('$Computer','$File','$Time','$User')"
$sql.ExecuteNonQuery()
}
}
$Reader.Close()
$Connection.Close()

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

Теперь, чтобы узнать, кто удалил файл «document1 — Copy.DOC». Достаточно в консоли PowerShell выполнить следующий скрипт.

$DeletedFile = "%document1 - Copy.DOC%"
Set-ExecutionPolicy RemoteSigned
Add-Type –Path ‘C:Program Files (x86)MySQLMySQL Connector Net 6.9.8Assembliesv4.5MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.7.7.13;uid=posh;[email protected];database=aduser'}
$Connection.Open()
$MYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter
$MYSQLDataSet = New-Object System.Data.DataSet
$MYSQLCommand.Connection=$Connection
$MYSQLCommand.CommandText="SELECT user_name,dt_time    from  track_del where file_name LIKE '$DeletedFile'"
$MYSQLDataAdapter.SelectCommand=$MYSQLCommand
$NumberOfDataSets=$MYSQLDataAdapter.Fill($MYSQLDataSet, "data")
foreach($DataSet in $MYSQLDataSet.tables[0])
{
write-host "User:" $DataSet.user_name "at:" $DataSet.dt_time
}
$Connection.Close()

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

Запрос PowerShell к mysql БД для получении инфомации о пользователе, удалившем файл

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

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

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

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

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

Запись информации о событиях удаления файлов в текстовый файл

Если вы не хотите вести отдельную БД, можно сохранять события аудита удалений файлов в текстовый лог файл. Воспользуйтесь таким PowerShell скриптом:

$Outfile = "C:psdelete-file-log.txt"
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$User = $event.Event.EventData.Data[1]."#text"
$strLog = $Computer + " " + $File + " " +  $Time + " " +  $User
$strLog  | out-file $Outfile –append
}
}

лог со списком удаленных файлов в windows

[/alert]

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

Понравилась статья? Поделить с друзьями:
  • Windows 2003 server файл windows system32 config system
  • Windows 2003 server скачать обновления для windows
  • Windows 2003 server с драйверами sata
  • Windows 2003 server применение параметров компьютера
  • Windows 2000 server встроенная клиентская лицензия служб терминалов на устройство