Wazuh Menu Struktur
Wazuh Dashboard – Rundgang für das Lab
Das Wazuh-Dashboard basiert auf OpenSearch Dashboards. Wer von der Konsole kommt, findet die Daten oft nicht, weil mehrere unsichtbare Voreinstellungen (Zeitraum, Index, Filter) die Anzeige einschränken. Dieser Artikel geht nur die lab-relevanten Menüpunkte durch — der Rest (Cloud security, PCI/GDPR/HIPAA, Explore-Detailpunkte) kommt im SOC-Lab nicht vor.
Das Menü öffnet sich links über das Hamburger-Icon (☰) oben.
Discover – das Herzstück
Discover ist die Roh-Ansicht aller Events. Hier landet jeder Alert, den dein
Decoder/deine Regel erzeugt. Mental: es ist die GUI-Version von
tail -f alerts.json | grep ... — aber mit vier Stellschrauben, die du
kennen musst, sonst siehst du „No results".
Die vier Stolpersteine zuerst
- 1. Zeitraum (häufigste Ursache für "nichts da")
Oben rechts sitzt der Zeit-Picker (Uhr-Symbol, meist "Last 24 hours"). Discover zeigt NUR Events aus diesem Fenster. Auf der Konsole gibt es so etwas nicht — grep kennt keine Zeit. Nach einem Test also immer prüfen:
- Klick auf den Zeit-Picker → Last 15 minutes wählen, wenn du gerade eine Testmail geschickt hast
- Oder Today für den ganzen Tag
- Rechts daneben der Refresh-Button (↻) — Daten hinken der Einlieferung ein paar Sekunden hinterher
- 2. Index-Pattern
Oben links ein Dropdown — muss auf wazuh-alerts-* stehen. Steht dort etwas anderes, durchsuchst du den falschen Index und siehst keine Alerts.
- 3. Aktive Filter
Unter der Suchleiste sitzen Filter-Pillen. Ein vergessener Filter von vorhin blendet alles andere aus. Pillen prüfen und ggf. per "x" entfernen.
- 4. Spalten
Die Tabelle zeigt anfangs nur Time und eine Roh-Zeile. Aussagekräftige Spalten musst du selbst hinzufügen (siehe unten) — das ist kein Bug.
Suchen: DQL ist kein grep
Die Suchleiste oben nutzt DQL (Dashboards Query Language). Wichtig für
Konsolen-Leute: das ist keine Regex und kein grep. Das Grundmuster ist
feld:wert.
| Query | Findet |
|---|---|
rule.id:100200 |
Genau deine EICAR/ClamAV-Regel |
rule.level >= 10 |
Alles ab Level 10 (Hochkritisches) |
agent.name:mail |
Nur Events vom Mailserver-Agent |
rule.groups:malware |
Alle Malware-Events |
rule.groups:syscheck |
Alle FIM-Events (File Integrity Monitoring) |
data.virus_name:* |
Alle Events, bei denen das Feld virus_name gesetzt ist |
location:"/var/log/rspamd/rspamd.log" |
Alles aus dem Rspamd-Log |
agent.name:mail and rule.level >= 7 |
Verknüpfung mit and / or / not |
- Merkregeln zur Syntax
- Doppelpunkt trennt Feld und Wert:
rule.id:100200 - Wildcard ist
*:rule.description:*Virus* - Werte mit Leerzeichen in Anführungszeichen:
rule.description:"Virus in E-Mail" - Verknüpfen mit
and/or/not(klein) - Bereiche mit Leerzeichen:
rule.level >= 10 - Nur ein Wort ohne Doppelpunkt = Freitextsuche über alle Felder
Filter per Klick statt Tippen
Wenn dir die Syntax lästig ist: unter der Suchleiste + Add filter. Dann per Dropdown:
- Field auswählen (z. B. rule.level)
- Operator (is, is not, exists, is one of, is between)
- Value eintippen
- Save
Das ist der GUI-Weg ganz ohne Query-Sprache — für den Einstieg oft schneller. Filter lassen sich anpinnen (Pin-Symbol), dann bleiben sie über andere Ansichten hinweg aktiv.
Spalten setzen
Links die Liste Available fields. Mit der Maus über ein Feld fahren → + erscheint → als Spalte hinzufügen. Sinnvoll für deine POCs:
- agent.name – welcher Host
- rule.level – Schweregrad
- rule.description – Klartext
- data.virus_name – bei Mail-Malware der Signaturname
Klick auf den Spaltenkopf sortiert.
Ein Event aufklappen – der Brücke-zur-Konsole-Trick
Links vor jeder Zeile ein > (Pfeil). Klick → das Event klappt auf, Reiter Table und JSON. Hier siehst du JEDES decodierte Feld mit seinem exakten Pfad — also genau die Feldnamen, die du in der nächsten Query brauchst.
Das ist der schnellste Weg vom „ich sehe den Alert" zum „ich kann gezielt danach
filtern": Event aufklappen, Feldname ablesen (z. B. data.virus_name),
oben als Query eintippen.
- Wichtig zu wissen
Alles, was dein Decoder per <order> rausschreibt, landet unter
data.*. Dein Feld virus_name heißt im Dashboard also
data.virus_name. Das erklärt, warum eigene Felder nicht „nackt"
auffindbar sind.
Histogramm und Speichern
- Das Balkendiagramm über der Tabelle zeigt Events pro Zeit. Mit der Maus einen Bereich aufziehen zoomt den Zeitraum.
- Oben Save speichert die Suche samt Query, Spalten und Filtern unter einem Namen — wiederverwendbar und Basis für Visualisierungen.
Endpoint security
Malware Detection
Aufbereitete Ansicht für Malware-Events — hier taucht dein EICAR/ClamAV-Fund (Rule 100200, CLAM_VIRUS) auf, ohne dass du in Discover filtern musst. Gut für die POC-Demo. Im Hintergrund dieselben Daten wie in Discover, nur vorgefiltert.
File Integrity Monitoring
GUI zu deinem FIM-POC (Upload-Verzeichnis, Rule 554). Zeigt pro Agent, welche
Dateien angelegt/geändert/gelöscht wurden — mit Vorher/Nachher-Hash. Discover-Pendant:
rule.groups:syscheck.
Threat intelligence
Vulnerability Detection
Listet erkannte CVEs pro Agent (dein Vuln-POC). Die Detail-Felder liegen unter data.vulnerability.*. Eigene Ansicht, weil das Datenmodell anders ist als bei normalen Regel-Alerts.
MITRE ATT&CK
Mappt Alerts auf Taktiken/Techniken. Deine Demos tauchen hier auf, sobald die
Regeln ein mitre-Tag haben:
- T1110 Brute Force – dein Hydra/SSH-Demo
- T1190 Exploit Public-Facing Application – SQLi gegen die VulnSite/WAF
Filter in Discover: rule.mitre.id:T1110.
Server management
Das ist der GUI-Zugang zu allem, was du sonst per Konsole in
/var/ossec/etc/ machst.
| Punkt | Zweck | Konsolen-Pendant |
|---|---|---|
| Rules | Alle Regeln durchsuchen, deine eigenen wiederfinden | local_rules.xml |
| Decoders | Decoder einsehen | local_decoder.xml |
| Dev Tools | API-Queries direkt absetzen | curl gegen Port 55000 |
| Ruleset Test | Logzeile gegen Decoder/Regeln testen | wazuh-logtest |
| Logs | Manager-Log im Browser | /var/ossec/logs/ossec.log |
| Status | Daemon-Status | wazuh-control status |
- Tipp
Ruleset Test ist im GUI exakt dein wazuh-logtest: Logzeile
einfügen, sehen welcher Decoder greift und welche Regel mit welchem Level feuert.
Ideal, wenn du eine eigene Regel baust und dem Teilnehmer am Beamer zeigen willst,
was passiert.
Agents management
Summary
Der GUI-Blick auf deinen agent_control -l: welche Agents sind
registriert, welche active / disconnected, wann zuletzt gesehen, welche
Version. Schneller Gesundheits-Check der Flotte.
Groups
Agent-Gruppen und die zentrale agent.conf pro Gruppe.
Im Lab nicht relevant
Der Vollständigkeit halber, ohne eigene Behandlung: Cloud security (Docker, AWS, GCP, GitHub, O365, MS Graph), die Compliance-Mappings unter Security operations (PCI DSS, GDPR, HIPAA, NIST 800-53, TSC), sowie die generischen Explore-Punkte (Visualize, Reporting, Maps, Notifications). Das sind OpenSearch-Bordmittel bzw. Cloud-Themen außerhalb dieses Kurses.