Instalacion Wazuh en modo arquitectura distribuida.

¿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.

 

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

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

apt-get install wazuh-manager

Instalamos Wazuh Api

curl -sL https://deb.nodesource.com/setup_10.x | bash –

Generemos un nuevo usuario

cd /var/ossec/api/configuration/auth/

node htpasswd -c user redorbita

Instalamos FileBeats

 

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

Agregamos la configuración de wazuh a filebeat

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

 

/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

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

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:

 

apt-get update

apt-get install oracle-java8-installer

apt-get install curl apt-transport-https

 

Configuramnos el repositorio de elastic

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

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

systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service

 

Comprobamos que funciona correctamente:

 

 

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

 

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

 

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

apt-get install logstash=1:6.4.0-1

Agregamos el plugin de wazuh para la arquitectura distribuida

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

/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

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.

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

/etc/kibana/kibana.yml

server.host: “0.0.0.0”

Agregamos Kibana al inicio y lo iniciamos

systemctl enable kibana

systemctl start kibana

Accedemo meidnate nuestro navegador y configuramos la API

 

 

 

:wq!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*