Ursachenanalyse und saubere Lösung bei Distributed / All-in-One Deployments
Einleitung
Beim Deployment des Wazuh Dashboards nach offizieller Anleitung kann es zu einer verwirrenden Situation kommen:
- Der Dienst
wazuh-dashboardläuft scheinbar korrekt - Die Weboberfläche ist nicht erreichbar
- Die Datei
/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.ymlexistiert nicht
Dieser Artikel erklärt:
- warum diese Datei fehlt
- warum das Dashboard nicht startet
- wie ein Port- und Berechtigungsproblem (EACCES) die eigentliche Ursache ist
- und wie man das Problem sauber behebt
1. Ausgangssituation
Setup
- Deployment-Typ: Distributed, Manager + Dashboard auf demselben Server
- Wazuh Version: 4.14.x
- Installation gemäß offizieller Anleitung:
https://documentation.wazuh.com/current/installation-guide/wazuh-dashboard/step-by-step.html
Beobachtungen
wazuh-dashboardService läuft- Datei
wazuh.ymlfehlt - Web UI unter
https://<host>nicht erreichbar - Verzeichnis
/usr/share/wazuh-dashboard/data/wazuh/config/ist leer
2. Wichtige Hintergrundinfo: Wann wird wazuh.yml erstellt?
Die Datei wazuh.yml wird nicht während der Paketinstallation erzeugt.
📌 Sie wird erst automatisch generiert, wenn:
- das Dashboard erfolgreich startet
- und die Wazuh-App im UI zum ersten Mal geladen wird
➡️ Wenn das Dashboard gar nicht erreichbar ist, kann die Datei nicht entstehen.
3. Der entscheidende Hinweis: Blick in die Logs
Der Durchbruch kam mit:
journalctl -u wazuh-dashboard | grep -i -E "error|warn"
Fehlerausgabe
FATAL Error: listen EACCES: permission denied wazuh-manager:443
code: 'EACCES'
port: 443
4. Root Cause: Port 443 & Linux-Berechtigungen
Warum passiert das?
Unter Linux gilt:
- Ports < 1024 dürfen nur von Prozessen mit Root-Rechten gebunden werden
wazuh-dashboardläuft nicht als root, sondern als eigener Service-User
➡️ Ergebnis:
- Dashboard kann Port 443 nicht binden
- Service startet nicht korrekt
- UI bleibt unerreichbar
wazuh.ymlwird nie erzeugt
📚 Linux-Hintergrund:
5. Verifikation: Ist Port 443 bereits belegt?
sudo lsof -i :443
Erwartete Ausgabe (wenn korrekt konfiguriert):
node 696 wazuh-dashboard TCP *:https (LISTEN)
Wenn:
- kein Prozess lauscht → Permission-Problem
- anderer Dienst lauscht (nginx, apache, proxy) → Port-Konflikt
6. Saubere Lösungen (Best Practice)
Option A – Dashboard auf anderen Port legen (empfohlen)
In:
/etc/wazuh-dashboard/opensearch_dashboards.yml
server.port: 5601
Danach:
systemctl restart wazuh-dashboard
Zugriff:
https://<host>:5601
Option B – Reverse Proxy verwenden (Enterprise-Standard)
- Dashboard bleibt auf 5601
- NGINX / HAProxy bindet Port 443
- TLS, Auth & Routing sauber getrennt
📚 Beispiele:
- https://documentation.wazuh.com/current/user-manual/wazuh-server-cluster/load-balancers.html
- https://nginx.org/en/docs/http/ngx_http_proxy_module.html
Option C – CAP_NET_BIND_SERVICE setzen (nicht empfohlen)
setcap 'cap_net_bind_service=+ep' /usr/share/wazuh-dashboard/node/bin/node
⚠️ Nicht empfohlen:
- Sicherheitsrisiko
- Update-anfällig
- widerspricht Hardening-Guidelines
7. Ergebnis nach Fix
Nach erfolgreichem Start des Dashboards:
- Web UI ist erreichbar
- Wazuh-App lädt korrekt
- Datei wird automatisch erzeugt:
/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml
Ab jetzt:
- manuelle Anpassungen möglich
- API- & Cluster-Verbindungen konfigurierbar
8. Typische Missverständnisse (Lessons Learned)
| Annahme | Realität |
|---|---|
| wazuh.yml fehlt → Installation kaputt | ❌ |
| Datei muss manuell angelegt werden | ❌ |
| Dashboard läuft → UI erreichbar | ❌ |
| Fehler liegt bei Indexer | ❌ |
| Port-Berechtigungen sind egal | ❌ |
➡️ Das eigentliche Problem war ein klassischer Linux-Port-Permission-Fehler.
9. Relevante Quellen & weiterführende Links
Offizielle Wazuh Dokumentation
- Wazuh Dashboard Installation
https://documentation.wazuh.com/current/installation-guide/wazuh-dashboard/step-by-step.html - Dashboard Konfiguration
https://documentation.wazuh.com/current/installation-guide/wazuh-dashboard/step-by-step.html#configuring-the-wazuh-dashboard
Linux & Security
- Linux Privileged Ports
https://man7.org/linux/man-pages/man7/ip.7.html - Linux Capabilities
https://man7.org/linux/man-pages/man7/capabilities.7.html
Reverse Proxy Best Practices
- NGINX Reverse Proxy
https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/ - HAProxy TLS Termination
https://www.haproxy.com/documentation/hapee/latest/security/tls/
Fazit
❝ Wenn wazuh.yml fehlt, ist das kein Konfigurationsfehler,
sondern ein Symptom eines nicht erreichbaren Dashboards. ❞
Die Lösung liegt fast immer bei:
- Ports
- Rechten
- Service-Startbedingungen
Mit sauberer Port-Trennung oder Reverse Proxy läuft das Dashboard stabil – und die Konfigurationsdateien entstehen automatisch.
https://wazuh.slack.com/archives/C07CNG3M11N/p1766137365065569