Recolha registos do Cisco IOS

Compatível com:

Este documento explica como pode carregar registos do Cisco IOS para o Google Security Operations através do Bindplane. O analisador transforma mensagens syslog não processadas num formato estruturado em conformidade com o modelo de dados unificado (UDM). Primeiro, inicializa e extrai campos através de padrões grok baseados em formatos syslog comuns do Cisco IOS. Em seguida, mapeia os campos extraídos para os campos da UDM correspondentes, categoriza os eventos e enriquece os dados com contexto adicional antes de, finalmente, gerar o registo estruturado no formato da UDM.

Antes de começar

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

  • Instância do Google SecOps
  • Windows 2016 ou posterior, ou um anfitrião Linux com systemd
  • Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas
  • Acesso privilegiado ao router, comutador ou servidor Cisco IOS

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

Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.

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_file_path: '/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
            log_type: 'CISCO_IOS'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

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 Serviços ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure o Syslog no dispositivo Cisco IOS

  1. Inicie sessão no dispositivo Cisco IOS através de SSH ou de uma ligação de consola.
  2. Introduza o seguinte comando para o modo privilegiado:

    enable
    
  3. Introduza o seguinte comando para o modo de configuração:

    conf t
    
  4. Introduza os seguintes comandos para configurar o syslog:

    logging <bindplane_IP_address>
    logging source-interface <interface>
    
    • Altere <bindplane_IP_address> para o endereço IP real do agente do Bindplane.
    • Altere <interface> para a interface de comunicação real.
  5. Introduza os seguintes comandos para configurar o nível de prioridade:

    logging trap information
    logging console information
    
  6. Introduza o seguinte comando para configurar a funcionalidade syslog:

    logging facility syslog
    
  7. Introduza o seguinte comando para copiar a configuração em execução para a configuração de arranque:

    copy running-config startup-config
    

Tabela de mapeamento do UDM

Campo de registo Mapeamento do 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 retirado 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 retirado 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 está mapeado para o objeto IDM.
cisco_message metadata.description Valor retirado 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: ELEVADO, 3: ERRO, 4: MÉDIO, 5: BAIXO, 6: INFORMATIVO, 7: INFORMATIVO.
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 retirado 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 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.
descrição metadata.description Valor retirado 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 retirado do campo Device_IP_Address.
Device_IP_Address principal.ip Valor retirado do campo Device_IP_Address.
Device_Type additional.fields.key = Device_Type, value = Device_Type Valor retirado 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 retirado 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.
Location additional.fields.key = Location, value = Location Valor retirado do campo Localização.
MatchedCommandSet additional.fields.key = MatchedCommandSet, value = MatchedCommandSet Valor retirado do campo MatchedCommandSet.
mensagem Não está mapeado para o objeto IDM.
metadata_event_type metadata.event_type Valor retirado do campo metadata_event_type. Se estiver vazio ou for GENERIC_EVENT, é 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 retirado do campo Model_Name.
Nome additional.fields.key = Name, value = Name Valor retirado do campo Nome.
Network_Device_Profile additional.fields.key = Network_Device_Profile, value = Network_Device_Profile Valor retirado 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 retirado 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.
Ao nível do privilégio security_result.detection_fields.key = Privilege-Level, value = Privilege-Level Valor retirado do campo Nível de privilégio.
product_event_type metadata.product_event_type Valor retirado do campo product_event_type.
Protocolo additional.fields.key = Protocol, value = Protocol Valor retirado do campo Protocol.
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 para o valor em maiúsculas do protocolo.
motivo security_result.summary Valor retirado do campo de motivo.
região principal.location.country_or_region Valor retirado do campo de região.
Remote-Address target.asset.ip Valor retirado do campo Remote-Address após a validação como um endereço IP.
Remote-Address target.ip Valor retirado do campo Remote-Address após a validação como um endereço IP.
RequestLatency security_result.detection_fields.key = RequestLatency, value = RequestLatency Valor retirado do campo RequestLatency.
Resposta additional.fields.key = Response, value = Response Valor retirado do campo de 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 retirado do campo Serviço.
Service-Argument additional.fields.key = Service-Argument, value = Service-Argument Valor retirado do campo Service-Argument.
gravidade security_result.severity Se a gravidade contiver Notice, defina-a como INFORMATIONAL.
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 substituir . por :.
src_port principal.port Valor retirado do campo src_port.
src_user_id principal.user.userid Valor retirado do campo src_user_id. Se estiver vazio, usa o valor do campo User. 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.
Passo additional.fields.key = Step, value = Step Valor retirado do campo Passo.
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 retirado 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 retirado 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 os campos src_user_id e User 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 data/hora após a remoção de espaços adicionais 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 a análise da data.
Tipo security_result.category_details Valor retirado do campo Tipo.
Utilizador 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 Definido como CISCO.
metadata.product_name Definido como CISCO_IOS.
metadata.log_type Definido como CISCO_IOS.

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