Coletar registros do Cisco IOS

Compatível com:

Este documento explica como transferir os registros do sistema operacional de rede da Cisco (IOS) para o Google Security Operations usando um agente do Bindplane. O analisador transforma mensagens syslog brutas em um formato estruturado que obedece ao modelo de dados unificado (UDM). Primeiro, ele inicializa e extrai campos usando padrões grok com base em formatos comuns de syslog do Cisco IOS. Em seguida, ele mapeia os campos extraídos para os campos correspondentes do UDM, categoriza eventos e enriquece os dados com mais contexto antes de gerar o registro estruturado no formato UDM.

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 Cisco IOS.

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: CISCO_IOS
                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 Cisco IOS

  1. Faça login no Cisco IOS.
  2. Escale os privilégios digitando o seguinte comando:

    enable
    
  3. Para alternar para o modo de configuração, digite o seguinte comando:

    conf t
    
  4. Digite os seguintes comandos:

    logging host <bindplane-server-ip> transport <tcp/udp> port <port-number>
    logging source-interface <interface>
    
    • Substitua <bindplane-server-ip> pelo endereço IP do agente do Bindplane e <port-number> pela porta configurada.
    • Substitua <tcp/udp> pelo protocolo de detecção configurado no agente do Bindplane, por exemplo, udp.
    • Substitua <interface> pelo ID da interface da Cisco.
  5. Defina o nível de prioridade digitando o seguinte comando:

    logging trap Informational 
    logging console Informational 
    logging severity Informational
    
  6. Defina a facilidade syslog:

    logging facility syslog
    
  7. Salve e saia.

  8. Configure as configurações para sobreviver à reinicialização digitando o seguinte comando:

    copy running-config startup-config
    

Tabela de mapeamento do UDM

Campo de registro Mapeamento de UDM Lógica
AcsSessionID network.session_id Valor retirado do campo "AcsSessionID".
AcctRequest-Flags security_result.summary Valor retirado do campo AcctRequest-Flags.
AcctRequest-Flags security_result.action Se AcctRequest-Flags contiver Start, defina como ALLOW. Se AcctRequest-Flags contiver Stop, defina como BLOCK.
AuthenticationIdentityStore additional.fields.key = AuthenticationIdentityStore, value = AuthenticationIdentityStore Valor extraído do campo AuthenticationIdentityStore.
AuthenticationMethod additional.fields.key = AuthenticationMethod, value = AuthenticationMethod Valor retirado do campo AuthenticationMethod.
AuthenticationStatus security_result.summary Valor retirado do campo AuthenticationStatus.
Authen-Method security_result.detection_fields.key = Authen-Method, value = Authen-Method Valor retirado do campo "Authen-Method".
Authen-Method extensions.auth.type Se Authen-Method contiver TacacsPlus, defina como TACACS.
AVPair_priv-lvl security_result.detection_fields.key = AVPair_priv-lvl, value = AVPair_priv-lvl Valor retirado do campo AVPair_priv-lvl.
AVPair_start_time additional.fields.key = AVPair_start_time, value = AVPair_start_time Valor retirado do campo AVPair_start_time.
AVPair_task_id additional.fields.key = AVPair_task_id, value = AVPair_task_id Valor extraído do campo AVPair_task_id.
AVPair_timezone additional.fields.key = AVPair_timezone, value = AVPair_timezone Valor retirado do campo AVPair_timezone.
auditid metadata.product_log_id Valor retirado do campo "auditid".
cisco_facility Não mapeado para o objeto IDM.
cisco_message metadata.description Valor extraído do campo cisco_message.
cisco_mnemonic security_result.rule_name Valor retirado do campo cisco_mnemonic.
cisco_severity security_result.severity Mapeado para diferentes níveis de gravidade com base no valor: 0: ALERTA, 1: CRÍTICO, 2: ALTO, 3: ERRO, 4: MÉDIO, 5: BAIXO, 6: INFORMATIVO, 7: INFORMATIVO.
cisco_severity security_result.severity_details Mapeados para diferentes detalhes de gravidade com base no valor: 0: System unusable, 1: Immediate action needed, 2: Critical condition, 3: Error condition, 4: Warning condition, 5: Normal but significant condition, 6: Informational message only, 7: Appears during debugging only.
cisco_tag metadata.product_event_type Valor retirado do campo cisco_tag.
cisco_tag metadata.event_type Mapeado para diferentes tipos de evento com base no valor: SYS-6-LOGGINGHOST_STARTSTOP, TRACK-6-STATE, SYS-3-LOGGINGHOST_FAIL, CRYPTO-4-IKMP_NO_SA, HA_EM-3-FMPD_ACTION_NOTRACK, HA_EM-3-FMPD_ERROR: GENERIC_EVENT; IPSEC-3-REPLAY_ERROR, CRYPTO-4-RECVD_PKT_INV_SPI, IPSEC-3-HMAC_ERROR, FW-6-DROP_PKT, SEC-6-IPACCESSLOGP: NETWORK_UNCATEGORIZED; CRYPTO-4-IKMP_BAD_MESSAGE, CRYPTO-6-IKMP_NOT_ENCRYPTED, CRYPTO-6-IKMP_MODE_FAILURE: STATUS_UNCATEGORIZED; SYS-5-CONFIG_I: USER_UNCATEGORIZED.
ClientLatency additional.fields.key = ClientLatency, value = ClientLatency Valor retirado do campo "ClientLatency".
CmdSet additional.fields.key = CmdSet, value = CmdSet Valor retirado do campo CmdSet.
comando principal.process.command_line Valor retirado do campo de comando.
CPMSessionID additional.fields.key = CPMSessionID, value = CPMSessionID Valor retirado do campo CPMSessionID.
description metadata.description Valor extraído do campo de descrição.
DestinationIPAddress target.asset.ip Valor retirado do campo "DestinationIPAddress".
DestinationIPAddress target.ip Valor retirado do campo "DestinationIPAddress".
DestinationPort target.port Valor retirado do campo DestinationPort.
Device_IP_Address principal.asset.ip Valor extraído do campo Device_IP_Address.
Device_IP_Address principal.ip Valor extraído do campo Device_IP_Address.
Device_Type additional.fields.key = Device_Type, value = Device_Type Valor extraído do campo "Device_Type".
dst_ip target.asset.ip Valor retirado do campo dst_ip.
dst_ip target.ip Valor retirado do campo dst_ip.
dst_port target.port Valor retirado do campo dst_port.
dst_user target.user.userid Valor retirado do campo dst_user.
EnableFlag security_result.detection_fields.key = EnableFlag, value = EnableFlag Valor retirado do campo EnableFlag.
IdentityGroup additional.fields.key = IdentityGroup, value = IdentityGroup Valor retirado do campo "IdentityGroup".
IdentitySelectionMatchedRule security_result.detection_fields.key = IdentitySelectionMatchedRule, value = IdentitySelectionMatchedRule Valor extraído do campo IdentitySelectionMatchedRule.
intermediary_host intermediary.hostname Valor retirado do campo intermediary_host.
intermediary_ip intermediary.ip Valor retirado do campo intermediary_ip.
IPSEC additional.fields.key = IPSEC, value = IPSEC Valor retirado do campo IPSEC.
ISEPolicySetName extensions.auth.type Se ISEPolicySetName contiver Tacacs, defina como TACACS.
IsMachineAuthentication additional.fields.key = IsMachineAuthentication, value = IsMachineAuthentication Valor retirado do campo IsMachineAuthentication.
IsMachineIdentity security_result.detection_fields.key = IsMachineIdentity, value = IsMachineIdentity Valor retirado do campo IsMachineIdentity.
Local additional.fields.key = Location, value = Location Valor retirado do campo "Local".
MatchedCommandSet additional.fields.key = MatchedCommandSet, value = MatchedCommandSet Valor extraído do campo MatchedCommandSet.
mensagem Não mapeado para o objeto IDM.
metadata_event_type metadata.event_type Valor extraído do campo metadata_event_type. Se estiver vazio ou GENERIC_EVENT, defina como NETWORK_UNCATEGORIZED se principal_mid_present e target_mid_present forem verdadeiros, USER_UNCATEGORIZED se principal_userid_present for verdadeiro, STATUS_UPDATE se principal_mid_present for verdadeiro ou GENERIC_EVENT caso contrário. Se o serviço contiver Login, defina como USER_LOGIN se principal_userid_present, principal_mid_present e target_mid_present forem verdadeiros ou USER_UNCATEGORIZED se principal_userid_present for verdadeiro.
Model_Name additional.fields.key = Model_Name, value = Model_Name Valor retirado do campo "Model_Name".
Nome additional.fields.key = Name, value = Nome Valor retirado do campo "Nome".
Network_Device_Profile additional.fields.key = Network_Device_Profile, value = Network_Device_Profile Valor extraído do campo Network_Device_Profile.
NetworkDeviceGroups additional.fields.key = NetworkDeviceGroups, value = NetworkDeviceGroups Valor retirado do campo "NetworkDeviceGroups".
NetworkDeviceName principal.asset.hostname Valor retirado do campo NetworkDeviceName.
NetworkDeviceName principal.hostname Valor retirado do campo NetworkDeviceName.
NetworkDeviceProfileId principal.resource.product_object_id Valor extraído do campo NetworkDeviceProfileId.
pid principal.process.pid Valor retirado do campo pid.
Porta principal.resource.attribute.labels.key = Port, value = Port Valor retirado do campo "Porta".
Nível de privilégio security_result.detection_fields.key = Privilege-Level, value = Privilege-Level Valor do campo "Nível de privilégio".
product_event_type metadata.product_event_type Valor extraído do campo product_event_type.
Protocolo additional.fields.key = Protocol, value = Protocol Valor do campo "Protocolo".
protocolo network.application_protocol Se o protocolo for HTTPS, defina como HTTPS.
protocolo network.ip_protocol Se o protocolo for TCP ou UDP, defina o valor em maiúsculas do protocolo.
reason security_result.summary Valor do campo "Motivo".
região principal.location.country_or_region Valor retirado do campo de região.
Endereço-remoto target.asset.ip Valor retirado do campo "Endereço remoto" após a validação como um endereço IP.
Endereço-remoto target.ip Valor retirado do campo "Endereço remoto" após a validação como um endereço IP.
RequestLatency security_result.detection_fields.key = RequestLatency, value = RequestLatency Valor extraído do campo "RequestLatency".
Resposta additional.fields.key = Response, value = Response Valor retirado do campo "Resposta".
SelectedAccessService security_result.action_details Valor retirado do campo SelectedAccessService.
SelectedAuthenticationIdentityStores security_result.detection_fields.key = SelectedAuthenticationIdentityStores, value = SelectedAuthenticationIdentityStores Valor retirado do campo SelectedAuthenticationIdentityStores.
SelectedCommandSet additional.fields.key = SelectedCommandSet, value = SelectedCommandSet Valor retirado do campo SelectedCommandSet.
Serviço additional.fields.key = Service, value = Service Valor do campo "Serviço".
Argumento de serviço additional.fields.key = Service-Argument, value = Service-Argument Valor retirado do campo "Service-Argument".
gravidade, security_result.severity Se a gravidade contiver Notice, defina como INFORMATIVO.
Software_Version additional.fields.key = Software_Version, value = Software_Version Valor retirado do campo Software_Version.
source_facility principal.asset.hostname Valor retirado do campo "source_facility".
source_facility principal.hostname Valor retirado do campo "source_facility".
src_ip principal.asset.ip Valor retirado do campo src_ip.
src_ip principal.ip Valor retirado do campo src_ip.
src_mac principal.mac Valor retirado do campo src_mac após a substituição de . por :.
src_port principal.port Valor retirado do campo src_port.
src_user_id principal.user.userid Valor extraído do campo src_user_id. Se estiver vazio, use o valor do campo "Usuário". Se ainda estiver vazio, use o valor do campo StepData_9.
src_user_name principal.user.user_display_name Valor retirado do campo src_user_name.
Etapa additional.fields.key = Step, value = Step Valor do campo "Etapa".
StepData_10 principal.asset.hostname Valor retirado do campo StepData_10.
StepData_10 principal.hostname Valor retirado do campo StepData_10.
StepData_13 security_result.summary Valor retirado do campo StepData_13.
StepData_14 security_result.detection_fields.key = StepData_14, value = StepData_14 Valor retirado do campo StepData_14.
StepData_15 security_result.detection_fields.key = StepData_15, value = StepData_15 Valor extraído do campo StepData_15.
StepData_20 security_result.detection_fields.key = StepData_20, value = StepData_20 Valor retirado do campo StepData_20.
StepData_21 security_result.detection_fields.key = StepData_21, value = StepData_21 Valor extraído do campo StepData_21.
StepData_3 additional.fields.key = StepData_3, value = StepData_3 Valor retirado do campo StepData_3.
StepData_4 security_result.detection_fields.key = StepData_4, value = StepData_4 Valor retirado do campo StepData_4.
StepData_6 security_result.detection_fields.key = StepData_6, value = StepData_6 Valor retirado do campo StepData_6.
StepData_7 security_result.detection_fields.key = StepData_7, value = StepData_7 Valor retirado do campo StepData_7.
StepData_8 security_result.detection_fields.key = StepData_8, value = StepData_8 Valor retirado do campo StepData_8.
StepData_9 principal.user.userid Valor retirado do campo StepData_9 se src_user_id e os campos de usuário estiverem vazios.
target_host target.asset.hostname Valor retirado do campo target_host.
target_host target.hostname Valor retirado do campo target_host.
timestamp metadata.event_timestamp Valor retirado do campo de carimbo de data/hora após a remoção de espaços extras e a análise da data.
TotalAuthenLatency additional.fields.key = TotalAuthenLatency, value = TotalAuthenLatency Valor retirado do campo TotalAuthenLatency.
ts metadata.event_timestamp Valor retirado do campo ts após analisar a data.
Tipo security_result.category_details Valor retirado do campo "Type".
Usuário principal.user.userid Valor retirado do campo "User" se src_user_id estiver vazio.
UserType additional.fields.key = UserType, value = UserType Valor retirado do campo UserType.
metadata.vendor_name Defina como CISCO.
metadata.product_name Defina como CISCO_IOS.
metadata.log_type Defina como CISCO_IOS.

Alterações

2025-02-11

Melhoria:

  • Foi adicionado suporte a um novo formato de registro do syslog.

2025-01-23

Melhoria:

  • Foi adicionado suporte a um novo formato de registro do syslog.

2025-01-02

Melhoria:

  • Foi adicionado suporte a um novo formato de registro do syslog.

2024-12-27

Melhoria:

  • Foi adicionado suporte a um novo formato de registro do syslog.

2024-11-25

Melhoria:

  • Foi adicionado um padrão Grok para analisar novos registros.
  • O nome do host mapeado no cabeçalho do syslog para intermediary.hostname de target.hostname.

2024-11-19

Melhoria:

  • Suporte adicionado a um novo formato de registros do syslog.

2024-10-28

Melhoria:

  • Foi adicionado um padrão Grok para analisar novos registros.

2024-10-24

Melhoria:

  • Foi adicionado um padrão Grok para analisar novos registros.

2024-10-01

Melhoria:

  • Foi adicionado um padrão Grok para analisar novos registros.

2024-07-04

Melhoria:

  • Adição de suporte a um novo padrão de registros do syslog.

2024-04-02

Melhoria:

  • Um novo padrão Grok foi adicionado para analisar um novo tipo de registro.
  • Mapeamos os novos campos para os campos correspondentes do UDM.

2023-10-04

Melhoria:

  • Um novo padrão Grok foi adicionado para analisar um novo tipo de registro.
  • source_facility foi mapeado para principal.hostname.

2023-08-11

Melhoria:

  • intermediary.ip mapeado quando a mensagem contém HOST=.
  • principal.user.userid mapeado quando a mensagem contém User:.
  • principal.process.command_line mapeado quando a mensagem contém command:.
  • target.user.userid mapeado quando a mensagem contém username.
  • Mapeou metadata.event_type para um metadata.event_type mais específico.

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