OpenCanary-Protokolle erfassen

Unterstützt in:

Übersicht

Dieser Parser extrahiert Felder aus OpenCanary-SYSLOG- und JSON-Logs, normalisiert sie in das UDM-Format und ergänzt die Daten um abgeleitete Felder wie metadata.event_type und security_result.severity. Es unterstützt verschiedene Protokollformate, führt eine IP-Adressüberprüfung durch und ordnet Felder den entsprechenden UDM-Objekten wie principal, target und network zu.

Hinweise

  • Sie benötigen eine Google SecOps-Instanz.
  • Sie benötigen erhöhte Zugriffsrechte für OpenCanary.

Feed in Google SecOps für die Aufnahme der OpenCanary-Protokolle konfigurieren

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. OpenCanary-Protokolle.
  4. Wählen Sie als Quelltyp Webhook aus.
  5. Wählen Sie OpenCanary als Logtyp aus.
  6. Klicken Sie auf Weiter.
  7. Optional: Geben Sie Werte für die folgenden Eingabeparameter an:
    • Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem Logzeilen getrennt werden, z. B. \n.
    • Asset-Namespace: der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
  8. Klicken Sie auf Weiter.
  9. Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
  10. Klicken Sie auf Secret-Schlüssel generieren, um einen Secret-Schlüssel zur Authentifizierung dieses Feeds zu generieren.
  11. Kopieren und speichern Sie den geheimen Schlüssel. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen Secret-Schlüssel generieren. Dadurch wird der vorherige Secret-Schlüssel jedoch ungültig.
  12. Kopieren Sie auf dem Tab Details die Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
  13. Klicken Sie auf Fertig.

API-Schlüssel für den Webhook-Feed erstellen

  1. Rufen Sie die Google Cloud Console > Anmeldedaten auf.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.

  3. Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.

Endpunkt-URL angeben

  1. Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
  2. Aktiviere die Authentifizierung, indem du den API-Schlüssel und den geheimen Schlüssel als Teil der benutzerdefinierten Kopfzeile im folgenden Format angibst:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Empfehlung: Geben Sie den API-Schlüssel als Header an, anstatt ihn in der URL anzugeben.

  3. Wenn Ihr Webhook-Client keine benutzerdefinierten Header unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel mithilfe von Suchparametern im folgenden Format angeben:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Ersetzen Sie Folgendes:

    • ENDPOINT_URL: die URL des Feedendpunkts.
    • API_KEY: Der API-Schlüssel, mit dem Sie sich bei Google Security Operations authentifizieren.
    • SECRET: der geheime Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.

OpenCanary-Webhook für Google SecOps einrichten

  1. Suchen Sie die OpenCanary-Konfigurationsdatei config.json.

  2. Öffnen Sie die Datei config.json in einem Texteditor.

  3. Suchen Sie in der Konfigurationsdatei den Abschnitt Benachrichtigungsdienste.

  4. Wenn bereits ein webhook-Benachrichtigungsmechanismus vorhanden ist, ändern Sie ihn. Andernfalls fügen Sie einen neuen Eintrag für den webhook-Benachrichtigungsempfänger hinzu.

  5. Verwenden Sie die folgende Konfiguration und ersetzen Sie dabei ENDPOINT_URL, SECRET und API_KEY durch Ihre Werte:

