Coletar registros do Progress MOVEit Transfer

Compatível com:

Este documento explica como ingerir registros do Progress MOVEit Transfer no Google Security Operations usando o Bindplane.

O Progress MOVEit Transfer é uma solução de transferência gerenciada de arquivos (MFT, na sigla em inglês) que oferece transferências de arquivos criptografadas e seguras usando protocolos como HTTPS, FTPS e SFTP. Ele oferece registro de auditoria à prova de violação, controles de acesso com base em funções e suporte à conformidade com regulamentações como HIPAA, PCI DSS e GDPR. O MOVEit Transfer registra todas as atividades de transferência de arquivos, eventos de autenticação de usuários e ações administrativas no banco de dados de auditoria.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps
  • Windows Server 2016 ou mais recente ou host Linux com systemd
  • Conectividade de rede entre o agente do Bindplane e o servidor do Progress MOVEit Transfer
  • Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane.
  • Acesso de administrador de sistema ao console de administração da Web do Progress MOVEit Transfer.
  • Porta UDP 514 (ou a porta syslog escolhida) aberta do servidor MOVEit Transfer para o host do agente Bindplane

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Baixe o arquivo de autenticação de ingestão. Salve o arquivo com segurança no sistema em que o Bindplane será instalado.

Receber o ID de cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do BindPlane

Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.

Instalação do Windows

  1. Abra o prompt de comando ou o PowerShell como administrador.
  2. Execute este comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sc query observiq-otel-collector
    

    O serviço vai aparecer como EM EXECUÇÃO.

Instalação do Linux

  1. Abra um terminal com privilégios de root ou sudo.
  2. Execute este comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sudo systemctl status observiq-otel-collector
    

    O serviço vai aparecer como ativo (em execução).

Outros recursos de instalação

Para mais opções de instalação e solução de problemas, consulte o guia de instalação do agente do Bindplane.

Configurar o agente do Bindplane para ingerir syslog e enviar ao Google SecOps

Localizar o arquivo de configuração

  • Linux:

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

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

Editar o arquivo de configuração

  • Substitua todo o conteúdo de config.yaml pela seguinte configuração:

    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 configuração

Substitua os seguintes marcadores de posição:

Configuração do exportador:

  • <CREDS_FILE_PATH>: caminho completo para o arquivo de autenticação de ingestão:
    • Linux: /etc/bindplane-agent/ingestion-auth.json
    • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
  • <CUSTOMER_ID>: ID de cliente do Google SecOps copiado anteriormente
  • <REGION_ENDPOINT>: URL do endpoint regional:

    • EUA: malachiteingestion-pa.googleapis.com
    • Europa: europe-malachiteingestion-pa.googleapis.com
    • Ásia: asia-southeast1-malachiteingestion-pa.googleapis.com
    • Consulte a lista completa em Endpoints regionais.
  • Exemplo de configuração

    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
    

Salvar o arquivo de configuração

Depois de editar, salve o arquivo: * Linux: pressione Ctrl+O, Enter e Ctrl+X. * Windows: clique em Arquivo > Salvar.

Reinicie o agente do Bindplane para aplicar as mudanças.

Para reiniciar o agente do Bindplane no Linux, faça o seguinte:

  1. Execute este comando:

    sudo systemctl restart observiq-otel-collector
    
  2. Verifique se o serviço está em execução:

    sudo systemctl status observiq-otel-collector
    
  3. Verifique se há erros nos registros:

    sudo journalctl -u observiq-otel-collector -f
    

Para reiniciar o agente do Bindplane em Windows, faça o seguinte:

  1. Escolha uma das seguintes opções:

    • Prompt de comando ou PowerShell como administrador:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console de serviços:

      1. Pressione Win+R, digite services.msc e pressione Enter.
      2. Localize o Coletor do OpenTelemetry da observIQ.
      3. Clique com o botão direito do mouse e selecione Reiniciar.
      4. Verifique se o serviço está em execução:

        sc query observiq-otel-collector
        
      5. Verifique se há erros nos registros:

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

Configurar o encaminhamento do syslog do Progress MOVEit Transfer

Para configurar o MOVEit Transfer para encaminhar entradas de registro de auditoria ao agente do Bindplane via syslog:

  1. Faça login no console de administração da Web do MOVEit Transfer como um usuário com permissões de SysAdmin.
  2. Acesse CONFIGURAÇÕES > Sistema > Auditoria > Syslog. A página Configurar configurações do Syslog é exibida.
  3. Na seção Geração de registros do Syslog, selecione Ativado. Quando ativado, cada entrada de registro de auditoria é enviada ao host syslog especificado e ao banco de dados de auditoria do MOVEit Transfer.
  4. No campo Host do Syslog, insira o endereço IP ou o nome do host do host do agente do Bindplane (por exemplo, 192.168.1.100).
  5. No campo Porta Syslog, insira 514. Se esse campo for deixado em branco, ele vai voltar para a porta padrão 514.

  6. No menu suspenso Syslog Facility, selecione a instalação em que as mensagens do syslog do MOVEit Transfer vão aparecer no host syslog remoto. O valor padrão é FTP. As seguintes instalações padrão do syslog estão disponíveis:

    • KERN
    • USUÁRIO
    • MAIL
    • DAEMON
    • AUTH
    • SYSLOG
    • LPR
    • NOTÍCIAS
    • UUCP
    • CRON
    • AUTHPRIV
    • FTP (padrão)
    • LOCAL0 a LOCAL7
  7. Clique em Mudar configurações de geração de registros para salvar a configuração.

  8. Clique em Enviar mensagem de syslog de teste para enviar uma mensagem de teste ao host do agente Bindplane especificado. Como a implementação do BSD Syslog é baseada em UDP, verifique manualmente se a mensagem de teste chegou conferindo os registros do agente do Bindplane.

  9. Verifique se a mensagem de teste foi recebida pelo agente do Bindplane:

    • Linux:

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

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

Requisitos de firewall

Verifique se a seguinte regra de firewall está em vigor para permitir o tráfego do syslog do MOVEit Transfer para o agente do Bindplane:

Direção Protocolo Origem Destino Porta
De saída do MOVEit Transfer UDP IP do servidor MOVEit Transfer IP do host do agente do Bindplane 514

Tabela de mapeamento de UDM

Campo de registro Mapeamento de UDM Lógica
column1 metadata.collected_timestamp Convertido usando padrões de correspondência de data: 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 Convertido usando padrões de correspondência de data: 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 Valor copiado diretamente
column3 target.hostname, target.asset.hostname Valor copiado diretamente de column3
column4 principal.ip, principal.asset.ip Extraído de column4 usando o padrão grok para IP.
column6 target.file.full_path Concatenado de folderPath e fileName se ambos estiverem presentes, caso contrário, apenas de fileName
column7 target.file.full_path
column15 target.file.full_path
column7 target.user.email_addresses Mesclado se column2 == file_sentemail
column10 metadata.description Valor copiado diretamente
column11 metadata.product_event_type O valor é copiado diretamente se não for "None"
column12 target.ip, target.asset.ip Extraído da coluna12 usando o padrão grok para IP
column16 target.file.full_path Concatenado de folderPath e fileName se ambos estiverem presentes, caso contrário, apenas de fileName
column23 target.file.full_path
column19 target.user.user_display_name O valor é copiado diretamente se column2 == file_sentemail e column8 == sender. Caso contrário, é para o usuário de destino.
event_received_time metadata.collected_timestamp Convertido usando padrões de correspondência de data: UNIX_MS, dd/MM/yyyy HH:mm:ss, yyyy-MM-dd HH:mm:ss, MM/dd/yyyy HH:mm:ss A, yyyy/MM/dd HH:mm:ss, RFC 3339, yyyy-MM-ddTHH:mm:ss
timestamp metadata.event_timestamp Convertido usando padrões de correspondência de data: 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 Valor copiado diretamente
AgentVersion metadata.product_version Valor copiado diretamente
principal_host principal.hostname, principal.asset.hostname Valor copiado diretamente
Nome de usuário principal.user.userid Valor copiado diretamente
company_name principal.user.company_name Valor copiado diretamente
ID target.process.pid Valor copiado diretamente
InstID metadata.product_log_id Valor copiado diretamente
FileID target.resource.attribute.labels Mesclado como additional_id_2 com a chave FileID e o valor de FileID
FolderID target.resource.attribute.labels Mesclado como additional_id_3 com a chave FolderID e o valor de FolderID
FolderPath target.file.full_path Concatenado de FolderPath e FileName, se ambos estiverem presentes, caso contrário, de FolderPath.
FileName target.file.full_path
FileName target.resource.attribute.labels Mesclado como nome do arquivo com a chave FileName e o valor de FileName
host principal.hostname, principal.asset.hostname Valor copiado diretamente
log_level security_result.severity Definido como "INFORMATIONAL" se INFO ou DEBUG, "ERROR" se ERROR
source_module_name observer.resource.attribute.labels Unido como source_module_label com a chave source_module_name e o valor de source_module_name
source_module_type observer.application Valor copiado diretamente
log_msg metadata.description Valor de log_msg se http_method != GET e file_path estiver vazio. Caso contrário, log_desc, description ou Message.
log_desc metadata.description
descrição metadata.description
Mensagem metadata.description
porta principal.port Valor copiado diretamente, convertido em número inteiro
tgtport target.port Valor copiado diretamente, convertido em número inteiro
pacote principal.process.command_line Valor copiado diretamente
srcip principal.ip, principal.asset.ip Valor copiado diretamente
nome de usuário principal.user.userid Valor copiado diretamente
versão metadata.product_version Valor copiado diretamente
http_method network.http.method Valor copiado diretamente
ação security_result.action_details Valor copiado diretamente
resumo security_result.summary Valor copiado diretamente
security_result security_result Mesclado diretamente
tgtip target.ip, target.asset.ip Valor copiado diretamente
application_proto network.application_protocol Em maiúsculas e copiado diretamente
url network.http.referral_url Valor copiado diretamente
status_code network.http.response_code Valor copiado diretamente, convertido em número inteiro
file_path principal.process.file.full_path Valor copiado diretamente
file_size principal.process.file.size Convertido para uinteger se não for 0
process_id principal.process.pid Valor copiado diretamente
session_id network.session_id Valor copiado diretamente
task_id additional.fields Mesclado como additional_field com a chave TASK_ID e string_value de task_id
AgentBrand metadata.product_event_type Valor copiado diretamente
Parm1 additional.fields Mesclado como additional_field_3 com a chave Parm1 e string_value de Parm1
Parm2 additional.fields Unido como additional_field_4 com a chave Parm2 e string_value de Parm2
Erro additional.fields Mesclado como additional_field_5 com a chave "Error" e string_value de "Error"
XFerSize target.resource.attribute.labels Unido como additional_field_1 com a chave XFerSize e o valor de XFerSize
FolderPath metadata.event_type Definido como FILE_DELETION se FolderPath e action_performed corresponderem a "Excluir arquivo", NETWORK_HTTP se tgtip ou host e application_proto == HTTP, USER_LOGIN se Username ou username, STATUS_UPDATE se tgtip ou host ou principal_host ou IPAddress, caso contrário, GENERIC_EVENT
tgtip metadata.event_type
host metadata.event_type
principal_host metadata.event_type
IPAddress metadata.event_type
Nome de usuário metadata.event_type
nome de usuário metadata.event_type
tgtip metadata.event_type Definido como USER_LOGIN se column2 == sec_signon e tgtip ou tar_host, USER_LOGOUT se sec_signoff e tgtip ou tar_host, FILE_UNCATEGORIZED se folder_add, FILE_CREATION se file_upload ou download e tgtip e is_tgt_file_present, FILE_DELETION se file_delete e srcip e is_tgt_file_present, FILE_MODIFICATION se file_rename, FILE_UNCATEGORIZED se file_dlhashchk, EMAIL_TRANSACTION se file_sentemail e useremail, STATUS_UPDATE se srcip, caso contrário, 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 Definido como MACHINE para eventos de login/logout
metadata.vendor_name metadata.vendor_name Defina como "IPS".
metadata.product_name metadata.product_name Defina como "IPSWITCH MOVEIT TRANSFER"
target_application event.idm.read_only_udm.target.application Mapeado do registro de mudanças
product_event event.idm.read_only_udm.metadata.product_event_type Mapeado do registro de mudanças
dstip event.idm.read_only_udm.target.ip e event.idm.read_only_udm.target.asset.ip Mapeado do registro de mudanças
AdminTrust event.idm.read_only_udm.additional.fields Mapeado do registro de mudanças
Permission event.idm.read_only_udm.additional.fields Mapeado do registro de mudanças
log_status event.idm.read_only_udm.security_result.action.details Mapeado do registro de mudanças
srcip event.idm.read_only_udm.principal.ip e event.idm.read_only_udm.principal.asset.ip Mapeado do registro de mudanças
EventReceivedTime event.timestamp Mapeado do registro de mudanças
SourceModuleName observer.resource.attribute.labels Mapeado do registro de mudanças
SourceModuleType observer.application Mapeado do registro de mudanças
SourceName metadata.product_event_type Mapeado do registro de mudanças
Severity security_result. Mapeado do registro de mudanças
Hostname principal.hostname Mapeado do registro de mudanças
Channel security_result.about.resource.attribute.labels Mapeado do registro de mudanças
AgentVersion metadata.version Mapeado do registro de mudanças

Registro de alterações

Ver o registro de alterações deste analisador

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.