Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas

Instalacion Wazuh en modo arquitectura distribuida.

Instalacion Wazuh en modo arquitectura distribuida.

Tabla de contenidos

¿Que es Wazuh?

Wazuh es un sistema de detección de intrusos basado en host de código abierto y libre (HIDS). Realiza análisis de registro, comprobación de integridad, detección de rootkits, alertas basadas en el tiempo y respuesta activa. Proporciona detección de intrusiones para la mayoría de los sistemas operativos, incluyendo Linux, OpenBSD, FreeBSD, OS X, Solaris y Windows. Wazuh tiene una arquitectura centralizada y multiplataforma que permite que múltiples sistemas sean fácilmente monitoreados y administrados.

Para la implementación de Wazuh vamos a optar por una arquitectura distribuida, la cual es la que aconsejan desde la documentación oficial.

Wazuh kiabana

Para ello vamos a contar con los siguientes servidores:

wazuh-manager: El cual contará con los roles de wazuh manager, filebeat y wazuh API

Tambien contaremos con un cluster de elasticsearch compuesto por los siguientes servidores:

  • wazuh-elastic01: Kiabana, elasticserach, logstash, wazuh app
  • wazuh-elastic02: elasticserach, logstash, wazuh app
  • wazuh-elastic02: elasticserach, logstash, wazuh app

Instalación de wazuh server

A continuación instalamos todos los paquetes necesarios para la instalación de wazuh server

bash
apt-get install curl apt-transport-https lsb-release gcc g++ make nodejs yarn
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add –
echo «deb https://packages.wazuh.com/3.x/apt/ stable main» | tee -a /etc/apt/sources.list.d/wazuh.list
apt-get update

Instalamos wazuh-manager

bash
apt-get install wazuh-manager

Instalamos Wazuh Api

bash
curl -sL https://deb.nodesource.com/setup_10.x | bash –
apt install nodejs wazuh-api

Generemos un nuevo usuario

text
cd /var/ossec/api/configuration/auth/
node htpasswd -c user redorbita

Instalamos FileBeats

bash
curl -s https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add –
echo «deb https://artifacts.elastic.co/packages/6.x/apt stable main» | tee /etc/apt/sources.list.d/elastic-6.x.list
apt-get update
apt-get install filebeat

Agregamos la configuración de wazuh a filebeat

bash
curl -so /etc/filebeat/filebeat.yml https://raw.githubusercontent.com/wazuh/wazuh/3.6/extensions/filebeat/filebeat.yml

A continuación debemos añadir todos los nodos de elastic dentro del apartado output

text
/etc/filebeat/filebeat.yml
output:
logstash:
# The Logstash hosts
#hosts: [«YOUR_ELASTIC_SERVER_IP:5000»]
hosts: [«10.10.4.75 :5000», «10.10.4.76 :5000″, » 10.10.4.77:5000″ ]

Agregamos todos los servicios al inicio y los iniciamos

bash
systemctl daemon-reload

systemctl enable filebeat.service

systemctl enable wazuh-api

systemctl enable wazuh-manager

systemctl start wazuh-manager

systemctl start wazuh-api

systemctl start filebeat.service

Instalación Cluster Elastic

Ya vamos a comenzar con la instalción del cluster de elastic en los servidores: wazuh-elastic01,wazuh-elastic02 y wazuh-elastic03

Configuramos los repositorios

bash
apt install dirmngr
echo «deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main» | tee /etc/apt/sources.list.d/webupd8team-java.list
echo «deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main» | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv-keys EEA14886

Instalamos los paquetes necesarios:

bash
apt-get update
apt-get install oracle-java8-installer
apt-get install curl apt-transport-https

Configuramnos el repositorio de elastic

bash
curl -s https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add –
echo «deb https://artifacts.elastic.co/packages/6.x/apt stable main» | tee /etc/apt/sources.list.d/elastic-6.x.list
apt-get update

Instalamos elasticsearch

apt-get install elasticsearch=6.4.0

Configuramos el cluster en /etc/elasticsearch/elasticsearch.yml

text
cluster.name: cluster-wazuh
node.name: wazuh-elastic01
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: [«wazuh-elastic01», «wazuh-elastic02», «wazuh-elastic03»]
discovery.zen.minimum_master_nodes: 3

Configuramos el servicio al inicio e iniciamos

bash
systemctl daemon-reload

systemctl enable elasticsearch.service

systemctl start elasticsearch.service

Comprobamos que funciona correctamente:

bash
curl «localhost:9200/?pretty»
{
«name» : «wazuh-elastic01»,
«cluster_name» : «cluster-wazuh»,
«cluster_uuid» : «E7os3vqNTmGiDU-8Hf31mw»,
«version» : {
«number» : «6.4.0»,
«build_flavor» : «default»,
«build_type» : «deb»,
«build_hash» : «595516e»,
«build_date» : «2018-08-17T23:18:47.308994Z»,
«build_snapshot» : false,
«lucene_version» : «7.4.0»,
«minimum_wire_compatibility_version» : «5.6.0»,
«minimum_index_compatibility_version» : «5.0.0»
},
«tagline» : «You Know, for Search»
}

Comprobamos el estado del cluster

bash
curl ‘http://localhost:9200/_cluster/state?pretty’ | more
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0{
«cluster_name» : «cluster-wazuh»,
«compressed_size_in_bytes» : 19752,
«cluster_uuid» : «E7os3vqNTmGiDU-8Hf31mw»,
«version» : 171,
«state_uuid» : «AXHZYf1xRvKcliJabz9-JQ»,
«master_node» : «V9-NZlm4ThWiNkyzP4Pbjw»,
«blocks» : { },
«nodes» : {
«V9-NZlm4ThWiNkyzP4Pbjw» : {
«name» : «wazuh-elastic02»,
«ephemeral_id» : «KTPfKu-0TdiWtoW1GwQigw»,
«transport_address» : «10.10.4.76:9300»,
«attributes» : {
«ml.machine_memory» : «2101854208»,
«ml.max_open_jobs» : «20»,
«xpack.installed» : «true»,
«ml.enabled» : «true»
}
},
«eCn0VJCxScySVVaGkuhuBQ» : {
«name» : «wazuh-elastic01»,
«ephemeral_id» : «MASgZVr5Qx65BaZwgeCayQ»,
«transport_address» : «10.10.4.75:9300»,
«attributes» : {
«ml.machine_memory» : «4148228096»,
«ml.max_open_jobs» : «20»,
«xpack.installed» : «true»,
«ml.enabled» : «true»
}
},
«h2GpW7UaRq-tlhrxebNA_A» : {
«name» : «wazuh-elastic03»,
«ephemeral_id» : «NjmG6PsMRiWoUSphab_wMg»,
«transport_address» : «10.10.4.77:9300»,
«attributes» : {
«ml.machine_memory» : «2101854208»,
«ml.max_open_jobs» : «20»,
«xpack.installed» : «true»,
«ml.enabled» : «true»
}
}
},

Instalamos el plugin de wazuh

bash
curl https://raw.githubusercontent.com/wazuh/wazuh/3.6/extensions/elasticsearch/wazuh-elastic6-template-alerts.json | curl -XPUT ‘http://localhost:9200/_template/wazuh’ -H ‘Content-Type: application/json’ -d @-

Instalamos logstash

bash
apt-get install logstash=1:6.4.0-1

Agregamos el plugin de wazuh para la arquitectura distribuida

bash
curl -so /etc/logstash/conf.d/01-wazuh.conf https://raw.githubusercontent.com/wazuh/wazuh/3.6/extensions/logstash/01-wazuh-remote.conf

Agregamos todos los nodos dentro de la configuracion

text
/etc/logstash/conf.d/01-wazuh.conf
output {
elasticsearch {
#hosts => [«localhost:9200»]
hosts => [«localhost:9200», «wazuh-elastic02:9200», «wazuh-elastic03:9200»]
index => «wazuh-alerts-3.x-%{+YYYY.MM.dd}»
document_type => «wazuh»
}
}

Reiniciamos y agregamos el servicio al inicio

bash
systemctl daemon-reload
systemctl enable logstash.service

systemctl start logstash.service

Instalamos kibana

Yo solo he instalado kibana en el servidor wazuh-elastic01 pero puedes configurarlo en los demas nodos del cluster si quieres.

apt-get  install kibana

sudo -u kibana /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/wazuhapp/wazuhapp-3.6.0_6.4.0.zip

Configuramos el direccionamiento por donde escucha

text
/etc/kibana/kibana.yml
server.host: «0.0.0.0»

Agregamos Kibana al inicio y lo iniciamos

bash
systemctl enable kibana
systemctl start kibana

Accedemo meidnate nuestro navegador y configuramos la API

Wazuh kiabana

:wq!

Comentarios