Recolha registos do HP ProCurve

Compatível com:

Este documento explica como carregar os registos do comutador HP ProCurve para o Google Security Operations através do Bindplane. O código do analisador tenta primeiro analisar a mensagem de registo não processada como JSON. Se falhar, usa expressões regulares (padrões grok) para extrair campos da mensagem com base em formatos de registo comuns do HP ProCurve.

Antes de começar

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

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

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

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: '/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 de cliente real.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.

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 do Bindplane no Windows, pode usar a consola Services ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure o Syslog no comutador HP ProCurve

  1. Inicie sessão no comutador HP Procurve com SSH.
  2. Valide a interface do comutador através do seguinte comando:

    show ip int br
    
  3. Ative o modo de configuração no comutador através do seguinte comando:

    console# conf t
    
  4. Configure o comutador para enviar registos através dos 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 (consoante a configuração do agente Bindplane).

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

  8. Saia do modo de configuração e guarde as alterações com os seguintes comandos:

    console# exit
    console# wr
    

Tabela de mapeamento do UDM

Campo de registo Mapeamento do 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 chassis 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 após 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 registo, é 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 registo, é mapeado para o nome do anfitrião principal e o nome do anfitrião do recurso
Event-ID read_only_udm.additional.fields.value.string_value Se o campo existir no registo, é 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 registo, é 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 registo, é 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 registo, é 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
Utilizador read_only_udm.principal.user.userid Se o campo existir no registo, é mapeado para o ID do utilizador principal
User-Name read_only_udm.principal.user.userid Se o campo existir no registo, é mapeado para o ID do utilizador principal
Nome de utilizador read_only_udm.principal.user.userid Se o campo existir no registo, é mapeado para o ID do utilizador 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 Parte dos segundos da data/hora do evento
dados Este campo contém a mensagem de registo não processada e é analisado para extrair outros campos. Não está mapeado para o UDM.
desc read_only_udm.security_result.description Descrição extraída da mensagem de registo
descrip Descrição extraída do campo desc, analisada mais detalhadamente para pares de chave-valor. Não está mapeado para o UDM.
descrição read_only_udm.security_result.description Se o campo existir no registo, é mapeado para a descrição do resultado de segurança
descript read_only_udm.metadata.description Se o campo existir no registo, é mapeado para a descrição dos metadados
event_id read_only_udm.additional.fields.value.string_value Se o campo existir no registo, é colocado nos campos adicionais como event_id
eventId read_only_udm.metadata.product_event_type ID do evento extraído da mensagem de registo
hostname read_only_udm.principal.hostname, read_only_udm.principal.asset.hostname Nome do anfitrião extraído da mensagem de registo e mapeado para o nome do anfitrião principal e o nome do anfitrião do recurso
inter_ip read_only_udm.additional.fields.value.string_value, read_only_udm.intermediary.ip Se o campo existir no registo e for um IP válido, é mapeado para o IP intermediário. Caso contrário, é colocado nos campos adicionais como inter_ip
notice_type read_only_udm.additional.fields.value.string_value Se o campo existir no registo, é colocado nos campos adicionais como notice_type
pid read_only_udm.principal.process.pid Se o campo existir no registo, é mapeado para o PID do processo principal
programa Informações do programa extraídas da mensagem de registo, analisadas posteriormente para extrair o módulo, a gravidade e a ação. Não está mapeado para o UDM.
proto read_only_udm.network.application_protocol, read_only_udm.additional.fields.value.string_value Protocolo extraído da mensagem de registo. Se corresponder a protocolos conhecidos, é mapeado para o protocolo de aplicação. Caso contrário, é 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 registo e for um IP válido, é mapeado para o IP principal e o IP do recurso principal. Caso contrário, é 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 /. É mapeado para os níveis de gravidade do UDM e também armazenado como detalhes de gravidade não processados
src_ip read_only_udm.principal.ip, read_only_udm.principal.asset.ip O IP de origem é extraído da mensagem de registo e mapeado para o IP principal e o IP do recurso principal
estado read_only_udm.additional.fields.value.string_value Se o campo existir no registo, é colocado nos campos adicionais como status
targetHostname read_only_udm.target.hostname, read_only_udm.target.asset.ip Se o campo existir no registo, é mapeado para o nome do anfitrião de destino e o IP do recurso de destino
target_ip read_only_udm.target.ip, read_only_udm.target.asset.ip O IP de destino foi extraído da mensagem de registo e mapeado para o IP de destino e o IP do recurso de destino
timestamp read_only_udm.metadata.event_timestamp.seconds Data/hora extraída da mensagem de registo e convertida na data/hora do evento
timestamp.seconds read_only_udm.metadata.event_timestamp.seconds Parte dos segundos da data/hora do evento
nome de utilizador read_only_udm.principal.user.userid Se o campo existir no registo, é mapeado para o ID do utilizador principal
read_only_udm.metadata.event_type Determinado com base numa 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 destas condições for cumprida.
read_only_udm.metadata.product_name Codificado nos Procurve
read_only_udm.metadata.vendor_name Codificado nos 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 da Google SecOps.