MOVEit Transfer-Logs 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 MFT-Lösung (Managed File Transfer), 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 Google SecOps-Datenaufnahme 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 prü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 Datum-Abgleichsmustern: 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 Datum-Abgleichsmustern: 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 Spalte 12 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, RFC 3339, JJJJ-MM-TTTHH:mm:ss |
| timestamp | metadata.event_timestamp | Konvertiert mit Datumsabgleichsmustern: 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, RFC 3339, yyyy-MM-ddTHH:mm:ss |
| prin_ip | principal.ip, principal.asset.ip | Wert direkt kopiert |
| AgentVersion | metadata.product_version | Wert direkt kopiert |
| principal_host | principal.hostname, principal.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 | principal.hostname, principal.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“ festlegen |
| metadata.product_name | metadata.product_name | Auf „IPSWITCH MOVEIT TRANSFER“ festlegen |
target_application |
event.idm.read_only_udm.target.application |
Aus dem Änderungsprotokoll zugeordnet |
product_event |
event.idm.read_only_udm.metadata.product_event_type |
Aus dem Änderungsprotokoll zugeordnet |
dstip |
event.idm.read_only_udm.target.ip und event.idm.read_only_udm.target.asset.ip |
Aus dem Änderungsprotokoll zugeordnet |
AdminTrust |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
Permission |
event.idm.read_only_udm.additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
log_status |
event.idm.read_only_udm.security_result.action.details |
Aus dem Änderungsprotokoll zugeordnet |
srcip |
event.idm.read_only_udm.principal.ip und event.idm.read_only_udm.principal.asset.ip |
Aus dem Änderungsprotokoll zugeordnet |
EventReceivedTime |
event.timestamp |
Aus dem Änderungsprotokoll zugeordnet |
SourceModuleName |
observer.resource.attribute.labels |
Aus dem Änderungsprotokoll zugeordnet |
SourceModuleType |
observer.application |
Aus dem Änderungsprotokoll zugeordnet |
SourceName |
metadata.product_event_type |
Aus dem Änderungsprotokoll zugeordnet |
Severity |
security_result. |
Aus dem Änderungsprotokoll zugeordnet |
Hostname |
principal.hostname |
Aus dem Änderungsprotokoll zugeordnet |
Channel |
security_result.about.resource.attribute.labels |
Aus dem Änderungsprotokoll zugeordnet |
AgentVersion |
metadata.version |
Aus dem Änderungsprotokoll zugeordnet |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten