Integration von Wazuh und Claude Desktop via MCP über SSH

Die Analyse von Sicherheitsvorfällen in einem Security Operations Center (SOC) erfordert zunehmend den Einsatz intelligenter Hilfsmittel. Mithilfe des Model Context Protocols (MCP) können SIEM-Daten aus Wazuh direkt in die Analyseumgebung von KI-Modellen wie Claude integriert werden.

Dieser Artikel beschreibt die technische Implementierung einer solchen Schnittstelle. Das Ziel ist eine Architektur, bei der die Logdaten sicher auf dem Ubuntu-Server verbleiben und lediglich über einen verschlüsselten SSH-Tunnel von der lokalen Analyse-Instanz (Claude Desktop auf macOS) abgefragt werden.

Architektur und Voraussetzungen

Das Setup besteht aus zwei Komponenten:

  1. Server (Ubuntu 24.04): Beherbergt die Wazuh-Infrastruktur und den mcp-server-wazuh.
  2. Client (macOS): Führt Claude Desktop aus und initiiert die Verbindung.

Die Kommunikation erfolgt über stdio (Standard Input/Output), welches durch eine SSH-Verbindung getunnelt wird. Dies eliminiert die Notwendigkeit, zusätzliche Ports am Wazuh-Server nach außen zu öffnen.

Integration MCP-Server und Claude Desktop einrichten

Schritt 1: Auslesen der benötigten Passwörter aus dem Wazuh-Server

Während der Installation des Wazuh-Servers wurden alle wichtigen Passwörter auf dem Server gespeichert. Sie können über das folgende Kommando abgerufen und angezeigt werden:

sudo tar -O -xvf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt

Für die nachfolgende Konfiguration des MCP-Servers werden die Passwörter für den Indexer und den API-User benötigt. Da es sich hierbei um sensible Passwörter handelt, sollten sie an einem sicheren Ort aufbewahrt werden.

Schritt 2: Anlegen eines neuen Nutzers auf dem Wazuh-Server

Auf dem Wazuh-Server wird nun der neue Nutzer „mcp_user” angelegt. Das Ziel besteht darin, eine SSH-Verbindung zu diesem Nutzer herzustellen und die Anfragen von Claude Desktop an den Wazuh-Server weiterzuleiten. Der Nutzer wird direkt auf dem Wazuh-Server mit folgenden Kommandos eingerichtet:

sudo useradd -m mcp_user
sudo passwd mcp_user
sudo usermod -a -G sudo mcp_user
sudo chsh -s /bin/bash mcp_user

Schritt 3: Einrichtung der SSH-Authentifizierung

Dieser Schritt ist entscheidend für die reibungslose Funktion von Claude. Zunächst muss geklärt werden, wer sich woran authentifiziert. Der Mac agiert als Client. Er muss sich ohne Passworteingabe am Wazuh-Server anmelden können. Daher muss das Schlüsselpaar auf dem Mac generiert werden. Anschließend wird der öffentliche Schlüssel (Public Key) auf den Server übertragen. Dies erfolgt in zwei Schritten:

Schlüsselpaar generieren: Falls noch kein spezieller Key existiert, wird ein neuer Ed25519-Schlüssel erstellt.

ssh-keygen -t ed25519 -C "claude-mcp-connection" -f ~/.ssh/id_ed25519_wazuh

Wenn nach einer Passphrase gefragt wird, sollte diese leer gelassen werden, damit Claude den Key automatisiert nutzen kann.

Der öffentliche Teil des Schlüssels wird nun auf den Ubuntu-Server in das Verzeichnis vom mcp_user kopiert.

ssh-copy-id -i ~/.ssh/id_ed25519_wazuh.pub mcp_user@IP-Adresse_Wazuh_Server


Schritt 4: Installation des MCP-Servers auf Ubuntu

Auf dem Ubuntu-Server wird die Server-Komponente des MCP-Protokolls installiert. Sie fungiert als Übersetzer zwischen den JSON-RPC-Nachrichten von Claude und der Wazuh-API.

Zunächst wird das Repository geklont oder die passende Binärdatei direkt geladen.

# Erstellen des Verzeichnisses
sudo mkdir -p /opt/wazuh-mcp

# Wechsel in das Verzeichnis und Download (URL exemplarisch für latest release)
cd /opt/wazuh-mcp
sudo wget -O wazuh-mcp https://github.com/gbrigandi/mcp-server-wazuh/releases/latest/download/mcp-server-wazuh-linux-amd64

# Rechte anpassen: Ausführbar machen und Besitzer auf frank setzen
sudo chmod +x wazuh-mcp
sudo chown mcp_user:mcp_user wazuh-mcp

Da der Aufruf über eine nicht-interaktive SSH-Sitzung erfolgt, müssen die Umgebungsvariablen für die API-Verbindung explizit gesetzt werden. Es wird die Datei „/opt/wazuh-mcp/start.sh“ erstellt:

#!/bin/bash

# --- WAZUH API KONFIGURATION (Management & Status) ---
export WAZUH_API_HOST="127.0.0.1"
export WAZUH_API_PORT="55000"
# Ihr existierender API-Nutzer
export WAZUH_API_USERNAME="wazuh"
# Ihr API-Passwort in einfachen Anführungszeichen!
export WAZUH_API_PASSWORD='acKQe1xxxxIPr+JPfxxxx+FTGWo5Ja'
export WAZUH_API_SKIP_VERIFY="true"


