Búsqueda de sitios web

Cómo instalar el servidor Wazuh en Ubuntu 20.04|18.04


Este artículo cubrirá cómo instalar el servidor Wazuh en Ubuntu 20.04. El servidor Wazuh es una herramienta de monitoreo de seguridad gratuita y de código abierto que utiliza Elastic stack (ELK). Se utiliza para monitorear eventos de seguridad a nivel de aplicación y sistema operativo. Por lo tanto, podrá obtener información sobre detección de amenazas, respuesta a incidentes y monitoreo de integridad. En este tutorial, implementaremos Wazuh en un host Ubuntu 20.04|18.04 de un solo nodo, con ELK instalado en el mismo host.

Puede utilizar Wazuh para las siguientes aplicaciones:

  1. Análisis de seguridad
  2. Análisis de registros
  3. Detección de vulnerabilidades
  4. Seguridad de contenedores
  5. Seguridad en la nube

Requisitos previos de configuración

Los requisitos mínimos de hardware son los siguientes:

  • 4 GB de RAM
  • 2 núcleos de CPU

Las especificaciones recomendadas son:

  • 16 GB de RAM
  • 8 núcleos de procesador

Instale los siguientes paquetes necesarios para ejecutar Wazuh Manager.

sudo apt update
sudo apt install vim curl apt-transport-https unzip wget libcap2-bin software-properties-common lsb-release gnupg2

Opción 1: instalación automatizada de Wazuh Server en Ubuntu 20.04|18.04 mediante script

La forma más rápida de instalar Wazuh en un solo host es mediante el uso de un script que detecta automáticamente el tipo de sistema operativo y realiza una verificación de estado para verificar que los recursos disponibles del sistema cumplan con los requisitos mínimos.

Descargue el script en su sistema Ubuntu donde está instalado el servidor Wazuh

curl -sO https://packages.wazuh.com/4.3/wazuh-install.sh

Una vez descargado el script, ejecútelo:

sudo bash ./wazuh-install.sh -a

El proceso de instalación debería tardar unos minutos en completarse:

23/05/2022 11:36:11 INFO: Starting Wazuh installation assistant. Wazuh version: 4.3.1
23/05/2022 11:36:11 INFO: Verbose logging redirected to /var/log/wazuh-install.log
23/05/2022 11:36:13 ERROR: Wazuh manager already installed.
23/05/2022 11:36:13 ERROR: Wazuh indexer already installed.
23/05/2022 11:36:14 ERROR: Wazuh dashboard already installed.
23/05/2022 11:36:14 ERROR: Filebeat already installed.
23/05/2022 11:36:14 INFO: If you want to overwrite the current installation, run this script adding the option -o/--overwrite. This will erase all the existing configuration and data.
root@ubuntu-01:~# sudo bash ./wazuh-install.sh -a -o
23/05/2022 11:36:21 INFO: Starting Wazuh installation assistant. Wazuh version: 4.3.1
23/05/2022 11:36:21 INFO: Verbose logging redirected to /var/log/wazuh-install.log
23/05/2022 11:36:23 INFO: --- Removing existing Wazuh installation ---
23/05/2022 11:36:23 INFO: Removing Wazuh manager.
23/05/2022 11:36:37 INFO: Wazuh manager removed.
23/05/2022 11:36:37 INFO: Removing Wazuh indexer.
23/05/2022 11:36:45 INFO: Wazuh indexer removed.
23/05/2022 11:36:45 INFO: Removing Filebeat.
23/05/2022 11:36:51 INFO: Filebeat removed.
23/05/2022 11:36:51 INFO: Removing Wazuh dashboard.
23/05/2022 11:37:07 INFO: Wazuh dashboard removed.
23/05/2022 11:37:07 INFO: Installation cleaned.
23/05/2022 11:37:19 INFO: Wazuh repository added.
23/05/2022 11:37:19 INFO: --- Configuration files ---
23/05/2022 11:37:19 INFO: Generating configuration files.
23/05/2022 11:37:20 INFO: Created wazuh-install-files.tar. It contains the Wazuh cluster key, certificates, and passwords necessary for installation.
23/05/2022 11:37:20 INFO: --- Wazuh indexer ---
23/05/2022 11:37:20 INFO: Starting Wazuh indexer installation.
23/05/2022 11:38:23 INFO: Wazuh indexer installation finished.
23/05/2022 11:38:24 INFO: Wazuh indexer post-install configuration finished.
23/05/2022 11:38:24 INFO: Starting service wazuh-indexer.
23/05/2022 11:38:45 INFO: wazuh-indexer service started.
23/05/2022 11:38:45 INFO: Initializing Wazuh indexer cluster security settings.
23/05/2022 11:38:58 INFO: Wazuh indexer cluster initialized.
23/05/2022 11:38:58 INFO: --- Wazuh server ---
23/05/2022 11:38:58 INFO: Starting the Wazuh manager installation.
23/05/2022 11:40:18 INFO: Wazuh manager installation finished.
23/05/2022 11:40:18 INFO: Starting service wazuh-manager.
23/05/2022 11:40:38 INFO: wazuh-manager service started.
23/05/2022 11:40:38 INFO: Starting Filebeat installation.
23/05/2022 11:40:47 INFO: Filebeat installation finished.
23/05/2022 11:40:47 INFO: Filebeat post-install configuration finished.
23/05/2022 11:40:47 INFO: Starting service filebeat.
23/05/2022 11:40:49 INFO: filebeat service started.
23/05/2022 11:40:49 INFO: --- Wazuh dashboard ---
23/05/2022 11:40:49 INFO: Starting Wazuh dashboard installation.
23/05/2022 11:41:39 INFO: Wazuh dashboard installation finished.
23/05/2022 11:41:39 INFO: Wazuh dashboard post-install configuration finished.
23/05/2022 11:41:39 INFO: Starting service wazuh-dashboard.
23/05/2022 11:41:40 INFO: wazuh-dashboard service started.
23/05/2022 11:42:08 INFO: Initializing Wazuh dashboard web application.
23/05/2022 11:42:19 INFO: Wazuh dashboard web application initialized.
23/05/2022 11:42:19 INFO: --- Summary ---
23/05/2022 11:42:19 INFO: You can access the web interface https://<wazuh-dashboard-ip>
    User: admin
    Password: PRPdOq0eQ23v5huwAdkB1ukBBqfGeCfu
