Collecter les journaux Progress MOVEit Transfer

Compatible avec :

Ce document explique comment ingérer les journaux Progress MOVEit Transfer dans Google Security Operations à l'aide de Bindplane.

Progress MOVEit Transfer est une solution de transfert de fichiers gérée (MFT, Managed File Transfer) qui permet de transférer des fichiers de manière sécurisée et chiffrée à l'aide de protocoles tels que HTTPS, FTPS et SFTP. Il propose une journalisation d'audit inviolable, des contrôles d'accès basés sur les rôles et une assistance pour la conformité avec les réglementations, y compris la loi HIPAA, PCI DSS et le RGPD. MOVEit Transfer enregistre toutes les activités de transfert de fichiers, les événements d'authentification des utilisateurs et les actions administratives dans sa base de données d'audit.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Windows Server 2016 ou version ultérieure, ou hôte Linux avec systemd
  • Connectivité réseau entre l'agent Bindplane et le serveur Progress MOVEit Transfer
  • Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
  • Accès de niveau administrateur système à la console d'administration Web Progress MOVEit Transfer
  • Le port UDP 514 (ou le port syslog de votre choix) est ouvert du serveur MOVEit Transfer à l'hôte de l'agent Bindplane.

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel Bindplane sera installé.

Obtenir l'ID client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Profil.
  3. Copiez et enregistrez le numéro client de la section Informations sur l'organisation.

Installer l'agent Bindplane

Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

Installation de fenêtres

  1. Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Attendez la fin de l'installation.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sc query observiq-otel-collector
    

    Le service doit être indiqué comme RUNNING (EN COURS D'EXÉCUTION).

Installation de Linux

  1. Ouvrez un terminal avec les droits root ou sudo.
  2. Exécutez la commande suivante :

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Attendez la fin de l'installation.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sudo systemctl status observiq-otel-collector
    

    Le service doit être indiqué comme actif (en cours d'exécution).

Ressources d'installation supplémentaires

Pour obtenir d'autres options d'installation et de dépannage, consultez le guide d'installation de l'agent Bindplane.

Configurer l'agent Bindplane pour ingérer les journaux syslog et les envoyer à Google SecOps

Localiser le fichier de configuration

  • Linux :

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows :

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifiez le fichier de configuration

  • Remplacez l'intégralité du contenu de config.yaml par la configuration suivante :

    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
    

Paramètres de configuration

Remplacez les espaces réservés suivants.

Configuration de l'exportateur :

  • <CREDS_FILE_PATH> : chemin d'accès complet au fichier d'authentification de l'ingestion :
    • Linux : /etc/bindplane-agent/ingestion-auth.json
    • Windows : C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
  • <CUSTOMER_ID> : ID client Google SecOps copié précédemment
  • <REGION_ENDPOINT> : URL du point de terminaison régional :

    • États-Unis : malachiteingestion-pa.googleapis.com
    • Europe : europe-malachiteingestion-pa.googleapis.com
    • Asie : asia-southeast1-malachiteingestion-pa.googleapis.com
    • Pour obtenir la liste complète, consultez Points de terminaison régionaux.
  • Exemple de configuration

    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
    

Enregistrez le fichier de configuration.

Après avoir modifié le fichier, enregistrez-le : * Linux : appuyez sur Ctrl+O, puis sur Enter, puis sur Ctrl+X. * Windows : cliquez sur Fichier > Enregistrer.

Redémarrez l'agent Bindplane pour appliquer les modifications.

Pour redémarrer l'agent Bindplane sous Linux, procédez comme suit :

  1. Exécutez la commande suivante :

    sudo systemctl restart observiq-otel-collector
    
  2. Vérifiez que le service est en cours d'exécution :

    sudo systemctl status observiq-otel-collector
    
  3. Recherchez les erreurs dans les journaux :

    sudo journalctl -u observiq-otel-collector -f
    

Pour redémarrer l'agent Bindplane dans Windows :

  1. Choisissez l'une des options suivantes :

    • Invite de commande ou PowerShell en tant qu'administrateur :

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console Services :

      1. Appuyez sur Win+R, saisissez services.msc, puis appuyez sur Entrée.
      2. Localisez le collecteur observIQ OpenTelemetry.
      3. Effectuez un clic droit, puis sélectionnez Redémarrer.
      4. Vérifiez que le service est en cours d'exécution :

        sc query observiq-otel-collector
        
      5. Recherchez les erreurs dans les journaux :

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Configurer le transfert syslog Progress MOVEit

Pour configurer MOVEit Transfer afin qu'il transfère les entrées du journal d'audit à l'agent BindPlane via syslog :

  1. Connectez-vous à la console d'administration Web MOVEit Transfer en tant qu'utilisateur disposant des autorisations SysAdmin.
  2. Accédez à PARAMÈTRES> Système> Audit> Syslog. La page Configurer les paramètres Syslog s'affiche.
  3. Dans la section Journalisation Syslog, sélectionnez Activé. Lorsqu'elle est activée, chaque entrée de journal d'audit est envoyée à l'hôte syslog spécifié ainsi qu'à la base de données d'audit MOVEit Transfer.
  4. Dans le champ Hôte Syslog, saisissez l'adresse IP ou le nom d'hôte de l'hôte de l'agent Bindplane (par exemple, 192.168.1.100).
  5. Dans le champ Port Syslog, saisissez 514. Si ce champ est vide, le port par défaut 514 est utilisé.

  6. Dans le menu déroulant Syslog Facility (Installation Syslog), sélectionnez l'installation sous laquelle les messages syslog MOVEit Transfer s'afficheront sur l'hôte syslog distant. La valeur par défaut est FTP. Les installations syslog standards suivantes sont disponibles :

    • KERN
    • UTILISATEUR
    • MAIL
    • DAEMON
    • AUTH
    • SYSLOG
    • LPR
    • ACTUALITÉS
    • UUCP
    • CRON
    • AUTHPRIV
    • FTP (par défaut)
    • LOCAL0 à LOCAL7
  7. Cliquez sur Modifier les paramètres de journalisation pour enregistrer la configuration.

  8. Cliquez sur Send Test Syslog Message (Envoyer un message Syslog de test) pour envoyer un message de test à l'hôte de l'agent Bindplane spécifié. Étant donné que l'implémentation BSD Syslog est basée sur UDP, vérifiez manuellement que le message de test est arrivé en consultant les journaux de l'agent Bindplane.

  9. Vérifiez que le message de test a été reçu par l'agent Bindplane :

    • Linux :

      sudo journalctl -u observiq-otel-collector -f
      
    • Windows :

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      

Exigences de pare-feu

Assurez-vous que la règle de pare-feu suivante est en place pour autoriser le trafic syslog de MOVEit Transfer vers l'agent Bindplane :

Direction Protocole Source Destination Port
Sortant de MOVEit Transfer UDP Adresse IP du serveur MOVEit Transfer Adresse IP de l'hôte de l'agent Bindplane 514

Table de mappage UDM

Champ du journal Mappage UDM Logique
column1 metadata.collected_timestamp Converti à l'aide de modèles de correspondance de date : d/M/yyyy H:mm:ss A, M/d/yyyy H:mm:ss A, MM/dd/yyyy HH:mm:ss A
column1 metadata.event_timestamp Converti à l'aide de modèles de correspondance de date : d/M/yyyy H:mm:ss A, M/d/yyyy H:mm:ss A, MM/dd/yyyy HH:mm:ss A
column2 security_result.action_details Valeur copiée directement
column3 target.hostname, target.asset.hostname Valeur copiée directement à partir de la colonne 3
column4 principal.ip, principal.asset.ip Extrait de la colonne 4 à l'aide du modèle Grok pour l'adresse IP
column6 target.file.full_path Concaténé à partir de folderPath et fileName si les deux sont présents, sinon à partir de fileName seul
column7 target.file.full_path
column15 target.file.full_path
column7 target.user.email_addresses Fusionné si column2 == file_sentemail
column10 metadata.description Valeur copiée directement
column11 metadata.product_event_type Valeur copiée directement si elle n'est pas "None"
column12 target.ip, target.asset.ip Extrait de la colonne 12 à l'aide du modèle Grok pour l'adresse IP
column16 target.file.full_path Concaténé à partir de folderPath et fileName si les deux sont présents, sinon à partir de fileName seul
column23 target.file.full_path
column19 target.user.user_display_name Valeur copiée directement si column2 == file_sentemail et column8 == sender, sinon pour l'utilisateur cible
event_received_time metadata.collected_timestamp Converti à l'aide de modèles de correspondance de date : UNIX_MS, jj/MM/aaaa HH:mm:ss, aaaa-MM-jj HH:mm:ss, MM/jj/aaaa HH:mm:ss A, aaaa/MM/jj HH:mm:ss, RFC 3339, aaaa-MM-jjTHH:mm:ss
timestamp metadata.event_timestamp Converti à l'aide de modèles de correspondance de date : 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 Valeur copiée directement
AgentVersion metadata.product_version Valeur copiée directement
principal_host principal.hostname, principal.asset.hostname Valeur copiée directement
Nom d'utilisateur principal.user.userid Valeur copiée directement
company_name principal.user.company_name Valeur copiée directement
ID target.process.pid Valeur copiée directement
InstID metadata.product_log_id Valeur copiée directement
FileID target.resource.attribute.labels Fusionné en tant que additional_id_2 avec la clé FileID et la valeur de FileID
FolderID target.resource.attribute.labels Fusionné en tant que additional_id_3 avec la clé FolderID et la valeur de FolderID
FolderPath target.file.full_path Concaténé à partir de FolderPath et FileName si les deux sont présents, sinon à partir de FolderPath
FileName target.file.full_path
FileName target.resource.attribute.labels Fusionné en tant que nom de fichier avec la clé "FileName" et la valeur de "FileName"
hôte principal.hostname, principal.asset.hostname Valeur copiée directement
log_level security_result.severity Définissez-le sur "INFORMATIONAL" si le niveau est INFO ou DEBUG, et sur "ERROR" si le niveau est ERROR.
source_module_name observer.resource.attribute.labels Fusionné en tant que source_module_label avec la clé source_module_name et la valeur de source_module_name
source_module_type observer.application Valeur copiée directement
log_msg metadata.description Valeur de log_msg si http_method != GET et file_path vide, sinon log_desc, sinon description, sinon Message
log_desc metadata.description
description metadata.description
Message metadata.description
port principal.port Valeur copiée directement, convertie en entier
tgtport target.port Valeur copiée directement, convertie en entier
package principal.process.command_line Valeur copiée directement
srcip principal.ip, principal.asset.ip Valeur copiée directement
nom d'utilisateur principal.user.userid Valeur copiée directement
version metadata.product_version Valeur copiée directement
http_method network.http.method Valeur copiée directement
action security_result.action_details Valeur copiée directement
résumé security_result.summary Valeur copiée directement
security_result security_result Fusionné directement
tgtip target.ip, target.asset.ip Valeur copiée directement
application_proto network.application_protocol En majuscules et copié directement
url network.http.referral_url Valeur copiée directement
status_code network.http.response_code Valeur copiée directement, convertie en entier
file_path principal.process.file.full_path Valeur copiée directement
file_size principal.process.file.size Converti en uinteger s'il n'est pas égal à 0
process_id principal.process.pid Valeur copiée directement
session_id network.session_id Valeur copiée directement
task_id additional.fields Fusionné en tant que champ supplémentaire avec la clé TASK_ID et string_value à partir de task_id
AgentBrand metadata.product_event_type Valeur copiée directement
Parm1 additional.fields Fusionné en tant que additional_field_3 avec la clé Parm1 et la valeur string_value de Parm1
Parm2 additional.fields Fusionné en tant que additional_field_4 avec la clé Parm2 et la valeur string_value de Parm2
Erreur additional.fields Fusionné en tant que additional_field_5 avec la clé "Error" et string_value à partir d'Error
XFerSize target.resource.attribute.labels Fusionné en tant que additional_field_1 avec la clé XFerSize et la valeur de XFerSize
FolderPath metadata.event_type Définissez sur FILE_DELETION si FolderPath et action_performed correspondent à "Supprimer le fichier", sur NETWORK_HTTP si tgtip ou host et application_proto == HTTP, sur USER_LOGIN si Username ou username, sur STATUS_UPDATE si tgtip ou host ou principal_host ou IPAddress, sinon sur GENERIC_EVENT.
tgtip metadata.event_type
hôte metadata.event_type
principal_host metadata.event_type
IPAddress metadata.event_type
Nom d'utilisateur metadata.event_type
nom d'utilisateur metadata.event_type
tgtip metadata.event_type Défini sur USER_LOGIN si column2 == sec_signon et tgtip ou tar_host, USER_LOGOUT si sec_signoff et tgtip ou tar_host, FILE_UNCATEGORIZED si folder_add, FILE_CREATION si file_upload ou download et tgtip et is_tgt_file_present, FILE_DELETION si file_delete et srcip et is_tgt_file_present, FILE_MODIFICATION si file_rename, FILE_UNCATEGORIZED si file_dlhashchk, EMAIL_TRANSACTION si file_sentemail et useremail, STATUS_UPDATE si srcip, sinon GENERIC_EVENT
tar_host metadata.event_type
srcip metadata.event_type
is_tgt_file_present metadata.event_type
column2 metadata.event_type
useremail metadata.event_type
security_result metadata.event_type
extensions.auth.type extensions.auth.type Définissez la valeur sur MACHINE pour les événements de connexion/déconnexion.
metadata.vendor_name metadata.vendor_name Définissez sur "IPS".
metadata.product_name metadata.product_name Définissez-le sur "IPSWITCH MOVEIT TRANSFER".
target_application event.idm.read_only_udm.target.application Mappé à partir du journal des modifications
product_event event.idm.read_only_udm.metadata.product_event_type Mappé à partir du journal des modifications
dstip event.idm.read_only_udm.target.ip et event.idm.read_only_udm.target.asset.ip Mappé à partir du journal des modifications
AdminTrust event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
Permission event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
log_status event.idm.read_only_udm.security_result.action.details Mappé à partir du journal des modifications
srcip event.idm.read_only_udm.principal.ip et event.idm.read_only_udm.principal.asset.ip Mappé à partir du journal des modifications
EventReceivedTime event.timestamp Mappé à partir du journal des modifications
SourceModuleName observer.resource.attribute.labels Mappé à partir du journal des modifications
SourceModuleType observer.application Mappé à partir du journal des modifications
SourceName metadata.product_event_type Mappé à partir du journal des modifications
Severity security_result. Mappé à partir du journal des modifications
Hostname principal.hostname Mappé à partir du journal des modifications
Channel security_result.about.resource.attribute.labels Mappé à partir du journal des modifications
AgentVersion metadata.version Mappé à partir du journal des modifications

Journal des modifications

Afficher le journal des modifications pour ce parseur

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.