Кто удалил файл на файловом сервере
Перейти к содержимому

Кто удалил файл на файловом сервере

  • автор:

Кто удалил файл на файловом сервере

Сообщения: 25
Благодарности: 1

Как узнать кто удалил файлы с сервера DFS Win 2003, где настроить и смотреть ?

Сообщения: 4904
Благодарности: 496

Настраивайте политики аудита в Групповой политике (либо локально на сервере) и включайте аудит нужных событий на папку ( в свойствах папки)

——-
Если сообщение оказалось полезным, нажмите, пожалуйста, соответствующую кнопку.

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

Сообщения: 25
Благодарности: 1

Цитата monkkey:

включайте аудит нужных событий на папку ( в свойствах папки) »

Этот момент чего-то не очень понял.

Сообщения: 4904
Благодарности: 496

Security — Advanced — Auditing

——-
Если сообщение оказалось полезным, нажмите, пожалуйста, соответствующую кнопку.

Это сообщение посчитали полезным следующие участники:

Сообщения: 25
Благодарности: 1

Чтобы применить или изменить параметры политики аудита для локального файла или папки
Откройте проводник Windows.
Щелкните правой кнопкой мыши файл или папку, для которых требуется провести аудит, выберите команду Свойства и откройте вкладку Безопасность.
Нажмите кнопку Дополнительно и перейдите на вкладку Аудит.
Выполните одно из следующих действий.
Для добавления нового пользователя или группы нажмите кнопку Добавить. В поле Введите имена выбираемых объектов введите имя пользователя или группы и нажмите кнопку OK.
Чтобы отменить аудит для имеющейся группы или пользователя, выберите соответствующее имя, нажмите кнопку Удалить, кнопку OK, затем пропустите оставшуюся часть процедуры.
Чтобы просмотреть или изменить параметры аудита для имеющейся группы или пользователя, выберите соответствующее имя и нажмите кнопку Изменить.
В поле Применять выберите место, в котором следует провести аудит.
В поле Доступ укажите, для каких действий необходимо провести аудит, установив соответствующие флажки.
Чтобы производить аудит успешных событий, установите флажок Успех.
Чтобы прекратить аудит успешных событий, снимите флажок Успех.
Чтобы производить аудит неуспешных событий, установите флажок Отказ.
Чтобы прекратить аудит неуспешных событий, снимите флажок Отказ.
Или, чтобы прекратить аудит всех событий, нажмите кнопку Очистить все.
Если требуется предотвратить наследование этих элементов аудита последующими файлами и подпапками исходного объекта, установите флажок Применять этот аудит к объектам и контейнерам только внутри этого контейнера.
Важно!

Перед настройкой аудита файлов и папок необходимо разрешить аудит доступа к объекту, установив параметры политики аудита для категории событий доступа к объектам. Если аудит доступа к объекту не будет разрешен, при настройке аудита файлов и папок будет выдано сообщение об ошибке, а аудит файлов и папок проводиться не будет. Для получения дополнительных сведений о разрешении аудита доступа к объекту см. ссылку «См. также», раздел «Определение и изменение параметров политики аудита для категории события»
Примечания

Для выполнения этой процедуры необходимо войти в систему в качестве члена группы администраторов либо иметь право Управление аудитом и журналом безопасности в оснастке Групповая политика.
Чтобы открыть проводник, нажмите кнопку Пуск и выберите команды Программы, Стандартные и Проводник.
Для получения сведений об аудите раздела локального реестра см. ссылку «См. также», раздел «Аудит работы с разделом реестра».
После включения аудита доступа к объектам просмотрите результаты изменений в журнале безопасности в программе «Просмотр событий».
Настройка аудита доступа к файлам и папкам возможна только на дисках NTFS.
Если:
в диалоговом окне Элемент аудита для файла или папки в поле Доступ флажки недоступны;
в диалоговом окне Дополнительные параметры безопасности для файла или папки кнопка Удалить недоступна,
значит параметры аудита унаследованы от родительской папки.
Так как размер журнала безопасности ограничен, файлы и папки для проведения аудита следует выбирать аккуратно. Также следует решить, какой объем дискового пространства следует отвести под хранение журнала безопасности. Максимальный размер журнала безопасности задается в окне просмотра событий.
См. также

Аудит удаления сетевых папок Windows.

В локальной сети организации, в общей сетевой папке для обмена документами кто-то периодически удалял папки. Пользователей более 200. Чтоб отследить источник проблемы был применен аудит сетевой папки. Как это сделать написано далее.

