Recopila registros de Cisco Secure ACS
En este documento, se describe cómo puedes recopilar registros del servidor de control de acceso seguro (ACS) de Cisco con un reenviador de operaciones de seguridad de Google.
Para obtener más información, consulta Transferencia de datos a Google Security Operations.
Una etiqueta de transferencia identifica el analizador que normaliza los datos de registro sin procesar al formato estructurado del UDM. La información de este documento se aplica al analizador con la etiqueta de transferencia CISCO_ACS
.
Configura Cisco Secure ACS
- Accede a la consola de Cisco Secure ACS con las credenciales de administrador.
- En la consola de Cisco Secure ACS, selecciona Administración del sistema > Configuración > Configuración de registro > Destinos de registro remotos.
- Haz clic en Crear.
En la ventana Crear, especifica valores para los siguientes campos:
Campo Descripción Nombre Es el nombre del reenviador de Google Security Operations. Descripción Descripción del reenviador de Google Security Operations Dirección IP Dirección IP del reenviador de Google Security Operations Usa opciones avanzadas de Syslog Selecciona esta opción para habilitar las opciones avanzadas de Syslog. Tipo de objetivo Selecciona el registro del sistema TCP o UDP. Puerto Usa un puerto alto, como 10514. Código de la instalación LOCAL6 (código = 22; predeterminado) Longitud máxima El valor recomendado es 1,024. Haz clic en Enviar. Aparecerá la ventana Remote log targets con la nueva configuración de destino de registro remoto.
En la consola de Cisco Secure ACS, selecciona Administración del sistema > Configuración > Configuración de registro > Categorías de registro > Por instancia.
Selecciona ACS y, luego, haz clic en Configurar.
En la ventana Per-Instance, selecciona una categoría de registro y, luego, haz clic en Editar.
En la pestaña General, para algunas categorías de registro, la gravedad del registro debe establecerse como predeterminada o como lo indique el proveedor.
Para Cisco Secure ACS, la gravedad predeterminada es Advertencia para todas las categorías de registro, excepto para aquellas en las que no se puede cambiar la gravedad, como el aviso de auditoría de AAA, el aviso de contabilización, el aviso de auditoría administrativa y operativa, y el aviso de estadísticas del sistema.
Haz clic en la pestaña Destino de syslog remoto y mueve el destino remoto que acabas de crear de Destinos disponibles a Destinos seleccionados.
Haz clic en Enviar.
Para configurar destinos remotos para otras categorías de registro, repite los pasos del 8 al 10.
Configura el reenviador y el syslog de Google Security Operations para transferir los registros de Cisco Secure ACS
- Ve a Configuración de SIEM > Redireccionamientos.
- Haz clic en Agregar nuevo remitente.
- En el campo Nombre del reenviador, ingresa un nombre único para el reenviador.
- Haz clic en Enviar. Se agregará el reenviador y aparecerá la ventana Add collector configuration.
- En el campo Nombre del recopilador, escribe un nombre.
- Selecciona Cisco ACS como el Tipo de registro.
- Selecciona Syslog como el tipo de recopilador.
- Configura los siguientes parámetros de entrada obligatorios:
- Protocolo: Especifica el protocolo.
- Dirección: Especifica la dirección IP o el nombre de host de destino donde reside el recopilador y las direcciones de los datos de syslog.
- Puerto: Especifica el puerto de destino en el que reside el recopilador y escucha los datos de syslog.
- Haz clic en Enviar.
Para obtener más información sobre los reenvío de Google Security Operations, consulta la documentación de reenvío de Google Security Operations. Para obtener información sobre los requisitos de cada tipo de reenviador, consulta Configuración del reenviador por tipo. Si tienes problemas para crear reenvío de correo, comunícate con el equipo de asistencia de Operaciones de seguridad de Google.
Referencia de la asignación de campos
Este analizador controla los registros de Cisco ACS, incluidos los de autenticación, contabilización, diagnóstico y estadísticas del sistema. Usa patrones de grok para extraer campos de varios formatos de registro (SYSLOG + KV, LEEF), normaliza las marcas de tiempo y las zonas horarias, y asigna campos clave a la UDM, lo que permite controlar diferentes tipos de registros con una lógica específica para los éxitos o errores de autenticación, la contabilización de TACACS+ y los eventos de RADIUS. También enriquece la UDM con campos adicionales, como información del dispositivo y detalles de autenticación.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
Acct-Authentic |
additional.fields[].value.string_value |
El valor se toma del campo Acct-Authentic . |
Acct-Delay-Time |
additional.fields[].value.string_value |
El valor se toma del campo Acct-Delay-Time . |
Acct-Input-Octets |
additional.fields[].value.string_value |
El valor se toma del campo Acct-Input-Octets . |
Acct-Input-Packets |
additional.fields[].value.string_value |
El valor se toma del campo Acct-Input-Packets . |
Acct-Output-Octets |
additional.fields[].value.string_value |
El valor se toma del campo Acct-Output-Octets . |
Acct-Output-Packets |
additional.fields[].value.string_value |
El valor se toma del campo Acct-Output-Packets . |
Acct-Session-Id |
additional.fields[].value.string_value |
El valor se toma del campo Acct-Session-Id . |
Acct-Session-Time |
additional.fields[].value.string_value |
El valor se toma del campo Acct-Session-Time . |
Acct-Status-Type |
additional.fields[].value.string_value |
El valor se toma del campo Acct-Status-Type . |
Acct-Terminate-Cause |
additional.fields[].value.string_value |
El valor se toma del campo Acct-Terminate-Cause . |
ACSVersion |
additional.fields[].value.string_value |
El valor se toma del campo ACSVersion . |
AD-Domain |
principal.group.group_display_name |
El valor se toma del campo AD-Domain . |
AD-IP-Address |
principal.ip |
El valor se toma del campo AD-IP-Address . |
Called-Station-ID |
additional.fields[].value.string_value |
El valor se toma del campo Called-Station-ID . |
Calling-Station-ID |
additional.fields[].value.string_value |
El valor se toma del campo Calling-Station-ID . |
Class |
additional.fields[].value.string_value |
El valor se toma del campo Class . |
CmdSet |
(sin asignar) | No está asignado al objeto IDM. |
ConfigVersionId |
additional.fields[].value.number_value |
El valor se toma del campo ConfigVersionId y se convierte en un número de punto flotante. |
DestinationIPAddress |
target.ip , intermediary.ip |
El valor se toma del campo DestinationIPAddress . intermediary.ip se deriva de Device IP Address . |
DestinationPort |
target.port |
El valor se toma del campo DestinationPort y se convierte en un número entero. |
Device IP Address |
intermediary.ip |
El valor se toma del campo Device IP Address . |
Device Port |
intermediary.port |
El valor se toma del campo Device Port y se convierte en un número entero. |
DetailedInfo |
security_result.summary , security_result.description , security_result.action |
Si DetailedInfo es "Authentication succeed", security_result.summary es "successful login occurred" y security_result.action es ALLOW. Si DetailedInfo contiene "Se especificó un nombre de usuario o una contraseña no válidos", security_result.summary es "Se produjo un error de acceso" y security_result.action es BLOQUEO. security_result.description se deriva de log_header . |
Framed-IP-Address |
principal.ip |
El valor se toma del campo Framed-IP-Address . |
Framed-Protocol |
additional.fields[].value.string_value |
El valor se toma del campo Framed-Protocol . |
NAS-IP-Address |
target.ip |
El valor se toma del campo NAS-IP-Address . |
NAS-Port |
additional.fields[].value.string_value |
El valor se toma del campo NAS-Port . |
NAS-Port-Id |
target.port |
El valor se toma del campo NAS-Port-Id y se convierte en un número entero. |
NAS-Port-Type |
additional.fields[].value.string_value |
El valor se toma del campo NAS-Port-Type . |
NetworkDeviceName |
target.hostname |
El valor se toma del campo NetworkDeviceName . |
Protocol |
additional.fields[].value.string_value |
El valor se toma del campo Protocol . |
RadiusPacketType |
(sin asignar) | No está asignado al objeto IDM. |
Remote-Address |
principal.ip , target.ip |
El valor se toma del campo Remote-Address y se analiza como una dirección IP. Se asigna a principal.ip para los eventos de autenticación y a target.ip para los eventos de contabilización y diagnóstico. |
RequestLatency |
additional.fields[].value.string_value |
El valor se toma del campo RequestLatency . |
Response |
principal.user.userid |
Si Response contiene "User-Name", el nombre de usuario se extrae y se asigna a principal.user.userid . |
SelectedAccessService |
additional.fields[].value.string_value |
El valor se toma del campo SelectedAccessService . |
SelectedAuthenticationIdentityStores |
security_result.detection_fields[].value |
El valor se toma del campo SelectedAuthenticationIdentityStores . |
SelectedAuthorizationProfiles |
security_result.detection_fields[].value |
El valor se toma del campo SelectedAuthorizationProfiles . |
Service-Type |
additional.fields[].value.string_value |
El valor se toma del campo Service-Type . |
Tunnel-Client-Endpoint |
additional.fields[].value.string_value |
El valor se toma del campo Tunnel-Client-Endpoint y se analiza como una dirección IP. |
User |
target.user.userid |
El valor se toma del campo User . |
UserName |
target.user.userid , principal.mac |
Si UserName es una dirección MAC, se analiza y se asigna a principal.mac . De lo contrario, se asigna a target.user.userid . |
ac-user-agent |
network.http.user_agent |
El valor se toma del campo ac-user-agent . |
cat |
metadata.description |
El valor se toma del campo cat . |
device-mac |
principal.mac |
El valor se toma del campo device-mac , se agregan dos puntos y se convierte en minúsculas. Si device-mac es “00”, se reemplaza por “00:00:00:00:00:00”. |
device-platform |
principal.asset.platform_software.platform |
Si device-platform es "win", el valor "WINDOWS" se asigna a principal.asset.platform_software.platform . |
device-platform-version |
principal.asset.platform_software.platform_version |
El valor se toma del campo device-platform-version . |
device-public-mac |
principal.mac |
El valor se toma del campo device-public-mac , los guiones se reemplazan por dos puntos y el valor se convierte a minúsculas. |
device-type |
principal.asset.hardware.model |
El valor se toma del campo device-type . |
device-uid |
principal.asset.asset_id |
El valor se toma del campo device-uid y se le antepone "ASSET ID: ". |
device-uid-global |
principal.asset.product_object_id |
El valor se toma del campo device-uid-global . |
hostname |
principal.hostname |
El valor se toma del campo hostname . |
ip:source-ip |
principal.ip |
El valor se toma del campo ip:source-ip . |
kv.ADDomain |
(sin asignar) | No está asignado al objeto IDM. |
kv.Airespace-Wlan-Id |
(sin asignar) | No está asignado al objeto IDM. |
kv.AuthenticationIdentityStore |
(sin asignar) | No está asignado al objeto IDM. |
kv.AVPair |
(sin asignar) | No está asignado al objeto IDM. |
kv.CVPN3000/ASA/PIX7.x-DAP-Tunnel-Group-Name |
(sin asignar) | No está asignado al objeto IDM. |
kv.CVPN3000/ASA/PIX7.x-Group-Based-Address-Pools |
(sin asignar) | No está asignado al objeto IDM. |
kv.ExternalGroups |
(sin asignar) | No está asignado al objeto IDM. |
kv.FailureReason |
(sin asignar) | No está asignado al objeto IDM. |
kv.IdentityAccessRestricted |
(sin asignar) | No está asignado al objeto IDM. |
kv.IdentityGroup |
(sin asignar) | No está asignado al objeto IDM. |
kv.NAS-Identifier |
(sin asignar) | No está asignado al objeto IDM. |
kv.SelectedShellProfile |
(sin asignar) | No está asignado al objeto IDM. |
kv.ServiceSelectionMatchedRule |
(sin asignar) | No está asignado al objeto IDM. |
kv.State |
(sin asignar) | No está asignado al objeto IDM. |
kv.Step |
(sin asignar) | No está asignado al objeto IDM. |
kv.Tunnel-Medium-Type |
(sin asignar) | No está asignado al objeto IDM. |
kv.Tunnel-Private-Group-ID |
(sin asignar) | No está asignado al objeto IDM. |
kv.Tunnel-Type |
(sin asignar) | No está asignado al objeto IDM. |
kv.UseCase |
(sin asignar) | No está asignado al objeto IDM. |
kv.UserIdentityGroup |
(sin asignar) | No está asignado al objeto IDM. |
kv.VendorSpecific |
(sin asignar) | No está asignado al objeto IDM. |
kv.attribute-131 |
(sin asignar) | No está asignado al objeto IDM. |
kv.attribute-89 |
(sin asignar) | No está asignado al objeto IDM. |
kv.cisco-av-pair |
(sin asignar) | No está asignado al objeto IDM. |
kv.cisco-av-pair:CiscoSecure-Group-Id |
(sin asignar) | No está asignado al objeto IDM. |
leef_version |
(sin asignar) | No está asignado al objeto IDM. |
log_header |
metadata.description |
El valor se toma del campo log_header . |
log_id |
metadata.product_log_id |
El valor se toma del campo log_id . |
log_type |
metadata.product_event_type |
El valor se toma del campo log_type . |
message_severity |
(sin asignar) | No está asignado al objeto IDM. |
product |
metadata.product_name |
El valor se toma del campo product . |
product_version |
metadata.product_version |
El valor se toma del campo product_version . |
server_host |
target.hostname |
El valor se toma del campo server_host . |
timestamp |
metadata.event_timestamp |
El valor se toma del campo timestamp y del campo timezone (después de quitar el dos puntos). El valor combinado se analiza como una marca de tiempo. |
url |
network.dns.questions[].name |
El valor se toma del campo url . |
vendor |
metadata.vendor_name |
El valor se toma del campo vendor . Se establece en "GENERIC_EVENT" inicialmente y, luego, se puede reemplazar en función de log_type y los campos analizados. Puede ser "USER_LOGIN", "USER_UNCATEGORIZED", "NETWORK_DNS", "NETWORK_CONNECTION", "STATUS_UPDATE" o "STATUS_UNCATEGORIZED". Se establece en “Cisco” inicialmente y, luego, es posible que el campo vendor lo reemplace. Se establece en "ACS" inicialmente y, luego, es posible que el campo product lo reemplace. Establece el valor en “CISCO_ACS”. Establece el valor en "USERNAME_PASSWORD". Establece el valor en “TACACS”. Configúralo como “UDP” para los eventos de registro y contabilización de RADIUS. Configúralo como “DNS” para los eventos de DNS. Se deriva del campo security_action , que se establece en función de si el acceso se realizó correctamente o no. Se establece en "Se produjo un acceso exitoso" para los accesos correctos y en "Se produjo un acceso incorrecto" para los accesos fallidos. También se puede establecer en "aprobado" para ciertos eventos de diagnóstico del almacén de identidades. Configúralo como "LOW" para los intentos de acceso fallidos. Se construye anteponiendo "ASSET ID: " al campo device-uid . |
Cambios
2023-09-26
- Mejora:
- Se inicializó "hostname" como nulo y se agregó una verificación de nombre de host no nulo antes de establecer "metadata.event_type" en "STATUS_UPDATE".
- Se agregó una verificación de dirección IP válida a "kv.DeviceIPAddress" y "kv.Remote-Address" antes de asignarlos a los campos de la AUA.
2022-08-19
- Mejora:
- Se asignó "User-Name" a "principal.user.userid".
- Se cambió el nombre de "ip:source-ip" a "source_ip" y se asignó a "principal.ip".
- Se cambió el nombre de "kv.audit-session-id" a "kv.audit_session_id" y se asignó a "network.session_id".
- Se asignó "kv.AuthenticationMethod" a "additional.fields".
- Se asignó "kv.SelectedAccessService" a "additional.fields".
- Se asignó "kv.SelectedAuthorizationProfiles" a "security_result.detection_fields".
- Se asignó "kv.SelectedAuthenticationIdentityStores" a "security_result.detection_fields".
- Se asignó "kv.device-uid-global" a "principal.asset.product_object_id".
- Se asignó "kv.device-uid" a "principal.asset.asset_id".
- Se asignó "metadata.event_type" a "USER_UNCATEGORIZED", donde kv.DestinationIPAddress, kv.NAS-IP-Address, kv.UserName y kv.NetworkDeviceName son nulos.
- Se agregó compatibilidad con registros con formato LEEF.
2022-06-14
- Mejora: Se modificó grok para analizar los registros de log_type = "CSCOacs_Passed_Authentications" que fallaban debido a varios espacios.
- Se reemplazó el valor de "device-mac" por el valor ficticio de "00:00:00:00:00:00" para el tipo de registro "CSCOacs_RADIUS_Accounting" en caso de que el valor no sea válido (00).
2022-06-06
- Mejora: Se analizaron los registros de tipo "CSCOacs_Passed_Authentications" que no tenían "DestinationIPAddress" ni "NAS-IP-Address" en los registros.
- Se modificó metadata.event_type de "USER_UNCATEGORIZED" a "USER_LOGIN" para los registros de tipo "CSCOacs_Passed_Authentications".
2022-05-05
- Mejora: Los registros recién transferidos que no tienen código de mensaje se analizan y se descartan.
2022-04-27
- Mejora: Se analizaron los registros con log_type=CISE_TACACS_Accounting.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.