Управление безопасностью облака (CSPM) играет большую роль в безопасности и соответствии в облачных средах. Вероятность появления неправильных настроек безопасности заметно возрастает из-за некорректного управления разрешениями, пробелов в сетевых конфигурациях и других слабых мест.
Этот подход подразумевает постоянный мониторинг и оценку рабочих нагрузок в облаке для выявления уязвимостей и потенциальных угроз. Кроме того, он предоставляет рекомендации для устранения рисков безопасности в облачной среде.
Wazuh – open-source платформа корпоративного уровня для мониторинга безопасности, которая обеспечивает комплексную защиту в облачных, локальных, контейнерных и виртуальных средах.
В этой публикации описано, как использовать Wazuh для управления безопасностью Google Cloud Platform (GCP).
Инфраструктура
Что нужно:
- Предвариетльно установленная и готовая к использованию последняя доступная версия виртуальной машины Wazuh OVA, включающая основные компоненты решения (сервер, indexer, дешборд).
- Учетная запись GCP с правами администратора. Рекомендуется использовать тестовый аккаунт без важных рабочих нагрузок.
Интеграция Wazuh с GCP
Wazuh интегрируется с GCP с помощью Google Cloud publisher and subscriber service (GCP Pub/Sub).
Google Cloud Pub/Sub – это служба обмена информацией, позволяющая приложениям отправлять и получать данные о событиях. Wazuh предоставляет модуль для интеграции с GCP, который получает журналы из службы Pub/Sub.

Обзор интеграции GCP с Wazuh
Google Cloud
Настройка аккаунта GCP
Необходимо создать новый проект в GCP и аккаунт сервиса, что позволит модулю Wazuh GCP получать данные журнала из Google Pub/Sub. Затем нужно настроить службы Pub/Sub и Sink. Сервис Sink отправляет журналы о состоянии безопасности облака из центральной службы Cloud Logging GCP в службу Pub/Sub.
Для настройки необходимо выполнить следующие действия:
1) Создать новый проект в GCP. Следует также обратить внимание на его ID.

Создание нового проекта
2) Перейти к IAM and admin и выбрать Service accounts для создания новой учетной записи службы, как показано ниже. На этой странице аккаунту нужно присвоить роли Pub/Sub Publisher и Pub/Sub Subscriber.

Создание аккаунта службы
3) Открыть эту учетную запись и создать приватный ключ в формате JSON, как продемонстрировано ниже. Браузер автоматически загружает ключ. Wazuh использует его для аутентификации в проекте GCP.

Создание ключа учетной записи службы
4) Искать и выбрать Pub/Sub в поле поиска консоли в верхней части страницы. Нажать Create Topic. На этой странице ввести идентификатор темы (Topic ID) и убедиться, что возле Add a default subscription стоит галочка. Затем нужно нажать Create. Следует также обратить внимание на идентификатор подписки (Subscription ID).

Конфигурация Pub/Sub
5) Искать и выбрать Log Router в консоли GCP. Щелкнуть Create Sink. Затем ввести название и нажать кнопку Next. В службе Sink destination выбрать Cloud Pub/Sub topic. Далее выбрать название темы из шага 4 и нажать Create Sink.

Конфигурация SInk
Сервисы Log Router и Sink в проекте GCP отвечают за управление и направление журналов.
6) Необходимо настроить непрерывный экспорт журнала из службы GCP Findings в GCP Pub/Sub, как показано ниже.

Настройка непрерывного экспорта
Сервер Wazuh
Нужно выполнить следующие действия для настройки сервера Wazuh для получения журналов от GCP.
Примечание: необходимо выполнять эти команды с разрешением root.
1) Создать файл credentials.json в каталоге /var/ossec/wodles/gcloud/:
touch /var/ossec/wodles/gcloud/credentials.json
2) Добавить в файл /var/ossec/wodles/gcloud/credentials.json содержимое файла JSON с приватным ключом. Модуль Wazuh GCP использует файл ключа для аутентификации учетной записи GCP.
3) Добавить код ниже в файл конфигурации /var/ossec/etc/ossec.conf. Конфигурация определяет, как Wazuh подключается к GCP с помощью ID-проекта, ID подписки GCP PubSub и учетных данных.
<ossec_config>
<gcp-pubsub>
<pull_on_start>yes</pull_on_start>
<interval>5m</interval>
<project_id><PROJECT_ID></project_id>
<subscription_name><SUBSCRIPTION_ID></subscription_name>
<credentials_file>/var/ossec/wodles/gcloud/credentials.json</credentials_file>
</gcp-pubsub>
</ossec_config>
Заменить:
<PROJECT_ID> – на ID проекта.
<SUBSCRIPTION_NAME> – на ID подписки GCP Pub/Sub.
4) Создать файл правил gcp_posture.xml в каталоге /var/ossec/etc/rules/ и добавить следующие кастомные правила:
<group name="gcp,">
<!-- Misconfiguration detection -->
<rule id="100200" level="10">
<if_sid>65000</if_sid>
<field name="gcp.finding.findingClass">MISCONFIGURATION</field>
<description>A $(gcp.finding.findingClass) with $(gcp.finding.severity) severity has been discovered on the GCP project $(gcp.resource.projectDisplayName). $(gcp.finding.description)</description>
<mitre>
<id>T1562</id>
</mitre>
</rule>
<!-- Threat detection -->
<rule id="100201" level="10">
<if_sid>65000</if_sid>
<field name="gcp.finding.findingClass">THREAT</field>
<description>A $(gcp.finding.findingClass) with $(gcp.finding.severity) severity has been discovered on the GCP project $(gcp.resource.projectDisplayName). $(gcp.finding.category).</description>
<mitre>
<id>T1562</id>
</mitre>
</rule>
</group>
Где:
Правило ID 100200 активируется при обнаружении неправильной конфигурации аккаунта с помощью Wazuh.
Правило ID 100201 срабатывает, если GCP выявляет угрозу.
5) Перезапустить менеджер Wazuh, чтобы применить изменения:
systemctl restart wazuh-manager
Имитация недостатков
Модуль The Findings – это служба GCP Security Command Center, записывающая некорректные настройки безопасности в проекте GCP. Имитация недостатков создаст образцы неправильных конфигураций, которые будут отправлены в Wazuh.
Неправильные конфигурации сети
Следует выполнить следующие действия на консоли GCP.
1) Включить Compute Engine API, как показано ниже. Это включит внутренний брандмауэр VPC.

API Compute Engine
2) Создать правило брандмауэра в Network security, которое разрешает подключение со всех IP-адресов и портов.

Создание правила брандмауэра
3) Удалить это правило брандмауэра из списка правил безопасности сети GCP.

Удаление правила брандмауэра
Аномальная активность управления идентичностями и доступом
1) Создать тестовый адрес электронной почты Gmail в случае ее отсутствия.
2) Перейти в IAM&Admin и выбрать IAM. Нажать Grant Access. На этой странице ввести тестовый Gmail-адрес в New principal. Далее назначить роль Project > Owner в Role и нажать Save.

Симуляция IAM и администратора
Результат
Можно визуализировать результаты, перейдя в Modules > Security events и применив фильтр для идентификаторов правил 100200, 100201.