Все действия выполняются на файловом сервере с Windows Server 2012 в доменной сети. Файловый сервер не является контроллером домена.

Аудит настроен через графический интерфейс. Альтернативный вариант аудита – через скрипт.

Активация политики аудита.

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

Нажимаем сочетание клавиш Win+R

В открывшейся строке «Выполнить» вводим команду:

gpedit . msc

В открывшемся редакторе локальной групповой политики переходим в свойства «Аудит файловой системы» по пути:

Конфигурация компьютера >> Конфигурация Windows >> Параметры безопасности >> Конфигурация расширенной политики аудита >> Политика аудита системы – Объект локальной групповой политики >> Доступ к объектам >> Аудит файловой системы (свойства).

Активируем галочкой «Настроить следующие события аудита:»

Нажимаем кнопку «ОК» для сохранения изменений.

Обновляем настройки локальной групповой политики для этого в строке «Выполнить» или в CMD вводим команду:

gpupdate / force

Настройка аудита сетевой папки.

Выбираем нужную папку.

У папки открыт общий доступ для всех на чтение/запись.

Переходим в свойствах папки на вкладку «Безопасность». Нажимаем кнопку «Дополнительно».

В открывшихся доп. параметрах переходим на вкладку «Аудит». Нажимаем кнопку «Продолжить».

Добавляем новый элемент для аудита.

Нажимаем на строчку «Выберите субъект».

Можно указать каких-то конкретных пользователей или всех сразу, написав Все.

В доменной сети можно создать группы в AD и назначать аудит по группам.

Применяется к: Для этой папки, её подпапок и файлов.

Нажимаем строчку «Отображение дополнительных разрешений».

Удаление подпапок и файлов.

Нажимаем ОК для сохранения настроек.

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

Закрываем свойства папки и переходим в журнал событий.

Просмотр журнала событий аудита.

Нажимаем сочетание клавиш Win+R.

Аудит удаления и доступа к файлам и запись событий в лог-файл средствами Powershell

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

Начнем.

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

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

#Задаем период, в течении которого мы будем запускать один раз скрипт, и искать нужные нам события. Здесь период задан - 1 час. Т.е. проверяются все события за последний час. $time = (get-date) - (new-timespan -min 60) #$BodyL - переменная для записи в лог-файл $BodyL = "" #$Body - переменная, в которую записываются ВСЕ события с нужным ID. $Body = Get-WinEvent -FilterHashtable @|where< ([xml]$_.ToXml()).Event.EventData.Data |where |where |where |where > |select TimeCreated, @ | %>>,@ | %>> |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 - содержит время и порядковый номер записи евента с И сортируем по порядковому номеру. #. Это важное замечание. При удалении файла создается сразу 2 записи, с и = Get-WinEvent -FilterHashtable @ | Select TimeCreated,@> |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 @|where |where< ([xml]$_.ToXml()).Event.EventData.Data |where |where |where |where > |select TimeCreated, @ | %>>,@ | %>> 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 

Как оказалось при удалении файлов и удалении дескрипторов создается одно и тоже событие в логе, под При этом в теле сообщения могут быть разные значения «Операции доступа»: Запись данных (или добавление файла), 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 |where |where |where > 

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

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

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

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

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

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

Заказать услугу

Оформите заявку на сайте, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.

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

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

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

Самое главное — нужно знать, где лежал наш очень-очень важный отчет. Находим папку, кликаем на ней правой кнопкой мыши. В всплывающем меню находим Свойства.
см. картинку 1.

Нам откроется следующее диалоговое меню, где нам надо выбрать вкладку Предыдущие версии.
см. картинку 2.

У нас на сервере настроено теневое копирование с интервалом в один час и глубиной до 9 дней. Настройка интервала и глубины хранения для каждого сервера могут отличаться, все зависит от свободного объема жестких дисков.
Нам нужно найти интересующую нас дату и кликнуть на ней.
После этого возможные действия станут активными.
см. картинку 3.

Открыть — откроет копию папки, где можно найти интересующий нас файл. Вы можете скопировать его в любую папку на компьютере. Это действие нужно выбирать, если у вас изменился или вы удалили один файл из множества других.
Копировать — создаст копию папки со всем содержимым.
Восстановить — восстановит все папки и файлы на этот период. Этот вариант подойдет бухгалтеру, если ему нужно «откатить» базу 1С на час или более назад.

Как видите, это очень просто!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *