Recolha registos do Cisco IOS
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
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- 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
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- 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
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de raiz ou sudo.
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
- 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).
- Localize o ficheiro
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
- Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
- Substitua
<customer_id>
pelo ID de cliente real. - 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 Serviços ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog no dispositivo Cisco IOS
- Inicie sessão no dispositivo Cisco IOS através de SSH ou de uma ligação de consola.
Introduza o seguinte comando para o modo privilegiado:
enable
Introduza o seguinte comando para o modo de configuração:
conf t
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.
- Altere
Introduza os seguintes comandos para configurar o nível de prioridade:
logging trap information logging console information
Introduza o seguinte comando para configurar a funcionalidade syslog:
logging facility syslog
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.