Recopila registros de Cisco IOS

Compatible con:

En este documento, se explica cómo transferir registros del sistema operativo (IOS) de Internetwork de Cisco a Google Security Operations con un agente de Bindplane. El analizador transforma los mensajes de syslog sin procesar en un formato estructurado que cumple con el modelo de datos unificado (UDM). Primero, inicializa y extrae campos con patrones de grok basados en formatos de syslog comunes de Cisco IOS. Luego, asigna los campos extraídos a los campos de UDM correspondientes, clasifica los eventos y enriquece los datos con contexto adicional antes de generar el registro estructurado en formato UDM.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de usar Windows 2016 o una versión posterior, o un host de Linux con systemd.
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
  • Asegúrate de tener acceso con privilegios a Cisco IOS.

Obtén el archivo de autenticación de transferencia de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.

Obtén el ID de cliente de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instala el agente de Bindplane

Instalación de Windows

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación de Linux

  1. Abre una terminal con privilegios de raíz o sudo.
  2. Ejecuta el siguiente comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalación adicionales

Configura el agente de Bindplane para transferir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:

    1. Ubica el archivo config.yaml. Por lo general, se encuentra en el directorio /etc/bindplane-agent/ en Linux o en el directorio de instalación en Windows.
    2. Abre el archivo con un editor de texto (por ejemplo, nano, vi o Bloc de notas).
  2. Edita el archivo config.yaml de la siguiente manera:

    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. Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.

  4. Reemplaza <customer_id> por el ID de cliente real.

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Obtén el archivo de autenticación de transferencia de Google SecOps.

Reinicia el agente de Bindplane para aplicar los cambios.

  • Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Services o ingresar el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configura Syslog en Cisco IOS

  1. Accede a Cisco IOS.
  2. Ingresa el siguiente comando para derivar privilegios:

    enable
    
  3. Para cambiar al modo de configuración, ingresa el siguiente comando:

    conf t
    
  4. Ingresa los siguientes comandos:

    logging host <bindplane-server-ip> transport <tcp/udp> port <port-number>
    logging source-interface <interface>
    
    • Reemplaza <bindplane-server-ip> por la dirección IP del agente de Bindplane y <port-number> por el puerto configurado.
    • Reemplaza <tcp/udp> por el protocolo de escucha configurado en el agente de Bindplane, por ejemplo, udp.
    • Reemplaza <interface> por el ID de la interfaz de Cisco.
  5. Para establecer el nivel de prioridad, ingresa el siguiente comando:

    logging trap Informational 
    logging console Informational 
    logging severity Informational
    
  6. Establece la facilidad de syslog:

    logging facility syslog
    
  7. Guarda y cierra.

  8. Para configurar la configuración para que sobreviva al reinicio, ingresa el siguiente comando:

    copy running-config startup-config
    

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
AcsSessionID network.session_id Es el valor que se toma del campo AcsSessionID.
AcctRequest-Flags security_result.summary Es el valor que se toma del campo AcctRequest-Flags.
AcctRequest-Flags security_result.action Si AcctRequest-Flags contiene Start, configúralo como ALLOW. Si AcctRequest-Flags contiene Stop, configúralo como BLOCK.
AuthenticationIdentityStore additional.fields.key = AuthenticationIdentityStore, value = AuthenticationIdentityStore Es el valor que se toma del campo AuthenticationIdentityStore.
AuthenticationMethod additional.fields.key = AuthenticationMethod, value = AuthenticationMethod Es el valor que se toma del campo AuthenticationMethod.
AuthenticationStatus security_result.summary Es el valor que se toma del campo AuthenticationStatus.
Authen-Method security_result.detection_fields.key = Authen-Method, value = Authen-Method Es el valor que se toma del campo Authen-Method.
Authen-Method extensions.auth.type Si Authen-Method contiene TacacsPlus, configúralo como TACACS.
AVPair_priv-lvl security_result.detection_fields.key = AVPair_priv-lvl, value = AVPair_priv-lvl Valor tomado del campo AVPair_priv-lvl.
AVPair_start_time additional.fields.key = AVPair_start_time, value = AVPair_start_time Es el valor que se toma del campo AVPair_start_time.
AVPair_task_id additional.fields.key = AVPair_task_id, value = AVPair_task_id Es el valor que se toma del campo AVPair_task_id.
AVPair_timezone additional.fields.key = AVPair_timezone, value = AVPair_timezone Es el valor que se toma del campo AVPair_timezone.
auditid metadata.product_log_id Es el valor que se toma del campo auditid.
cisco_facility No está asignado al objeto IDM.
cisco_message metadata.description Es el valor que se toma del campo cisco_message.
cisco_mnemonic security_result.rule_name Es el valor que se toma del campo cisco_mnemonic.
cisco_severity security_result.severity Se asignan a diferentes niveles de gravedad según el valor: 0: ALERTA, 1: CRÍTICO, 2: ALTO, 3: ERROR, 4: MEDIO, 5: BAJO, 6: INFORMATIVO, 7: INFORMATIVO.
cisco_severity security_result.severity_details Se asignan a diferentes detalles de gravedad según el 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 Es el valor que se toma del campo cisco_tag.
cisco_tag metadata.event_type Se asignan a diferentes tipos de eventos según el 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 Es el valor que se toma del campo ClientLatency.
CmdSet additional.fields.key = CmdSet, value = CmdSet Es el valor que se toma del campo CmdSet.
comando principal.process.command_line Es el valor que se toma del campo de comandos.
CPMSessionID additional.fields.key = CPMSessionID, value = CPMSessionID Es el valor que se toma del campo CPMSessionID.
descripción metadata.description Es el valor que se toma del campo de descripción.
DestinationIPAddress target.asset.ip Es el valor que se toma del campo DestinationIPAddress.
DestinationIPAddress target.ip Es el valor que se toma del campo DestinationIPAddress.
DestinationPort target.port Es el valor que se toma del campo DestinationPort.
Device_IP_Address principal.asset.ip Es el valor que se toma del campo Device_IP_Address.
Device_IP_Address principal.ip Es el valor que se toma del campo Device_IP_Address.
Device_Type additional.fields.key = Device_Type, value = Device_Type Es el valor que se toma del campo Device_Type.
dst_ip target.asset.ip Es el valor que se toma del campo dst_ip.
dst_ip target.ip Es el valor que se toma del campo dst_ip.
dst_port target.port Es el valor que se toma del campo dst_port.
dst_user target.user.userid Es el valor que se toma del campo dst_user.
EnableFlag security_result.detection_fields.key = EnableFlag, value = EnableFlag Es el valor que se toma del campo EnableFlag.
IdentityGroup additional.fields.key = IdentityGroup, value = IdentityGroup Es el valor tomado del campo IdentityGroup.
IdentitySelectionMatchedRule security_result.detection_fields.key = IdentitySelectionMatchedRule, value = IdentitySelectionMatchedRule Es el valor que se toma del campo IdentitySelectionMatchedRule.
intermediary_host intermediary.hostname Es el valor que se toma del campo intermediary_host.
intermediary_ip intermediary.ip Es el valor que se toma del campo intermediary_ip.
IPSEC additional.fields.key = IPSEC, value = IPSEC Valor tomado del campo IPSEC.
ISEPolicySetName extensions.auth.type Si ISEPolicySetName contiene Tacacs, configúralo como TACACS.
IsMachineAuthentication additional.fields.key = IsMachineAuthentication, value = IsMachineAuthentication Es el valor que se toma del campo IsMachineAuthentication.
IsMachineIdentity security_result.detection_fields.key = IsMachineIdentity, value = IsMachineIdentity Es el valor que se toma del campo IsMachineIdentity.
Ubicación additional.fields.key = Location, value = Location Es el valor que se toma del campo Ubicación.
MatchedCommandSet additional.fields.key = MatchedCommandSet, value = MatchedCommandSet Es el valor que se toma del campo MatchedCommandSet.
mensaje No está asignado al objeto IDM.
metadata_event_type metadata.event_type Es el valor que se toma del campo metadata_event_type. Si está vacío o es GENERIC_EVENT, configúralo como NETWORK_UNCATEGORIZED si principal_mid_present y target_mid_present son verdaderos, USER_UNCATEGORIZED si principal_userid_present es verdadero, STATUS_UPDATE si principal_mid_present es verdadero o GENERIC_EVENT de lo contrario. Si el servicio contiene Login, configúralo como USER_LOGIN si principal_userid_present, principal_mid_present y target_mid_present son verdaderos, o USER_UNCATEGORIZED si principal_userid_present es verdadero.
Model_Name additional.fields.key = Model_Name, value = Model_Name Es el valor que se toma del campo Model_Name.
Nombre additional.fields.key = Name, value = Name Es el valor que se toma del campo Nombre.
Network_Device_Profile additional.fields.key = Network_Device_Profile, value = Network_Device_Profile Es el valor que se toma del campo Network_Device_Profile.
NetworkDeviceGroups additional.fields.key = NetworkDeviceGroups, value = NetworkDeviceGroups Es el valor que se toma del campo NetworkDeviceGroups.
NetworkDeviceName principal.asset.hostname Es el valor que se toma del campo NetworkDeviceName.
NetworkDeviceName principal.hostname Es el valor que se toma del campo NetworkDeviceName.
NetworkDeviceProfileId principal.resource.product_object_id Es el valor que se toma del campo NetworkDeviceProfileId.
pid principal.process.pid Valor tomado del campo pid.
Puerto principal.resource.attribute.labels.key = Port, value = Port Es el valor que se toma del campo Puerto.
A nivel de los privilegios security_result.detection_fields.key = Privilege-Level, value = Privilege-Level Es el valor que se toma del campo de nivel de privilegio.
product_event_type metadata.product_event_type Es el valor tomado del campo product_event_type.
Protocolo additional.fields.key = Protocol, value = Protocol Es el valor que se toma del campo Protocolo.
protocol network.application_protocol Si el protocolo es HTTPS, configúralo como HTTPS.
protocol network.ip_protocol Si el protocolo es TCP o UDP, establece el valor en mayúsculas del protocolo.
Reason security_result.summary Es el valor que se toma del campo de motivo.
región principal.location.country_or_region Es el valor que se toma del campo de región.
Remote-Address target.asset.ip Es el valor que se toma del campo Remote-Address después de validarlo como una dirección IP.
Remote-Address target.ip Es el valor que se toma del campo Remote-Address después de validarlo como una dirección IP.
RequestLatency security_result.detection_fields.key = RequestLatency, value = RequestLatency Es el valor que se toma del campo RequestLatency.
Respuesta additional.fields.key = Response, value = Response Es el valor que se toma del campo Response.
SelectedAccessService security_result.action_details Es el valor que se toma del campo SelectedAccessService.
SelectedAuthenticationIdentityStores security_result.detection_fields.key = SelectedAuthenticationIdentityStores, value = SelectedAuthenticationIdentityStores Es el valor que se toma del campo SelectedAuthenticationIdentityStores.
SelectedCommandSet additional.fields.key = SelectedCommandSet, value = SelectedCommandSet Es el valor que se toma del campo SelectedCommandSet.
Servicio additional.fields.key = Service, value = Service Valor tomado del campo Servicio.
Service-Argument additional.fields.key = Service-Argument, value = Service-Argument Es el valor que se toma del campo Service-Argument.
gravedad, security_result.severity Si la gravedad contiene Notice, configúrala como INFORMATIVA.
Software_Version additional.fields.key = Software_Version, value = Software_Version Es el valor que se toma del campo Software_Version.
source_facility principal.asset.hostname Es el valor que se toma del campo source_facility.
source_facility principal.hostname Es el valor que se toma del campo source_facility.
src_ip principal.asset.ip Es el valor que se toma del campo src_ip.
src_ip principal.ip Es el valor que se toma del campo src_ip.
src_mac principal.mac Es el valor tomado del campo src_mac después de reemplazar . por :.
src_port principal.port Es el valor que se toma del campo src_port.
src_user_id principal.user.userid Es el valor que se toma del campo src_user_id. Si está vacío, toma el valor del campo Usuario. Si aún está vacío, toma el valor del campo StepData_9.
src_user_name principal.user.user_display_name Es el valor que se toma del campo src_user_name.
Paso additional.fields.key = Step, value = Step Es el valor que se toma del campo Paso.
StepData_10 principal.asset.hostname Es el valor que se toma del campo StepData_10.
StepData_10 principal.hostname Es el valor tomado del campo StepData_10.
StepData_13 security_result.summary Es el valor tomado del campo StepData_13.
StepData_14 security_result.detection_fields.key = StepData_14, value = StepData_14 Es el valor que se toma del campo StepData_14.
StepData_15 security_result.detection_fields.key = StepData_15, value = StepData_15 Es el valor tomado del campo StepData_15.
StepData_20 security_result.detection_fields.key = StepData_20, value = StepData_20 Es el valor que se toma del campo StepData_20.
StepData_21 security_result.detection_fields.key = StepData_21, value = StepData_21 Es el valor que se toma del campo StepData_21.
StepData_3 additional.fields.key = StepData_3, value = StepData_3 Es el valor que se toma del campo StepData_3.
StepData_4 security_result.detection_fields.key = StepData_4, value = StepData_4 Valor tomado del campo StepData_4.
StepData_6 security_result.detection_fields.key = StepData_6, value = StepData_6 Es el valor que se toma del campo StepData_6.
StepData_7 security_result.detection_fields.key = StepData_7, value = StepData_7 Valor tomado del campo StepData_7.
StepData_8 security_result.detection_fields.key = StepData_8, value = StepData_8 Es el valor tomado del campo StepData_8.
StepData_9 principal.user.userid Es el valor que se toma del campo StepData_9 si los campos src_user_id y User están vacíos.
target_host target.asset.hostname Es el valor que se toma del campo target_host.
target_host target.hostname Es el valor que se toma del campo target_host.
timestamp metadata.event_timestamp Es el valor tomado del campo de marca de tiempo después de quitar los espacios adicionales y analizar la fecha.
TotalAuthenLatency additional.fields.key = TotalAuthenLatency, value = TotalAuthenLatency Es el valor que se toma del campo TotalAuthenLatency.
ts metadata.event_timestamp Es el valor que se toma del campo ts después de analizar la fecha.
Tipo security_result.category_details Valor tomado del campo Tipo.
Usuario principal.user.userid Es el valor que se toma del campo Usuario si src_user_id está vacío.
UserType additional.fields.key = UserType, value = UserType Es el valor tomado del campo UserType.
metadata.vendor_name Se define en CISCO.
metadata.product_name Se define en CISCO_IOS.
metadata.log_type Se define en CISCO_IOS.

Cambios

2025-02-11

Mejora:

  • Se agregó compatibilidad con un nuevo formato de registro de syslog.

2025-01-23

Mejora:

  • Se agregó compatibilidad con un nuevo formato de registro de syslog.

2025-01-02

Mejora:

  • Se agregó compatibilidad con un nuevo formato de registro de syslog.

2024-12-27

Mejora:

  • Se agregó compatibilidad con un nuevo formato de registro de syslog.

2024-11-25

Mejora:

  • Se agregó un patrón Grok para analizar registros nuevos.
  • Se asignó el nombre de host en el encabezado de syslog a intermediary.hostname desde target.hostname.

2024-11-19

Mejora:

  • Se agregó compatibilidad con un nuevo formato de registros de syslog.

2024-10-28

Mejora:

  • Se agregó un patrón Grok para analizar registros nuevos.

2024-10-24

Mejora:

  • Se agregó un patrón Grok para analizar registros nuevos.

2024-10-01

Mejora:

  • Se agregó un patrón Grok para analizar registros nuevos.

2024-07-04

Mejora:

  • Se agregó compatibilidad con un nuevo patrón de registros de syslog.

2024-04-02

Mejora:

  • Se agregó un nuevo patrón de Grok para analizar el nuevo tipo de registro.
  • Se asignaron los campos nuevos a los campos de la AUA correspondientes.

2023-10-04

Mejora:

  • Se agregó un nuevo patrón de Grok para analizar el nuevo tipo de registro.
  • Se asignó source_facility a principal.hostname.

2023-08-11

Mejora:

  • Se asignó intermediary.ip cuando el mensaje contiene HOST=.
  • Se asignó principal.user.userid cuando el mensaje contiene User:.
  • Se asignó principal.process.command_line cuando el mensaje contiene command:.
  • Se asignó target.user.userid cuando el mensaje contiene username.
  • Se asignó metadata.event_type a un metadata.event_type más específico.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.