Fehlende wazuh.yml & nicht erreichbares Wazuh Dashboard

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-dashboard läuft scheinbar korrekt
  • Die Weboberfläche ist nicht erreichbar
  • Die Datei /usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml existiert 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

Beobachtungen

  • wazuh-dashboard Service läuft
  • Datei wazuh.yml fehlt
  • 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-dashboard läuft nicht als root, sondern als eigener Service-User

➡️ Ergebnis:

  • Dashboard kann Port 443 nicht binden
  • Service startet nicht korrekt
  • UI bleibt unerreichbar
  • wazuh.yml wird 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

📘 Referenz:
https://documentation.wazuh.com/current/installation-guide/wazuh-dashboard/step-by-step.html#configuring-the-wazuh-dashboard


Option B – Reverse Proxy verwenden (Enterprise-Standard)

  • Dashboard bleibt auf 5601
  • NGINX / HAProxy bindet Port 443
  • TLS, Auth & Routing sauber getrennt

📚 Beispiele:


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)

AnnahmeRealitä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

Linux & Security

Reverse Proxy Best Practices


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