VanDyke VShell-SFTP-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie VanDyke VShell SFTP-Logs mit Bindplane mit Syslog oder Amazon S3 mit einem Log-Shipper in Google Security Operations aufnehmen. Der Parser wandelt Rohlogs in ein strukturiertes UDM-Format um. Es verarbeitet sowohl JSON- als auch SYSLOG-Formate, extrahiert relevante Felder wie IP-Adressen, Ports und Ereignisdetails und reichert die Daten mit Kontextinformationen wie Plattformdetails und Sicherheitsrisiko an.

Hinweise

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Privilegierter Zugriff auf den VanDyke VShell-Server oder die Verwaltungskonsole
  • Für Option 1: Ein Windows 2016- oder Linux-Host mit systemd für den Bindplane-Agent
  • Option 2: AWS-Konto mit S3-Zugriff und NXLog/Fluent Bit auf dem VShell-Server

Option 1: Integration über Bindplane und Syslog

Diese Option bietet Echtzeit-Log-Streaming mit minimaler Latenz und wird für die meisten Bereitstellungen empfohlen.

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Aufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem Bindplane installiert wird oder auf dem Sie den Feed konfigurieren.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profile auf.
  3. Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.

BindPlane-Agent installieren

Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.

Fenstereinbau

  1. Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
  2. Führen Sie dazu diesen Befehl aus:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux-Installation

  1. Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
  2. Führen Sie dazu diesen Befehl aus:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Zusätzliche Installationsressourcen

BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren

  1. Konfigurationsdatei aufrufen:

    1. Suchen Sie die Datei config.yaml. Normalerweise befindet sie sich unter Linux im Verzeichnis /etc/bindplane-agent/ oder unter Windows im Installationsverzeichnis.
    2. Öffnen Sie die Datei mit einem Texteditor (z. B. nano, vi oder Notepad).
  2. Bearbeiten Sie die Datei config.yamlso:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: YOUR_CUSTOMER_ID
        endpoint: malachiteingestion-pa.googleapis.com
        # Custom log type - requires parser extension
        log_type: 'VANDYKE_SFTP'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
    • Ersetzen Sie <customer_id> durch die tatsächliche Kunden-ID.
    • Aktualisieren Sie /path/to/ingestion-authentication-file.json auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Get Google SecOps ingestion authentication file (Authentifizierungsdatei für die Google SecOps-Aufnahme abrufen) gespeichert wurde.
    • Wenn Sie TCP anstelle von UDP verwenden möchten, ersetzen Sie udplog durch tcplog.

Bindplane-Agent neu starten, um die Änderungen zu übernehmen

  • Führen Sie den folgenden Befehl aus, um den Bindplane-Agent unter Linux neu zu starten:

    sudo systemctl restart bindplane-agent
    
  • Um den Bindplane-Agent unter Windows neu zu starten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Syslog-Weiterleitung in VanDyke VShell konfigurieren

Für VShell unter Windows

  1. Melden Sie sich im VShell-Steuerfeld an.
  2. Rufen Sie die Einstellungen für Protokollierung auf.
  3. Remote-Syslog-Logging konfigurieren:
    • Aktivieren Sie die Protokollierung auf dem Remote-Syslog-Server.
    • Serveradresse: Geben Sie die IP-Adresse des Bindplane-Agents ein.
    • Port: Geben Sie 514 (oder den konfigurierten Port) ein.
    • Protokoll: Wählen Sie UDP (oder TCP, falls konfiguriert) aus.
    • Nachrichtengruppen: Wählen Sie Verbindung, Authentifizierung, SFTP, FTPS, HTTPS, Fehler, Warnungen und Informationen aus.
  4. Klicken Sie auf Übernehmen > OK.

Für VShell unter Linux/macOS

  1. Bearbeiten Sie die Datei vshelld_config (normalerweise /etc/vshell/vshelld_config).
  2. Konfigurieren Sie die folgenden Parameter:

    SyslogFacility LOG_LOCAL3
    LogLevel INFO
    
  3. Konfigurieren Sie das syslog Ihres Systems so, dass LOG_LOCAL3 an den Bindplane-Agent weitergeleitet wird:

    • Bearbeiten Sie /etc/rsyslog.conf oder /etc/syslog-ng/syslog-ng.conf.
    • Fügen Sie local3.* @bindplane-agent-ip:514 (für UDP) oder local3.* @@bindplane-agent-ip:514 (für TCP) hinzu.
  4. Starten Sie den VShell-Dienst und den Syslog-Dienst neu:

    sudo systemctl restart vshelld
    sudo systemctl restart rsyslog
    

Option 2: Integration über AWS S3

Diese Option ist nützlich für Umgebungen, in denen eine Protokollarchivierung erforderlich ist oder in denen eine direkte Syslog-Weiterleitung nicht möglich ist. Dazu ist ein Log-Shipper auf dem VShell-Server erforderlich, da AWS Lambda nicht auf lokale Dateien zugreifen kann.

AWS S3-Bucket und IAM für Google SecOps konfigurieren

  1. Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu der Anleitung unter Bucket erstellen.
  2. Speichern Sie den Namen und die Region des Buckets zur späteren Verwendung (z. B. vandyke-sftp-logs).
  3. Erstellen Sie einen Nutzer gemäß dieser Anleitung: IAM-Nutzer erstellen.
  4. Wählen Sie den erstellten Nutzer aus.
  5. Wählen Sie den Tab Sicherheitsanmeldedaten aus.
  6. Klicken Sie im Abschnitt Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
  7. Wählen Sie Drittanbieterdienst als Anwendungsfall aus.
  8. Klicken Sie auf Weiter.
  9. Optional: Fügen Sie ein Beschreibungstag hinzu.
  10. Klicken Sie auf Zugriffsschlüssel erstellen.
  11. Klicken Sie auf CSV-Datei herunterladen, um den Access Key (Zugriffsschlüssel) und den Secret Access Key (geheimer Zugriffsschlüssel) für die zukünftige Verwendung zu speichern.
  12. Klicken Sie auf Fertig.
  13. Wählen Sie den Tab Berechtigungen aus.
  14. Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
  15. Wählen Sie Berechtigungen hinzufügen aus.
  16. Wählen Sie Richtlinien direkt anhängen aus.
  17. Suchen Sie nach der Richtlinie AmazonS3FullAccess.
  18. Wählen Sie die Richtlinie aus.
  19. Klicken Sie auf Weiter.
  20. Klicken Sie auf Berechtigungen hinzufügen.

Log Shipper auf dem VShell-Server installieren und konfigurieren

Wählen Sie je nach Betriebssystem eine der folgenden Optionen aus:

Option A: NXLog verwenden (Windows)

  1. Laden Sie die NXLog Community Edition von nxlog.co herunter und installieren Sie sie.
  2. C:\Program Files\nxlog\conf\nxlog.conf bearbeiten:

    <Extension json>
        Module      xm_json
    </Extension>
    
    <Extension syslog>
        Module      xm_syslog
    </Extension>
    
    <Input vshell_log>
        Module      im_file
        File        "C:\\Program Files\\VanDyke Software\\VShell\\Log\\VShell.log"
        SavePos     TRUE
    
        <Exec>
            # Parse VShell log format
            if $raw_event =~ /^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) "(.*)"$/
            {
                $EventTime = $1;
                $Protocol = $2;
                $EventType = $3;
                $SessionID = $4;
                $ClientIP = $5;
                $ClientPort = $6;
                $Username = $7;
                $Filename = $9;
                $BytesDown = $10;
                $BytesUp = $11;
                $ServerIP = $14;
                $ServerPort = $15;
                $EventMessage = $16;
    
                # Convert to JSON
                to_json();
            }
        </Exec>
    </Input>
    
    <Output s3>
        Module      om_exec
        Command     C:\scripts\upload_to_s3.ps1
        Args        %FILEPATH%
    </Output>
    
    <Route vshell_to_s3>
        Path        vshell_log => s3
    </Route>
    
  3. PowerShell-Skript C:\scripts\upload_to_s3.ps1 erstellen:

    param([string]$FilePath)
    
    $bucket = "vandyke-sftp-logs"
    $key = "vshell/$(Get-Date -Format 'yyyy/MM/dd/HH')/$(Get-Date -Format 'yyyyMMddHHmmss').json"
    
    # Batch logs
    $logs = Get-Content $FilePath | ConvertFrom-Json
    $jsonLines = $logs | ForEach-Object { $_ | ConvertTo-Json -Compress }
    $content = $jsonLines -join "`n"
    
    # Upload to S3
    Write-S3Object -BucketName $bucket -Key $key -Content $content -ProfileName default
    
  4. AWS-Anmeldedatenprofil erstellen:

    Set-AWSCredential -AccessKey YOUR_ACCESS_KEY -SecretKey YOUR_SECRET_KEY -StoreAs default
    
    1. Planen Sie das PowerShell-Skript so, dass es alle 5 Minuten mit der Aufgabenplanung ausgeführt wird.