23/05/2022 11:42:19 INFO: Installation finished.

Toma nota de las credenciales de acceso:

23/05/2022 11:42:19 INFO: You can access the web interface https://<wazuh-dashboard-ip>
    User: admin
    Password: PRPdOq0eQ23v5huwAdkB1ukBBqfGeCfu

Acceda al portal en https:// en su navegador web e inicie sesión

Introduzca nombre de usuario y contraseña

Ahora deberías tener acceso al panel web de Wazuh.

Opción 2: Instale Wazuh Server en Ubuntu 20.04|18.04 siguiendo los pasos manuales

Los pasos a continuación nos guiarán sobre cómo configurar el servidor Wazuh en Ubuntu 20.04|18.04.

  1. Agregar clave GPG
curl -fsSL https://packages.wazuh.com/key/GPG-KEY-WAZUH|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/wazuh.gpg

2. Agregar el repositorio Wazuh

echo "deb https://packages.wazuh.com/4.x/apt/ stable main" | sudo tee /etc/apt/sources.list.d/wazuh.list

3. Sistema de actualización

sudo apt update

4. Instale el Administrador de Wazuh

sudo apt install wazuh-manager

5. Iniciar y habilitar el servicio.

sudo systemctl daemon-reload
sudo systemctl enable --now wazuh-manager

Verifique el estado del administrador de Wazuh y confirme si está en funcionamiento

systemctl status wazuh-manager

Consultar estado del servicio:

$ systemctl status wazuh-manager
 wazuh-manager.service - Wazuh manager
     Loaded: loaded (/lib/systemd/system/wazuh-manager.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-04-26 09:13:56 UTC; 22s ago
    Process: 252739 ExecStart=/usr/bin/env ${DIRECTORY}/bin/ossec-control start (code=exited, status=0/SUCCESS)
      Tasks: 121 (limit: 4580)
     Memory: 472.5M
     CGroup: /system.slice/wazuh-manager.service
             ├─252805 /var/ossec/framework/python/bin/python3 /var/ossec/api/scripts/wazuh-apid.py
             ├─252844 /var/ossec/bin/ossec-authd
             ├─252860 /var/ossec/bin/wazuh-db
             ├─252883 /var/ossec/bin/ossec-execd
             ├─252897 /var/ossec/bin/ossec-analysisd
             ├─252958 /var/ossec/bin/ossec-syscheckd
             ├─252975 /var/ossec/bin/ossec-remoted
             ├─253006 /var/ossec/bin/ossec-logcollector
             ├─253024 /var/ossec/bin/ossec-monitord
             └─253047 /var/ossec/bin/wazuh-modulesd

Apr 26 09:13:47 node3 env[252739]: Started wazuh-db...
Apr 26 09:13:48 node3 env[252739]: Started ossec-execd...
Apr 26 09:13:49 node3 env[252739]: Started ossec-analysisd...
Apr 26 09:13:50 node3 env[252739]: Started ossec-syscheckd...
Apr 26 09:13:51 node3 env[252739]: Started ossec-remoted...
Apr 26 09:13:52 node3 env[252739]: Started ossec-logcollector...
Apr 26 09:13:53 node3 env[252739]: Started ossec-monitord...
Apr 26 09:13:54 node3 env[252739]: Started wazuh-modulesd...
Apr 26 09:13:56 node3 env[252739]: Completed.
Apr 26 09:13:56 node3 systemd[1]: Started Wazuh manager.

Instale ELK Stack en Ubuntu 20.04|18.04

Instale Elasticsearch de Open Distro, un motor de búsqueda de texto completo altamente escalable. Este paquete ofrece seguridad avanzada, alertas, análisis de rendimiento profundo, gestión de índices y muchas más funciones.

sudo apt install elasticsearch-oss opendistroforelasticsearch

Descargue un archivo de configuración personalizado para /etc/elasticsearch/elasticsearch.yml como se muestra a continuación:

sudo curl -so /etc/elasticsearch/elasticsearch.yml https://packages.wazuh.com/resources/4.2/open-distro/elasticsearch/7.x/elasticsearch_all_in_one.yml

Configure roles y usuarios de Kibana con las siguientes plantillas:

sudo curl -so /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles.yml https://packages.wazuh.com/resources/4.2/open-distro/elasticsearch/roles/roles.yml

sudo curl -so /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles_mapping.yml https://packages.wazuh.com/resources/4.2/open-distro/elasticsearch/roles/roles_mapping.yml

sudo curl -so /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml https://packages.wazuh.com/resources/4.2/open-distro/elasticsearch/roles/internal_users.yml

Los comandos anteriores agregan los siguientes usuarios para Kibana:

  1. Wazuh_user: se utilizará para usuarios que necesitan acceso de solo lectura al complemento Wazuh Kibana.
  2. Wazuh_admin: para usuarios que necesitan privilegios administrativos

También se crean dos roles adicionales para otorgar a los usuarios los permisos adecuados.

  • wazuh_ui_user: proporciona permisos a wazuh_user para leer los índices de Wazuh.
  • wazuh_ui_admin: permite a wazuh_admins realizar lectura/escritura, gestión e indexación de índices wazuh.

Instalar certificados

Podemos configurar certificados que se utilizarán para la comunicación TLS entre Elasticsearch y Wazuh.

1. Eliminar los certificados de demostración

sudo rm -f /etc/elasticsearch/{esnode-key.pem,esnode.pem,kirk-key.pem,kirk.pem,root-ca.pem}

2. Descargue el wazuh-cert-tool.sh:

sudo su -
curl -so ~/wazuh-cert-tool.sh https://packages.wazuh.com/resources/4.2/open-distro/tools/certificate-utility/wazuh-cert-tool.sh
curl -so ~/instances.yml https://packages.wazuh.com/resources/4.2/open-distro/tools/certificate-utility/instances_aio.yml

3. Ejecute wazuh-cert-tool.sh para crear los certificados:

# bash ~/wazuh-cert-tool.sh
02/28/2022 22:43:19 INFO: Configuration file found. Creating certificates...
02/28/2022 22:43:20 INFO: Creating the Elasticsearch certificates...
02/28/2022 22:43:20 INFO: Creating Wazuh server certificates...
02/28/2022 22:43:20 INFO: Creating Kibana certificate...
02/28/2022 22:43:20 INFO: Certificates creation finished. They can be found in ~/certs.

4. Mueva los certificados de Elasticsearch a su ubicación correspondiente:

mkdir /etc/elasticsearch/certs/
mv ~/certs/elasticsearch* /etc/elasticsearch/certs/
mv ~/certs/admin* /etc/elasticsearch/certs/
cp ~/certs/root-ca* /etc/elasticsearch/certs/

5. Mitigar la vulnerabilidad de ejecución remota de código (RCE) de Apache Log4j2

Agregue la siguiente configuración para mitigar la vulnerabilidad de ejecución remota de código (RCE) de Apache Log4j2 – CVE-2021-44228 – ESA-2021-31.

mkdir -p /etc/elasticsearch/jvm.options.d
echo '-Dlog4j2.formatMsgNoLookups=true' > /etc/elasticsearch/jvm.options.d/disabledlog4j.options
chmod 2750 /etc/elasticsearch/jvm.options.d/disabledlog4j.options
chown root:elasticsearch /etc/elasticsearch/jvm.options.d/disabledlog4j.options

6. Habilite e inicie el servicio Elasticsearch:

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch

Verifique el estado del servicio Elasticsearch:

# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-02-28 22:46:22 UTC; 1min 29s ago
       Docs: https://www.elastic.co
   Main PID: 56511 (java)
      Tasks: 47 (limit: 4682)
     Memory: 1.2G
     CGroup: /system.slice/elasticsearch.service
             └─56511 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=tru>

Feb 28 22:46:11 ubuntu-20-04-02 systemd[1]: Starting Elasticsearch...
Feb 28 22:46:22 ubuntu-20-04-02 systemd-entrypoint[56511]: WARNING: An illegal reflective access operation has occurred
Feb 28 22:46:22 ubuntu-20-04-02 systemd-entrypoint[56511]: WARNING: Illegal reflective access by com.amazon.opendistro.elasticsearch.performanceanalyzer.collectors.MasterServiceEventMetrics (file:/>
Feb 28 22:46:22 ubuntu-20-04-02 systemd-entrypoint[56511]: WARNING: Please consider reporting this to the maintainers of com.amazon.opendistro.elasticsearch.performanceanalyzer.collectors.MasterSer>
Feb 28 22:46:22 ubuntu-20-04-02 systemd-entrypoint[56511]: WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
Feb 28 22:46:22 ubuntu-20-04-02 systemd-entrypoint[56511]: WARNING: All illegal access operations will be denied in a future release
Feb 28 22:46:22 ubuntu-20-04-02 systemd[1]: Started Elasticsearch.

Ejecute el script Elasticsearch securityadmin para cargar la información de los nuevos certificados e iniciar el clúster:

export JAVA_HOME=/usr/share/elasticsearch/jdk/ && /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/ -nhnv -cacert /etc/elasticsearch/certs/root-ca.pem -cert /etc/elasticsearch/certs/admin.pem -key /etc/elasticsearch/certs/admin-key.pem

Salida de ejecución del comando:

Open Distro Security Admin v7
Will connect to localhost:9300 ... done
Connected as CN=admin,OU=Docu,O=Wazuh,L=California,C=US
Elasticsearch Version: 7.10.2
Open Distro Security Version: 1.13.1.0
Contacting elasticsearch cluster 'elasticsearch' and wait for YELLOW clusterstate ...
Clustername: elasticsearch
Clusterstate: GREEN
Number of nodes: 1
Number of data nodes: 1
.opendistro_security index does not exists, attempt to create it ... done (0-all replicas)
Populate config from /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/
Will update '_doc/config' with /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/config.yml
   SUCC: Configuration for 'config' created or updated
Will update '_doc/roles' with /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles.yml
   SUCC: Configuration for 'roles' created or updated
Will update '_doc/rolesmapping' with /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles_mapping.yml
   SUCC: Configuration for 'rolesmapping' created or updated
Will update '_doc/internalusers' with /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
   SUCC: Configuration for 'internalusers' created or updated
Will update '_doc/actiongroups' with /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/action_groups.yml
   SUCC: Configuration for 'actiongroups' created or updated
Will update '_doc/tenants' with /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/tenants.yml
   SUCC: Configuration for 'tenants' created or updated
Will update '_doc/nodesdn' with /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/nodes_dn.yml
   SUCC: Configuration for 'nodesdn' created or updated
Will update '_doc/whitelist' with /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/whitelist.yml
   SUCC: Configuration for 'whitelist' created or updated
Will update '_doc/audit' with /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/audit.yml
   SUCC: Configuration for 'audit' created or updated
Done with success

Ejecute el siguiente comando para confirmar que la instalación se realizó correctamente:

curl -XGET https://localhost:9200 -u admin:admin -k

La respuesta debería ser la siguiente:

{
  "name" : "node-1",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "42mc1BAjQaOpVo4p3Xz5lA",
  "version" : {
    "number" : "7.10.2",
    "build_flavor" : "oss",
    "build_type" : "deb",
    "build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
    "build_date" : "2021-01-13T00:42:12.435326Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Instale Filebeat en Ubuntu 20.04|18.04

Filebeat se utiliza para enviar alertas y eventos desde el servidor Wazuh a Elasticsearch.

sudo apt install filebeat

Descargue el archivo de configuración de filebeat a continuación que se utilizará para reenviar alertas de wazuh a Elasticsearch

curl -so /etc/filebeat/filebeat.yml https://packages.wazuh.com/resources/4.2/open-distro/filebeat/7.x/filebeat_all_in_one.yml

Descargue la plantilla de alertas con el siguiente comando para Elasticsearch:

curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/4.2/extensions/elasticsearch/7.x/wazuh-template.json
chmod go+r /etc/filebeat/wazuh-template.json

Descargue el módulo Wazuh FIlebeat:

curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.1.tar.gz | tar -xvz -C /usr/share/filebeat/module

Copie los certificados de Elasticsearch a /etc/filebeat/certs

mkdir /etc/filebeat/certs
cp ~/certs/root-ca.pem /etc/filebeat/certs/
mv ~/certs/filebeat* /etc/filebeat/certs/

Iniciar y habilitar el servicio Filebeat

systemctl daemon-reload
systemctl enable --now filebeat

Confirme la configuración de Filebeat con el siguiente comando:

# filebeat test output
elasticsearch: https://127.0.0.1:9200...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    addresses: 127.0.0.1
    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

Instale Kibana en Ubuntu 20.04|18.04

Kibana es la interfaz web que nos ayuda a visualizar y analizar los eventos almacenados en Elasticsearch.

Utilice el siguiente comando para instalar Kibana en Ubuntu 20.04|18.04

apt install opendistroforelasticsearch-kibana

Descargue el archivo de configuración para Kibana

curl -so /etc/kibana/kibana.yml https://packages.wazuh.com/resources/4.2/open-distro/kibana/7.x/kibana_all_in_one.yml

Crear directorio de datos para Kibana

mkdir /usr/share/kibana/data
chown -R kibana:kibana /usr/share/kibana/data

Instale el complemento Wazuh Kibana.

cd /usr/share/kibana
sudo -u kibana /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/4.x/ui/kibana/wazuh_kibana-4.2.5_7.10.2-1.zip

Salida de ejecución de muestra:

Attempting to transfer from https://packages.wazuh.com/4.x/ui/kibana/wazuh_kibana-4.2.5_7.10.2-1.zip
Transferring 33111704 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Plugin installation complete

Copie los certificados de Elasticsearch en /etc/kibana/certs:

mkdir /etc/kibana/certs
cp ~/certs/root-ca.pem /etc/kibana/certs/
mv ~/certs/kibana* /etc/kibana/certs/
chown kibana:kibana /etc/kibana/certs/*

Vincule el socket de Kibana al puerto privilegiado 443:

setcap 'cap_net_bind_service=+ep' /usr/share/kibana/node/bin/node

Iniciar y habilitar el servicio Kibana

systemctl daemon-reload
systemctl enable --now kibana

Permitir que Kibana atraviese el firewall

sudo ufw allow 443/tcp

Ahora puede acceder a su interfaz wazuh kibana a través de

URL: https://<wazuh_server_ip>
user: admin
password: admin

Puedes iniciar sesión y proceder a ver las métricas disponibles de Wazuh:

Con los pasos anteriores, hemos configurado con éxito el servidor Wazuh en Ubuntu 20.04|18.04. Saludos y consulte otros artículos interesantes en el sitio.

Cómo instalar el servidor Wazuh en CentOS 8

Reenviar registros y métricas del servidor a Elasticsearch usando Beats