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 –

apt install nodejs wazuh-api

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

apt-get install filebeat

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

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:

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.

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

/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 una respuesta

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