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