# Wazuh single-node (basiert auf wazuh/wazuh-docker single-node) # + sshpull-collector: holt Logs per SSH von Hosts, auf die nur per SSH zugegriffen werden kann # + Manager-Erweiterung: Agentless-Integritaets- und Befehls-Checks per SSH # # Vor dem ersten Start: ./setup.sh (erkennt Docker/Podman selbst, danach ./setup.sh up) # # Kompatibel mit docker compose, docker-compose, podman-compose und "podman compose": # - Images voll qualifiziert (docker.io/..., localhost/...) wegen Podman-Short-Name-Policy # - Bind-Mounts mit ":z" fuer SELinux (RHEL/Fedora); ohne SELinux wirkungslos services: wazuh.manager: build: context: . dockerfile: manager/Dockerfile args: WAZUH_VERSION: ${WAZUH_VERSION} image: localhost/sshpull/wazuh-manager:${WAZUH_VERSION} hostname: wazuh.manager restart: always ulimits: memlock: soft: -1 hard: -1 nofile: soft: 655360 hard: 655360 # Keine Ports nach aussen: Agents (falls ueberhaupt) kommen ueber den SSH-Tunnel # des Collectors. Fuer klassisch angebundene Agents freischalten: # ports: # - "1514:1514" # - "1515:1515" environment: - TZ=${TZ} - INDEXER_URL="https://wazuh.indexer:9200" # Anfuehrungszeichen gehoeren dazu (filebeat.yml) - INDEXER_USERNAME=admin - INDEXER_PASSWORD=${INDEXER_PASSWORD} - 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 - API_USERNAME=wazuh-wui - API_PASSWORD=${API_PASSWORD} volumes: - wazuh_api_configuration:/var/ossec/api/configuration - wazuh_etc:/var/ossec/etc - wazuh_logs:/var/ossec/logs - wazuh_queue:/var/ossec/queue - wazuh_var_multigroups:/var/ossec/var/multigroups - wazuh_integrations:/var/ossec/integrations - wazuh_active_response:/var/ossec/active-response/bin - wazuh_agentless:/var/ossec/agentless - wazuh_wodles:/var/ossec/wodles - filebeat_etc:/etc/filebeat - filebeat_var:/var/lib/filebeat - ./config/wazuh_indexer_ssl_certs/root-ca-manager.pem:/etc/ssl/root-ca.pem:ro,z - ./config/wazuh_indexer_ssl_certs/wazuh.manager.pem:/etc/ssl/filebeat.pem:ro,z - ./config/wazuh_indexer_ssl_certs/wazuh.manager-key.pem:/etc/ssl/filebeat.key:ro,z - ./config/wazuh_cluster/wazuh_manager.conf:/wazuh-config-mount/etc/ossec.conf:ro,z # sshpull - ./hosts.yml:/sshpull/hosts.yml:ro,z - ./ssh:/sshpull/ssh:ro,z - remote_logs:/remote-logs:ro wazuh.indexer: image: docker.io/wazuh/wazuh-indexer:${WAZUH_VERSION} hostname: wazuh.indexer restart: always environment: - "OPENSEARCH_JAVA_OPTS=-Xms${INDEXER_HEAP} -Xmx${INDEXER_HEAP}" ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 volumes: - wazuh-indexer-data:/var/lib/wazuh-indexer - ./config/wazuh_indexer_ssl_certs/root-ca.pem:/usr/share/wazuh-indexer/config/certs/root-ca.pem:ro,z - ./config/wazuh_indexer_ssl_certs/wazuh.indexer-key.pem:/usr/share/wazuh-indexer/config/certs/wazuh.indexer.key:ro,z - ./config/wazuh_indexer_ssl_certs/wazuh.indexer.pem:/usr/share/wazuh-indexer/config/certs/wazuh.indexer.pem:ro,z - ./config/wazuh_indexer_ssl_certs/admin.pem:/usr/share/wazuh-indexer/config/certs/admin.pem:ro,z - ./config/wazuh_indexer_ssl_certs/admin-key.pem:/usr/share/wazuh-indexer/config/certs/admin-key.pem:ro,z - ./config/wazuh_indexer/wazuh.indexer.yml:/usr/share/wazuh-indexer/config/opensearch.yml:ro,z - ./config/wazuh_indexer/internal_users.yml:/usr/share/wazuh-indexer/config/opensearch-security/internal_users.yml:ro,z wazuh.dashboard: image: docker.io/wazuh/wazuh-dashboard:${WAZUH_VERSION} hostname: wazuh.dashboard restart: always ports: - "${DASHBOARD_PORT}:5601" environment: - INDEXER_USERNAME=admin - INDEXER_PASSWORD=${INDEXER_PASSWORD} - WAZUH_API_URL=https://wazuh.manager - DASHBOARD_USERNAME=kibanaserver - DASHBOARD_PASSWORD=${DASHBOARD_PASSWORD} - API_USERNAME=wazuh-wui - API_PASSWORD=${API_PASSWORD} volumes: - ./config/wazuh_indexer_ssl_certs/wazuh.dashboard.pem:/usr/share/wazuh-dashboard/certs/wazuh-dashboard.pem:ro,z - ./config/wazuh_indexer_ssl_certs/wazuh.dashboard-key.pem:/usr/share/wazuh-dashboard/certs/wazuh-dashboard-key.pem:ro,z - ./config/wazuh_indexer_ssl_certs/root-ca.pem:/usr/share/wazuh-dashboard/certs/root-ca.pem:ro,z - ./config/wazuh_dashboard/opensearch_dashboards.yml:/usr/share/wazuh-dashboard/config/opensearch_dashboards.yml:ro,z - wazuh-dashboard-config:/usr/share/wazuh-dashboard/data/wazuh/config - wazuh-dashboard-custom:/usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom depends_on: - wazuh.indexer - wazuh.manager sshpull.collector: build: context: . dockerfile: collector/Dockerfile image: localhost/sshpull/collector:latest hostname: sshpull.collector restart: always environment: - TZ=${TZ} - MANAGER_HOST=wazuh.manager - MAX_LOG_MB=${COLLECTOR_MAX_LOG_MB} volumes: - ./hosts.yml:/sshpull/hosts.yml:ro,z - ./ssh:/ssh:z # rw, damit "keyscan" known_hosts schreiben kann - remote_logs:/remote-logs - collector_state:/state depends_on: - wazuh.manager volumes: wazuh_api_configuration: wazuh_etc: wazuh_logs: wazuh_queue: wazuh_var_multigroups: wazuh_integrations: wazuh_active_response: wazuh_agentless: wazuh_wodles: filebeat_etc: filebeat_var: wazuh-indexer-data: wazuh-dashboard-config: wazuh-dashboard-custom: remote_logs: collector_state: