Recopila registros de progreso de MOVEit Transfer

Se admite en los siguientes sistemas operativos:

En este documento, se explica cómo transferir registros de Progress MOVEit Transfer a Google Security Operations con Bindplane.

Progress MOVEit Transfer es una solución de transferencia de archivos administrada (MFT) que proporciona transferencias de archivos seguras y encriptadas con protocolos como HTTPS, FTPS y SFTP. Ofrece registros de auditoría a prueba de manipulaciones, controles de acceso basados en roles y asistencia para el cumplimiento de reglamentaciones como HIPAA, PCI DSS y RGPD. MOVEit Transfer registra toda la actividad de transferencia de archivos, los eventos de autenticación de usuarios y las acciones administrativas en su base de datos de auditoría.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Windows Server 2016 o versiones posteriores, o host de Linux con systemd
  • Conectividad de red entre el agente de Bindplane y el servidor de Progress MOVEit Transfer
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos de firewall estén abiertos según los requisitos del agente de Bindplane.
  • Acceso a nivel de administrador del sistema a la Consola del administrador web de Progress MOVEit Transfer
  • El puerto UDP 514 (o el puerto syslog que elijas) debe estar abierto desde el servidor de MOVEit Transfer hasta el host del agente de Bindplane.

Obtén el archivo de autenticación de transferencia de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.

Obtén el ID de cliente de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instala el agente de Bindplane

Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.

Instalación en Windows

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el comando siguiente:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Espera a que se complete la instalación.

  4. Ejecuta el siguiente comando para verificar la instalación:

    sc query observiq-otel-collector
    

    El servicio debe mostrarse como RUNNING.

Instalación en Linux

  1. Abre una terminal con privilegios de raíz o sudo.
  2. Ejecuta el comando siguiente:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Espera a que se complete la instalación.

  4. Ejecuta el siguiente comando para verificar la instalación:

    sudo systemctl status observiq-otel-collector
    

    El servicio debería mostrarse como activo (en ejecución).

Recursos de instalación adicionales

Para obtener más opciones de instalación y solucionar problemas, consulta la guía de instalación del agente de Bindplane.

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

Ubica el archivo de configuración

  • Linux:

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

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

Edita el archivo de configuración

  • Reemplaza todo el contenido de config.yaml por la siguiente configuración:

    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
    

Parámetros de configuración

Reemplaza los siguientes marcadores de posición.

Configuración del exportador:

  • <CREDS_FILE_PATH>: Ruta de acceso completa al archivo de autenticación de la transferencia:
    • Linux: /etc/bindplane-agent/ingestion-auth.json
    • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
  • <CUSTOMER_ID>: ID de cliente de Google SecOps que se copió antes
  • <REGION_ENDPOINT>: URL del extremo regional:

    • EE.UU.: malachiteingestion-pa.googleapis.com
    • Europa: europe-malachiteingestion-pa.googleapis.com
    • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
    • Consulta Extremos regionales para obtener la lista completa.
  • Configuración de ejemplo

    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
    

Cómo guardar el archivo de configuración

Después de editarlo, guarda el archivo: * Linux: Presiona Ctrl+O, luego Enter y, por último, Ctrl+X. * Windows: Haz clic en Archivo > Guardar.

Reinicia el agente de Bindplane para aplicar los cambios

Para reiniciar el agente de Bindplane en Linux, haz lo siguiente:

  1. Ejecuta el comando siguiente:

    sudo systemctl restart observiq-otel-collector
    
  2. Verifica que el servicio esté en ejecución:

    sudo systemctl status observiq-otel-collector
    
  3. Revisa los registros en busca de errores:

    sudo journalctl -u observiq-otel-collector -f
    

Para reiniciar el agente de Bindplane en Windows, haz lo siguiente:

  1. Elige una de las siguientes opciones:

    • Símbolo del sistema o PowerShell como administrador:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Consola de Servicios:

      1. Presiona Win+R, escribe services.msc y presiona Intro.
      2. Busca observIQ OpenTelemetry Collector.
      3. Haz clic con el botón derecho y selecciona Reiniciar.
      4. Verifica que el servicio esté en ejecución:

        sc query observiq-otel-collector
        
      5. Revisa los registros en busca de errores:

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

Cómo configurar el reenvío de Syslog de Progress MOVEit Transfer

Para configurar MOVEit Transfer de modo que reenvíe las entradas del registro de auditoría al agente de BindPlane a través de syslog, haz lo siguiente:

  1. Accede a la Consola del administrador web de MOVEit Transfer como un usuario con permisos de SysAdmin.
  2. Ve a CONFIGURACIÓN > Sistema > Auditoría > Syslog. Se mostrará la página Configure Syslog Settings.
  3. En la sección Registro de Syslog, selecciona Habilitado. Cuando se habilita, cada entrada de registro de auditoría se envía al host de syslog especificado y a la base de datos de auditoría de MOVEit Transfer.
  4. En el campo Syslog Host, ingresa la dirección IP o el nombre de host del host del agente de Bindplane (por ejemplo, 192.168.1.100).
  5. En el campo Puerto de Syslog, ingresa 514. Si este campo se deja en blanco, se revierte al puerto predeterminado 514.

  6. En el menú desplegable Syslog Facility, selecciona la instalación en la que aparecerán los mensajes de registro del sistema de MOVEit Transfer en el host de registro del sistema remoto. El valor predeterminado es FTP. Están disponibles los siguientes registros estándar de syslog:

    • KERN
    • USUARIO
    • MAIL
    • DAEMON
    • AUTH
    • SYSLOG
    • LPR
    • NOTICIAS
    • UUCP
    • CRON
    • AUTHPRIV
    • FTP (predeterminado)
    • LOCAL0 a LOCAL7
  7. Haz clic en Change Logging Settings para guardar la configuración.

  8. Haz clic en Send Test Syslog Message para enviar un mensaje de prueba al host del agente de Bindplane especificado. Debido a que la implementación de Syslog de BSD se basa en UDP, verifica manualmente que el mensaje de prueba haya llegado. Para ello, consulta los registros del agente de Bindplane.

  9. Verifica que el agente de Bindplane haya recibido el mensaje de prueba:

    • Linux:

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

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

Requisitos del firewall

Asegúrate de que la siguiente regla de firewall esté configurada para permitir el tráfico de syslog desde MOVEit Transfer al agente de Bindplane:

Dirección Protocolo Origen Destino Puerto
Saliente de MOVEit Transfer UDP IP del servidor de MOVEit Transfer IP del host del agente de Bindplane 514

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
column1 metadata.collected_timestamp Se convierte con patrones de coincidencia de fechas: d/M/aaaa H:mm:ss A, M/d/aaaa H:mm:ss A, MM/dd/aaaa HH:mm:ss A
column1 metadata.event_timestamp Se convierte con patrones de coincidencia de fechas: d/M/aaaa H:mm:ss A, M/d/aaaa H:mm:ss A, MM/dd/aaaa HH:mm:ss A
column2 security_result.action_details El valor se copió directamente.
column3 target.hostname, target.asset.hostname El valor se copió directamente de la columna3.
column4 principal.ip, principal.asset.ip Se extrajo de la columna 4 con el patrón de grok para IP
column6 target.file.full_path Se concatena desde folderPath y fileName si ambos están presentes; de lo contrario, solo desde fileName.
column7 target.file.full_path
column15 target.file.full_path
column7 target.user.email_addresses Se combina si column2 == file_sentemail
column10 metadata.description El valor se copió directamente.
column11 metadata.product_event_type El valor se copia directamente si no es None.
column12 target.ip, target.asset.ip Se extrajo de la columna12 con el patrón de grok para IP
column16 target.file.full_path Se concatena desde folderPath y fileName si ambos están presentes; de lo contrario, solo desde fileName.
column23 target.file.full_path
column19 target.user.user_display_name El valor se copia directamente si column2 == file_sentemail y column8 == sender; de lo contrario, se copia para el usuario objetivo.
event_received_time metadata.collected_timestamp Se convirtió con patrones de coincidencia de fechas: UNIX_MS, dd/MM/aaaa HH:mm:ss, aaaa-MM-dd HH:mm:ss, MM/dd/aaaa HH:mm:ss A, aaaa/MM/dd HH:mm:ss, RFC 3339, aaaa-MM-ddTHH:mm:ss
timestamp metadata.event_timestamp Se convierte con patrones de coincidencia de fechas: MMM d HH:mm:ss, MMM dd HH:mm:ss, ISO8601, aaaa-MM-dd HH:mm:ss, aaaa-MM-dd HH:mm:ss Z, MM/dd/aaaa HH:mm:ss A, aa-MM-dd HH:mm:ss, RFC 3339, aaaa-MM-ddTHH:mm:ss
prin_ip principal.ip, principal.asset.ip El valor se copió directamente.
AgentVersion metadata.product_version El valor se copió directamente.
principal_host principal.hostname, principal.asset.hostname El valor se copió directamente.
Nombre de usuario principal.user.userid El valor se copió directamente.
company_name principal.user.company_name El valor se copió directamente.
ID target.process.pid El valor se copió directamente.
InstID metadata.product_log_id El valor se copió directamente.
FileID target.resource.attribute.labels Se combinó como additional_id_2 con la clave FileID y el valor de FileID
FolderID target.resource.attribute.labels Se combinó como additional_id_3 con la clave FolderID y el valor de FolderID
FolderPath target.file.full_path Se concatena a partir de FolderPath y FileName si ambos están presentes; de lo contrario, se concatena a partir de FolderPath.
Nombre del archivo target.file.full_path
Nombre del archivo target.resource.attribute.labels Se combinó como nombre de archivo con la clave FileName y el valor de FileName
host principal.hostname, principal.asset.hostname El valor se copió directamente.
log_level security_result.severity Se establece en INFORMATIONAL si es INFO o DEBUG, y en ERROR si es ERROR.
source_module_name observer.resource.attribute.labels Se combinó como source_module_label con la clave source_module_name y el valor de source_module_name
source_module_type observer.application El valor se copió directamente.
log_msg metadata.description Valor de log_msg si http_method != GET y file_path está vacío; de lo contrario, log_desc, o bien description, o bien Message
log_desc metadata.description
descripción metadata.description
Mensaje metadata.description
puerto principal.port Valor copiado directamente y convertido en número entero
tgtport target.port Valor copiado directamente y convertido en número entero
paquete principal.process.command_line El valor se copió directamente.
srcip principal.ip, principal.asset.ip El valor se copió directamente.
nombre de usuario principal.user.userid El valor se copió directamente.
versión metadata.product_version El valor se copió directamente.
http_method network.http.method El valor se copió directamente.
acción security_result.action_details El valor se copió directamente.
resumen security_result.summary El valor se copió directamente.
security_result security_result Se combinó directamente
tgtip target.ip, target.asset.ip El valor se copió directamente.
application_proto network.application_protocol Se copió directamente en mayúsculas
url network.http.referral_url El valor se copió directamente.
status_code network.http.response_code Valor copiado directamente y convertido en número entero
file_path principal.process.file.full_path El valor se copió directamente.
file_size principal.process.file.size Se convierte en uinteger si no es 0
process_id principal.process.pid El valor se copió directamente.
session_id network.session_id El valor se copió directamente.
task_id additional.fields Se combinó como additional_field con la clave TASK_ID y string_value de task_id
AgentBrand metadata.product_event_type El valor se copió directamente.
Parm1 additional.fields Se combinó como additional_field_3 con la clave Parm1 y string_value de Parm1
Parm2 additional.fields Se combinó como additional_field_4 con la clave Parm2 y el valor string_value de Parm2
Error additional.fields Se combinó como additional_field_5 con la clave Error y string_value de Error
XFerSize target.resource.attribute.labels Se combinó como additional_field_1 con la clave XFerSize y el valor de XFerSize.
FolderPath metadata.event_type Se establece en FILE_DELETION si FolderPath y action_performed coinciden con Delete File, NETWORK_HTTP si tgtip o host y application_proto == HTTP, USER_LOGIN si Username o username, STATUS_UPDATE si tgtip o host o principal_host o IPAddress, de lo contrario, GENERIC_EVENT
tgtip metadata.event_type
host metadata.event_type
principal_host metadata.event_type
IPAddress metadata.event_type
Nombre de usuario metadata.event_type
nombre de usuario metadata.event_type
tgtip metadata.event_type Se establece en USER_LOGIN si column2 == sec_signon y tgtip o tar_host, USER_LOGOUT si sec_signoff y tgtip o tar_host, FILE_UNCATEGORIZED si folder_add, FILE_CREATION si file_upload o download y tgtip y is_tgt_file_present, FILE_DELETION si file_delete y srcip y is_tgt_file_present, FILE_MODIFICATION si file_rename, FILE_UNCATEGORIZED si file_dlhashchk, EMAIL_TRANSACTION si file_sentemail y useremail, STATUS_UPDATE si srcip, de lo contrario, 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 Se establece en MACHINE para los eventos de acceso y cierre de sesión.
metadata.vendor_name metadata.vendor_name Se estableció en "IPS".
metadata.product_name metadata.product_name Establece el valor en "IPSWITCH MOVEIT TRANSFER".
target_application event.idm.read_only_udm.target.application Se asignó desde el registro de cambios
product_event event.idm.read_only_udm.metadata.product_event_type Se asignó desde el registro de cambios
dstip event.idm.read_only_udm.target.ip y event.idm.read_only_udm.target.asset.ip Se asignó desde el registro de cambios
AdminTrust event.idm.read_only_udm.additional.fields Se asignó desde el registro de cambios
Permission event.idm.read_only_udm.additional.fields Se asignó desde el registro de cambios
log_status event.idm.read_only_udm.security_result.action.details Se asignó desde el registro de cambios
srcip event.idm.read_only_udm.principal.ip y event.idm.read_only_udm.principal.asset.ip Se asignó desde el registro de cambios
EventReceivedTime event.timestamp Se asignó desde el registro de cambios
SourceModuleName observer.resource.attribute.labels Se asignó desde el registro de cambios
SourceModuleType observer.application Se asignó desde el registro de cambios
SourceName metadata.product_event_type Se asignó desde el registro de cambios
Severity security_result. Se asignó desde el registro de cambios
Hostname principal.hostname Se asignó desde el registro de cambios
Channel security_result.about.resource.attribute.labels Se asignó desde el registro de cambios
AgentVersion metadata.version Se asignó desde el registro de cambios

Registro de cambios

Consulta el registro de cambios de este analizador

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.