Hi list,
First of all, I am a total newbe of Wazuh. I read this doc
https://documentation.wazuh.com/current/docker/wazuh-container.html#production-deployment
but there is something not working when bringing up my docker containers.
I have just two personal SSL certificate files, and one single server.
The server is filebeat, agent and single node, all at once.
xxx.domain.ch.crt
xxx.domain.ch.key
These certificates are stored outside of any docker container, directly
in a folder on my OS, in /volume/config/certs/xxx/
When bringing up the containers, I get the following error messages:
(below these messages are printed my configuration files)
Please can anyone help me with this issue?
Thank you a lot!
Kind regards, Birgit
ERROR MESSAGES:
===============
kibana_1 | FATAL Error: ENOENT: no such file or directory,
open '/usr/share/kibana/config/xxx.domain.ch.key'
ERROR: for wazuh-docker_elasticsearch_1 Cannot start service
elasticsearch: OCI runtime create failed: container_linux.go:367:
starting container process caused: process_linux.go:495: container init
caused: rootfs_linux.go:60: mounting
"/root/script/wazuh-docker/production_cluster/elastic_opendistro/internal_users.yml"
to rootfs at
"/var/lib/docker/overlay2/936c900d26a11285e3493636dbb6b1cb8799bce43ac576d642ed0fa9167add48/merged/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml"
caused: not a directory: unknown: Are you trying to mount a directory
onto a file (or vice-versa)? Check if the specified host path exists and
is the expected type
ERROR: for elasticsearch Cannot start service elasticsearch: OCI
runtime create failed: container_linux.go:367: starting container
process caused: process_linux.go:495: container init caused:
rootfs_linux.go:60: mounting
"/root/script/wazuh-docker/production_cluster/elastic_opendistro/internal_users.yml"
to rootfs at
"/var/lib/docker/overlay2/936c900d26a11285e3493636dbb6b1cb8799bce43ac576d642ed0fa9167add48/merged/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml"
caused: not a directory: unknown: Are you trying to mount a directory
onto a file (or vice-versa)? Check if the specified host path exists and
is the expected type
ERROR: Encountered errors while bringing up the project
CONFIG FILES:
=============
docker-compose.yml
==================
# Wazuh App Copyright (C) 2021 Wazuh Inc. (License GPLv2)
version: '3.7'
services:
wazuh:
image: wazuh/wazuh-odfe:4.1.2
hostname: wazuh-manager
restart: always
ports:
- "1514:1514"
- "1515:1515"
- "514:514/udp"
- "55000:55000"
environment:
- ELASTICSEARCH_URL=
https://elasticsearch:9200
- ELASTIC_USERNAME=xxxx
- ELASTIC_PASSWORD=xxxx
- FILEBEAT_SSL_VERIFICATION_MODE=none
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
elasticsearch:
image: amazon/opendistro-for-elasticsearch:1.12.0
hostname: elasticsearch
restart: always
ports:
- "9200:9200"
environment:
- discovery.type=single-node
-
cluster.name=wazuh-cluster
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- bootstrap.memory_lock=true
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
kibana:
image: wazuh/wazuh-kibana-odfe:4.1.2
hostname: kibana
restart: always
ports:
- 443:5601
environment:
- ELASTICSEARCH_USERNAME=xxxx
- ELASTICSEARCH_PASSWORD=xxxx
- SERVER_SSL_ENABLED=true
- SERVER_SSL_CERTIFICATE=/usr/share/kibana/config/xxx.domain.ch.crt
- SERVER_SSL_KEY=/usr/share/kibana/config/xxx.domain.ch.key
depends_on:
- elasticsearch
links:
- elasticsearch:elasticsearch
- wazuh:wazuh
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:
production-cluster.yml
======================
# Wazuh App Copyright (C) 2021 Wazuh Inc. (License GPLv2)
version: '3.7'
services:
wazuh-master:
image: wazuh/wazuh-odfe:4.1.2
hostname: wazuh-master
restart: always
ports:
- "1515:1515"
- "514:514/udp"
- "55000:55000"
environment:
- ELASTICSEARCH_URL=
https://elasticsearch:9200
- ELASTIC_USERNAME=xxxx
- ELASTIC_PASSWORD=xxxx
- FILEBEAT_SSL_VERIFICATION_MODE=full
- SSL_CERTIFICATE_AUTHORITIES=/etc/ssl/xxx.domain.ch.crt
- SSL_CERTIFICATE=/etc/ssl/xxx.domain.ch.crt
- SSL_KEY=/etc/ssl/xxx.domain.ch.key
- API_USERNAME=acme-user
- API_PASSWORD=xxxx
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
-
/volume/config/certs/xxx/xxx.domain.ch.crt:/etc/ssl/xxx.domain.ch.crt
-
/volume/config/certs/xxx/xxx.domain.ch.key:/etc/ssl/xxx.domain.ch.key
-
./production_cluster/wazuh_cluster/wazuh_manager.conf:/wazuh-config-mount/etc/ossec.conf
wazuh-worker:
image: wazuh/wazuh-odfe:4.1.2
hostname: wazuh-worker
restart: always
environment:
- ELASTICSEARCH_URL=
https://elasticsearch:9200
- ELASTIC_USERNAME=xxxxx
- ELASTIC_PASSWORD=xxxxx
- FILEBEAT_SSL_VERIFICATION_MODE=full
- SSL_CERTIFICATE_AUTHORITIES=/etc/ssl/xxx.domain.ch.crt
- SSL_CERTIFICATE=/etc/ssl/xxx.domain.ch.crt
- SSL_KEY=/etc/ssl/xxx.domain.ch.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
-
/volume/config/certs/xxx/xxx.domain.ch.crt:/etc/ssl/xxx.domain.ch.crt
-
/volume/config/certs/xxx/xxx.domain.ch.key:/etc/ssl/xxx.domain.ch.key
-
./production_cluster/wazuh_cluster/wazuh_worker.conf:/wazuh-config-mount/etc/ossec.conf
elasticsearch:
image: amazon/opendistro-for-elasticsearch:1.12.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
-
/volume/config/certs/xxx/xxx.domain.ch.crt:/usr/share/elasticsearch/config/xxx.domain.ch.crt
-
/volume/config/certs/xxx/xxx.domain.ch.key:/usr/share/elasticsearch/config/xxx.domain.ch.key
-
./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
kibana:
image: wazuh/wazuh-kibana-odfe:4.1.2
hostname: kibana
restart: always
ports:
- 5601:5601
environment:
- ELASTICSEARCH_USERNAME=xxxxx
- ELASTICSEARCH_PASSWORD=xxxxx
- SERVER_SSL_ENABLED=true
- SERVER_SSL_CERTIFICATE=/usr/share/kibana/config/xxx.domain.ch.crt
- SERVER_SSL_KEY=/usr/share/kibana/config/xxx.domain.ch.key
- WAZUH_API_URL="
https://wazuh-master"
- API_USERNAME=acme-user
- API_PASSWORD=MyS3cr37P450r.*-
volumes:
-
/volume/config/certs/xxx/xxx.domain.ch.crt:/usr/share/kibana/config/xxx.domain.ch.crt
-
/volume/config/certs/xxx/xxx.domain.ch.key:/usr/share/kibana/config/xxx.domain.ch.key
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
- /volume/config/certs/xxx:/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:
elasticsearch-node1.yml
=======================
network.host: 0.0.0.0
cluster.name: wazuh-cluster
node.name: elasticsearch
discovery.seed_hosts: elasticsearch
cluster.initial_master_nodes: elasticsearch
bootstrap.memory_lock: true
opendistro_security.ssl.transport.pemcert_filepath: xxx.domain.ch.crt
opendistro_security.ssl.transport.pemkey_filepath: xxx.domain.ch.key
opendistro_security.ssl.transport.pemtrustedcas_filepath: xxx.domain.ch.crt
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: xxx.domain.ch.crt
opendistro_security.ssl.http.pemkey_filepath: xxx.domain.ch.key
opendistro_security.ssl.http.pemtrustedcas_filepath: xxx.domain.ch.crt
opendistro_security.allow_default_init_securityindex: true
opendistro_security.nodes_dn:
- CN=
xxx.domain.ch,OU=DIUF,O=University of xxx DC=domain,DC=ch
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