Wazuh Office 365 - мониторинг аудита Microsoft 365
Wazuh обеспечивает мониторинг безопасности Microsoft 365 через модуль office365, который собирает журналы аудита из Office 365 Management Activity API. Модуль отслеживает действия пользователей в Exchange Online, SharePoint Online, Microsoft Teams, Azure Active Directory и событиях DLP. Интеграция позволяет обнаруживать подозрительные входы, несанкционированный доступ к почтовым ящикам, нарушения политик DLP и административные действия в рамках тенанта Microsoft 365.
Office 365 Management Activity API
Office 365 Management Activity API - это REST API, предоставляющий доступ к журналам аудита и активности из различных сервисов Microsoft 365. API использует модель подписок: клиент подписывается на определенные типы контента и периодически запрашивает новые события.
Типы контента
| Тип контента | Описание |
|---|---|
Audit.AzureActiveDirectory | События аутентификации, управления пользователями и группами в Microsoft Entra ID |
Audit.Exchange | Действия с почтовыми ящиками, правилами транспорта, антиспамом |
Audit.SharePoint | Операции с файлами, сайтами, разрешениями в SharePoint и OneDrive |
Audit.General | События рабочих нагрузок, не вошедших в другие категории (Teams, Power BI) |
DLP.All | Срабатывания политик Data Loss Prevention для Exchange, SharePoint и OneDrive |
Регистрация приложения Azure AD
Для работы модуля необходимо зарегистрировать приложение в Microsoft Entra ID и предоставить разрешения для доступа к Management Activity API.
Процедура регистрации
- Перейдите на portal.azure.com в раздел Microsoft Entra ID - App registrations
- Нажмите New registration
- Укажите имя (например,
Wazuh-Office365-Monitor) - Выберите Accounts in this organizational directory only (Single tenant)
- Зафиксируйте значения из раздела Overview:
- Application (client) ID
- Directory (tenant) ID
Создание секрета клиента
- Перейдите в Certificates & Secrets
- Нажмите New client secret
- Укажите описание и срок действия (рекомендуется 12-24 месяца)
- Скопируйте значение секрета (отображается только один раз)
Назначение разрешений API
- Перейдите в API permissions - Add a permission
- Выберите Office 365 Management APIs
- Выберите Application permissions
- Добавьте следующие разрешения:
| Разрешение | Описание |
|---|---|
ActivityFeed.Read | Чтение данных активности организации |
ActivityFeed.ReadDlp | Чтение событий DLP, включая обнаруженные конфиденциальные данные |
- Нажмите Grant admin consent for [Your Organization]
Конфигурация модуля office365
Модуль настраивается в ossec.conf на сервере Wazuh.
Базовая конфигурация
<office365>
<enabled>yes</enabled>
<interval>1m</interval>
<curl_max_size>1M</curl_max_size>
<only_future_events>yes</only_future_events>
<api_auth>
<tenant_id>YOUR_TENANT_ID</tenant_id>
<client_id>YOUR_CLIENT_ID</client_id>
<client_secret>YOUR_CLIENT_SECRET</client_secret>
<api_type>commercial</api_type>
</api_auth>
<subscriptions>
<subscription>Audit.AzureActiveDirectory</subscription>
<subscription>Audit.Exchange</subscription>
<subscription>Audit.SharePoint</subscription>
<subscription>Audit.General</subscription>
<subscription>DLP.All</subscription>
</subscriptions>
</office365>Конфигурация для государственных организаций (GCC)
<office365>
<enabled>yes</enabled>
<interval>5m</interval>
<curl_max_size>1M</curl_max_size>
<only_future_events>yes</only_future_events>
<api_auth>
<tenant_id>YOUR_TENANT_ID</tenant_id>
<client_id>YOUR_CLIENT_ID</client_id>
<client_secret>YOUR_CLIENT_SECRET</client_secret>
<api_type>gcc-high</api_type>
</api_auth>
<subscriptions>
<subscription>Audit.AzureActiveDirectory</subscription>
<subscription>Audit.Exchange</subscription>
</subscriptions>
</office365>Мультитенантная конфигурация
При мониторинге нескольких тенантов Microsoft 365 добавьте несколько блоков api_auth:
<office365>
<enabled>yes</enabled>
<interval>1m</interval>
<curl_max_size>1M</curl_max_size>
<only_future_events>yes</only_future_events>
<api_auth>
<tenant_id>TENANT_ID_1</tenant_id>
<client_id>CLIENT_ID_1</client_id>
<client_secret>CLIENT_SECRET_1</client_secret>
<api_type>commercial</api_type>
</api_auth>
<api_auth>
<tenant_id>TENANT_ID_2</tenant_id>
<client_id>CLIENT_ID_2</client_id>
<client_secret>CLIENT_SECRET_2</client_secret>
<api_type>commercial</api_type>
</api_auth>
<subscriptions>
<subscription>Audit.AzureActiveDirectory</subscription>
<subscription>Audit.General</subscription>
</subscriptions>
</office365>Параметры модуля
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
enabled | yes | Включение или отключение модуля |
interval | 10m | Интервал опроса API (s/m/h/d) |
curl_max_size | 1M | Максимальный размер ответа API |
only_future_events | yes | Сбор только новых событий после первого запуска |
tenant_id | - | Идентификатор тенанта Azure AD |
client_id | - | Идентификатор приложения (Application ID) |
client_secret | - | Секрет клиента |
api_type | commercial | Тип подписки (commercial, gcc, gcc-high) |
API-точки доступа по типу подписки
| Тип | URL |
|---|---|
| Enterprise | https://manage.office.com/api/v1.0/{tenant_id}/activity/feed/{operation} |
| GCC | https://manage-gcc.office.com/api/v1.0/{tenant_id}/activity/feed/{operation} |
| GCC High | https://manage.office365.us/api/v1.0/{tenant_id}/activity/feed/{operation} |
| DoD | https://manage.protection.apps.mil/api/v1.0/{tenant_id}/activity/feed/{operation} |
Примеры алертов
Подозрительный вход в учетную запись
{
"rule": {
"id": "91545",
"level": 6,
"description": "Office 365: Suspicious sign-in activity detected"
},
"data": {
"office365": {
"Workload": "AzureActiveDirectory",
"Operation": "UserLoginFailed",
"UserId": "user@company.com",
"ClientIP": "198.51.100.42",
"ResultStatus": "Failed",
"LogonError": "InvalidUserNameOrPassword",
"DeviceProperties": {
"OS": "Windows 10",
"BrowserType": "Chrome"
}
}
}
}Доступ к почтовому ящику другого пользователя
{
"rule": {
"id": "91550",
"level": 7,
"description": "Office 365: Mailbox accessed by non-owner"
},
"data": {
"office365": {
"Workload": "Exchange",
"Operation": "MailboxLogin",
"UserId": "admin@company.com",
"MailboxOwnerUPN": "ceo@company.com",
"ClientIP": "10.0.1.50",
"LogonType": 1,
"ResultStatus": "Succeeded"
}
}
}Срабатывание политики DLP
{
"rule": {
"id": "91560",
"level": 10,
"description": "Office 365: DLP policy violation detected"
},
"data": {
"office365": {
"Workload": "Exchange",
"Operation": "DlpRuleMatch",
"UserId": "user@company.com",
"PolicyDetails": [{
"PolicyName": "Credit Card Number Detection",
"Rules": [{
"RuleName": "Block external sharing of credit cards",
"Severity": "High",
"ConditionsMatched": {
"SensitiveInformation": [{
"SensitiveInformationTypeName": "Credit Card Number",
"Count": 3
}]
}
}]
}]
}
}
}Административное действие
{
"rule": {
"id": "91570",
"level": 8,
"description": "Office 365: Admin role assigned to user"
},
"data": {
"office365": {
"Workload": "AzureActiveDirectory",
"Operation": "Add member to role",
"UserId": "globaladmin@company.com",
"ObjectId": "user@company.com",
"ModifiedProperties": [{
"Name": "Role.DisplayName",
"NewValue": "Global Administrator"
}]
}
}
}Сценарии использования
Обнаружение подозрительных входов
- Множественные неудачные попытки входа (brute force)
- Входы с географически удаленных локаций в короткий промежуток (impossible travel)
- Входы с анонимных IP-адресов
- Успешный вход после серии отказов (password spraying)
Мониторинг доступа к почтовым ящикам
- Доступ к чужому почтовому ящику делегированным пользователем
- Создание правил пересылки почты на внешние адреса
- Массовое удаление сообщений
- Изменение прав доступа к календарю
Обнаружение нарушений DLP
- Отправка документов с номерами кредитных карт
- Пересылка файлов с персональными данными на внешние адреса
- Загрузка конфиденциальных документов в SharePoint с открытым доступом
- Обнаружение паттернов конфиденциальных данных в Teams
Мониторинг административных действий
- Назначение привилегированных ролей (Global Admin, Exchange Admin)
- Изменение политик условного доступа
- Создание или модификация правил транспорта Exchange
- Отключение аудита или многофакторной аутентификации
Устранение неполадок
Модуль не получает события
- Проверьте корректность
tenant_id,client_idиclient_secret - Убедитесь, что разрешения
ActivityFeed.ReadиActivityFeed.ReadDlpназначены - Проверьте, что предоставлено согласие администратора (Admin Consent)
- Подождите до 24 часов после первой активации - API может требовать время на подготовку подписок
Ошибка аутентификации
- Проверьте, что секрет клиента не истек
- Убедитесь, что
api_typeсоответствует вашей подписке (commercial, gcc, gcc-high) - Проверьте, что приложение не заблокировано в Azure AD
- Просмотрите журнал
/var/ossec/logs/ossec.logна наличие HTTP 401/403
Пустые ответы API
- Убедитесь, что аудит включен в центре администрирования Microsoft 365
- Проверьте, что подписки на нужные типы контента активны
- При первом запуске установите
only_future_eventsвnoдля получения исторических данных - Проверьте, что в тенанте есть активность за запрошенный период
Высокий объем событий
- Ограничьте подписки только необходимыми типами контента
- Увеличьте значение
intervalдля снижения частоты опроса - Создайте правила Wazuh для фильтрации шумных событий
- Используйте
curl_max_sizeдля ограничения объема данных за один запрос
Связанные разделы
- Мониторинг облачной безопасности - обзор облачных интеграций
- Мониторинг Azure - интеграция с Microsoft Azure (общая Azure AD)
- Возможности Wazuh - модули безопасности платформы