Coletar registros do Cisco IOS

Compatível com:

Este documento explica como ingerir registros do Cisco Internetwork Operating System (IOS) no Google Security Operations usando um agente do Bindplane. O analisador transforma mensagens syslog brutas em um formato estruturado de acordo com o 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 contexto adicional antes de gerar o registro estruturado no formato UDM.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Use o Windows 2016 ou uma versão mais recente ou um host Linux com systemd.
  • Se você 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. 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

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

  1. Acesse o arquivo de configuração:

    1. 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.
    2. 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: 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 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 Cisco IOS

  1. Faça login no Cisco IOS.
  2. Para aumentar os privilégios, digite o seguinte comando:

    enable
    
  3. Mude para o modo de configuração inserindo 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 escuta configurado no agente do Bindplane, por exemplo, udp.
    • Substitua <interface> pelo ID da interface da Cisco.
  5. Defina o nível de prioridade inserindo o seguinte comando:

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

    logging facility syslog
    
  7. Salve e saia.

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

    copy running-config startup-config
    

Tabela de mapeamento do UDM

Campo de registro Mapeamento da UDM Lógica
AcsSessionID network.session_id Valor extraído do campo "AcsSessionID".
AcctRequest-Flags security_result.summary Valor extraído 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 extraído do campo "AuthenticationMethod".
AuthenticationStatus security_result.summary Valor extraído do campo "AuthenticationStatus".
Authen-Method security_result.detection_fields.key = Authen-Method, value = Authen-Method Valor extraído 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 extraído do campo AVPair_priv-lvl.
AVPair_start_time additional.fields.key = AVPair_start_time, value = AVPair_start_time Valor extraído 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 extraído do campo AVPair_timezone.
auditid metadata.product_log_id Valor extraído 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 extraído do campo "cisco_mnemonic".
cisco_severity security_result.severity Mapeado para diferentes níveis de gravidade com base no valor: 0: ALERT, 1: CRITICAL, 2: HIGH, 3: ERROR, 4: MEDIUM, 5: LOW, 6: INFORMATIONAL, 7: INFORMATIONAL.
cisco_severity security_result.severity_details Mapeado 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 extraído do campo "cisco_tag".
cisco_tag metadata.event_type Mapeado para diferentes tipos de eventos 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 extraído do campo "ClientLatency".
CmdSet additional.fields.key = CmdSet, value = CmdSet Valor extraído do campo "CmdSet".
comando principal.process.command_line Valor extraído do campo de comando.
CPMSessionID additional.fields.key = CPMSessionID, value = CPMSessionID Valor extraído do campo "CPMSessionID".
description metadata.description Valor extraído do campo de descrição.
DestinationIPAddress target.asset.ip Valor extraído do campo "DestinationIPAddress".
DestinationIPAddress target.ip Valor extraído do campo "DestinationIPAddress".
DestinationPort target.port Valor extraído 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 extraído do campo "dst_ip".
dst_ip target.ip Valor extraído do campo "dst_ip".
dst_port target.port Valor extraído do campo "dst_port".
dst_user target.user.userid Valor extraído do campo "dst_user".
EnableFlag security_result.detection_fields.key = EnableFlag, value = EnableFlag Valor extraído do campo "EnableFlag".
IdentityGroup additional.fields.key = IdentityGroup, value = IdentityGroup Valor extraído do campo "IdentityGroup".
IdentitySelectionMatchedRule security_result.detection_fields.key = IdentitySelectionMatchedRule, value = IdentitySelectionMatchedRule Valor extraído do campo "IdentitySelectionMatchedRule".
intermediary_host intermediary.hostname Valor extraído do campo "intermediary_host".
intermediary_ip intermediary.ip Valor extraído do campo "intermediary_ip".
IPSEC additional.fields.key = IPSEC, value = IPSEC Valor extraído do campo IPSEC.
ISEPolicySetName extensions.auth.type Se ISEPolicySetName contiver Tacacs, defina como TACACS.
IsMachineAuthentication additional.fields.key = IsMachineAuthentication, value = IsMachineAuthentication Valor extraído do campo "IsMachineAuthentication".
IsMachineIdentity security_result.detection_fields.key = IsMachineIdentity, value = IsMachineIdentity Valor extraído do campo "IsMachineIdentity".
Local additional.fields.key = Location, value = Location Valor extraído do campo "Localização".
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, será definido 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 extraído do campo "Model_Name".
Nome additional.fields.key = Name, value = Name Valor extraído 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 extraído do campo "NetworkDeviceGroups".
NetworkDeviceName principal.asset.hostname Valor extraído do campo "NetworkDeviceName".
NetworkDeviceName principal.hostname Valor extraído do campo "NetworkDeviceName".
NetworkDeviceProfileId principal.resource.product_object_id Valor extraído do campo "NetworkDeviceProfileId".
pid principal.process.pid Valor extraído do campo "pid".
Porta principal.resource.attribute.labels.key = Port, value = Port Valor extraído do campo "Porta".
Nível de privilégio security_result.detection_fields.key = Privilege-Level, value = Privilege-Level Valor extraído 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 extraído 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 como o valor em maiúsculas do protocolo.
reason security_result.summary Valor extraído do campo "motivo".
região principal.location.country_or_region Valor extraído do campo "região".
Remote-Address target.asset.ip Valor extraído do campo "Remote-Address" depois de validá-lo como um endereço IP.
Remote-Address target.ip Valor extraído do campo "Remote-Address" depois de validá-lo 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 extraído do campo "Resposta".
SelectedAccessService security_result.action_details Valor extraído do campo "SelectedAccessService".
SelectedAuthenticationIdentityStores security_result.detection_fields.key = SelectedAuthenticationIdentityStores, value = SelectedAuthenticationIdentityStores Valor extraído do campo "SelectedAuthenticationIdentityStores".
SelectedCommandSet additional.fields.key = SelectedCommandSet, value = SelectedCommandSet Valor extraído do campo "SelectedCommandSet".
Serviço additional.fields.key = Service, value = Service Valor extraído do campo "Serviço".
Service-Argument additional.fields.key = Service-Argument, value = Service-Argument Valor extraído do campo "Service-Argument".
gravidade, security_result.severity Se a gravidade contiver Notice, defina como "INFORMATIONAL".
Software_Version additional.fields.key = Software_Version, value = Software_Version Valor extraído do campo "Software_Version".
source_facility principal.asset.hostname Valor extraído do campo "source_facility".
source_facility principal.hostname Valor extraído do campo "source_facility".
src_ip principal.asset.ip Valor extraído do campo "src_ip".
src_ip principal.ip Valor extraído do campo "src_ip".
src_mac principal.mac Valor extraído do campo "src_mac" após substituir . por :.
src_port principal.port Valor extraído 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 extraído do campo "src_user_name".
Etapa additional.fields.key = Step, value = Step Valor extraído do campo "Etapa".
StepData_10 principal.asset.hostname Valor extraído do campo "StepData_10".
StepData_10 principal.hostname Valor extraído do campo "StepData_10".
StepData_13 security_result.summary Valor extraído do campo "StepData_13".
StepData_14 security_result.detection_fields.key = StepData_14, value = StepData_14 Valor extraído 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 extraído 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 extraído do campo StepData_3.
StepData_4 security_result.detection_fields.key = StepData_4, value = StepData_4 Valor extraído do campo StepData_4.
StepData_6 security_result.detection_fields.key = StepData_6, value = StepData_6 Valor extraído do campo "StepData_6".
StepData_7 security_result.detection_fields.key = StepData_7, value = StepData_7 Valor extraído do campo "StepData_7".
StepData_8 security_result.detection_fields.key = StepData_8, value = StepData_8 Valor extraído do campo "StepData_8".
StepData_9 principal.user.userid Valor extraído do campo "StepData_9" se os campos "src_user_id" e "User" estiverem vazios.
target_host target.asset.hostname Valor extraído do campo "target_host".
target_host target.hostname Valor extraído do campo "target_host".
timestamp metadata.event_timestamp Valor extraído do campo de carimbo de data/hora após remover espaços extras e analisar a data.
TotalAuthenLatency additional.fields.key = TotalAuthenLatency, value = TotalAuthenLatency Valor extraído do campo "TotalAuthenLatency".
ts metadata.event_timestamp Valor extraído do campo "ts" após analisar a data.
Tipo security_result.category_details Valor extraído do campo "Tipo".
Usuário principal.user.userid Valor extraído do campo "User" se src_user_id estiver vazio.
UserType additional.fields.key = UserType, value = UserType Valor extraído do campo UserType.
metadata.vendor_name Defina como CISCO.
metadata.product_name Defina como CISCO_IOS.
metadata.log_type Defina como CISCO_IOS.

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