MOVEit Transfer-Protokolle von Progress erfassen
In diesem Dokument wird beschrieben, wie Sie Progress MOVEit Transfer-Logs mit Bindplane in Google Security Operations aufnehmen.
Progress MOVEit Transfer ist eine Lösung für die verwaltete Dateiübertragung (Managed File Transfer, MFT), die sichere, verschlüsselte Dateiübertragungen über Protokolle wie HTTPS, FTPS und SFTP ermöglicht. Sie bietet manipulationssicheres Audit-Logging, rollenbasierte Zugriffssteuerung und Compliance-Unterstützung für Verordnungen wie HIPAA, PCI DSS und DSGVO. MOVEit Transfer zeichnet alle Dateiübertragungsaktivitäten, Nutzerauthentifizierungsereignisse und administrativen Aktionen in der Audit-Datenbank auf.
Hinweis
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Windows Server 2016 oder höher oder Linux-Host mit
systemd - Netzwerkverbindung zwischen dem Bindplane-Agent und dem Progress MOVEit Transfer-Server
- Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
- Zugriff auf die Web-Admin-Konsole von Progress MOVEit Transfer auf Systemadministrator-Ebene
- UDP-Port 514 (oder der von Ihnen ausgewählte Syslog-Port) vom MOVEit Transfer-Server zum Bindplane-Agent-Host geöffnet
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
- Laden Sie die Authentifizierungsdatei für die Aufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Profile auf.
- 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
- Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
Führen Sie dazu diesen Befehl aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietWarten Sie, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sc query observiq-otel-collectorDer Dienst sollte als RUNNING (Wird ausgeführt) angezeigt werden.
Linux-Installation
- Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
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.shWarten Sie, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sudo systemctl status observiq-otel-collectorDer Dienst sollte als aktiv (wird ausgeführt) angezeigt werden.
Zusätzliche Installationsressourcen
Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in der Installationsanleitung für den Bindplane-Agent.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
Konfigurationsdatei suchen
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Konfigurationsdatei bearbeiten
Ersetzen Sie den gesamten Inhalt von
config.yamldurch die folgende Konfiguration:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/moveit_transfer: compression: gzip creds_file_path: '<CREDS_FILE_PATH>' customer_id: '<CUSTOMER_ID>' endpoint: <REGION_ENDPOINT> log_type: IPSWITCH_MOVEIT_TRANSFER raw_log_field: body ingestion_labels: log_source: moveit_transfer service: pipelines: logs/moveit_to_chronicle: receivers: - udplog exporters: - chronicle/moveit_transfer
Konfigurationsparameter
Ersetzen Sie die folgenden Platzhalter.
Exporter-Konfiguration:
<CREDS_FILE_PATH>: Vollständiger Pfad zur Datei für die Authentifizierung bei der Aufnahme:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
<CUSTOMER_ID>: Google SecOps-Kundennummer, die zuvor kopiert wurde<REGION_ENDPOINT>: Regionale Endpunkt-URL:- USA:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asien:
asia-southeast1-malachiteingestion-pa.googleapis.com - Eine vollständige Liste finden Sie unter Regionale Endpunkte.
- USA:
Konfigurationsbeispiel
receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/moveit_transfer: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6' endpoint: malachiteingestion-pa.googleapis.com log_type: IPSWITCH_MOVEIT_TRANSFER raw_log_field: body ingestion_labels: log_source: moveit_transfer service: pipelines: logs/moveit_to_chronicle: receivers: - udplog exporters: - chronicle/moveit_transfer
Konfigurationsdatei speichern
Speichern Sie die Datei nach dem Bearbeiten:
* Linux: Drücken Sie Ctrl+O, dann Enter und dann Ctrl+X.
* Windows: Klicken Sie auf Datei > Speichern.
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
So starten Sie den Bindplane-Agent unter Linux neu:
Führen Sie dazu diesen Befehl aus:
sudo systemctl restart observiq-otel-collectorPrüfen Sie, ob der Dienst ausgeführt wird:
sudo systemctl status observiq-otel-collectorLogs auf Fehler prüfen:
sudo journalctl -u observiq-otel-collector -f
So starten Sie den Bindplane-Agent unter Windows neu:
Wählen Sie eine der folgenden Optionen aus:
Eingabeaufforderung oder PowerShell als Administrator:
net stop observiq-otel-collector && net start observiq-otel-collectorServices-Konsole:
- Drücken Sie
Win+R, geben Sieservices.mscein und drücken Sie die Eingabetaste. - Suchen Sie nach observIQ OpenTelemetry Collector.
- Klicken Sie mit der rechten Maustaste und wählen Sie Neu starten aus.
Prüfen Sie, ob der Dienst ausgeführt wird:
sc query observiq-otel-collectorLogs auf Fehler prüfen:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Drücken Sie
Syslog-Weiterleitung für Progress MOVEit Transfer konfigurieren
So konfigurieren Sie MOVEit Transfer, um Audit-Logeinträge über Syslog an den BindPlane-Agent weiterzuleiten:
- Melden Sie sich in der MOVEit Transfer-Web-Administrationskonsole als Nutzer mit SysAdmin-Berechtigungen an.
- Gehen Sie zu EINSTELLUNGEN > System > Überprüfung > Syslog. Die Seite Syslog-Einstellungen konfigurieren wird angezeigt.
- Wählen Sie im Abschnitt Syslog-Logging die Option Aktiviert aus. Wenn diese Option aktiviert ist, wird jeder Audit-Logeintrag an den angegebenen Syslog-Host sowie an die MOVEit Transfer-Audit-Datenbank gesendet.
- Geben Sie im Feld Syslog Host (Syslog-Host) die IP-Adresse oder den Hostnamen des Bindplane-Agent-Hosts ein, z. B.
192.168.1.100. Geben Sie im Feld Syslog Port (Syslog-Port) den Wert
514ein. Wenn dieses Feld leer gelassen wird, wird der Standardport514verwendet.Wählen Sie im Drop-down-Menü Syslog Facility (Syslog-Einrichtung) die Einrichtung aus, unter der MOVEit Transfer-Syslog-Meldungen auf dem Remote-Syslog-Host angezeigt werden. Der Standardwert ist FTP. Die folgenden Standard-Syslog-Einrichtungen sind verfügbar:
- KERN
- NUTZER
- DAEMON
- AUTH
- SYSLOG
- LPR
- NEUIGKEITEN
- UUCP
- CRON
- AUTHPRIV
- FTP (Standard)
- LOCAL0 bis LOCAL7
Klicken Sie auf Logging-Einstellungen ändern, um die Konfiguration zu speichern.
Klicken Sie auf Test-Syslog-Nachricht senden, um eine Testnachricht an den angegebenen Bindplane-Agent-Host zu senden. Da die BSD Syslog-Implementierung auf UDP basiert, müssen Sie manuell überprüfen, ob die Testnachricht angekommen ist. Sehen Sie dazu in den Bindplane-Agent-Logs nach.
Prüfen Sie, ob die Testnachricht vom Bindplane-Agenten empfangen wurde:
Linux:
sudo journalctl -u observiq-otel-collector -fWindows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Firewallanforderungen
Achten Sie darauf, dass die folgende Firewallregel vorhanden ist, um Syslog-Traffic von MOVEit Transfer zum Bindplane-Agenten zuzulassen:
| Richtung | Protokoll | Quelle | Ziel | Port |
|---|---|---|---|---|
| Ausgehend von MOVEit Transfer | UDP | IP-Adresse des MOVEit Transfer-Servers | Bindplane-Agent-Host-IP | 514 |
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| Spalte1 | metadata.collected_timestamp | Konvertiert mit Mustern für den Datumsabgleich: d/M/yyyy H:mm:ss A, M/d/yyyy H:mm:ss A, MM/dd/yyyy HH:mm:ss A |
| Spalte1 | metadata.event_timestamp | Konvertiert mit Mustern für den Datumsabgleich: d/M/yyyy H:mm:ss A, M/d/yyyy H:mm:ss A, MM/dd/yyyy HH:mm:ss A |
| Spalte2 | security_result.action_details | Wert direkt kopiert |
| Spalte3 | target.hostname, target.asset.hostname | Wert direkt aus Spalte 3 kopiert |
| Spalte4 | principal.ip, principal.asset.ip | Aus „column4“ extrahiert, wobei das Grok-Muster für IP verwendet wurde |
| column6 | target.file.full_path | Wird aus „folderPath“ und „fileName“ verkettet, wenn beide vorhanden sind, andernfalls nur aus „fileName“. |
| column7 | target.file.full_path | |
| column15 | target.file.full_path | |
| column7 | target.user.email_addresses | Zusammengeführt, wenn column2 == file_sentemail |
| column10 | metadata.description | Wert direkt kopiert |
| column11 | metadata.product_event_type | Wert wird direkt kopiert, wenn er nicht „None“ ist. |
| column12 | target.ip, target.asset.ip | Aus „column12“ extrahiert, wobei das Grok-Muster für IP verwendet wurde |
| column16 | target.file.full_path | Wird aus „folderPath“ und „fileName“ verkettet, wenn beide vorhanden sind, andernfalls nur aus „fileName“. |
| column23 | target.file.full_path | |
| column19 | target.user.user_display_name | Der Wert wird direkt kopiert, wenn „column2“ == „file_sentemail“ und „column8“ == „sender“. Andernfalls wird der Wert für den Zielnutzer kopiert. |
| event_received_time | metadata.collected_timestamp | Konvertiert mit Datumsabgleichsmustern: UNIX_MS, TT/MM/JJJJ HH:mm:ss, JJJJ-MM-TT HH:mm:ss, MM/TT/JJJJ HH:mm:ss A, JJJJ/MM/TT HH:mm:ss, RFC3339, JJJJ-MM-TTTHH:mm:ss |
| timestamp | metadata.event_timestamp | Konvertiert mit Mustern für den Datumsabgleich: MMM d HH:mm:ss, MMM dd HH:mm:ss, ISO8601, yyyy-MM-dd HH:mm:ss, yyyy-MM-dd HH:mm:ss Z, MM/dd/yyyy HH:mm:ss A, yy-MM-dd HH:mm:ss, RFC3339, yyyy-MM-ddTHH:mm:ss |
| prin_ip | principal.ip, principal.asset.ip | Wert direkt kopiert |
| AgentVersion | metadata.product_version | Wert direkt kopiert |
| principal_host | hauptkonto.hostname, hauptkonto.asset.hostname | Wert direkt kopiert |
| Nutzername | principal.user.userid | Wert direkt kopiert |
| company_name | principal.user.company_name | Wert direkt kopiert |
| ID | target.process.pid | Wert direkt kopiert |
| InstID | metadata.product_log_id | Wert direkt kopiert |
| FileID | target.resource.attribute.labels | Zusammengeführt als „additional_id_2“ mit dem Schlüssel „FileID“ und dem Wert aus „FileID“ |
| FolderID | target.resource.attribute.labels | Zusammengeführt als „additional_id_3“ mit dem Schlüssel „FolderID“ und dem Wert aus „FolderID“ |
| FolderPath | target.file.full_path | Wird aus FolderPath und FileName verkettet, wenn beide vorhanden sind, andernfalls aus FolderPath. |
| FileName | target.file.full_path | |
| FileName | target.resource.attribute.labels | Zusammengeführt als Dateiname mit dem Schlüssel „FileName“ und dem Wert aus „FileName“ |
| Host | hauptkonto.hostname, hauptkonto.asset.hostname | Wert direkt kopiert |
| log_level | security_result.severity | Auf INFORMATIONAL setzen, wenn INFO oder DEBUG, auf ERROR, wenn ERROR |
| source_module_name | observer.resource.attribute.labels | Als „source_module_label“ mit dem Schlüssel „source_module_name“ und dem Wert aus „source_module_name“ zusammengeführt |
| source_module_type | observer.application | Wert direkt kopiert |
| log_msg | metadata.description | Wert aus „log_msg“, wenn „http_method“ != GET und „file_path“ leer ist, andernfalls „log_desc“, andernfalls „description“, andernfalls „Message“ |
| log_desc | metadata.description | |
| Beschreibung | metadata.description | |
| Nachricht | metadata.description | |
| Port | principal.port | Wert direkt kopiert, in Ganzzahl konvertiert |
| tgtport | target.port | Wert direkt kopiert, in Ganzzahl konvertiert |
| Paket | principal.process.command_line | Wert direkt kopiert |
| srcip | principal.ip, principal.asset.ip | Wert direkt kopiert |
| Nutzername | principal.user.userid | Wert direkt kopiert |
| Version | metadata.product_version | Wert direkt kopiert |
| http_method | network.http.method | Wert direkt kopiert |
| Aktion | security_result.action_details | Wert direkt kopiert |
| Zusammenfassung | security_result.summary | Wert direkt kopiert |
| security_result | security_result | Direkt zusammengeführt |
| tgtip | target.ip, target.asset.ip | Wert direkt kopiert |
| application_proto | network.application_protocol | In Großbuchstaben und direkt kopiert |
| URL | network.http.referral_url | Wert direkt kopiert |
| status_code | network.http.response_code | Wert direkt kopiert, in Ganzzahl konvertiert |
| file_path | principal.process.file.full_path | Wert direkt kopiert |
| file_size | principal.process.file.size | In „uinteger“ umgewandelt, wenn nicht 0 |
| process_id | principal.process.pid | Wert direkt kopiert |
| session_id | network.session_id | Wert direkt kopiert |
| task_id | additional.fields | Zusammengeführt als „additional_field“ mit dem Schlüssel „TASK_ID“ und „string_value“ aus „task_id“ |
| AgentBrand | metadata.product_event_type | Wert direkt kopiert |
| Parm1 | additional.fields | Zusammengeführt als „additional_field_3“ mit dem Schlüssel „Parm1“ und dem „string_value“ aus „Parm1“ |
| Parm2 | additional.fields | Zusammengeführt als „additional_field_4“ mit dem Schlüssel „Parm2“ und dem „string_value“ aus „Parm2“ |
| Fehler | additional.fields | Zusammengeführt als „additional_field_5“ mit dem Schlüssel „Error“ und „string_value“ aus „Error“ |
| XFerSize | target.resource.attribute.labels | Zusammengeführt als „additional_field_1“ mit dem Schlüssel „XFerSize“ und dem Wert aus „XFerSize“ |
| FolderPath | metadata.event_type | Auf FILE_DELETION setzen, wenn FolderPath und action_performed mit „Datei löschen“ übereinstimmen, NETWORK_HTTP, wenn tgtip oder host und application_proto == HTTP, USER_LOGIN, wenn Username oder username, STATUS_UPDATE, wenn tgtip oder host oder principal_host oder IPAddress, andernfalls GENERIC_EVENT |
| tgtip | metadata.event_type | |
| Host | metadata.event_type | |
| principal_host | metadata.event_type | |
| IPAddress | metadata.event_type | |
| Nutzername | metadata.event_type | |
| Nutzername | metadata.event_type | |
| tgtip | metadata.event_type | Auf USER_LOGIN setzen, wenn column2 == sec_signon und tgtip oder tar_host, USER_LOGOUT, wenn sec_signoff und tgtip oder tar_host, FILE_UNCATEGORIZED, wenn folder_add, FILE_CREATION, wenn file_upload oder download und tgtip und is_tgt_file_present, FILE_DELETION, wenn file_delete und srcip und is_tgt_file_present, FILE_MODIFICATION, wenn file_rename, FILE_UNCATEGORIZED, wenn file_dlhashchk, EMAIL_TRANSACTION, wenn file_sentemail und useremail, STATUS_UPDATE, wenn srcip, andernfalls GENERIC_EVENT |
| tar_host | metadata.event_type | |
| srcip | metadata.event_type | |
| is_tgt_file_present | metadata.event_type | |
| Spalte2 | metadata.event_type | |
| useremail | metadata.event_type | |
| security_result | metadata.event_type | |
| extensions.auth.type | extensions.auth.type | Auf MACHINE für Anmelde-/Abmeldeereignisse festgelegt |
| metadata.vendor_name | metadata.vendor_name | Auf „IPS“ festgelegt |
| metadata.product_name | metadata.product_name | Auf „IPSWITCH MOVEIT TRANSFER“ festlegen |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten