Recolha registos do VSFTPD

Compatível com:

Este documento explica como carregar registos do VSFTPD para o Google Security Operations através do Bindplane. O analisador usa padrões grok para extrair campos dos registos, mapeando-os para o UDM. Processa vários tipos de registos, incluindo inícios de sessão, carregamentos, transferências e operações de diretório, enriquecendo os dados com contexto adicional, como informações e ações SSL/TLS (permitir/bloquear). Também realiza transformações específicas para diferentes tipos de mensagens de registo, como a extração de códigos de resposta e descrições, e a conversão de tamanhos de ficheiros em números inteiros.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google SecOps
  • Windows 2016 ou posterior, ou um anfitrião Linux com systemd
  • Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas
  • Acesso privilegiado ao anfitrião com VSFTPD

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.

Obtenha o ID de cliente do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

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

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. Execute o seguinte comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalação adicionais

Para ver opções de instalação adicionais, consulte o guia de instalação.

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:
    • Localize o ficheiro config.yaml. Normalmente, encontra-se no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    • Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. Edite o ficheiro config.yaml da seguinte forma:

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'VSFTPD'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Reinicie o agente do Bindplane para aplicar as alterações

  • Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure o Syslog no VSFTPD

  1. Inicie sessão no anfitrião VSFTPD.
  2. Para instalar o rsyslog no Ubuntu/Debian, execute o seguinte comando:

    sudo apt install rsyslog
    
  3. Para instalar o rsyslog no CentOS/RHEL, execute o seguinte comando:

    sudo yum install rsyslog
    
  4. Edite a configuração do vsftpd para usar o Syslog:

    sudo vi /etc/vsftpd.conf
    
  5. Certifique-se de que os seguintes parâmetros estão definidos:

    syslog_enable=YES
    xferlog_enable=NO
    log_ftp_protocol=YES
    
  6. Guardar e sair.

  7. Reinicie o vsftpd:

    sudo systemctl restart vsftpd
    
  8. Edite a configuração do rsyslog para encaminhar os registos para o agente do Bindplane:

    sudo nano /etc/rsyslog.d/90-vsftpd.conf
    
  9. Adicione a seguinte linha para encaminhar registos através de UDP (porta predefinida 514):

    if ($programname == 'vsftpd') then @@BINDPLANE_IP:514
    
  10. Substitua BINDPLANE_IP pelo endereço IP real do agente do Bindplane.

    • Use @ para UDP e @@ para TCP.
  11. Reinicie o rsyslog:

    sudo systemctl restart rsyslog
    

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
certificate security_result.detection_fields.key: "cert"
security_result.detection_fields.value: value of certificate
O valor do campo certificate está mapeado para um objeto security_result.detection_fields com a chave "cert".
cipher network.tls.cipher O valor do campo cipher é mapeado diretamente.
client_ip principal.ip O valor do campo client_ip é mapeado diretamente.
date metadata.event_timestamp Usado com month, year e time para construir o metadata.event_timestamp. O formato é derivado do campo timestamp no registo não processado, analisado e convertido num objeto de data/hora.
day metadata.event_timestamp Usado com month, year e time para construir o metadata.event_timestamp.
desc metadata.description O valor do campo desc (extraído do campo type) é mapeado diretamente. Isto aplica-se às operações "MKDIR", "RMDIR" e "DELETE".
description network.ftp.command
security_result.description
target.file.full_path
Se type for "comando FTP", o valor é mapeado para network.ftp.command. Se type for "DEBUG" e não corresponder a padrões SSL específicos, é mapeado para security_result.description. Se type começar por "OK" e não for "OK LOGIN", e o registo descrever uma operação de ficheiro (MKDIR, RMDIR, DELETE), é mapeado para target.file.full_path.
file_name target.file.full_path O valor do campo file_name é mapeado diretamente.
file_size network.received_bytes
network.sent_bytes
Se type for "OK DOWNLOAD" ou "FAIL DOWNLOAD", o valor é convertido num número inteiro sem sinal e mapeado para network.received_bytes. Se type for "OK UPLOAD" ou "FAIL UPLOAD", o valor é convertido num número inteiro não assinado e mapeado para network.sent_bytes. Definido como "USER_LOGIN" se type for "OK LOGIN". Definido como "FILE_UNCATEGORIZED" se type estiver relacionado com operações de ficheiros ("OK UPLOAD", "OK DOWNLOAD", "FAIL DOWNLOAD", "OK MKDIR", "OK RMDIR", "OK DELETE", "FAIL UPLOAD"). Definido como "STATUS_UPDATE" para todos os outros valores de type. Está sempre definido como "VSFTPD". Está sempre definido como "VSFTPD". Está sempre definido como "VSFTPD".
month metadata.event_timestamp Usado com day, year e time para construir o metadata.event_timestamp.
pid principal.process.pid O valor do campo pid é mapeado diretamente.
response_code network.http.response_code O valor do campo response_code é convertido num número inteiro e mapeado.
reused_status security_result.detection_fields.key: "reused status"
security_result.detection_fields.value: value of reused_status
O valor do campo reused_status é mapeado para um objeto security_result.detection_fields com a chave "reused status".
speed additional.fields.key: "download_speed" ou "upload_speed"
additional.fields.value.string_value: valor de speed
Se type for "OK DOWNLOAD" ou "FAIL DOWNLOAD", o valor é mapeado para additional.fields com a chave "download_speed". Se type for "OK UPLOAD" ou "FAIL UPLOAD", o valor é mapeado para additional.fields com a chave "upload_speed".
ssl_shutdown_state security_result.detection_fields.key: "SSL Shutdown State"
security_result.detection_fields.value: valor de ssl_shutdown_state
O valor do campo ssl_shutdown_state é mapeado para um objeto security_result.detection_fields com a chave "SSL Shutdown State".
ssl_version network.tls.version O valor do campo ssl_version é mapeado diretamente.
time metadata.event_timestamp Usado com day, month e year para construir o metadata.event_timestamp.
type metadata.description
security_result.action_details
O valor do campo type está mapeado para metadata.description, exceto quando é "OK LOGIN". Também é mapeado para security_result.action_details quando indica uma ação de permissão ou bloqueio (começa com "OK" ou "FAIL").
userid principal.user.userid
target.user.userid
Se type for "OK LOGIN", o valor é mapeado para target.user.userid. Caso contrário, é mapeado para principal.user.userid.
year metadata.event_timestamp Usado com day, month e time para construir o metadata.event_timestamp. Definido como "NETWORK" se type for "OK LOGIN". Definido como "MACHINE" se type for "OK LOGIN". Definido como "ALLOW" se type começar por "OK". Definido como "BLOCK" se type começar por "FAIL".

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