Option B: Fluent Bit verwenden (Linux)

  1. Installieren Sie Fluent Bit:

    curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh
    
  2. Konfigurieren Sie /etc/fluent-bit/fluent-bit.conf:

    [SERVICE]
        Flush        5
        Daemon       On
        Log_Level    info
    
    [INPUT]
        Name              tail
        Path              /var/log/vshell/vshell.log
        Parser            vshell_parser
        Tag               vshell.*
        Refresh_Interval  5
        Mem_Buf_Limit     10MB
    
    [PARSER]
        Name        vshell_parser
        Format      regex
        Regex       ^(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (?<protocol>\S+) (?<event_type>\S+) (?<session_id>\S+) (?<client_ip>\S+) (?<client_port>\S+) (?<username>\S+) (?<dash>\S+) (?<filename>\S+) (?<bytes_down>\S+) (?<bytes_up>\S+) (?<field1>\S+) (?<field2>\S+) (?<server_ip>\S+) (?<server_port>\S+) "(?<event_message>[^"]*)"
    
    [OUTPUT]
        Name                  s3
        Match                 vshell.*
        bucket                vandyke-sftp-logs
        region                us-east-1
        use_put_object        On
        total_file_size       5M
        upload_timeout        10s
        compression           gzip
        s3_key_format         /vshell/%Y/%m/%d/%H/%{hostname}_%{uuid}.json.gz
    
  3. AWS-Anmeldedaten konfigurieren:

    export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
    
  4. Starten Sie Fluent Bit:

    sudo systemctl enable fluent-bit
    sudo systemctl start fluent-bit
    

Feed in Google SecOps konfigurieren, um VanDyke VShell-Logs aufzunehmen

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf Neuen Feed hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. VanDyke VShell SFTP logs.
  4. Wählen Sie Amazon S3 V2 als Quelltyp aus.
  5. Wählen Sie VanDyke SFTP als Logtyp (benutzerdefiniert) aus.
  6. Klicken Sie auf Weiter.
  7. Geben Sie Werte für die folgenden Eingabeparameter an:
    • S3-URI: s3://vandyke-sftp-logs/vshell/
    • Optionen zum Löschen der Quelle: Wählen Sie Beibehalten (empfohlen) oder die gewünschte Löschoption aus.
    • Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.
    • Zugriffsschlüssel-ID: Der Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.
    • Geheimer Zugriffsschlüssel: Der geheime Schlüssel des Nutzers mit Zugriff auf den S3-Bucket.
    • Asset-Namespace: Der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
  8. Klicken Sie auf Weiter.
  9. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
agent.id read_only_udm.observer.asset_id Verkettet „filebeat:“ mit dem Wert des Felds „agent.id“
agent.type read_only_udm.observer.application Ordnet den Wert des Felds „agent.type“ direkt zu.
agent.version read_only_udm.observer.platform_version Ordnet den Wert des Felds „agent.version“ direkt zu.
ecs.version read_only_udm.metadata.product_version Ordnet den Wert des Felds „ecs.version“ direkt zu.
host.architecture read_only_udm.target.asset.hardware.cpu_platform Ordnet den Wert des Felds „host.architecture“ direkt zu.
host.hostname read_only_udm.target.hostname Ordnet den Wert des Felds „host.hostname“ direkt zu.
host.id read_only_udm.principal.asset_id Verkettet „VANDYKE_SFTP:“ mit dem Wert des Felds „host.id“.
host.ip read_only_udm.target.ip Jede IP-Adresse im Array „host.ip“ wird direkt einem separaten Feld „read_only_udm.target.ip“ zugeordnet.
host.mac read_only_udm.target.mac Ordnet jede MAC-Adresse im Array „host.mac“ direkt einem separaten Feld „read_only_udm.target.mac“ zu.
host.os.kernel read_only_udm.target.platform_patch_level Ordnet den Wert des Felds „host.os.kernel“ direkt zu.
host.os.platform read_only_udm.target.platform Ordnet den Wert von „host.os.platform“ je nach Wert WINDOWS, LINUX, MAC oder UNKNOWN_PLATFORM zu.
host.os.version read_only_udm.target.platform_version Ordnet den Wert des Felds „host.os.version“ direkt zu.
log.file.path read_only_udm.principal.process.file.full_path Ordnet den Wert des Felds „log.file.path“ direkt zu.
logstash.collect.timestamp read_only_udm.metadata.collected_timestamp Parst den Zeitstempel aus dem Feld „logstash.collect.timestamp“ und konvertiert ihn in ein Zeitstempelobjekt.
logstash.irm_environment read_only_udm.additional.fields.value.string_value Ordnet den Wert des Felds „logstash.irm_environment“ direkt zu. Der Schlüssel ist auf „irm_environment“ gesetzt.
logstash.irm_region read_only_udm.additional.fields.value.string_value Ordnet den Wert des Felds „logstash.irm_region“ direkt zu. Der Schlüssel ist auf „irm_region“ gesetzt.
logstash.irm_site read_only_udm.additional.fields.value.string_value Ordnet den Wert des Felds „logstash.irm_site“ direkt zu. Der Schlüssel ist auf „irm_site“ gesetzt.
logstash.process.host read_only_udm.observer.hostname Ordnet den Wert des Felds „logstash.process.host“ direkt zu.
Nachricht Zum Extrahieren verschiedener Felder mithilfe von Grok-Mustern und regulären Ausdrücken
read_only_udm.metadata.event_type Auf „NETWORK_FTP“ festlegen
read_only_udm.metadata.log_type Auf „VANDYKE_SFTP“ festlegen
read_only_udm.metadata.product_event_type Aus dem Nachrichtenfeld mit einem Grok-Muster extrahiert
read_only_udm.metadata.product_name Auf „VANDYKE_SFTP“ festlegen
read_only_udm.metadata.vendor_name Auf „VANDYKE SOFTWARE“ festlegen
read_only_udm.network.application_protocol Auf „SSH“ festgelegt, wenn das Beschreibungsfeld „SSH2“ oder „SSH“ enthält. Andernfalls auf „HTTP“ festgelegt, wenn das Methodenfeld mit HTTP-Methoden übereinstimmt.
read_only_udm.network.http.method Aus dem Nachrichtenfeld extrahiert, wenn es mit gängigen HTTP-Methoden übereinstimmt
read_only_udm.network.http.referral_url Aus dem Nachrichtenfeld mit einem Grok-Muster extrahiert
read_only_udm.network.http.response_code Aus dem Nachrichtenfeld mit einem Grok-Muster extrahiert und in eine Ganzzahl konvertiert
read_only_udm.network.ip_protocol Auf „TCP“ festgelegt, wenn das Beschreibungsfeld „TCP“ enthält
read_only_udm.principal.ip Aus dem Nachrichtenfeld mit einem Grok-Muster extrahiert
read_only_udm.principal.port Aus dem Nachrichtenfeld mit einem Grok-Muster extrahiert und in eine Ganzzahl konvertiert
read_only_udm.security_result.description Aus dem Nachrichtenfeld mit einem Grok-Muster extrahiert
read_only_udm.security_result.severity Auf „HIGH“ festgelegt, wenn „syslog_severity“ „error“ oder „warning“ ist, auf „MEDIUM“, wenn „notice“ ist, und auf „LOW“, wenn „information“ oder „info“ ist.
read_only_udm.security_result.severity_details Ordnet den Wert des Felds „syslog_severity“ direkt zu
read_only_udm.target.ip Aus dem Nachrichtenfeld mit einem Grok-Muster extrahiert
read_only_udm.target.port Aus dem Nachrichtenfeld mit einem Grok-Muster extrahiert und in eine Ganzzahl konvertiert
read_only_udm.target.process.pid Aus dem Nachrichtenfeld mit einem Grok-Muster extrahiert
syslog_severity Wird verwendet, um den Schweregrad von „security_result“ zu bestimmen.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten