Система мониторинга безопасности Wazuh

Wazuh — это платформа безопасности с открытым исходным кодом, которая обеспечивает комплексную защиту (XDR и SIEM) для конечных точек и облачных вычислительных сред. Предназначена для того, чтобы помочь организациям обнаруживать угрозы, контролировать целостность и обеспечивать соответствие требованиям во всех объектах инфраструктуры, включая физические, виртуальные, контейнерные и облачные среды.

Установка сервера Wazuh в автономном режиме

Вы можете настроить сервер Wazuh, индексатор и панель мониторинга на одном хосте (комплексное развертывание) или установить их отдельно на нескольких хостах (распределённое развертывание), в зависимости от требований.

Примечание

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

Настройка брандмауэра (необязательно)

Настройте правила брандмауэра, чтобы разрешить доступ к требуемым портам:

$ sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent  #Wazuh-indexer

$ sudo firewall-cmd --zone=public --add-port=55000/tcp --permanent #enrollment service

$ sudo firewall-cmd --zone=public --add-port=1514/tcp --permanent  #agent communication

$ sudo firewall-cmd --zone=public --add-port=1515/tcp --permanent  #enrollment service

#Применить изменения
$ sudo firewall-cmd --reload

#Проверить применение
$ sudo firewall-cmd --list-all

Создание файла конфигурации, подготовка сертификатов

Установите wazuh-configuration:

$ sudo dnf install wazuh-configuration

Подготовьте файл конфигурации сертификатов:

$ cp /etc/wazuh-configuration/config.yml.in /рабочая_директория/config.yml

Например, можно оставить файл в исходном каталоге:

$ cp /etc/wazuh-configuration/config.yml.in /etc/wazuh-configuration/config.yml

Или скопировать в текущий:

$ cp /etc/wazuh-configuration/config.yml.in config.yml

Изменение файла config.yml для настройки создания сертификата

Для развертывания «всё в одном» замените <indexer-node-ip>, <wazuh-manager-ip> и <dashboard-node-ip> на 127.0.0.1. Для «распределённого развертывания»» обновите имена узлов и IP-адреса, указав правильные значения для сервера Wazuh, индексатора и панели мониторинга. При необходимости добавьте дополнительные поля для узлов.

nodes:
  # Wazuh indexer nodes
  indexer:
    - name: node-1
      ip: 10.0.0.20
    #- name: node-2
    #  ip: "<indexer-node-ip>"
    #- name: node-3
    #  ip: "<indexer-node-ip>"

  # Wazuh server nodes
  # If there is more than one Wazuh server
  # node, each one must have a node_type
  server:
    - name: wazuh-1
      ip: 10.0.0.20
    #  node_type: master
    #- name: wazuh-2
    #  ip: "<wazuh-manager-ip>"
    #  node_type: worker
    #- name: wazuh-3
    #  ip: "<wazuh-manager-ip>"
    #  node_type: worker

  # Wazuh dashboard nodes
  dashboard:
    - name: dashboard
      ip: 10.0.0.20

Запустите:

$ sudo wazuh-genenerate-certs.sh

Если нужно укажите путь к config.yml чтобы сгенерировать сертификаты:

$ sudo wazuh-genenerate-certs.sh -c /etc/wazuh-configuration/config.yml

Для многоузлового кластера эти сертификаты необходимо позже развернуть во всех экземплярах Wazuh в вашем кластере. Перенесите файл wazuh-install-files.tar c сертификатами в каталог на хосте(ах), где будет выполняться установка.

Установка компонентов Wazuh

В рабочем каталоге, куда вы разместили wazuh-install-files.tar, выполните следующую команду для распаковки установочных файлов:

$ tar -xvf wazuh-install-files.tar

Установка индексатора Wazuh

Для установки индексатора Wazuh выполните следующую команду:

$ sudo dnf install wazuh-indexer

Выполните следующие команды, заменив $NODE_NAME на имя узла-индексатора Wazuh, которое вы настраиваете, как указано в файле config.yml. NODE_NAME=<INDEXER_NODE_NAME>, например, node-1.

Это развернёт SSL-сертификаты для шифрования сообщений между центральными компонентами Wazuh.

$ sudo mkdir /etc/wazuh-indexer/certs

$ sudo mv -n wazuh-install-files/$NODE_NAME.pem /etc/wazuh-indexer/certs/indexer.pem

$ sudo mv -n wazuh-install-files/$NODE_NAME-key.pem /etc/wazuh-indexer/certs/indexer-key.pem

$ sudo mv wazuh-install-files/admin-key.pem /etc/wazuh-indexer/certs/

$ sudo mv wazuh-install-files/admin.pem /etc/wazuh-indexer/certs/

$ sudo cp wazuh-install-files/root-ca.pem /etc/wazuh-indexer/certs/

$ sudo chmod 500 /etc/wazuh-indexer/certs

$ sudo chmod 400 /etc/wazuh-indexer/certs/*

$ sudo chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs

Переместите файлы сертификатов и ключей каждого узла (например, node-1.pem и node-1-key.pem) в соответствующую папку certs. Эти файлы являются специфическими для каждого узла и не должны предоставляться другим пользователям. Но не перемещайте сертификат root-ca.pem — скопируйте его, чтобы позже его можно было развернуть в других папках компонентов.

Отредактируйте /etc/wazuh-indexer/opensearch.yml и измените следующие параметры:

  1. network.host – определяет адрес узла для HTTP и транспортного трафика. Он должен совпадать с адресом, используемым в config.yml при создании SSL-сертификатов.

  2. node.name – установите это значение на имя узла индексатора Wazuh, как определено в config.yml (например node-1).

  3. cluster.initial_master_nodes – перечислите имена узлов, отвечающих требованиям мастера, как указано в config.yml.

    network.host: "10.0.0.20"
    node.name: "node-1"
    cluster.initial_master_nodes:
    - "node-1"
    #- "node-2"
    #- "node-3"
    
  4. discovery.seed_hosts – содержит адреса узлов, подходящих для использования в качестве основного. Оставьте комментарий для настройки с одним узлом, а для конфигураций с несколькими узлами раскомментируйте его и укажите адреса узлов.

    discovery.seed_hosts:
      - "10.0.0.1"
      - "10.0.0.2"
      - "10.0.0.3"
    
  5. plugins.security.nodes_dn – содержит список отличительных имён (DNS) сертификатов для всех узлов кластера индексатора Wazuh. Раскомментируйте и измените их в соответствии с вашими настройками и config.yml.

    plugins.security.nodes_dn:
    - "CN=node-1,OU=Wazuh,O=Wazuh,L=Mocscow,C=RU"
    - "CN=node-2,OU=Wazuh,O=Wazuh,L=Mocscow,C=RU"
    - "CN=node-3,OU=Wazuh,O=Wazuh,L=Mocscow,C=RU"
    

Включите и запустите службу индексирования Wazuh. Убедитесь, что индексатор Wazuh активен и запущен.

$ sudo systemctl daemon-reload

$ sudo systemctl enable wazuh-indexer

$ sudo systemctl start wazuh-indexer

$ sudo systemctl status wazuh-indexer

Как только все узлы индексатора Wazuh будут запущены, выполните сценарий indexer-security-init.sh на любом узле индексатора Wazuh. Это обновит информацию о сертификате и запустит кластер.

$ sudo /usr/share/wazuh-indexer/bin/indexer-security-init.sh

Чтобы убедиться в успешности установки выполните следующую команду.

$ sudo curl -XGET https://10.0.0.20:9200 -u admin:admin -k

Пример вывода

{
  "name" : "node-1",
  "cluster_name" : "wazuh-cluster",
  "cluster_uuid" : "6hQpHd5cSzCLrhFo0T-Crg",
  "version" : {
    "number" : "7.10.2",
    "build_type" : "rpm",
    "build_hash" : "eee49cb340edc6c4d489bcd9324dda571fc8dc03",
    "build_date" : "2023-09-20T23:54:29.889267151Z",
    "build_snapshot" : false,
    "lucene_version" : "9.7.0",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}

Установка Wazuh-сервер

Выполните следующие команды, чтобы импортировать ключ Wazuh и установить Wazuh-менеджер.

$ sudo dnf install wazuh-manager

Сохраните имя пользователя и пароль индексатора Wazuh в хранилище ключей Wazuh-менеджер с помощью инструмента wazuh-keystore. Учётными данными по умолчанию для автономной установки являются admin:admin.

$ echo '<INDEXER_USERNAME>' | /var/ossec/bin/wazuh-keystore -f indexer -k username

$ echo '<INDEXER_PASSWORD>' | /var/ossec/bin/wazuh-keystore -f indexer -k password

Включите и запустите службу Wazuh-менеджер. Убедитесь, что Wazuh-менеджер активен и запущен.

$ sudo systemctl daemon-reload

$ sudo systemctl enable wazuh-manager

$ sudo systemctl start wazuh-manager

$ sudo systemctl status wazuh-manager

Установка Filebeat

Filebeat должен быть установлен и настроен на том же сервере, что и Wazuh-менеджер. Для установки Filebeat выполните следующую команду:

$ sudo dnf install filebeat

Отредактируйте /etc/filebeat/filebeat.yml и измените следующие значения:

hosts: список узлов индексатора Wazuh, к которым необходимо подключиться. Вы можете использовать либо IP-адреса, либо имена хостов. По умолчанию для хоста задано значение localhost — hosts: ["127.0.0.1:9200"]. Замените его соответствующим образом на ваш адрес индексатора Wazuh. Если у вас более одного узла индексатора Wazuh, вы можете разделить адреса запятыми. Например, hosts: ["10.0.0.1:9200", "10.0.0.2:9200", "10.0.0.3:9200"].

# Wazuh - Filebeat configuration file
 output.elasticsearch:
 hosts: ["10.0.0.20:9200"]
 protocol: https
 username: ${username}
 password: ${password}

Создайте хранилище ключей Filebeat для безопасного хранения учётных данных для проверки подлинности.

$ sudo filebeat keystore create

Добавьте имя пользователя и пароль admin:admin в хранилище ключей «Secrets».

$ sudo echo admin | filebeat keystore add username --stdin --force

$ sudo echo admin | filebeat keystore add password --stdin --force

Замените $NODE_NAME на имя сертификата вашего серверного узла Wazuh, которое используется в config.yml при создании сертификатов. NODE_NAME=SERVER_NODE_NAME>, например, wazuh-1. Затем переместите сертификаты в соответствующее им место.

$ sudo mkdir /etc/filebeat/certs

$ sudo mv -n wazuh-install-files/$NODE_NAME.pem /etc/filebeat/certs/filebeat.pem

$ sudo mv -n wazuh-install-files/$NODE_NAME-key.pem /etc/filebeat/certs/filebeat-key.pem

$ sudo cp wazuh-install-files/root-ca.pem /etc/filebeat/certs/

$ sudo chmod 500 /etc/filebeat/certs

$ sudo chmod 400 /etc/filebeat/certs/*

$ sudo chown -R root:root /etc/filebeat/certs

Включите и запустите службу Filebeat. Убедитесь, что Filebeat активен и запущен.

$ sudo systemctl daemon-reload

$ sudo systemctl enable filebeat

$ sudo systemctl start filebeat

$ sudo systemctl status filebeat

Выполните следующую команду, чтобы убедиться, что Filebeat успешно установлен.

$ sudo filebeat test output

Пример вывода:

elasticsearch: https://10.0.0.20:9200...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    addresses: 10.0.0.20
    dial up... OK
  TLS...
    security: server's certificate chain verification is enabled
    handshake... OK
    TLS version: TLSv1.3
    dial up... OK
  talk to server... OK
  version: 7.10.2

Серверный узел Wazuh успешно установлен.

Установка панели мониторинга Wazuh (wazuh-dashboard)

$ sudo dnf install wazuh-dashboard

Замените $NODE_NAME на имя вашего узла информационной панели Wazuh, которое используется в config.yml для создания сертификатов. NODE_NAME=<DASHBOARD_NODE_NAME>, например, dashboard. Затем переместите сертификаты в соответствующее расположение.

$ sudo mkdir /etc/wazuh-dashboard/certs

$ sudo mv -n wazuh-install-files/$NODE_NAME.pem /etc/wazuh-dashboard/certs/dashboard.pem

$ sudo mv -n wazuh-install-files/$NODE_NAME-key.pem /etc/wazuh-dashboard/certs/dashboard-key.pem

$ sudo cp wazuh-install-files/root-ca.pem /etc/wazuh-dashboard/certs/

$ sudo chmod 500 /etc/wazuh-dashboard/certs

$ sudo chmod 400 /etc/wazuh-dashboard/certs/*

$ sudo chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/certs

Отредактируйте /etc/wazuh-dashboard/opensearch_dashboards.yml и измените следующие значения:

  1. server.host: этот параметр определяет узел внутреннего сервера. Чтобы разрешить удалённым пользователям подключаться, установите значение равным IP-адресу или DNS-имени панели мониторинга Wazuh. Значение 0.0.0.0 будет принимать все доступные IP-адреса хоста.

  2. opensearch.hosts: URL-адреса экземпляров индексатора Wazuh, которые будут использоваться для всех ваших запросов. Панель мониторинга Wazuh можно настроить для подключения к нескольким узлам индексатора Wazuh в одном кластере. Адреса узлов можно разделять запятыми. Например, ["https://10.0.0.2:9200", "https://10.0.0.3:9200","https://10.0.0.4:9200"].

server.host: 10.0.0.20
server.port: 443
opensearch.hosts: https://10.0.0.20:9200
opensearch.ssl.verificationMode: certificate

Включите и запустите панель мониторинга Wazuh. Убедитесь, что панель мониторинга Wazuh активна и запущена.

$ sudo systemctl daemon-reload

$ sudo systemctl enable wazuh-dashboard

$ sudo systemctl start wazuh-dashboard

$ sudo systemctl status wazuh-dashboard

Отредактируйте файл /usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml и замените значение url на IP-адрес или имя главного узла сервера Wazuh.

hosts:
  - default:
      url: https://10.0.0.20
      port: 55000
      username: wazuh-wui
      password: wazuh-wui
      run_as: false

Проверьте доступ к веб-интерфейсу https://10.0.0.20.

  • Username: admin

  • Password: admin

Обеспечение безопасности установки Wazuh

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

Используйте инструмент паролей Wazuh для смены паролей всех внутренних пользователей.

$ sudo /usr/share/wazuh-indexer/plugins/opensearch-security/tools/wazuh-passwords-tool.sh --api --change-all --admin-user wazuh --admin-password wazuh

Сохраните новый пароль индексатора Wazuh в хранилище ключей менеджера Wazuh. Перезапустите службу менеджера Wazuh.

$ sudo /var/ossec/bin/wazuh-keystore -f indexer -k password -v <NEW_PASSWORD>

$ sudo systemctl start wazuh-manager

$ sudo systemctl status wazuh-manager

Добавьте новый пароль в хранилище ключей «Filebeat Secrets». Перезапустите службу Filebeat.

$ sudo echo "<NEW_PASSWORD>" | filebeat keystore add password --stdin --force

$ sudo systemctl restart filebeat

$ sudo filebeat test output

Установка агента wazuh

$ sudo dnf install wazuh-agent

Отредактируйте файл /var/ossec/etc/ossec.conf, замените MANAGER_IP указав IP-адрес главного узла сервера Wazuh:

<ossec_config>
  <client>
    <server>
      <address>MANAGER_IP</address>
      <port>1514</port>
      <protocol>tcp</protocol>
    </server>