В Exchange Server 2010 с пакетом обновления SP1 появилась возможность аудита действий с почтовыми ящиками. Целью разработчиков было обеспечить соответствие законодательным требованиям в крупных компаниях. Среди других новшеств Exchange 2010, направленных на соответствие законодательным актам — поиск в нескольких почтовых ящиках методом обнаружения, почтовые ящики поиска, аудит администраторов и политики хранения. Все они сохранились в Exchange Server 2013. Аудит в некоторых отношениях дополняет почтовые ящики поиска, так как эти почтовые ящики обычно содержат много конфиденциальной информации, извлеченной из почтовых ящиков пользователей. Полезно иметь возможность аудита доступа к этим почтовым ящикам, чтобы управлять соответствующим доступом и операциями. Аудит почтовых ящиков также служит для отслеживания доступа к важным почтовым ящикам (например, принадлежащих руководителям) и помогает ответить на сакраментальный вопрос: «Кто отправил сообщение из общего почтового ящика?»

В этой статье я сначала расскажу о способах реализации аудита почтовых ящиков в Exchange 2010 и более новых версиях, а затем будет показано, как

включить и настроить аудит почтовых ящиков для сбора нужных данных; отменить аудит особых почтовых ящиков; искать данные аудита почтовых ящиков с помощью Windows PowerShell; составить отчет о данных аудита с помощью панели управления Exchange (ECP); получить данные аудита из серверов с высокой нагрузкой.

Все описанные в статье команды и функции аудита почтовых ящиков работают с локально развернутым экземпляром Exchange 2010 и Exchange Online в Microsoft Office 365. Они работают и с Exchange 2013, различие в том, что вместо панели управления (ECP) Exchange 2010 используется административный центр Exchange (EAC).

Принципы реализации аудита почтовых ящиков

Аудит почтовых ящиков в Exchange 2010 и более новых версиях имеет следующие характеристики.

  • Аудит настраивается для отдельных почтовых ящиков, а не для всего сервера.
  • Возможны три уровня доступа: пользователь, делегат и администратор.
  • Можно отслеживать до 11 различных действий, в том числе создание и обновление. Полный список действий приведен в статье Microsoft «Mailbox Audit Logging» (technet.microsoft.com/en-us/library/ff459237.aspx). Можно выполнять аудит всех действий, некоторых или только одного.
  • Элементы аудита хранятся в проверяемом почтовом ящике, а не в журнале событий.
  • Существуют команды PowerShell для редактирования настроек аудита и исследования элементов аудита.

В Exchange 2010 и более новых версиях элементы аудита почтовых ящиков хранятся в скрытой вложенной папке Audits папки Recoverable Items («Элементы с возможностью восстановления») почтового ящика пользователя. Ни один клиент не может увидеть элементы во вложенной папке Audits, так как они скрыты Exchange. Однако желающие могут посмотреть, как выглядят элементы, с помощью такой программы, как MFCMAPI (mfcmapi.codeplex.com).

Папка Recoverable Items выглядит как обычная папка. Однако клиентам приходится выполнять специальную обработку, чтобы обратиться к ее содержимому. Это делается для того, чтобы пользователи не могли взаимодействовать с данными контейнера «мусорная корзина», как того требуют законодательные акты. Некоторая часть информации в папке Recoverable Items открывается в Microsoft Outlook и Outlook Web App (OWA) через функцию Recover Deleted Items («Восстановить удаленные элементы»), которая перечисляет все элементы во вложенной папке Deletions папки Recoverable Items («Элементы с возможностью восстановления»). С помощью таких утилит, как MFCMAPI, можно раскрыть больше данных, открывая другие вложенные папки (например, Purges, Versions), но они не открывают вложенную папку Audits. Это логично, потому что вряд ли имеет смысл задействовать аудит почтового ящика только для того, чтобы позднее обнаружить, что администратор с помощью MFCMAPI удалил все записи, свидетельствующие о подозрительном поведении.

