Coletar registros de gerenciamento de segurança da AlgoSec

Compatível com:

Este documento explica como transferir os registros de gerenciamento de segurança da AlgoSec para as operações de segurança do Google usando um agente do Bindplane. O analisador extrai os campos, processando registros formatados com CEF e sem CEF. Ele analisa campos comuns, como carimbos de data/hora, endereços IP e detalhes do evento, e os mapeia para o UDM com base no produto (Suite, Firewall Analyzer, FireFlow) e no ID do evento, definindo os metadados e campos de resultados de segurança apropriados. Ele também processa tipos de eventos específicos, como login/saída, alertas administrativos e relatórios de análise, extraindo detalhes relevantes e definindo níveis de gravidade.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com systemd.
  • Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
  • Verifique se você tem acesso privilegiado ao AlgoSec Firewall Analyzer, FireFlow e AppViz.

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. Faça o download do arquivo de autenticação de transferência. 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

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 raiz 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

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

  1. Acesse o arquivo de configuração:

    1. Localize o arquivo config.yaml. Normalmente, ele está no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Notepad).
  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: ALGOSEC
                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 real do cliente.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber o arquivo de autenticação de transferência 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 Services ou digite o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o Syslog para o Firewall Analyzer

  1. Faça login no dispositivo AFA usando SSH.
  2. Acesse o diretório de configuração do syslog-ng:

    cd /etc/syslog-ng
    
  3. Faça backup da configuração atual:

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. Edite o arquivo de configuração do syslog-ng:

    vi syslog-ng.conf
    
  5. Adicione as linhas a seguir para definir o servidor syslog remoto:

    destination d_remote {
        udp("<bindplane-server-ip>" port(514));
    };
    
    log {
        source(s_sys);
        destination(d_remote);
    };
    
    • Substitua <bindplane-server-ip> pelo endereço IP do agente do Bindplane.
  6. Salve e saia do editor.

  7. Reinicie o serviço syslog-ng para aplicar as mudanças:

    service syslog-ng restart
    
  8. Opcional: verifique a configuração do Syslog:

    1. Acesse Administração > Configurações do servidor Syslog.
    2. Clique em Testar conectividade.

Configurar o Syslog para o FireFlow

  1. Faça login na máquina FireFlow como root.
  2. Abra o arquivo /etc/syslog.conf para edição.

    vi /etc/syslog.conf
    
  3. Adicione a seguinte linha ao arquivo: local0.*@<BindplaneAgent>.

    • Substitua <BindplaneAgent> pelo endereço IP do servidor do agente do Bindplane.

Configurar o Syslog para o AppViz

  1. Faça login no dispositivo AppViz por SSH.
  2. Acesse o diretório de configuração do syslog-ng:

    cd /etc/syslog-ng
    
  3. Faça backup da configuração atual:

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. Edite o arquivo de configuração do syslog-ng:

    vi syslog-ng.conf
    
  5. Adicione o seguinte para definir o servidor syslog remoto:

    destination d_remote {
        udp("<bindplane-server-ip>" port(514));
    };
    
    log {
        source(s_sys);
        destination(d_remote);
    };
    
    • Substitua <bindplane-server-ip> pelo endereço IP do agente do Bindplane.
  6. Salve e saia do editor.

  7. Reinicie o serviço syslog-ng para aplicar as mudanças:

    service syslog-ng restart
    
  8. Verifique a configuração do Syslog:

    1. Na interface do AppViz, acesse Administration > Syslog Server Settings.
    2. Clique em Testar conectividade.

