diff --git a/production-cluster.yml b/production-cluster.yml
new file mode 100644
index 00000000..136f0a6d
--- /dev/null
+++ b/production-cluster.yml
@@ -0,0 +1,203 @@
+# Wazuh App Copyright (C) 2020 Wazuh Inc. (License GPLv2)
+version: '3.7'
+
+services:
+ wazuh-master:
+ build: wazuh-opendistro/
+ image: wazuh-opendistro
+ hostname: wazuh-master
+ restart: always
+ ports:
+ - "1515:1515"
+ - "514:514/udp"
+ - "55000:55000"
+ environment:
+ - ELASTICSEARCH_URL=https://elasticsearch:9200
+ - ELASTIC_USERNAME=admin
+ - ELASTIC_PASSWORD=SecretPassword
+ - FILEBEAT_SSL_VERIFICATION_MODE=full
+ - SSL_CERTIFICATE_AUTHORITIES=/etc/ssl/root-ca.pem
+ - SSL_CERTIFICATE=/etc/ssl/filebeat.pem
+ - SSL_KEY=/etc/ssl/filebeat.key
+ volumes:
+ - ossec-api-configuration:/var/ossec/api/configuration
+ - ossec-etc:/var/ossec/etc
+ - ossec-logs:/var/ossec/logs
+ - ossec-queue:/var/ossec/queue
+ - ossec-var-multigroups:/var/ossec/var/multigroups
+ - ossec-integrations:/var/ossec/integrations
+ - ossec-active-response:/var/ossec/active-response/bin
+ - ossec-agentless:/var/ossec/agentless
+ - ossec-wodles:/var/ossec/wodles
+ - filebeat-etc:/etc/filebeat
+ - filebeat-var:/var/lib/filebeat
+ - ./production_cluster/ssl_certs/root-ca.pem:/etc/ssl/root-ca.pem
+ - ./production_cluster/ssl_certs/filebeat.pem:/etc/ssl/filebeat.pem
+ - ./production_cluster/ssl_certs/filebeat.key:/etc/ssl/filebeat.key
+ - ./production_cluster/wazuh_cluster/wazuh_manager.conf:/wazuh-config-mount/etc/ossec.conf
+
+ wazuh-worker:
+ build: wazuh-opendistro/
+ image: wazuh-opendistro
+ hostname: wazuh-worker
+ restart: always
+ environment:
+ - ELASTICSEARCH_URL=https://elasticsearch:9200
+ - ELASTIC_USERNAME=admin
+ - ELASTIC_PASSWORD=SecretPassword
+ - FILEBEAT_SSL_VERIFICATION_MODE=full
+ - SSL_CERTIFICATE_AUTHORITIES=/etc/ssl/root-ca.pem
+ - SSL_CERTIFICATE=/etc/ssl/filebeat.pem
+ - SSL_KEY=/etc/ssl/filebeat.key
+ volumes:
+ - worker-ossec-api-configuration:/var/ossec/api/configuration
+ - worker-ossec-etc:/var/ossec/etc
+ - worker-ossec-logs:/var/ossec/logs
+ - worker-ossec-queue:/var/ossec/queue
+ - worker-ossec-var-multigroups:/var/ossec/var/multigroups
+ - worker-ossec-integrations:/var/ossec/integrations
+ - worker-ossec-active-response:/var/ossec/active-response/bin
+ - worker-ossec-agentless:/var/ossec/agentless
+ - worker-ossec-wodles:/var/ossec/wodles
+ - worker-filebeat-etc:/etc/filebeat
+ - worker-filebeat-var:/var/lib/filebeat
+ - ./production_cluster/ssl_certs/root-ca.pem:/etc/ssl/root-ca.pem
+ - ./production_cluster/ssl_certs/filebeat.pem:/etc/ssl/filebeat.pem
+ - ./production_cluster/ssl_certs/filebeat.key:/etc/ssl/filebeat.key
+ - ./production_cluster/wazuh_cluster/wazuh_worker.conf:/wazuh-config-mount/etc/ossec.conf
+
+ elasticsearch:
+ image: amazon/opendistro-for-elasticsearch:1.9.0
+ hostname: elasticsearch
+ restart: always
+ ports:
+ - "9200:9200"
+ environment:
+ - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+ ulimits:
+ memlock:
+ soft: -1
+ hard: -1
+ nofile:
+ soft: 65536
+ hard: 65536
+ volumes:
+ - elastic-data-1:/usr/share/elasticsearch/data
+ - ./production_cluster/ssl_certs/root-ca.pem:/usr/share/elasticsearch/config/root-ca.pem
+ - ./production_cluster/ssl_certs/node1.key:/usr/share/elasticsearch/config/node1.key
+ - ./production_cluster/ssl_certs/node1.pem:/usr/share/elasticsearch/config/node1.pem
+ - ./production_cluster/elastic_opendistro/elasticsearch-node1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
+ - ./production_cluster/elastic_opendistro/internal_users.yml:/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
+
+ elasticsearch-2:
+ image: amazon/opendistro-for-elasticsearch:1.9.0
+ hostname: elasticsearch-2
+ restart: always
+ environment:
+ - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+ ulimits:
+ memlock:
+ soft: -1
+ hard: -1
+ nofile:
+ soft: 65536
+ hard: 65536
+ volumes:
+ - elastic-data-2:/usr/share/elasticsearch/data
+ - ./production_cluster/ssl_certs/root-ca.pem:/usr/share/elasticsearch/config/root-ca.pem
+ - ./production_cluster/ssl_certs/node2.key:/usr/share/elasticsearch/config/node2.key
+ - ./production_cluster/ssl_certs/node2.pem:/usr/share/elasticsearch/config/node2.pem
+ - ./production_cluster/elastic_opendistro/elasticsearch-node2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
+ - ./production_cluster/elastic_opendistro/internal_users.yml:/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
+
+ elasticsearch-3:
+ image: amazon/opendistro-for-elasticsearch:1.9.0
+ hostname: elasticsearch-3
+ restart: always
+ environment:
+ - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+ ulimits:
+ memlock:
+ soft: -1
+ hard: -1
+ nofile:
+ soft: 65536
+ hard: 65536
+ volumes:
+ - elastic-data-3:/usr/share/elasticsearch/data
+ - ./production_cluster/ssl_certs/root-ca.pem:/usr/share/elasticsearch/config/root-ca.pem
+ - ./production_cluster/ssl_certs/node3.key:/usr/share/elasticsearch/config/node3.key
+ - ./production_cluster/ssl_certs/node3.pem:/usr/share/elasticsearch/config/node3.pem
+ - ./production_cluster/elastic_opendistro/elasticsearch-node3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
+ - ./production_cluster/elastic_opendistro/internal_users.yml:/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
+
+ kibana:
+ build: kibana-opendistro/
+ image: wazuh-kibana-opendistro
+ hostname: kibana
+ restart: always
+ ports:
+ - 5601:5601
+ environment:
+ - ELASTICSEARCH_USERNAME=admin
+ - ELASTICSEARCH_PASSWORD=SecretPassword
+ - SERVER_SSL_ENABLED=true
+ - SERVER_SSL_CERTIFICATE=/usr/share/kibana/config/cert.pem
+ - SERVER_SSL_KEY=/usr/share/kibana/config/key.pem
+ - WAZUH_API_URL="https://wazuh-master"
+ volumes:
+ - ./production_cluster/kibana_ssl/cert.pem:/usr/share/kibana/config/cert.pem
+ - ./production_cluster/kibana_ssl/key.pem:/usr/share/kibana/config/key.pem
+
+ depends_on:
+ - elasticsearch
+ links:
+ - elasticsearch:elasticsearch
+ - wazuh-master:wazuh-master
+
+ nginx:
+ image: nginx:stable
+ hostname: nginx
+ restart: always
+ ports:
+ - "80:80"
+ - "443:443"
+ - "1514:1514"
+ depends_on:
+ - wazuh-master
+ - wazuh-worker
+ - kibana
+ links:
+ - wazuh-master:wazuh-master
+ - wazuh-worker:wazuh-worker
+ - kibana:kibana
+ volumes:
+ - ./production_cluster/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
+ - ./production_cluster/nginx/ssl:/etc/nginx/ssl:ro
+
+volumes:
+ ossec-api-configuration:
+ ossec-etc:
+ ossec-logs:
+ ossec-queue:
+ ossec-var-multigroups:
+ ossec-integrations:
+ ossec-active-response:
+ ossec-agentless:
+ ossec-wodles:
+ filebeat-etc:
+ filebeat-var:
+ worker-ossec-api-configuration:
+ worker-ossec-etc:
+ worker-ossec-logs:
+ worker-ossec-queue:
+ worker-ossec-var-multigroups:
+ worker-ossec-integrations:
+ worker-ossec-active-response:
+ worker-ossec-agentless:
+ worker-ossec-wodles:
+ worker-filebeat-etc:
+ worker-filebeat-var:
+ elastic-data-1:
+ elastic-data-2:
+ elastic-data-3:
diff --git a/production_cluster/elastic_opendistro/elasticsearch-node1.yml b/production_cluster/elastic_opendistro/elasticsearch-node1.yml
new file mode 100644
index 00000000..c343818e
--- /dev/null
+++ b/production_cluster/elastic_opendistro/elasticsearch-node1.yml
@@ -0,0 +1,31 @@
+network.host: 0.0.0.0
+cluster.name: wazuh-cluster
+node.name: elasticsearch
+discovery.seed_hosts: elasticsearch,elasticsearch-2,elasticsearch-3
+cluster.initial_master_nodes: elasticsearch,elasticsearch-2,elasticsearch-3
+bootstrap.memory_lock: true
+
+opendistro_security.ssl.transport.pemcert_filepath: node1.pem
+opendistro_security.ssl.transport.pemkey_filepath: node1.key
+opendistro_security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
+opendistro_security.ssl.transport.enforce_hostname_verification: false
+opendistro_security.ssl.transport.resolve_hostname: false
+opendistro_security.ssl.http.enabled: true
+opendistro_security.ssl.http.pemcert_filepath: node1.pem
+opendistro_security.ssl.http.pemkey_filepath: node1.key
+opendistro_security.ssl.http.pemtrustedcas_filepath: root-ca.pem
+opendistro_security.allow_default_init_securityindex: true
+opendistro_security.nodes_dn:
+ - 'CN=node1,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+ - 'CN=node2,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+ - 'CN=node3,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+ - 'CN=filebeat,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+opendistro_security.authcz.admin_dn: []
+opendistro_security.audit.type: internal_elasticsearch
+opendistro_security.enable_snapshot_restore_privilege: true
+opendistro_security.check_snapshot_restore_write_privileges: true
+opendistro_security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
+cluster.routing.allocation.disk.threshold_enabled: false
+#opendistro_security.audit.config.disabled_rest_categories: NONE
+#opendistro_security.audit.config.disabled_transport_categories: NONE
+opendistro_security.audit.log_request_body: false
diff --git a/production_cluster/elastic_opendistro/elasticsearch-node2.yml b/production_cluster/elastic_opendistro/elasticsearch-node2.yml
new file mode 100644
index 00000000..3e9bae49
--- /dev/null
+++ b/production_cluster/elastic_opendistro/elasticsearch-node2.yml
@@ -0,0 +1,31 @@
+network.host: 0.0.0.0
+cluster.name: wazuh-cluster
+node.name: elasticsearch-2
+discovery.seed_hosts: elasticsearch,elasticsearch-2,elasticsearch-3
+cluster.initial_master_nodes: elasticsearch,elasticsearch-2,elasticsearch-3
+bootstrap.memory_lock: true
+
+opendistro_security.ssl.transport.pemcert_filepath: node2.pem
+opendistro_security.ssl.transport.pemkey_filepath: node2.key
+opendistro_security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
+opendistro_security.ssl.transport.enforce_hostname_verification: false
+opendistro_security.ssl.transport.resolve_hostname: false
+opendistro_security.ssl.http.enabled: true
+opendistro_security.ssl.http.pemcert_filepath: node2.pem
+opendistro_security.ssl.http.pemkey_filepath: node2.key
+opendistro_security.ssl.http.pemtrustedcas_filepath: root-ca.pem
+opendistro_security.allow_default_init_securityindex: true
+opendistro_security.nodes_dn:
+ - 'CN=node1,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+ - 'CN=node2,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+ - 'CN=node3,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+ - 'CN=filebeat,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+opendistro_security.authcz.admin_dn: []
+opendistro_security.audit.type: internal_elasticsearch
+opendistro_security.enable_snapshot_restore_privilege: true
+opendistro_security.check_snapshot_restore_write_privileges: true
+opendistro_security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
+cluster.routing.allocation.disk.threshold_enabled: false
+#opendistro_security.audit.config.disabled_rest_categories: NONE
+#opendistro_security.audit.config.disabled_transport_categories: NONE
+opendistro_security.audit.log_request_body: false
diff --git a/production_cluster/elastic_opendistro/elasticsearch-node3.yml b/production_cluster/elastic_opendistro/elasticsearch-node3.yml
new file mode 100644
index 00000000..574bce5c
--- /dev/null
+++ b/production_cluster/elastic_opendistro/elasticsearch-node3.yml
@@ -0,0 +1,31 @@
+network.host: 0.0.0.0
+cluster.name: wazuh-cluster
+node.name: elasticsearch-3
+discovery.seed_hosts: elasticsearch,elasticsearch-2,elasticsearch-3
+cluster.initial_master_nodes: elasticsearch,elasticsearch-2,elasticsearch-3
+bootstrap.memory_lock: true
+
+opendistro_security.ssl.transport.pemcert_filepath: node3.pem
+opendistro_security.ssl.transport.pemkey_filepath: node3.key
+opendistro_security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
+opendistro_security.ssl.transport.enforce_hostname_verification: false
+opendistro_security.ssl.transport.resolve_hostname: false
+opendistro_security.ssl.http.enabled: true
+opendistro_security.ssl.http.pemcert_filepath: node3.pem
+opendistro_security.ssl.http.pemkey_filepath: node3.key
+opendistro_security.ssl.http.pemtrustedcas_filepath: root-ca.pem
+opendistro_security.allow_default_init_securityindex: true
+opendistro_security.nodes_dn:
+ - 'CN=node1,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+ - 'CN=node2,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+ - 'CN=node3,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+ - 'CN=filebeat,OU=Ops,O=Example\, Inc.,DC=example,DC=com'
+opendistro_security.authcz.admin_dn: []
+opendistro_security.audit.type: internal_elasticsearch
+opendistro_security.enable_snapshot_restore_privilege: true
+opendistro_security.check_snapshot_restore_write_privileges: true
+opendistro_security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
+cluster.routing.allocation.disk.threshold_enabled: false
+#opendistro_security.audit.config.disabled_rest_categories: NONE
+#opendistro_security.audit.config.disabled_transport_categories: NONE
+opendistro_security.audit.log_request_body: false
diff --git a/production_cluster/elastic_opendistro/internal_users.yml b/production_cluster/elastic_opendistro/internal_users.yml
new file mode 100644
index 00000000..d9f05b34
--- /dev/null
+++ b/production_cluster/elastic_opendistro/internal_users.yml
@@ -0,0 +1,56 @@
+---
+# This is the internal user database
+# The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh
+
+_meta:
+ type: "internalusers"
+ config_version: 2
+
+# Define your internal users here
+
+## Demo users
+
+admin:
+ hash: "$2y$12$K/SpwjtB.wOHJ/Nc6GVRDuc1h0rM1DfvziFRNPtk27P.c4yDr9njO"
+ reserved: true
+ backend_roles:
+ - "admin"
+ description: "Demo admin user"
+
+kibanaserver:
+ hash: "$2a$12$4AcgAt3xwOWadA5s5blL6ev39OXDNhmOesEoo33eZtrq2N0YrU3H."
+ reserved: true
+ description: "Demo kibanaserver user"
+
+kibanaro:
+ hash: "$2a$12$JJSXNfTowz7Uu5ttXfeYpeYE0arACvcwlPBStB1F.MI7f0U9Z4DGC"
+ reserved: false
+ backend_roles:
+ - "kibanauser"
+ - "readall"
+ attributes:
+ attribute1: "value1"
+ attribute2: "value2"
+ attribute3: "value3"
+ description: "Demo kibanaro user"
+
+logstash:
+ hash: "$2a$12$u1ShR4l4uBS3Uv59Pa2y5.1uQuZBrZtmNfqB3iM/.jL0XoV9sghS2"
+ reserved: false
+ backend_roles:
+ - "logstash"
+ description: "Demo logstash user"
+
+readall:
+ hash: "$2a$12$ae4ycwzwvLtZxwZ82RmiEunBbIPiAmGZduBAjKN0TXdwQFtCwARz2"
+ reserved: false
+ backend_roles:
+ - "readall"
+ description: "Demo readall user"
+
+snapshotrestore:
+ hash: "$2y$12$DpwmetHKwgYnorbgdvORCenv4NAK8cPUg8AI6pxLCuWf/ALc0.v7W"
+ reserved: false
+ backend_roles:
+ - "snapshotrestore"
+ description: "Demo snapshotrestore user"
diff --git a/production_cluster/kibana_ssl/generate-self-signed-cert.sh b/production_cluster/kibana_ssl/generate-self-signed-cert.sh
new file mode 100644
index 00000000..e006733f
--- /dev/null
+++ b/production_cluster/kibana_ssl/generate-self-signed-cert.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+cd $DIR
+
+if [ -s key.pem ]
+then
+ echo "Certificate already exists"
+ exit
+else
+ openssl req -x509 -batch -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem
+fi
diff --git a/production_cluster/nginx/nginx.conf b/production_cluster/nginx/nginx.conf
new file mode 100644
index 00000000..a02465fe
--- /dev/null
+++ b/production_cluster/nginx/nginx.conf
@@ -0,0 +1,66 @@
+user nginx;
+worker_processes 1;
+
+error_log /var/log/nginx/error.log warn;
+pid /var/run/nginx.pid;
+
+
+events {
+ worker_connections 1024;
+}
+
+
+http {
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+ '$status $body_bytes_sent "$http_referer" '
+ '"$http_user_agent" "$http_x_forwarded_for"';
+
+ access_log /var/log/nginx/access.log main;
+
+ sendfile on;
+ tcp_nopush on;
+
+ keepalive_timeout 65;
+
+ gzip on;
+
+ # kibana UI
+ server {
+ listen 80;
+ listen [::]:80;
+ return 301 https://$host:443$request_uri;
+ }
+
+ server {
+ listen 443 default_server ssl http2;
+ listen [::]:443 ssl http2;
+ ssl_certificate /etc/nginx/ssl/cert.pem;
+ ssl_certificate_key /etc/nginx/ssl/key.pem;
+ location / {
+ proxy_pass https://kibana:5601/;
+ proxy_ssl_verify off;
+ proxy_buffer_size 128k;
+ proxy_buffers 4 256k;
+ proxy_busy_buffers_size 256k;
+ }
+ }
+
+}
+
+
+
+# load balancer for Wazuh cluster
+stream {
+ upstream mycluster {
+ hash $remote_addr consistent;
+ server wazuh-master:1514;
+ server wazuh-worker:1514;
+ }
+ server {
+ listen 1514;
+ proxy_pass mycluster;
+ }
+}
diff --git a/production_cluster/nginx/ssl/generate-self-signed-cert.sh b/production_cluster/nginx/ssl/generate-self-signed-cert.sh
new file mode 100644
index 00000000..e006733f
--- /dev/null
+++ b/production_cluster/nginx/ssl/generate-self-signed-cert.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+cd $DIR
+
+if [ -s key.pem ]
+then
+ echo "Certificate already exists"
+ exit
+else
+ openssl req -x509 -batch -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem
+fi
diff --git a/production_cluster/ssl_certs/certs.yml b/production_cluster/ssl_certs/certs.yml
new file mode 100644
index 00000000..f7dad185
--- /dev/null
+++ b/production_cluster/ssl_certs/certs.yml
@@ -0,0 +1,30 @@
+ca:
+ root:
+ dn: CN=root-ca,OU=CA,O=Example\, Inc.,DC=example,DC=com
+ pkPassword: none
+ keysize: 2048
+ file: root-ca.pem
+ intermediate:
+ dn: CN=intermediate,OU=CA,O=Example\, Inc.,DC=example,DC=com
+ keysize: 2048
+ validityDays: 3650
+ pkPassword: intermediate-ca-password
+ file: intermediate-ca.pem
+
+nodes:
+ - name: node1
+ dn: CN=node1,OU=Ops,O=Example\, Inc.,DC=example,DC=com
+ dns:
+ - elasticsearch
+ - name: node2
+ dn: CN=node2,OU=Ops,O=Example\, Inc.,DC=example,DC=com
+ dns:
+ - elasticsearch-2
+ - name: node3
+ dn: CN=node3,OU=Ops,O=Example\, Inc.,DC=example,DC=com
+ dns:
+ - elasticsearch-3
+ - name: filebeat
+ dn: CN=filebeat,OU=Ops,O=Example\, Inc.,DC=example,DC=com
+ dns:
+ - wazuh
diff --git a/production_cluster/wazuh_cluster/wazuh_manager.conf b/production_cluster/wazuh_cluster/wazuh_manager.conf
new file mode 100644
index 00000000..740321bb
--- /dev/null
+++ b/production_cluster/wazuh_cluster/wazuh_manager.conf
@@ -0,0 +1,349 @@
+
+
+ yes
+ yes
+ no
+ no
+ no
+ smtp.example.wazuh.com
+ ossecm@example.wazuh.com
+ recipient@example.wazuh.com
+ 12
+ alerts.log
+
+
+
+ 3
+ 12
+
+
+
+
+ plain
+
+
+
+ secure
+ 1514
+ tcp
+ 131072
+
+
+
+
+ no
+ yes
+ yes
+ yes
+ yes
+ yes
+ yes
+ yes
+
+
+ 43200
+
+ /var/ossec/etc/rootcheck/rootkit_files.txt
+ /var/ossec/etc/rootcheck/rootkit_trojans.txt
+
+ yes
+
+
+
+ yes
+ 1800
+ 1d
+ yes
+
+ wodles/java
+ wodles/ciscat
+
+
+
+
+ yes
+ yes
+ /var/log/osquery/osqueryd.results.log
+ /etc/osquery/osquery.conf
+ yes
+
+
+
+
+ no
+ 1h
+ yes
+ yes
+ yes
+ yes
+ yes
+ yes
+ yes
+
+
+
+ yes
+ yes
+ 12h
+ yes
+
+
+
+ no
+ 5m
+ 6h
+ yes
+
+
+
+ no
+ trusty
+ xenial
+ bionic
+ focal
+ 1h
+
+
+
+
+ no
+ stretch
+ buster
+ 1h
+
+
+
+
+ no
+ 5
+ 6
+ 7
+ 8
+ 1h
+
+
+
+
+ yes
+ 1h
+
+
+
+
+ yes
+ 2010
+ 1h
+
+
+
+
+
+
+ no
+
+
+ 43200
+
+ yes
+
+
+ yes
+
+
+ no
+
+
+ /etc,/usr/bin,/usr/sbin
+ /bin,/sbin,/boot
+
+
+ /etc/mtab
+ /etc/hosts.deny
+ /etc/mail/statistics
+ /etc/random-seed
+ /etc/random.seed
+ /etc/adjtime
+ /etc/httpd/logs
+ /etc/utmpx
+ /etc/wtmpx
+ /etc/cups/certs
+ /etc/dumpdates
+ /etc/svc/volatile
+
+
+ .log$|.swp$
+
+
+ /etc/ssl/private.key
+
+ yes
+ yes
+ yes
+ yes
+
+
+ 10
+
+
+ 100
+
+
+
+ yes
+ 5m
+ 1h
+ 10
+
+
+
+
+
+ 127.0.0.1
+ ^localhost.localdomain$
+ 4.2.2.1
+ 4.2.2.2
+ 208.67.220.220
+
+
+
+ disable-account
+ disable-account.sh
+ user
+ yes
+
+
+
+ restart-ossec
+ restart-ossec.sh
+
+
+
+
+ firewall-drop
+ firewall-drop.sh
+ srcip
+ yes
+
+
+
+ host-deny
+ host-deny.sh
+ srcip
+ yes
+
+
+
+ route-null
+ route-null.sh
+ srcip
+ yes
+
+
+
+ win_route-null
+ route-null.cmd
+ srcip
+ yes
+
+
+
+ win_route-null-2012
+ route-null-2012.cmd
+ srcip
+ yes
+
+
+
+ netsh
+ netsh.cmd
+ srcip
+ yes
+
+
+
+ netsh-win-2016
+ netsh-win-2016.cmd
+ srcip
+ yes
+
+
+
+
+
+
+ command
+ df -P
+ 360
+
+
+
+ full_command
+ netstat -tulpn | sed 's/\([[:alnum:]]\+\)\ \+[[:digit:]]\+\ \+[[:digit:]]\+\ \+\(.*\):\([[:digit:]]*\)\ \+\([0-9\.\:\*]\+\).\+\ \([[:digit:]]*\/[[:alnum:]\-]*\).*/\1 \2 == \3 == \4 \5/' | sort -k 4 -g | sed 's/ == \(.*\) ==/:\1/' | sed 1,2d
+ netstat listening ports
+ 360
+
+
+
+ full_command
+ last -n 20
+ 360
+
+
+
+
+ ruleset/decoders
+ ruleset/rules
+ 0215-policy_rules.xml
+ etc/lists/audit-keys
+ etc/lists/amazon/aws-eventnames
+ etc/lists/security-eventchannel
+
+
+ etc/decoders
+ etc/rules
+
+
+
+
+ no
+ 1515
+ no
+ yes
+ 0
+ yes
+ no
+ yes
+ HIGH:!ADH:!EXP:!MD5:!RC4:!3DES:!CAMELLIA:@STRENGTH
+
+ no
+ /var/ossec/etc/sslmanager.cert
+ /var/ossec/etc/sslmanager.key
+ no
+
+
+
+ wazuh
+ manager
+ master
+ c98b6ha9b6169zc5f67rae55ae4z5647
+ 1516
+ 0.0.0.0
+
+ wazuh-master
+
+ no
+ no
+
+
+
+
+
+
+ syslog
+ /var/ossec/logs/active-responses.log
+
+
diff --git a/production_cluster/wazuh_cluster/wazuh_worker.conf b/production_cluster/wazuh_cluster/wazuh_worker.conf
new file mode 100644
index 00000000..59462183
--- /dev/null
+++ b/production_cluster/wazuh_cluster/wazuh_worker.conf
@@ -0,0 +1,349 @@
+
+
+ yes
+ yes
+ no
+ no
+ no
+ smtp.example.wazuh.com
+ ossecm@example.wazuh.com
+ recipient@example.wazuh.com
+ 12
+ alerts.log
+
+
+
+ 3
+ 12
+
+
+
+
+ plain
+
+
+
+ secure
+ 1514
+ tcp
+ 131072
+
+
+
+
+ no
+ yes
+ yes
+ yes
+ yes
+ yes
+ yes
+ yes
+
+
+ 43200
+
+ /var/ossec/etc/rootcheck/rootkit_files.txt
+ /var/ossec/etc/rootcheck/rootkit_trojans.txt
+
+ yes
+
+
+
+ yes
+ 1800
+ 1d
+ yes
+
+ wodles/java
+ wodles/ciscat
+
+
+
+
+ yes
+ yes
+ /var/log/osquery/osqueryd.results.log
+ /etc/osquery/osquery.conf
+ yes
+
+
+
+
+ no
+ 1h
+ yes
+ yes
+ yes
+ yes
+ yes
+ yes
+ yes
+
+
+
+ yes
+ yes
+ 12h
+ yes
+
+
+
+ no
+ 5m
+ 6h
+ yes
+
+
+
+ no
+ trusty
+ xenial
+ bionic
+ focal
+ 1h
+
+
+
+
+ no
+ stretch
+ buster
+ 1h
+
+
+
+
+ no
+ 5
+ 6
+ 7
+ 8
+ 1h
+
+
+
+
+ yes
+ 1h
+
+
+
+
+ yes
+ 2010
+ 1h
+
+
+
+
+
+
+ no
+
+
+ 43200
+
+ yes
+
+
+ yes
+
+
+ no
+
+
+ /etc,/usr/bin,/usr/sbin
+ /bin,/sbin,/boot
+
+
+ /etc/mtab
+ /etc/hosts.deny
+ /etc/mail/statistics
+ /etc/random-seed
+ /etc/random.seed
+ /etc/adjtime
+ /etc/httpd/logs
+ /etc/utmpx
+ /etc/wtmpx
+ /etc/cups/certs
+ /etc/dumpdates
+ /etc/svc/volatile
+
+
+ .log$|.swp$
+
+
+ /etc/ssl/private.key
+
+ yes
+ yes
+ yes
+ yes
+
+
+ 10
+
+
+ 100
+
+
+
+ yes
+ 5m
+ 1h
+ 10
+
+
+
+
+
+ 127.0.0.1
+ ^localhost.localdomain$
+ 4.2.2.1
+ 4.2.2.2
+ 208.67.220.220
+
+
+
+ disable-account
+ disable-account.sh
+ user
+ yes
+
+
+
+ restart-ossec
+ restart-ossec.sh
+
+
+
+
+ firewall-drop
+ firewall-drop.sh
+ srcip
+ yes
+
+
+
+ host-deny
+ host-deny.sh
+ srcip
+ yes
+
+
+
+ route-null
+ route-null.sh
+ srcip
+ yes
+
+
+
+ win_route-null
+ route-null.cmd
+ srcip
+ yes
+
+
+
+ win_route-null-2012
+ route-null-2012.cmd
+ srcip
+ yes
+
+
+
+ netsh
+ netsh.cmd
+ srcip
+ yes
+
+
+
+ netsh-win-2016
+ netsh-win-2016.cmd
+ srcip
+ yes
+
+
+
+
+
+
+ command
+ df -P
+ 360
+
+
+
+ full_command
+ netstat -tulpn | sed 's/\([[:alnum:]]\+\)\ \+[[:digit:]]\+\ \+[[:digit:]]\+\ \+\(.*\):\([[:digit:]]*\)\ \+\([0-9\.\:\*]\+\).\+\ \([[:digit:]]*\/[[:alnum:]\-]*\).*/\1 \2 == \3 == \4 \5/' | sort -k 4 -g | sed 's/ == \(.*\) ==/:\1/' | sed 1,2d
+ netstat listening ports
+ 360
+
+
+
+ full_command
+ last -n 20
+ 360
+
+
+
+
+ ruleset/decoders
+ ruleset/rules
+ 0215-policy_rules.xml
+ etc/lists/audit-keys
+ etc/lists/amazon/aws-eventnames
+ etc/lists/security-eventchannel
+
+
+ etc/decoders
+ etc/rules
+
+
+
+
+ no
+ 1515
+ no
+ yes
+ 0
+ yes
+ no
+ yes
+ HIGH:!ADH:!EXP:!MD5:!RC4:!3DES:!CAMELLIA:@STRENGTH
+
+ no
+ /var/ossec/etc/sslmanager.cert
+ /var/ossec/etc/sslmanager.key
+ no
+
+
+
+ wazuh
+ worker01
+ worker
+ c98b6ha9b6169zc5f67rae55ae4z5647
+ 1516
+ 0.0.0.0
+
+ wazuh-master
+
+ no
+ no
+
+
+
+
+
+
+ syslog
+ /var/ossec/logs/active-responses.log
+
+