Заметки о Windows и других программных продуктах Microsoft...

Аудит почтовых ящиков в Exchange

Аудит почтовых ящиков в Exchange

Каждому администратору Exchange периодически приходится сталкиваться  с ситуациями, когда необходимо определить, кто и что сделал с элементом в почтовом ящике. Например, кто-то из пользователей удалил письмо из общего почтового ящика и надо выяснить, кто именно. Exchange Server (начиная с версии 2010 SP1) позволяет регистрировать подобные действия и сохранять их в журнале аудита.

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

Всего есть три уровня аудита почтовых ящиков:

• AuditAdmin — аудит операций, произведенных администраторами почтовой системы;
• AuditDelegate — аудит операций, произведенных сторонними пользователями, которым предоставлен (делегирован) доступ к почтовому ящику;
• AuditOwner — аудит операций, произведенных владельцем ящика.

В журнале аудита регистрируются следующие действия.

 

Действие Описание Admin Delegate Owner
Copy Сообщение скопировано в другую папку. Да Нет Нет
Create В папке Календарь, Контакты, Заметки или Задачи создан новый элемент (напр. приглашение). Создание сообщений и папок не регистрируется. Да1 Да1 Да
FolderBind Папка почтового ящика была открыта. Да1 Да2 Нет
HardDelete Элемент удален из папки «Элементы для восстановления» (Recoverable Items) без возможности восстановления. Да1 Да1 Да
MailboxLogin Пользователь выполнил вход в свой почтовый ящик. Нет Нет Да3
MessageBind Сообщение было открыто или просмотрено в области просмотра. Да Нет Нет
Move Сообщение перемещено в другую папку. Да1 Да Да
MoveToDeletedItems Сообщение перемещено в папку «Удаленные». Да1 Да Да
SendAs Сообщение отправлено с использованием разрешений «Отправить как». Да1 Да1 Нет
SendOnBehalf Сообщение отправлено с использованием разрешений «Отправить от имени». Да1 Да Нет
SoftDelete Сообщение удалено из папки «Удаленные». Да1 Да1 Да
Update Параметры элемента обновлены. Да1 Да1 Да

 

1 —  настройка по умолчанию, при включенном аудите.
2 — записи действий, выполняемые делегатами, объединяются. За 24 часа в журнале создается одна запись для доступа к отдельной папке.
3 — аудит для учетных записей владельца почтового ящика работает только для имен входа POP3, IMAP4 или OAuth. Он не поддерживается для входа в почтовый ящик с использованием NTLM или Kerberos.

Включение и настройка

Управление аудитом почтовых ящиков возможно только из консоли PowerShell. Для примера возьмем ящик pupkin_va и посмотрим его настройки:

Get-Mailbox pupkin_va | fl audit*

вывод параметров аудита для ящика

 

Как видите, по умолчанию аудит отключен. Для начала включим его:

Set-Mailbox pupkin_va -AuditEnabled $true

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

Set-Mailbox pupkin_va -AuditOwner Move,MoveToDeletedItems,SoftDelete,HardDelete

Ну и для того, чтобы уменьшить размер журнала, сократим срок хранения записей с 90 до 30 дней:

Set-Mailbox pupkin_va -AuditLogAgeLimit 30 -Force

Затем еще раз проверим настройки.

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

 

При желании можно вывести каждую настройку отдельно. Для примера выведем настройки аудита для владельца ящика:

Get-Mailbox pupkin_va | select -ExpandProperty AuditOwner

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

 

Интересный факт —  максимальный срок хранения записей в журнале составляет 24 855 дней, т.е. примерно 68 лет. А если точнее, то фактический максимум составляет 24 855 дней, 3 часа, 14 минут и 7 секунд (24855.03: 14: 07). При попытке превысить это значение будет выдана ошибка.

максимальный срок хранения записей аудита

 

Как я уже говорил, журнал аудита хранится в самом ящике, в папке Audits, которая расположена в разделе Recoverable Items (Элементы  с возможностью восстановления). Папка скрыта от пользователей и просмотреть ее содержимое обычными способами невозможно (да и незачем). Оценить размер папки Audits и количество записей в ней можно из командной консоли Exchange, примерно такой командой:

Get-MailboxFolderStatistics -Identity pupkin_va | where {$_.Name -eq ″Audits″ -and $_.FolderType -eq ″Audits″} | ft Identity, ItemsInFolder, FolderSize -auto

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

папка Audits

 

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

Поиск в журнале аудита

Для каждого действия в журнале аудита генерируется запись, состоящая следующих полей.

 

