Coletar registros do HP ProCurve

Compatível com:

Neste documento, explicamos como ingerir os registros do switch HP ProCurve no Google Security Operations usando o Bindplane. O código do analisador tenta primeiro analisar a mensagem de registro bruta como JSON. Se isso falhar, ele usará expressões regulares (padrões grok) para extrair campos da mensagem com base em formatos de registro comuns do HP ProCurve.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Instância do Google SecOps
  • Host Windows 2016 ou mais recente ou Linux com systemd
  • Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
  • Acesso privilegiado a um switch HP ProCurve

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 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 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: HP_PROCURVE
                    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 switch HP ProCurve

  1. Faça login no switch HP Procurve com SSH.
  2. Verifique a interface do switch usando o seguinte comando:

    show ip int br
    
  3. Ative o modo de configuração na chave usando o seguinte comando:

    console# conf t
    
  4. Configure o switch para enviar registros usando os seguintes comandos:

        logging host <bindplae-server-ip> transport <udp/tcp> port <port-number>
        logging facility syslog
        logging trap informational
        logging buffer 65536
        logging origin-id hostname
        logging source-interface <interface>
    
  5. Substitua <bindplae-server-ip> e <port-number> pelo endereço IP do Bindplane e o número da porta.

  6. Substitua <udp/tcp> selecionando apenas UDP ou TCP como protocolo de comunicação (dependendo da configuração do agente do Bindplane).

  7. Substitua <interface> pelo ID da interface que você recebeu anteriormente do switch (por exemplo, Ethernet1/1).

  8. Saia do modo de configuração e salve usando os seguintes comandos:

    console# exit
    console# wr
    

Tabela de mapeamento da UDM