"handlers": {
    "Webhook": {
        "class": "opencanary.logger.WebhookHandler",
        "url": "<ENDPOINT_URL>",
        "method": "POST",
        "data": {"message": "%(message)s"},
        "status_code": 200,
        "headers": {
            "X-Webhook-Access-Key": "<SECRET>",
            "X-goog-api-key": "<API_KEY>"
         }
    }
}
  1. Speichern Sie die Datei config.json.
  2. Starten Sie den OpenCanary-Dienst neu, damit die Änderungen übernommen werden. (z. B. sudo systemctl restart opencanary).

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
dst_host target.asset.ip Das Feld dst_host des Rohlogs wird dem UDM zugeordnet. Auch target.ip zugeordnet.
dst_host target.ip Das Feld dst_host des Rohlogs wird dem UDM zugeordnet. Auch target.asset.ip zugeordnet.
dst_port target.port Das Feld dst_port des Rohlogs wird in einen String und dann in eine Ganzzahl umgewandelt und dem UDM zugeordnet.
local_time metadata.event_timestamp Das Feld local_time des Rohlogs wird verwendet, um das Feld metadata.event_timestamp in der UDM zu füllen. Der Parser verwendet create_time aus dem Batch-Objekt, wenn das Feld local_time nicht vorhanden ist.
local_time_adjusted security_result.detection_fields Das Feld local_time_adjusted des Rohlogs wird dem Array security_result.detection_fields im UDM als Schlüssel/Wert-Paar hinzugefügt.
logdata.COMMUNITY_STRING security_result.detection_fields Das Feld logdata.COMMUNITY_STRING des Rohlogs wird dem Array security_result.detection_fields im UDM als Schlüssel/Wert-Paar hinzugefügt.
logdata.DOMAIN principal.administrative_domain Das Feld logdata.DOMAIN des Rohlogs wird dem UDM zugeordnet.
logdata.FILENAME target.file.full_path Das Feld logdata.FILENAME des Rohlogs wird dem UDM zugeordnet.
logdata.HOSTNAME principal.asset.hostname Wenn das Feld logdata.HOSTNAME keine IP-Adresse ist, wird es dem UDM zugeordnet. Auch principal.hostname zugeordnet.
logdata.HOSTNAME principal.asset.ip Wenn das Feld logdata.HOSTNAME eine IP-Adresse ist, wird es dem UDM zugeordnet. Auch principal.ip zugeordnet.
logdata.HOSTNAME principal.hostname Wenn das Feld logdata.HOSTNAME keine IP-Adresse ist, wird es dem UDM zugeordnet. Auch principal.asset.hostname zugeordnet.
logdata.HOSTNAME principal.ip Wenn das Feld logdata.HOSTNAME eine IP-Adresse ist, wird es dem UDM zugeordnet. Auch principal.asset.ip zugeordnet.
logdata.LOCALNAME principal.asset.hostname Das Feld logdata.LOCALNAME des Rohlogs wird dem UDM zugeordnet. Auch principal.hostname zugeordnet.
logdata.LOCALNAME principal.hostname Das Feld logdata.LOCALNAME des Rohlogs wird dem UDM zugeordnet. Auch principal.asset.hostname zugeordnet.
logdata.LOCALVERSION principal.platform_version Das Feld logdata.LOCALVERSION des Rohlogs wird dem UDM zugeordnet.
logdata.PASSWORD extensions.auth.mechanism Wenn das Feld logdata.PASSWORD vorhanden ist, setzt der Parser extensions.auth.mechanism in der UDM auf USERNAME_PASSWORD.
logdata.PATH network.http.referral_url Das Feld logdata.PATH des Rohlogs wird dem UDM zugeordnet.
logdata.REMOTENAME target.asset.hostname Das Feld logdata.REMOTENAME des Rohlogs wird dem UDM zugeordnet. Auch target.hostname zugeordnet.
logdata.REMOTENAME target.hostname Das Feld logdata.REMOTENAME des Rohlogs wird dem UDM zugeordnet. Auch target.asset.hostname zugeordnet.
logdata.REMOTEVERSION target.platform_version Das Feld logdata.REMOTEVERSION des Rohlogs wird dem UDM zugeordnet.
logdata.SMBVER network.application_protocol Wenn das Feld logdata.SMBVER vorhanden ist, setzt der Parser network.application_protocol in der UDM auf SMB.
logdata.USERAGENT network.http.parsed_user_agent Das Feld logdata.USERAGENT des Rohlogs wird in einen geparsten User-Agent umgewandelt und dem UDM zugeordnet.
logdata.USERAGENT network.http.user_agent Das Feld logdata.USERAGENT des Rohlogs wird dem UDM zugeordnet.
logdata.USERNAME target.user.userid Das Feld logdata.USERNAME des Rohlogs wird dem UDM zugeordnet.
loglevel security_result.severity Das Feld loglevel des Rohlogs bestimmt die security_result.severity im UDM. WARNING wird HIGH zugeordnet, INFO/INFORMATION wird LOW zugeordnet.
logtype security_result.detection_fields Das Feld logtype des Rohlogs wird dem Array security_result.detection_fields im UDM als Schlüssel/Wert-Paar hinzugefügt.
node_id principal.asset.asset_id Dem Feld node_id des Rohlogs wird „id:“ vorangestellt und es wird dem UDM zugeordnet.
src_host principal.asset.ip Das Feld src_host des Rohlogs wird dem UDM zugeordnet. Auch principal.ip zugeordnet.
src_host principal.ip Das Feld src_host des Rohlogs wird dem UDM zugeordnet. Auch principal.asset.ip zugeordnet.
src_port principal.port Das Feld src_port des Rohlogs wird in eine Ganzzahl konvertiert und dem UDM zugeordnet.
utc_time security_result.detection_fields Das Feld utc_time des Rohlogs wird dem Array security_result.detection_fields im UDM als Schlüssel/Wert-Paar hinzugefügt.

Änderungen

2024-03-11

  • Ungültiges Zeichen am Ende von JSON-Protokollen entfernt, um nicht geparste Protokolle zu parsen.
  • Die Zuordnungen „principal.ip“ und „principal.asset.ip“ wurden angeglichen.
  • Die Zuordnungen „target.ip“ und „target.asset.ip“ wurden angeglichen.

2024-02-08

  • Neu erstellter Parser.