OpenCanary-Logs erfassen
Übersicht
Dieser Parser extrahiert Felder aus OpenCanary-SYSLOG- und JSON-Logs, normalisiert sie in das UDM-Format und reichert die Daten mit abgeleiteten Feldern wie metadata.event_type
und security_result.severity
an. Es werden verschiedene Logformate verarbeitet, IP-Adressen validiert und Felder entsprechenden UDM-Objekten wie principal
, target
und network
zugeordnet.
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Google SecOps-Instanz.
- Privilegierter Zugriff auf OpenCanary.
Feeds einrichten
Es gibt zwei verschiedene Einstiegspunkte zum Einrichten von Feeds in der Google SecOps-Plattform:
- SIEM-Einstellungen > Feeds
- Content Hub> Content-Pakete
Feeds über „SIEM-Einstellungen“ > „Feeds“ einrichten
So konfigurieren Sie einen Feed:
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B. OpenCanary Logs (OpenCanary-Protokolle).
- Wählen Sie Webhook als Quelltyp aus.
- Wählen Sie OpenCanary als Logtyp aus.
- Klicken Sie auf Weiter.
- Optional: Geben Sie Werte für die folgenden Eingabeparameter an:
- Trennzeichen für Aufteilung: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
\n
.
- Trennzeichen für Aufteilung: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
- Klicken Sie auf Weiter.
- Prüfen Sie die Feedkonfiguration auf dem Bildschirm Finalize (Abschließen) und klicken Sie dann auf Submit (Senden).
- Klicken Sie auf Geheimen Schlüssel generieren, um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.
- Kopieren Sie den geheimen Schlüssel und speichern Sie ihn. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen geheimen Schlüssel generieren. Dadurch wird der vorherige geheime Schlüssel jedoch ungültig.
- Kopieren Sie auf dem Tab Details die Feed-Endpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
- Klicken Sie auf Fertig.
Feeds über den Content Hub einrichten
Geben Sie Werte für die folgenden Felder an:
- Trennzeichen für Aufteilung: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
\n
.
Erweiterte Optionen
- Feedname:Ein vorausgefüllter Wert, der den Feed identifiziert.
- Quelltyp:Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
- Asset-Namespace:Der mit dem Feed verknüpfte Namespace.
Aufnahmelabels:Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
Klicken Sie auf Geheimen Schlüssel generieren, um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.
Kopieren Sie den geheimen Schlüssel und speichern Sie ihn. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen geheimen Schlüssel generieren. Dadurch wird der vorherige geheime Schlüssel jedoch ungültig.
Kopieren Sie auf dem Tab Details die Feed-Endpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
API-Schlüssel für den Webhook-Feed erstellen
Rufen Sie die Google Cloud Console > Anmeldedaten auf.
Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.
Schränken Sie den API-Schlüsselzugriff auf die Google Security Operations API ein.
Endpunkt-URL angeben
- Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed bereitgestellt wird.
Aktivieren Sie die Authentifizierung, indem Sie den API-Schlüssel und den geheimen Schlüssel als Teil des benutzerdefinierten Headers im folgenden Format angeben:
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.
Wenn Ihr Webhook-Client keine benutzerdefinierten Headern unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel mit Suchparametern im folgenden Format angeben:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Ersetzen Sie Folgendes:
ENDPOINT_URL
: Die URL des Feed-Endpunkts.API_KEY
: Der API-Schlüssel für die Authentifizierung bei Google Security Operations.SECRET
: Der geheime Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.
OpenCanary-Webhook für Google SecOps einrichten
Suchen Sie die OpenCanary-Konfigurationsdatei
config.json
.Öffnen Sie die Datei
config.json
in einem Texteditor.Suchen Sie in der Konfigurationsdatei nach dem Abschnitt alerters.
Wenn bereits ein
webhook
-Benachrichtigungssystem vorhanden ist, ändern Sie es. Fügen Sie andernfalls einen neuen Eintrag für denwebhook
-Benachrichtigungsdienst hinzu.Verwenden Sie die folgende Konfiguration und ersetzen Sie 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>"
}
}
}
- Speichern Sie die Datei
config.json
. - Starten Sie den OpenCanary-Dienst neu, damit die Änderungen übernommen werden. Beispiel:
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 im 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 als Schlüssel-Wert-Paar dem security_result.detection_fields -Array im UDM hinzugefügt. |
logdata.COMMUNITY_STRING |
security_result.detection_fields |
Das Feld logdata.COMMUNITY_STRING des Rohlogs wird als Schlüssel-Wert-Paar dem security_result.detection_fields -Array im UDM 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 der UDM zugeordnet. Auch principal.hostname zugeordnet. |
logdata.HOSTNAME |
principal.asset.ip |
Wenn das Feld logdata.HOSTNAME eine IP-Adresse ist, wird es der UDM zugeordnet. Auch principal.ip zugeordnet. |
logdata.HOSTNAME |
principal.hostname |
Wenn das Feld logdata.HOSTNAME keine IP-Adresse ist, wird es der UDM zugeordnet. Auch principal.asset.hostname zugeordnet. |
logdata.HOSTNAME |
principal.ip |
Wenn das Feld logdata.HOSTNAME eine IP-Adresse ist, wird es der 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, wird der Parser ausgelöst, um extensions.auth.mechanism im UDM auf USERNAME_PASSWORD zu setzen. |
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, wird der Parser ausgelöst, um network.application_protocol im UDM auf SMB zu setzen. |
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 als Schlüssel-Wert-Paar dem security_result.detection_fields -Array im UDM hinzugefügt. |
node_id |
principal.asset.asset_id |
Das Feld node_id des Rohlogs wird mit „id:“ vorangestellt und 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 als Schlüssel-Wert-Paar dem security_result.detection_fields -Array im UDM hinzugefügt. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten