Coletar registros do MySQL

Compatível com:

Este documento explica como ingerir registros do MySQL no Google Security Operations usando o Bindplane. Primeiro, o analisador extrai campos comuns das mensagens SYSLOG do MySQL usando grok. Em seguida, ele usa ramificação condicional (if, else if) e correspondência de expressão regular para identificar tipos de eventos específicos nas mensagens de registro, extraindo e mapeando informações relevantes no esquema do modelo de dados unificado (UDM).

Antes de começar

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

  • Instância do Google SecOps
  • Windows 2016 ou mais recente ou um host Linux com systemd
  • Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
  • Acesso privilegiado ao host do MySQL
  • Instalou o banco de dados MySQL e o Rsyslog

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 de forma segura no sistema em que o Bindplane será instalado.

Receber o ID do 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 Bindlane

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
    

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
    

Outros recursos de instalação

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

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

  1. Acesse o arquivo de configuração:
    • Localize o arquivo config.yaml. Normalmente, ele fica no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    • Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo 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: '/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
            ingestion_labels:
                log_type: 'MYSQL'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID do cliente real.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber arquivo de autenticação de ingestão do Google SecOps.

Reinicie o agente do Bindplane para aplicar as mudanças

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

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o Syslog no MySQL

  1. Faça login no host do MySQL usando SSH.

  2. Conecte-se ao banco de dados MySQL:

    mysql -u root -p
    
  3. Verifique o plug-in de auditoria server_audit.so:

    show variables like 'plugin_dir';
    
  4. Se você não encontrar o arquivo do plug-in no diretório dele, instale o plug-in usando o comando:

    install plugin server_audit soname 'server_audit.so';
    
  5. Confirme se o plug-in está Instalado e Ativado:

    show plugins;
    
  6. Edite o arquivo /etc/my.cnf usando vi, ative o seguinte e salve o arquivo:

    server_audit_events='CONNECT,QUERY,TABLE'
    server_audit_file_path=server_audit.log
    server_audit_logging=ON
    server_audit_output_type=SYSLOG
    server_audit_syslog_facility=LOG_LOCAL6
    
  7. Verifique as variáveis de auditoria com o seguinte comando:

    show global variables like "server_audit%";
    
  8. Verifique se a auditoria está ativada com o seguinte comando:

    Show global status like 'server_audit%';
    
  9. Edite o arquivo /etc/rsyslog.conf usando vi para ativar o uso de UDP e salve o arquivo:

    *.* @@<bindplane-agent-ip>:<bindplane-agent-port>
    
  10. Substitua <bindplane-agent-ip> e <bindplane-agent-port> pela configuração do agente do Bindplane.

  11. Reinicie o serviço MySQL e conecte-se ao banco de dados MySQL.

    /etc/init.d/mysqld restart
    

Tabela de mapeamento da UDM

Campo de registro Mapeamento da UDM Lógica
ação read_only_udm.metadata.event_type Se o valor for Created, será FILE_CREATION. Se o valor for Deleted, será FILE_DELETION. Caso contrário, nenhuma mudança.
database read_only_udm.target.resource.parent
db_hostname read_only_udm.target.hostname
db_user read_only_udm.target.user.userid
description read_only_udm.security_result.description
error_details Esta é uma variável temporária. Ignore-a.
error_level read_only_udm.security_result.severity Se o valor for error, será ERROR. Se for warning, será MEDIUM. Se for note, será INFORMATIONAL. Caso contrário, nenhuma mudança.
error_message read_only_udm.security_result.summary
file_path read_only_udm.target.file.full_path
file_size read_only_udm.target.file.size
nome do host read_only_udm.principal.hostname
inner_message read_only_udm.security_result.description
resumo read_only_udm.metadata.product_event_type
tabela read_only_udm.target.resource.name
table_not_found Esta é uma variável temporária. Ignore-a.
timestamp read_only_udm.metadata.event_timestamp
read_only_udm.extensions.auth.type Valor estático: MACHINE
read_only_udm.metadata.event_type Valor estático: USER_LOGIN, GENERIC_EVENT, STATUS_UPDATE, FILE_CREATION, FILE_DELETION
read_only_udm.metadata.log_type Valor estático: MYSQL
read_only_udm.metadata.product_name Valor estático: MySQL
read_only_udm.metadata.vendor_name Valor estático: Oracle Corporation
read_only_udm.security_result.action Valor estático: BLOCK
read_only_udm.target.resource.resource_type Valor estático: DATABASE, TABLE

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