Поле Содержимое
Operation
Выполненное действие:
Copy
Create
FolderBind
HardDelete
MailboxLogin
MessageBind
Move
MoveToDeletedItems
SendAs
SendOnBehalf
SoftDelete
Update
OperationResult Результат действия:
Failed
PartiallySucceeded
Succeeded
LogonType Тип учетной записи для входа пользователя, выполнившего действие:
Owner
Delegate
Admin
DestFolderId Идентификатор GUID папки назначения для операций перемещения.
DestFolderPathName Путь к папке назначения при операции перемещения.
FolderId Идентификатор GUID папки.
FolderPathName Путь к папке.
ClientInfoString Сведения для идентификации клиента или компонента Exchange, выполняющего операцию.
ClientIPAddress IP-адрес клиентского компьютера.
ClientMachineName Имя клиентского компьютера.
ClientProcessName Имя процесса клиентского приложения.
ClientVersion Версия клиентского приложения.
InternalLogonType Тип внутреннего пользователя (сотрудника организации), выполнившего операцию. Для этого поля допускаются те же значения, что и для поля LogonType.
MailboxOwnerUPN Имя участника-пользователя (User Principal Name, UPN) владельца почтового ящика.
MailboxOwnerSid Идентификатор безопасности владельца почтового ящика (SID).
DestMailboxOwnerUPN Имя участника-пользователя владельца почтового ящика назначения, выполняющего действия в нескольких почтовых ящиках.
DestMailboxOwnerSid Идентификатор безопасности владельца почтового ящика назначения, выполняющего действия в нескольких почтовых ящиках.
DestMailboxOwnerGuid Идентификатор GUID владельца почтового ящика назначения.
CrossMailboxOperation Запись сведений об операции, выполненной в нескольких почтовых ящиках (например, копирование или перемещение сообщений в другие почтовые ящики).
LogonUserDisplayName Отображаемое имя пользователя, выполнившего вход.
DelegateUserDisplayName Отображаемое имя делегированного пользователя.
LogonUserSid Идентификатор безопасности пользователя, выполнившего вход.
SourceItems Идентификатор ItemID элементов почтового ящика, в котором выполнено записанное действие (напр. перемещение или удаление). Для действий, выполненных для нескольких элементов, данное поле отображается как совокупность элементов.
SourceFolders Идентификатор GUID исходной папки.
ItemId Идентификатор элемента.
ItemSubject Тема элемента (напр. сообщения).
MailboxGuid Идентификатор GUID почтового ящика
MailboxResolvedOwnerName Разрешенное (resolved) имя пользователя почтового ящика в формате DOMAIN\ SamAccountName .
LastAccessed Время выполнения действия.
Identity Идентификатор записи журнала аудита.

 

Для поиска нужного события в журнале аудита есть три способа.

Синхронный поиск

Синхронный поиск производится с помощью командлета Search-MailboxAuditLog. Поиск стартует сразу, результаты выводятся в командной консоли Exchange. Одновременно искать можно только по одному ящику. Для примера запустим в тестовом ящике поиск действий владельца за 7 августа:

Search-MailboxAuditLog -Identity pupkin_va -LogonType Owner -StartDate 8/7/2019 -ShowDetails | fl Operation, OperationResult, LastAccessed, LogonUserDisplayName,*path, *subj*

Из записи прекрасно видно, что владелец зашел в ящик и сначала переместил сообщение в папку ″Удаленные″, а затем удалил его окончательно. В случае спорной ситуации этого будет достаточно, чтобы выяснить правду. В моем тестовом примере найдено всего два события. В реальной ситуации количество будет гораздо больше, поэтому лучше сразу сделать вывод результатов в файл.

просмотр событий аудита

Асинхронный поиск

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

Асинхронный поиск запускается с помощью командлета New-MailboxAuditLogSearch. Для примера запустим поиск действий владельца для тестового ящика pupkin_va, для получения результата укажем свой почтовый ящик:

New-MailboxAuditLogSearch -Name ″Pupkin″ -Mailboxes pupkin_va -LogonTypes Owner -StartDate 8/6/2019 -EndDate 8/9/2019 -ShowDetails -StatusMailRecipients novikov_kv@show.ru

настройка экспорта событий аудита

 

Скажу сразу, асинхронный поиск работает очень небыстро. В зависимости от критериев поиска и загруженности серверов процесс может занимать от 30-40 минут до нескольких часов. Посмотреть прогресс и определить хотя-бы примерное время получения отчета нельзя, остается только ждать и надеяться 🙂

Результаты приходят на указанный в команде ящик (или ящики) во вложенном XML-файле.

сообщение с результатами аудита

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

результат аудита в xml

Центр администрирования Exchange

Поиск по журналам аудита можно осуществлять и из графической оснастки ″Центр администрирования Exchange″. Для этого надо зайти в раздел Compliance management (Управление соответствием требованиям) и перейти на вкладку Auditing (Аудит). Отсюда можно запустить отчет о доступе к почтовым ящикам пользователей, не являющихся владельцами (Run a non-owner mailbox access report) или произвести экспорт записей журнала аудита (Export mailbox audit logs).

создание отчетов в центре администрирования Exchange

 

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

отчет по доступу к ящику не владельцев

 

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

экспорт действий не владельцев

Заключение

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

 
 
Комментарии
Антон

Формат дат записывается так: -StartDate «10.08.2021 0:00:00» -EndDate «26.08.2021 0:00:00»

Ответить