# --- WAZUH INDEXER KONFIGURATION (Log-Daten & Suche) ---
# Hier wird die eigentliche Auswertung der Security-Events ermöglicht
export WAZUH_INDEXER_HOST="127.0.0.1"
export WAZUH_INDEXER_PORT="9200"
# Tragen Sie hier Ihren Indexer-Benutzer ein (oft 'admin')
export WAZUH_INDEXER_USERNAME="admin"
# Tragen Sie hier das Indexer-Passwort ein (in einfachen Anführungszeichen!)
export WAZUH_INDEXER_PASSWORD='DE?1ZHCxVASxxxxxISmUmu6Dxxxxx?89e'
export WAZUH_TEST_PROTOCOL="https"
export WAZUH_VERIFY_SSL="false" 

# Logging-Level (hilfreich für Debugging, 'info' oder 'debug')
export RUST_LOG="info"

# Start des MCP-Servers
/opt/wazuh-mcp/wazuh-mcp

Abschließend wird das Skript ausführbar gemacht und Rechte zugewiesen:

sudo chmod 700 /opt/wazuh-mcp/start.sh
sudo chown mcp_user:mcp_user /opt/wazuh-mcp/start.sh

Jetzt kann vom Mac getestet werden, ob der Zugriff ohne Passwort funktioniert und das Skript startklar ist:

ssh -i ~/.ssh/id_ed25519_wazuh mcp_user@IP-Adresse_Wazuh_Server "/opt/wazuh-mcp/start.sh"

Schritt 5: Claude-Konfiguration auf dem Mac anpassen

Damit Claude Desktop weiß, wie der MCP-Server zu erreichen ist, wird die Konfigurationsdatei auf dem Mac angepasst. Dazu wird die Datei „claude_desktop_config.json“ in den Einstellungen angepasst.

Der folgende Block wird in die Konfiguration eingefügt oder ergänzt:

{
  "mcpServers": {
    "Wazuh-SOC": {
      "command": "ssh",
      "args": [
        "-i",
        "/Users/DEIN_MAC_USER/.ssh/id_ed25519_wazuh",
        "-q",
        "mcp_user@IP-Adresse_Wazuh_Server",
        "/opt/wazuh-mcp/start.sh"
      ]
    }
  }
}

Wichtige Parameter:

  • -i …: Verweist explizit auf den in Schritt 3 erstellten Private Key. (Pfad muss angepasst werden).
  • -q: „Quiet mode“, unterdrückt Begrüßungstexte des Servers (MOTD), die das JSON-Protokoll stören würden.
  • mcp_user@IP-Adresse_Wazuh_Server: Die Verbindungsdaten zum Server.

Nach dem Speichern der Datei muss Claude Desktop vollständig beendet und neu gestartet werden.

Schritt 6: Bedrohungsanalyse im Live-Betrieb

Nach dem Neustart signalisiert Claude durch ein Icon, dass der MCP-Server verbunden ist. Nun können Logs direkt in natürlicher Sprache abgefragt werden. Die KI fungiert dabei als Analyst, der die Wazuh-Syntax abstrahiert.

Beispielhafter Prompt zur Validierung:

"Verbinde dich mit dem Wazuh-Server. Prüfe die letzten 50 Security-Events. Filtere nach Events mit Level 10 oder höher und erstelle eine Tabelle mit Zeitstempel, Regel-ID, Beschreibung und Quell-IP. Gibt es Auffälligkeiten bezüglich der IP 192.168.x.x?"

Die Architektur gewährleistet, dass die KI nur die spezifisch angeforderten Textdaten erhält, während die volle Datenbankhoheit auf dem Wazuh-Server verbleibt.

Fazit und Sicherheitshinweis

Die Integration des Wazuh-MCP-Servers in Claude Desktop schafft eine effiziente Schnittstelle für das moderne Security Operations Center (SOC). Durch die Nutzung des SSH-Tunnels wird eine sichere Kommunikation ermöglicht, ohne dass sensible Management-Ports des Wazuh-Servers (wie 55000 oder 9200) öffentlich im Netzwerk exponiert werden müssen. Administratoren und Analysten erhalten so die Möglichkeit, komplexe Logdaten und Bedrohungsszenarien, wie etwa Aktivitäten auf einzelnen Komponenten, intuitiv und in natürlicher Sprache abzufragen, was die Reaktionszeit bei Sicherheitsvorfällen signifikant verkürzen kann.

Es muss jedoch ausdrücklich auf die Sensibilität der vorgenommenen Konfiguration hingewiesen werden. Damit die Automatisierung reibungslos funktioniert, wurden hochprivilegierte Zugangsdaten (Credentials) hinterlegt:

Auf dem Ubuntu-Server: Das Skript /opt/wazuh-mcp/start.sh enthält die Passwörter für den API-Nutzer (wazuh-wui) und den Indexer-Admin (admin) im Klartext. Jeder, der Lesezugriff auf diese Datei erlangt, hat volle administrative Kontrolle über das SIEM-System.

Maßnahme: Es ist zwingend erforderlich, die Dateiberechtigungen restriktiv zu setzen (z. B. chmod 700), sodass nur der dedizierte Systembenutzer (mcp_user) diese Datei lesen und ausführen darf.

Auf dem Mac Mini: Der private SSH-Schlüssel (id_ed25519_wazuh) ermöglicht den passwortlosen Zugriff auf den Server und damit indirekt auf die oben genannten Credentials.

Maßnahme: Der Mac Mini selbst wird durch diese Konfiguration zu einem kritischen Asset (Admin-Konsole). Der Zugriff auf das Gerät muss durch starke Benutzerpasswörter und Festplattenverschlüsselung (FileVault) gesichert sein. Es sollte sichergestellt werden, dass der SSH-Key nicht ungeschützt auf andere Systeme kopiert wird.

Die Einrichtung dieses MCP-Servers bietet einen enormen operativen Mehrwert, setzt aber einen verantwortungsvollen Umgang mit den neu geschaffenen Zugriffswegen voraus („Great Power comes with great Responsibility“).

Schreibe einen Kommentar