Campo de registro Mapeamento da UDM Lógica
AAAScheme read_only_udm.security_result.detection_fields.value Valor extraído do campo descrip se a chave for AAAScheme
AAAType read_only_udm.security_result.detection_fields.value Valor extraído do campo descrip se a chave for AAAType
ID do chassi read_only_udm.security_result.detection_fields.value Valor extraído do campo description se a chave for Chassis ID
O comando é read_only_udm.security_result.detection_fields.value Texto depois de Command is no campo commandInfo
CommandSource read_only_udm.security_result.detection_fields.value Valor extraído do campo descrip se a chave for CommandSource
Config-Method read_only_udm.additional.fields.value.string_value Se o campo existir no registro, ele será colocado nos campos adicionais como config_method.
ConfigDestination read_only_udm.security_result.detection_fields.value Valor extraído do campo descrip se a chave for ConfigDestination
ConfigSource read_only_udm.security_result.detection_fields.value Valor extraído do campo descrip se a chave for ConfigSource
Device-Name read_only_udm.principal.hostname Se o campo existir no registro, ele será mapeado para o nome do host principal e o nome do host do recurso.
Event-ID read_only_udm.additional.fields.value.string_value Se o campo existir no registro, ele será colocado nos campos adicionais como event_id.
EventIndex read_only_udm.security_result.detection_fields.value Valor extraído do campo descrip se a chave for EventIndex
IfIndex read_only_udm.security_result.detection_fields.value Valor extraído do campo description se a chave for IfIndex
IP: %{IP:IPAddr} read_only_udm.target.ip, read_only_udm.target.asset.ip Endereço IP extraído do campo desc e mapeado para o IP de destino e o IP do recurso de destino
IPAddr read_only_udm.target.ip, read_only_udm.target.asset.ip Se o campo existir no registro, ele será mapeado para o IP de destino e o IP do recurso de destino.
Notice-Type read_only_udm.additional.fields.value.string_value Se o campo existir no registro, ele será colocado nos campos adicionais como notice_type.
ID da porta read_only_udm.security_result.detection_fields.value Valor extraído do campo description se a chave for Port ID
Remote-IP-Address read_only_udm.additional.fields.value.string_value Se o campo existir no registro, ele será colocado nos campos adicionais como remote_ip_address.
Serviço read_only_udm.security_result.detection_fields.value Valor extraído do campo descrip se a chave for Service
Tarefa read_only_udm.security_result.detection_fields.value Valor extraído do campo descrip se a chave for Task
Usuário read_only_udm.principal.user.userid Se o campo existir no registro, ele será mapeado para o ID do usuário principal.
User-Name read_only_udm.principal.user.userid Se o campo existir no registro, ele será mapeado para o ID do usuário principal.
Nome de usuário read_only_udm.principal.user.userid Se o campo existir no registro, ele será mapeado para o ID do usuário principal.
UserService read_only_udm.security_result.detection_fields.value Valor extraído do campo desc se a chave for UserService
collection_time.seconds read_only_udm.metadata.event_timestamp.seconds Segundos do carimbo de data/hora do evento
dados Esse campo contém a mensagem de registro bruta e é analisado para extrair outros campos. Ele não está mapeado para a UDM.
desc read_only_udm.security_result.description Descrição extraída da mensagem de registro
descrip Descrição extraída do campo desc e analisada para pares de chave-valor. Ele não está mapeado para a UDM.
description read_only_udm.security_result.description Se o campo existir no registro, ele será mapeado para a descrição do resultado de segurança.
descript read_only_udm.metadata.description Se o campo existir no registro, ele será mapeado para a descrição dos metadados.
event_id read_only_udm.additional.fields.value.string_value Se o campo existir no registro, ele será colocado nos campos adicionais como event_id.
eventId read_only_udm.metadata.product_event_type ID do evento extraído da mensagem de registro
nome do host read_only_udm.principal.hostname, read_only_udm.principal.asset.hostname Nome do host extraído da mensagem de registro e mapeado para o nome do host principal e do recurso
inter_ip read_only_udm.additional.fields.value.string_value, read_only_udm.intermediary.ip Se o campo existir no registro e for um IP válido, ele será mapeado para o IP intermediário. Caso contrário, ele será colocado nos campos adicionais como inter_ip.
notice_type read_only_udm.additional.fields.value.string_value Se o campo existir no registro, ele será colocado nos campos adicionais como notice_type.
pid read_only_udm.principal.process.pid Se o campo existir no registro, ele será mapeado para o PID do processo principal.
programa Informações do programa extraídas da mensagem de registro, analisadas posteriormente para extrair módulo, gravidade e ação. Ele não está mapeado para a UDM.
proto read_only_udm.network.application_protocol, read_only_udm.additional.fields.value.string_value Protocolo extraído da mensagem de registro. Se ele corresponder a protocolos conhecidos, será mapeado para o protocolo do aplicativo. Caso contrário, ele será colocado nos campos adicionais como Application Protocol.
remote_ip_address read_only_udm.principal.ip, read_only_udm.principal.asset.ip, read_only_udm.additional.fields.value.string_value Se o campo existir no registro e for um IP válido, ele será mapeado para o IP principal e o IP do recurso principal. Caso contrário, ele será colocado nos campos adicionais como remote_ip_address.
gravidade, read_only_udm.security_result.severity, read_only_udm.security_result.severity_details Gravidade extraída do campo program após a divisão por /. Ele é mapeado para níveis de gravidade da UDM e também armazenado como detalhes de gravidade bruta.
src_ip read_only_udm.principal.ip, read_only_udm.principal.asset.ip IP de origem extraído da mensagem de registro e mapeado para o IP principal e o IP do recurso principal
status read_only_udm.additional.fields.value.string_value Se o campo existir no registro, ele será colocado nos campos adicionais como status.
targetHostname read_only_udm.target.hostname, read_only_udm.target.asset.ip Se o campo existir no registro, ele será mapeado para o nome do host e o IP do recurso de destino.
target_ip read_only_udm.target.ip, read_only_udm.target.asset.ip IP de destino extraído da mensagem de registro e mapeado para o IP de destino e o IP do recurso de destino
timestamp read_only_udm.metadata.event_timestamp.seconds Carimbo de data/hora extraído da mensagem de registro e convertido para o carimbo de data/hora do evento.
timestamp.seconds read_only_udm.metadata.event_timestamp.seconds Segundos do carimbo de data/hora do evento
nome de usuário read_only_udm.principal.user.userid Se o campo existir no registro, ele será mapeado para o ID do usuário principal.
read_only_udm.metadata.event_type Determinado com base em uma combinação de campos e lógica:
- NETWORK_CONNECTION: se has_principal e has_target forem verdadeiros.
- USER_LOGOUT: se action for WEBOPT_LOGOUT, LOGOUT ou SHELL_LOGOUT.
- USER_LOGIN: se action for LOGIN ou WEBOPT_LOGIN_SUC.
- STATUS_UPDATE: se action não estiver vazio ou src_ip/hostname não estiverem vazios.
- USER_UNCATEGORIZED: se has_user for verdadeiro.
- GENERIC_EVENT: se nenhuma dessas condições for atendida.
read_only_udm.metadata.product_name Fixado no código para Procurve
read_only_udm.metadata.vendor_name Fixado no código para HP
read_only_udm.extensions.auth.type Defina como MACHINE se event_type for USER_LOGOUT ou USER_LOGIN

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