Coletar registros do HP ProCurve

Compatível com:

Este documento explica como transferir os registros de chaveamento do HP ProCurve para as operações de segurança do Google usando o Bindplane. O código do analisador primeiro tenta analisar a mensagem de registro bruta como JSON. Se isso falhar, ele vai usar expressões regulares (padrões grok) para extrair campos da mensagem com base nos formatos de registro comuns do HP ProCurve.

Antes de começar

Verifique se você tem os seguintes pré-requisitos:

  • Instância do Google SecOps
  • Windows 2016 ou mais recente ou host Linux com systemd
  • Se estiver em execução 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. 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

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

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

  1. Acesse o arquivo de configuração:

    • 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.
    • 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: 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 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 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 no switch 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 pelo 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 de 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 de host principal e o nome de host do recurso.
ID do evento 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 associado ao IP de destino e ao 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
Endereço-IP-remoto 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 Segunda parte 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, 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á associado à descrição do resultado de segurança.
descript read_only_udm.metadata.description Se o campo existir no registro, ele será associado à 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 e analisadas 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 corresponder a protocolos conhecidos, ele 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 os níveis de gravidade do UDM e também armazenado como detalhes brutos de gravidade.
src_ip read_only_udm.principal.ip, read_only_udm.principal.asset.ip O IP de origem é extraído da mensagem de registro e associado ao IP principal e ao 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 de 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 associado ao IP de destino e ao 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 em carimbo de data/hora do evento
timestamp.seconds read_only_udm.metadata.event_timestamp.seconds Segunda parte 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 em Procurve
read_only_udm.metadata.vendor_name Fixado em HP
read_only_udm.extensions.auth.type Defina como MACHINE se event_type for USER_LOGOUT ou USER_LOGIN

Alterações

2024-03-04

Melhoria:

  • Adicionamos um padrão Grok para analisar logs de descodificação.
  • Se severity for igual a DHCP, DHCP será mapeado para network.application_protocol.
  • severity foi mapeado para security_result.severity_details.
  • prin_port foi mapeado para principal.port.
  • pid foi mapeado para principal.process.pid.
  • descript foi mapeado para metadata.description.
  • inter_ip foi mapeado para intermediary.ip.
  • remote_ip_address foi mapeado para principal.ip.
  • username foi mapeado para principal.user.userid.
  • status, config_method, event_id e notice_type foram mapeados para additional.fields.

2023-09-24

Melhoria:

  • Adicionamos um padrão Grok para analisar registros não analisados.
  • target_mac foi mapeado para target.mac.
  • msg foi mapeado para metadata.description.
  • src_mac foi mapeado para principal.mac.
  • severity foi mapeado para security_result.severity.

2023-07-24

Melhoria:

  • Adição do padrão Grok para analisar e mapear registros não analisados.

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