Configurar o Syslog para eventos de login e logout

  1. Faça login no dispositivo ASMS por SSH.
  2. Acesse o diretório de configuração do syslog-ng:

    cd /etc/syslog-ng
    
  3. Faça backup da configuração atual:

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. Edite o arquivo de configuração do syslog-ng:

    vi syslog-ng.conf
    
  5. Adicione o seguinte para definir o servidor syslog remoto:

    destination d_remote {
        udp("<bindplane-server-ip>" port(514));
    };
    
    log {
        source(s_sys);
        destination(d_remote);
    };
    
    • Substitua <bindplane-server-ip> pelo endereço IP do servidor syslog.
  6. Salve e saia do editor.

  7. Reinicie o serviço syslog-ng para aplicar as mudanças:

    service syslog-ng restart
    

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
by_user principal.user.user_display_name O valor do campo by_user do registro bruto é atribuído a esse campo do UDM.
collection_time metadata.event_timestamp Os campos de segundos e nanos são combinados para criar um carimbo de data/hora.
comm target.process.command_line O valor do campo comm extraído do campo desc usando grok é atribuído a esse campo do UDM.
datetime metadata.event_timestamp A data e a hora são extraídas do registro bruto e usadas para preencher o carimbo de data/hora do evento.
desc metadata.description O valor do campo desc do registro bruto é atribuído a esse campo do UDM quando nenhuma outra descrição está disponível.
dest_ip target.ip O valor do campo dest_ip do registro bruto é atribuído a esse campo do UDM.
dest_port target.port O valor do campo dest_port do registro bruto é atribuído a esse campo do UDM.
details security_result.summary O valor do campo details do registro bruto é atribuído a esse campo do UDM.
device principal.asset.hostname O valor do campo device do registro bruto é atribuído a esse campo do UDM.
dst_ip target.ip O valor do campo dst_ip do registro bruto é atribuído a esse campo do UDM.
dst_port target.port O valor do campo dst_port do registro bruto é atribuído a esse campo do UDM.
event_id metadata.product_event_type O valor do campo event_id do registro bruto é atribuído a esse campo do UDM. Ele também é usado na lógica do analisador para determinar o metadata.event_type e outros campos.
event_name metadata.product_event_type O valor do campo event_name do registro bruto é atribuído a esse campo do UDM.
firewall target.hostname O valor do campo firewall do registro bruto é atribuído a esse campo do UDM.
host principal.hostname O valor do campo host do registro bruto é atribuído a esse campo do UDM.
host_type principal.asset.category O valor do campo host_type do registro bruto é atribuído a esse campo do UDM.
iporhost principal.ip / principal.hostname / target.ip / target.hostname / observer.ip / observer.hostname Se o valor for um endereço IP, ele será mapeado para principal.ip, target.ip ou observer.ip, dependendo da origem do registro e do tipo de evento. Se for um nome de host, ele será mapeado para principal.hostname, target.hostname ou observer.hostname.
IP principal.ip O valor do campo IP do registro bruto é atribuído a esse campo do UDM.
kv_data security_result.summary O valor do campo kv_data do registro bruto é atribuído a esse campo do UDM.
log_type metadata.log_type Fixado em ALGOSEC.
metric security_result.action_details O valor do campo metric do registro bruto é atribuído a esse campo do UDM.
msg security_result.summary / security_result.description O valor do campo msg do registro bruto é usado para preencher o resumo ou a descrição do resultado de segurança, dependendo do contexto. Ele também é usado para extrair os campos risk_level, risk_count, risk_code e risk_title.
pid target.process.pid O valor do campo pid extraído do campo desc usando grok é atribuído a esse campo do UDM.
product metadata.product_name O valor do campo product do registro bruto é atribuído a esse campo do UDM.
report security_result.description O valor do campo report do registro bruto é incluído na descrição do resultado de segurança.
report_data.Device IP target.ip O valor do campo Device IP dos dados JSON analisados é atribuído a esse campo do UDM.
report_data.Highest Risk Level security_result.description O valor do campo Highest Risk Level dos dados JSON analisados é incluído na descrição do resultado de segurança. Ele também é usado para determinar a gravidade do resultado de segurança.
report_data.Security Rating Score security_result.description O valor do campo Security Rating Score dos dados JSON analisados é incluído na descrição do resultado de segurança.
Requestor.Email principal.user.email_addresses O valor do campo Email no objeto Requestor dos dados JSON analisados é atribuído a esse campo do UDM.
Requestor.Name principal.user.user_display_name O valor do campo Name no objeto Requestor dos dados JSON analisados é atribuído a esse campo do UDM.
RequestType target.resource.attribute.labels O valor do campo RequestType do registro bruto é adicionado como um rótulo ao recurso de destino.
risk_title security_result.summary O valor do campo risk_title do registro bruto é atribuído a esse campo do UDM.
src_ip principal.ip O valor do campo src_ip do registro bruto é atribuído a esse campo do UDM.
src_port principal.port O valor do campo src_port do registro bruto é atribuído a esse campo do UDM.
status security_result.description / security_result.action_details O valor do campo status do registro bruto é incluído na descrição do resultado de segurança ou nos detalhes da ação, dependendo do contexto. Ele também é usado para determinar a gravidade do resultado de segurança.
target_app target.application O valor do campo target_app do registro bruto é atribuído a esse campo do UDM.
TemplateName metadata.description O valor do campo TemplateName do registro bruto é atribuído a esse campo do UDM.
url security_result.url_back_to_product O valor do campo url do registro bruto é atribuído a esse campo do UDM.
user principal.user.userid O valor do campo user do registro bruto é atribuído a esse campo do UDM.
vendor metadata.vendor_name O valor do campo vendor do registro bruto é atribuído a esse campo do UDM.
version metadata.product_version O valor do campo version do registro bruto é atribuído a esse campo do UDM.
WorkFlow target.resource.attribute.labels O valor do campo WorkFlow do registro bruto é adicionado como um rótulo ao recurso de destino.
(Parser Logic) extensions.auth.type Fixado em MACHINE.
(Parser Logic) security_result.action Determinado com base no event_id e em outros campos. Normalmente, é definido como ALLOW ou BLOCK.
(Parser Logic) security_result.category Fixado em POLICY_VIOLATION para eventos do Firewall Analyzer.
(Parser Logic) security_result.description Construído com base em outros campos, fornecendo contexto e detalhes sobre o evento.
(Parser Logic) security_result.severity Determinado com base nos campos event_id, msg e outros. Normalmente, é definido como LOW, MEDIUM ou HIGH.
(Parser Logic) metadata.event_type Determinado com base no event_id e em outros campos. Os exemplos incluem USER_LOGIN, USER_LOGOUT, USER_RESOURCE_ACCESS, GENERIC_EVENT, STATUS_UNCATEGORIZED, SCAN_HOST, NETWORK_CONNECTION e STATUS_UPDATE.
(Parser Logic) is_alert Defina como true se security_result.severity for HIGH.
(Parser Logic) is_significant Defina como true se security_result.severity for HIGH.

Alterações

2022-11-27

Melhoria:

  • O formato CEF analisado e os registros não analisados relacionados ao grok foram adicionados com um bloco condicional específico do evento para processá-los.
  • Também adicionamos uma tag de exclusão para excluir registros com formato incorreto.

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