Аудит настраивается для отдельных почтовых ящиков, поэтому разумно хранить элементы аудита в самом почтовом ящике. Таким образом, элементы аудита накапливаются во вложенной папке Audits. Они остаются там в течение 90 дней (по умолчанию), после чего удаляются помощником для управляемых папок. Период хранения можно установить любым — до 24 855 дней, но, на мой взгляд, этого достаточно, чтобы время от времени проводить мониторинг доступа к почтовому ящику. Ситуации, в которых на почтовые ящики налагается арест, могут потребовать аудита этих почтовых ящиков, а также увеличения периода хранения.

Элементы аудита невелики — размер одного обычно составляет от 1,5 до 3 Кбайт, поэтому элементы аудита, накопленные за 90 дней, не должны негативно влиять на почтовый ящик. Пространство, занятое элементами аудита, не входит в квоту, выделяемую почтовому ящику.

Любопытно, что наличие вложенной папки Audits можно обнаружить с помощью командной консоли Exchange (EMS). Например, следующие команды проверяют почтовый ящик с именем VP Mailbox в поисках папки с именем Audits и сообщают число элементов и их размер. Фильтр подавляет отображение данных для любой созданной пользователем папки, которая также называется Audits. Команда имеет вид:

Get-MailboxFolderStatistics -Identity «VP Mailbox» |
? {$_.Name -eq «Audits» -and $_.FolderType -eq «Audits»} |
Format-Table Identity, ItemsInFolder, FolderSize -AutoSize

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

 

Элементы аудита в почтовом ящике
Экран 1. Элементы аудита в почтовом ящике

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

Включение и настройка аудита почтовых ящиков

Аудит почтовых ящиков по умолчанию отключен, поэтому первое, что нужно сделать — включить аудит для почтовых ящиков, для которых требуется собрать данные. В Exchange 2010 нет графического интерфейса для управления аудитом почтовых ящиков в консоли управления Exchange (EMC) или ECP. Графический интерфейс отсутствует и в Exchange 2013. Поэтому необходимо использовать команду Set-Mailbox. Например, следующая команда включает аудит для почтового ящика с именем CEO Mailbox:

Set-Mailbox -Identity 'CEO Mailbox' -AuditEnabled $True

Как только для почтового ящика включен аудит, Exchange начинает формировать элементы аудита на основе настроек аудита почтового ящика. Увидеть настройки можно с помощью команды

Get-Mailbox -Identity 'CEO Mailbox' | Format-List Audit*

На экране 2 показан вывод этой команды. Сообщается, что аудит включен (свойство AuditEnabled), и Exchange будет хранить элементы аудита в течение 90 дней (свойство AuditLogAgeLimit).

 

Результаты работы команды Get-Mailbox
Экран 2. Результаты работы команды Get-Mailbox

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

Свойство AuditAdmin определяет административные действия аудита. Это не такие действия, как подключение администратора к почтовому ящику, а, например, импорт сообщений в почтовый ящик из PST.

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

Как показано на экране 2, одно из стандартных действий аудита свойства AuditDelegate — SendAs. Важно отметить, что Exchange различает ситуации, в которых делегат использует SendAs (отправка, как если бы делегат был пользователем) и SendOnBehalf (содержит указание, что сообщение отправлено кем-то другим). Это два различных способа, с помощью которых делегат отправляет сообщение другому пользователю. Действие SendAs — одно из стандартных действий для AuditDelegate, но SendOnBehalf не относится к их числу. Поэтому, если нужно выполнить аудит обоих действий, необходимо добавить SendOnBehalf в список действий. Для этого можно воспользоваться командой Set-Mailbox, чтобы изменить действия аудита для свойства AuditDelegate:

Set-Mailbox -Identity 'CEO Mailbox' -AuditDelegate `
«Update, SoftDelete, HardDelete, SendAs, SendOnBehalf, `
MoveToDeletedItems, Copy»

Последнее свойство, показанное на экране 2, — AuditOwner. Неудивительно, что стандартный набор действий аудита, указанный для свойства AuditOwner, пуст. Это свойство управляет действиями, для которых выполняется аудит, когда пользователь почтового ящика обращается к элементам. Аудит каждого действия пользователя быстро сформирует множество элементов, поэтому данный уровень аудита лучше применять лишь в крайних случаях.

Отмена аудита особых почтовых ящиков

Возможны ситуации, в которых нежелательно создавать элементы аудита почтовых ящиков. Наиболее типичная ситуация — когда имеется учетная запись службы с делегированным доступом ко многим почтовым ящикам пользователей. Например, BlackBerry Enterprise Server (BES) компании Research in Motion для Microsoft Exchange должен обращаться к почтовым ящикам, чтобы извлечь и передать новые сообщения на устройства BlackBerry. Сервер использует тот же подход, чтобы реплицировать операции, выполняемые на мобильных устройствах, в почтовые ящики. Учетная запись службы BES может ежедневно выдавать огромное количество записей аудита, что нередко ведет к ситуации, когда записи аудита, требующие дальнейшего изучения, скрыты среди множеств записей, принадлежащих совершенно безопасным и тривиальным действиям. Чтобы этого избежать, можно воспользоваться командой Set-MailboxAuditBypassAssociation, указав учетные записи, которые следует игнорировать в процессе аудита почтовых ящиков. Например, в результате выполнения следующей команды будут игнорироваться любые обращения к учетной записи службы с именем BESService:

Set-MailboxAuditBypassAssociation -Identity 'BESService' `
-AuditBypassEnabled $True

Очевидно, не хотелось бы позволять администраторам запускать эту команду, чтобы исключить собственную учетную запись из аудита почтовых ящиков. На сегодня в Exchange нет способа запретить администратору выполнить такое действие, поэтому можно лишь позаботиться о том, чтобы включить аудит администратора в компании и ввести команду Set-MailboxAuditBypassAssociation в настройки аудита. Например, чтобы добавить команду в набор, подлежащий аудиту, выполните следующую команду:

Set-AdminAuditLogConfig -AdminAuditLogCmdlets `
«Set-MailboxAuditBypassAssociation, Set-Mailbox, `
New-Mailbox, *Transport*»

Обратите внимание, что выбран произвольный набор команд для аудита.

Поиск данных аудита почтовых ящиков с помощью PowerShell

В Exchange 2010 и Exchange 2013 существует две команды EMS для поиска данных аудита почтовых ящиков.

  • Search-MailboxAuditLog выполняет немедленный синхронный поиск в одном или нескольких почтовых ящиках, и выдает информацию на экран. Команду Search-MailboxAuditLog следует использовать, если нужно подтвердить, что аудит включен и функционирует для почтового ящика, или требуется отслеживать определенное событие аудита. Можно также создать отчет из полученных данных, направив их во внешний файл.
  • New-MailboxAuditLogSearch функционирует в фоновом режиме. Она извлекает данные аудита почтового ящика, помещает их в XML-файл и присоединяет файл к сообщению электронной почты, которое доставляется по выбранному адресу. С помощью команды можно подготовить отчет для внешнего специалиста, выполняющего юридическую проверку. Подробнее New-MailboxAuditLogSearch мы рассмотрим в разделе «Получение данных аудита для серверов с интенсивной нагрузкой».

Чтобы задействовать Search-MailboxAuditLog, выполните команду, аналогичную следующей:

Search-MailboxAuditLog -Identity Billing `
-LogonTypes Delegate -ShowDetails -StartDate «1/1/2012» `
-EndDate «1/31/2012» | ft Operation, OperationResult, `
LogonUserDisplayName, ItemSubject, LastAccessed, -AutoSize

В этом примере выполняется поиск в одном почтовом ящике, поэтому его имя передается как значение параметру -Identity. Если нужно выполнить поиск в нескольких почтовых ящиках, можно заменить параметр -Identity списком имен почтовых ящиков с разделительными запятыми, который передается параметру -Mailboxes.

В примерах результатов на экране 3 можно отметить две интересные вещи.

 

Результаты работы Search-MailboxAuditLog
Экран 3. Результаты работы Search-MailboxAuditLog

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

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

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

Search-MailboxAuditLog -Identity Billing `
-LogonTypes Delegate -ShowDetails `
-StartDate «1/28/2012 11:59» -EndDate «1/28/2012 12:15» |
? {$_.Operation -eq «Update»} | Format-Table

Измененный вариант вывода показан на экране 4.

 

Проверка подозрительного элемента
Экран 4. Проверка подозрительного элемента

Теперь видно, что был обновлен элемент в папке Sent Items, а свойство TextBody (то есть текст сообщения электронной почты) был изменен. Также можно увидеть, что использовался Outlook (или программа, вызывающая библиотеки Outlook, такие как MFCMAPI) и узнать IP-адрес компьютера, который применялся для внесения изменений. Этих сведений должно быть достаточно для разговора с пользователем, чтобы выяснить, что именно случилось, и почему.

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

Search-MailboxAuditLog -Identity 'CEO Mailbox' `
-ShowDetails |? {$_.Operation -eq «HardDelete»} |
Format-Table Operation, LastAccessed, LogonType, `
LogonUserDisplayName, FolderPathName, `
ItemSubject — AutoSize

Как мы видим на экране 5, результаты показывают, что администратор безвозвратно удалил один элемент из папки Budgets.

 

Аудит действий администратора
Экран 5. Аудит действий администратора

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

Подготовка отчетов об аудите с помощью ECP

Для тех, кто не хочет использовать PowerShell для извлечения данных аудита, компания Microsoft предусмотрела функции подготовки отчетов об аудите почтовых ящиков в ECP. Они находятся в узле Roles and Auditing в разделе Manage My Organization («Управление организацией»), как показано на экране 6. Функции далеки от совершенства, но подготовить отчеты можно, просто щелкая мышью.

 

Набор готовых отчетов
Экран 6. Набор готовых отчетов

По сути, графический интерфейс пользователя ограничен воображением его авторов и способностями программистов, подготовивших исходный текст. Не думаю, что разработчики Exchange 2010 отличаются недостатком воображения, но, вероятно, сжатые сроки и ресурсы помешали им создать полноценные функции подготовки отчетов. Гибкость и уровень детализации отчетов не удовлетворяют строгим требованиям аудита. К сожалению, в Exchange 2013 ничего не изменилось, функции подготовки отчетов в этой версии остались прежними.

С помощью одного из отчетов, Non-Owner Mailbox Access Report (отчет о доступе к чужим почтовым ящикам), можно выполнять поиск операций, выполняемых над почтовыми ящиками делегатами и администраторами. На экране 7 показано, как ECP запрашивает критерии поиска, такие как диапазон данных, почтовые ящики и тип доступа.

 

Окно для ввода критериев поиска сообщений
Экран 7. Окно для ввода критериев поиска сообщений

Любопытно, что клиенты Office 365 видят тип доступа, именуемый External users («Внешние пользователи»). Это доступ со стороны администраторов центров обработки данных Microsoft. Наиболее широко распространенным, скорее всего, будет поиск для Administrators and delegated users («Администраторы и пользователи-делегаты»), так как он охватывает такие действия, как сообщения, отправленные делегатами, и элементы, удаленные из почтовых ящиков. Перемещаться по экрану просто. Можно экспериментировать с параметрами, выясняя, как они влияют на вывод панели управления ECP. Не забудьте нажать кнопку Search («Поиск»), изменив параметр, инициирующий новый поиск ECP.

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

 

Результаты работы Search-MailboxAuditLog в окне консоли ECP
Экран 8. Результаты работы Search-MailboxAuditLog в окне консоли ECP

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

Например, взглянем на два элемента аудита, показанные на экране 8. Оба относятся к почтовому ящику Billing, выделенному в области выбора почтовых ящиков слева. Первая запись аудита сообщает, что пользователь с делегированным доступом выполнил обратимое удаление элемента в папке Test. Эта запись типична для ситуации, когда пользователь с доступом делегата обращается к почтовому ящику в Outlook или OWA, и удаляет сообщение (то есть перемещает его в папку Deleted Items). Вторая запись аудита — для того же пользователя, но на этот раз он выполнил вход без передачи прав доступа, чтобы выполнить обновление. Этот тип записей формируется административными операциями через EMS. В данном случае пользователь запустил команду Search-MailboxAuditLog для поиска и направил вывод в несуществующую папку. Exchange создал папку и зарегистрировал это действие, так как папка находится в почтовом ящике, подлежащем аудиту.

Получение данных аудита от серверов с высокой нагрузкой

Не составляет труда получить данные аудита от серверов с малой нагрузкой, но совсем другое дело — активно используемые серверы, в которых аудит включен для многих почтовых ящиков. Для этой цели в Exchange служит команда New-MailboxAuditLogSearch. ECP также использует команду New-MailboxAuditLogSearch в режиме Export mailbox audit logs («Экспорт журналов аудита почтовых ящиков»). В результате запуска New-MailboxAuditLogSearch выполняется фоновый поиск, а результаты представлены в форме вложенного файла в формате XML, который передается по электронной почте указанным получателям. Рассмотрим команду:

New-Mailbox-AuditLogSearch `
-Name «Check for Delegated Sends» `
-LogonTypes Delegate `
-StartDate '1/1/2012' -EndDate '2/1/2012' `
-StatusMailRecipients «Tony.Redmond@contoso.com»

В этом случае имена почтовых ящиков не указываются, поэтому Exchange выполнит поиск всех почтовых ящиков, доступных для аудита. Для поиска Office 365 необходимо добавить -ExternalAccess $False или ExternalAccess $True, чтобы указать, нужно ли задействовать аудит для администраторов центров обработки данных. Параметр -StatusMailRecipients содержит адреса электронной почты получателей отчета в формате SMTP. Это могут быть внутренние или внешние получатели, если требуется подготовить отчет аудита в рамках проверки соответствия нормативным актам под надзором внешних юридических советников.

Помощник для почтовых ящиков выполняет команду в фоновом режиме, и отчет в конечном итоге появляется в почтовом ящике в папке «Входящие» указанного получателя. Задержка составляет около 30 минут при локальном развертывании, но для Office 365 время ожидания гораздо больше. Проведенный мною тест занял почти 12 часов, а отчет появился ночью в 1 ч 30 мин. Вероятно, компания Microsoft настроила Office 365 для фоновой обработки в часы с малой нагрузкой на систему. На экране 9 показан пример вложенного файла XML.

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

 

Пример подготовленного New-MailboxAuditLogSearch файла аудита в формате XML
Экран 9. Пример подготовленного New-MailboxAuditLogSearch файла аудита в формате XML

К счастью, существуют более удачные альтернативы, но потребуется использовать EMS. Вы можете выбрать один из следующих вариантов.

  • Задействовать команду Search-MailboxAuditLog для обнаружения интересующих данных аудита, а затем построить отчет с использованием любых методов форматирования. Существует много различных примеров PowerShell, в которых показано, как формировать HTML-отчеты. Например, Дон Джонс приводит примеры в статье «Windows PowerShell: HTML Reports in PowerShell» в журнале TechNet Magazine (technet.microsoft.com/en-us/magazine/hh127059.aspx) и бесплатной электронной книге «Creating HTML Reports in PowerShell» (powershell.org/wp/2012/10/24/free-ebook-creating-html-reports-in-powershell/).
  • Использовать готовое решение, например опубликованное Энди Гроганом на сайте MSExchange.org (www.msexchange.org/articles-tutorials/exchange-server-2010/management-administration/using-powershell-simplify-mailbox-auditing-part1.html).

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

Фундамент для аудита почтовых ящиков

В Exchange 2010 компания Microsoft заложила надежный фундамент для аудита почтовых ящиков. Сбор элементов аудита производится ожидаемым способом, и пользователю предоставляются широкие возможности управления настройками аудита. Хранение элементов аудита в почтовом ящике — логичный выбор, и хорошо, что элементы автоматически удаляются по истечении определенного периода. Ограничены возможности подготовки отчетов и, отчасти, функции поиска. Хотелось бы, чтобы эти недостатки в следующей версии Exchange были устранены.