Recopila registros de Cisco Meraki
En este documento, se describe cómo puedes recopilar registros de Cisco Meraki con un retransmisor de Google Security Operations.
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 en formato UDM estructurado. La información de este documento se aplica al analizador con la etiqueta de transferencia CISCO_MERAKI
.
Configura Cisco Meraki
- Accede al panel de Cisco Meraki.
- En el panel de Cisco Meraki, selecciona Configurar > Alertas y administración.
- En la sección Logging, haz lo siguiente:
- En el campo IP del servidor, especifica la dirección IP del reenviador de Google Security Operations.
- En el campo Puerto, especifica el valor del puerto, como 514.
- En el campo Roles, selecciona las cuatro opciones disponibles para obtener todos los registros o selecciona cualquier combinación según tus requisitos.
- Haz clic en Guardar cambios.
Configura el reenvío y el syslog de Google Security Operations para transferir registros de Cisco Meraki
- Ve a Configuración del SIEM > Reenviadores.
- Haz clic en Agregar un nuevo reenvío.
- En el campo Nombre del reenviador, ingresa un nombre único para el reenviador.
- Haz clic en Enviar. Se agregará el reenvío y aparecerá la ventana Add collector configuration.
- En el campo Nombre del recopilador, escribe un nombre.
- Selecciona Cisco Meraki 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 en el que reside el recopilador y escucha 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 retransmisores de Google Security Operations, consulta la documentación de los retransmisores de Google Security Operations.
Para obtener información sobre los requisitos de cada tipo de reenvío, consulta Configuración del reenvío por tipo.
Si tienes problemas para crear reenvíos, 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 Meraki (identificados como Cisco/Meraki) en formato SYSLOG o JSON, y los normaliza en UDM. Utiliza patrones de Grok para analizar mensajes de syslog y lógica condicional basada en el campo eventType
para extraer información pertinente, controlar varios tipos de eventos, como flujos de red, solicitudes de URL, eventos de firewall y eventos genéricos, asignarlos a los campos de UDM adecuados y enriquecer los datos con contexto adicional. Si la entrada no es de syslog, intenta analizarla como JSON y asigna los campos pertinentes al UDM.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
action |
security_result.action |
El valor se convierte a mayúsculas. Si el valor es "deny", se reemplaza por "BLOCK". Si sc_action contiene "allow", el valor se reemplaza por "ALLOW". De lo contrario, si decision contiene "block", el valor se reemplaza por "BLOCK". De lo contrario, si authorization es "success", se establece como "ALLOW", y si es "failure", se establece como "BLOCK". De lo contrario, si pattern es "1 all", "deny all" o "Group Policy Deny", se establece en "BLOCK". Si pattern es "allow all", "Group Policy Allow" o "0 all", se establece en "ALLOW". De lo contrario, se establece como "UNKNOWN_ACTION". Si decision contiene "block", se establece en "BLOCK". |
adId |
principal.user.user_display_name |
Se asigna directamente desde el campo adId en los registros JSON. |
agent |
network.http.user_agent |
Se quitan los apóstrofos. Se asigna directamente desde el campo agent . También se convirtió a network.http.parsed_user_agent con el filtro parseduseragent . |
aid |
network.session_id |
Se asigna directamente desde el campo aid . |
appProtocol |
network.application_protocol |
Se convirtió a mayúsculas. Se asigna directamente desde el campo appProtocol . |
attr |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "attr". |
authorization |
security_result.action_details |
Se asigna directamente desde el campo authorization en los registros JSON. |
band |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "band". |
bssids.bssid |
principal.mac |
Se convirtió a minúsculas. Se combinó en el array principal.mac . |
bssids.detectedBy.device |
intermediary.asset.asset_id |
Tiene el formato "ID del dispositivo: |
bssids.detectedBy.rssi |
intermediary.asset.product_object_id |
Se convirtió en una cadena. |
Channel |
about.resource.attribute.labels |
Se agrega como un par clave-valor al array about.resource.attribute.labels con la clave "Channel". |
clientDescription |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "clientDescription". |
clientId |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "clientId". |
clientIp |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo clientIp . |
clientMac |
principal.mac |
Se convirtió a minúsculas. Se asigna directamente desde el campo clientMac en los registros JSON. |
client_ip |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo client_ip . |
client_mac |
principal.mac |
Se convirtió a minúsculas. Se asigna directamente desde el campo client_mac . |
code |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "code". |
collection_time |
metadata.event_timestamp |
Los campos de segundos y nanosegundos se combinan para crear una marca de tiempo. |
Conditions |
security_result.about.resource.attribute.labels |
Los retornos de carro, los saltos de línea y las tabulaciones se reemplazan por espacios, y se sustituyen valores específicos. El valor modificado se agrega como un par clave-valor al array security_result.about.resource.attribute.labels con la clave "Conditions". |
decision |
security_result.action |
Si el valor es "blocked", se establece en "BLOCK". |
desc |
metadata.description |
Se asigna directamente desde el campo desc . |
description |
security_result.description |
Se asigna directamente desde el campo description en los registros JSON. |
DestAddress |
target.ip , target.asset.ip |
Se asigna directamente desde el campo DestAddress . |
DestPort |
target.port |
Se convierte en un número entero. Se asigna directamente desde el campo DestPort . |
deviceIp |
target.ip |
Se asigna directamente desde el campo deviceIp . |
deviceMac |
target.mac |
Se convirtió a minúsculas. Se asigna directamente desde el campo deviceMac . |
deviceName |
target.hostname , target.asset.hostname |
Se asigna directamente desde el campo deviceName en los registros JSON. |
deviceSerial |
target.asset.hardware.serial_number |
Se asigna directamente desde el campo deviceSerial en los registros JSON. |
Direction |
network.direction |
Se quitan los caracteres especiales y el valor se asigna a network.direction . |
DisabledPrivilegeList |
target.user.attribute |
Se reemplazan los retornos de carro, los saltos de línea y las tabulaciones, y el valor modificado se analiza como JSON y se combina en el objeto target.user.attribute . |
dport |
target.port |
Se convierte en un número entero. Se asigna directamente desde el campo dport . |
dst |
target.ip , target.asset.ip |
Se asigna directamente desde el campo dst . |
dstIp |
target.ip , target.asset.ip |
Se asigna directamente desde el campo dstIp . |
dstPort |
target.port |
Se convierte en un número entero. Se asigna directamente desde el campo dstPort . |
dvc |
intermediary.hostname |
Se asigna directamente desde el campo dvc . |
EnabledPrivilegeList |
target.user.attribute |
Se reemplazan los retornos de carro, los saltos de línea y las tabulaciones, y el valor modificado se analiza como JSON y se combina en el objeto target.user.attribute . |
eventData.aid |
principal.asset_id |
Se formatea como "ASSET_ID: |
eventData.client_ip |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo eventData.client_ip en los registros JSON. |
eventData.client_mac |
principal.mac |
Se convirtió a minúsculas. Se asigna directamente desde el campo eventData.client_mac en los registros JSON. |
eventData.group |
principal.group.group_display_name |
Se asigna directamente desde el campo eventData.group en los registros JSON. |
eventData.identity |
principal.hostname |
Se asigna directamente desde el campo eventData.identity en los registros JSON. |
eventData.ip |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo eventData.ip en los registros JSON. |
EventID |
metadata.product_event_type , security_result.rule_name |
Se convirtió en una cadena. Se asignó a metadata.product_event_type . También se usa para crear security_result.rule_name en el formato "EventID: event_type y sec_action . |
eventSummary |
security_result.summary , metadata.description |
Se asigna directamente desde el campo eventSummary . También se usa en security_result.description para algunos eventos. |
eventType |
metadata.product_event_type |
Se asigna directamente desde el campo eventType . Se usa para determinar qué lógica de análisis se debe aplicar. |
filename |
principal.process.file.full_path |
Se asigna directamente desde el campo filename . |
FilterId |
target.resource.product_object_id |
Se asigna directamente desde el campo FilterId para EventID 5447. |
FilterName |
target.resource.name |
Se asigna directamente desde el campo FilterName para EventID 5447. |
FilterRTID |
security_result.detection_fields |
Se agrega como un par clave-valor al array security_result.detection_fields con la clave "FilterRTID". |
firstSeen |
security_result.detection_fields |
Se convirtió en una cadena. Se agrega como un par clave-valor al array security_result.detection_fields con la clave "firstSeen". |
gatewayDeviceMac |
target.mac |
Se convirtió a minúsculas. Se combinó en el array target.mac . |
group |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "group". |
GroupMembership |
target.user |
Se quitan los retornos de carro, las nuevas líneas, los tabuladores y los caracteres especiales. El valor modificado se analiza como JSON y se combina en el objeto target.user . |
Hostname |
principal.hostname , principal.asset.hostname |
Se asigna directamente desde el campo Hostname . |
identity |
target.user.userid |
Se asigna directamente desde el campo identity . |
instigator |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "instigator". |
int_ip |
intermediary.ip |
Se asigna directamente desde el campo int_ip . |
ip_msg |
principal.resource.attribute.labels |
Se agrega como un par clave-valor al array principal.resource.attribute.labels con la clave "IPs". |
is_8021x |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "is_8021x". |
KeyName |
target.resource.name |
Se asigna directamente desde el campo KeyName . |
KeyFilePath |
target.file.full_path |
Se asigna directamente desde el campo KeyFilePath . |
lastSeen |
security_result.detection_fields |
Se convirtió en una cadena. Se agrega como un par clave-valor al array security_result.detection_fields con la clave "lastSeen". |
last_known_client_ip |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo last_known_client_ip . |
LayerName |
security_result.detection_fields |
Se agrega como un par clave-valor al array security_result.detection_fields con la clave "Layer Name". |
LayerRTID |
security_result.detection_fields |
Se agrega como un par clave-valor al array security_result.detection_fields con la clave "LayerRTID". |
localIp |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo localIp . |
login |
principal.user.email_addresses |
Se asigna directamente desde el campo login en los registros JSON si coincide con un formato de dirección de correo electrónico. |
LogonGuid |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "LogonGuid". |
LogonType |
extensions.auth.mechanism |
Se asigna a un mecanismo de autenticación específico según su valor. Si PreAuthType está presente, anula LogonType . Los valores se asignan de la siguiente manera: 2 -> USERNAME_PASSWORD, 3 -> NETWORK, 4 -> BATCH, 5 -> SERVICE, 7 -> UNLOCK, 8 -> NETWORK_CLEAR_TEXT, 9 -> NEW_CREDENTIALS, 10 -> REMOTE_INTERACTIVE, 11 -> CACHED_INTERACTIVE, 12 -> CACHED_REMOTE_INTERACTIVE, 13 -> CACHED_UNLOCK, other -> MECHANISM_UNSPECIFIED. |
mac |
principal.mac |
Se convirtió a minúsculas. Se combinó en el array principal.mac . |
MandatoryLabel |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "MandatoryLabel". |
Message |
security_result.description , security_result.summary |
Si AccessReason está presente, Message se asigna a security_result.summary y AccessReason se asigna a security_result.description . De lo contrario, Message se asigna a security_result.description . |
method |
network.http.method |
Se asigna directamente desde el campo method . |
msg |
security_result.description |
Se asigna directamente desde el campo msg . |
name |
principal.user.user_display_name |
Se asigna directamente desde el campo name en los registros JSON. |
natsrcIp |
principal.nat_ip |
Se asigna directamente desde el campo natsrcIp . |
natsrcport |
principal.nat_port |
Se convierte en un número entero. Se asigna directamente desde el campo natsrcport . |
network_id |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "ID de red". |
NewProcessId |
target.process.pid |
Se asigna directamente desde el campo NewProcessId . |
NewProcessName |
target.process.file.full_path |
Se asigna directamente desde el campo NewProcessName . |
NewSd |
target.resource.attribute.labels |
Se agregó como un par clave-valor al array target.resource.attribute.labels con la clave "Nuevo descriptor de seguridad". |
occurredAt |
metadata.event_timestamp |
Se analiza como una marca de tiempo con el formato ISO8601. |
ObjectName |
target.file.full_path , target.registry.registry_key , target.process.file.full_path , additional.fields |
Si EventID es 4663 y ObjectType es "Process", se asigna a target.process.file.full_path . Si ObjectType es "Key", se asigna a target.registry.registry_key . De lo contrario, se asigna a target.file.full_path . Para otros eventos, se agrega como un par clave-valor al array additional.fields con la clave "ObjectName". |
ObjectType |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "ObjectType". Se usa para determinar event_type . |
OldSd |
target.resource.attribute.labels |
Se agrega como un par clave-valor al array target.resource.attribute.labels con la clave "Descriptor de seguridad original". |
organizationId |
principal.resource.id |
Se asigna directamente desde el campo organizationId en los registros JSON. |
ParentProcessName |
target.process.parent_process.file.full_path |
Se asigna directamente desde el campo ParentProcessName . |
pattern |
security_result.description |
Se asigna directamente a security_result.description . Se usa para determinar security_result.action . |
peer_ident |
target.user.userid |
Se asigna directamente desde el campo peer_ident . |
PreAuthType |
extensions.auth.mechanism |
Se usa para determinar el mecanismo de autenticación, si está presente. Anula LogonType . |
principalIp |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo principalIp . |
principalMac |
principal.mac |
Se convirtió a minúsculas. Se combinó en el array principal.mac . |
principalPort |
principal.port |
Se convierte en un número entero. Se asigna directamente desde el campo principalPort . |
prin_ip2 |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo prin_ip2 . |
prin_url |
principal.url |
Se asigna directamente desde el campo prin_url . |
priority |
security_result.priority |
Se asigna a un nivel de prioridad según su valor: 1 -> HIGH_PRIORITY, 2 -> MEDIUM_PRIORITY, 3 -> LOW_PRIORITY, otro -> UNKNOWN_PRIORITY. |
ProcessID |
principal.process.pid |
Se convirtió en una cadena. Se asigna directamente desde el campo ProcessID . |
ProcessName |
principal.process.file.full_path , target.process.file.full_path |
Si EventID es 4689, se asigna a target.process.file.full_path . De lo contrario, se asigna a principal.process.file.full_path . |
prod_log_id |
metadata.product_log_id |
Se asigna directamente desde el campo prod_log_id . |
protocol |
network.ip_protocol |
Se convirtió a mayúsculas. Si es un número, se convierte en el nombre del protocolo IP correspondiente. Si es "ICMP6", se reemplaza por "ICMP". Se asigna directamente desde el campo protocol . |
ProviderGuid |
metadata.product_deployment_id |
Se asigna directamente desde el campo ProviderGuid . |
query |
network.dns.questions.name |
Se asigna directamente desde el campo query . |
query_type |
network.dns.questions.type |
Se cambió el nombre a question.type y se combinó en el array network.dns.questions . Se asigna a un valor numérico según el tipo de consulta de DHCP. |
radio |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "radio". |
reason |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "reason". |
rec_bytes |
network.received_bytes |
Se convirtió en un número entero sin signo. Se asigna directamente desde el campo rec_bytes . |
RecordNumber |
metadata.product_log_id |
Se convirtió en una cadena. Se asigna directamente desde el campo RecordNumber . |
RelativeTargetName |
target.process.file.full_path |
Se asigna directamente desde el campo RelativeTargetName . |
response_ip |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo response_ip . |
rssi |
intermediary.asset.product_object_id |
Se asigna directamente desde el campo rssi . |
sc_action |
security_result.action_details |
Se asigna directamente desde el campo sc_action . |
sec_action |
security_result.action |
Se combinó en el array security_result.action . |
server_ip |
client_ip |
Se asigna directamente al campo client_ip . |
Severity |
security_result.severity |
Se asigna a un nivel de gravedad según su valor: "Info" -> INFORMATIONAL, "Error" -> ERROR, "Warning" -> MEDIUM, otro -> UNKNOWN_SEVERITY. |
sha256 |
target.file.sha256 |
Se asigna directamente desde el campo sha256 . |
signature |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "signature". |
SourceAddress |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo SourceAddress . |
SourceHandleId |
src.resource.id |
Se asigna directamente desde el campo SourceHandleId . |
SourceModuleName |
observer.labels |
Se agrega como un par clave-valor al array observer.labels con la clave "SourceModuleName". |
SourceModuleType |
observer.application |
Se asigna directamente desde el campo SourceModuleType . |
SourcePort |
principal.port |
Se convierte en un número entero. Se asigna directamente desde el campo SourcePort . |
SourceProcessId |
src.process.pid |
Se asigna directamente desde el campo SourceProcessId . |
source_client_ip |
client_ip |
Se asigna directamente al campo client_ip . |
sport |
principal.port |
Se convierte en un número entero. Se asigna directamente desde el campo sport . |
src |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo src . |
ssid |
network.session_id |
Se asigna directamente desde el campo ssid en los registros JSON. |
ssidName |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "ssidName". |
state |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "state". |
Status |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "Status". |
status_code |
network.http.response_code |
Se convierte en un número entero. Se asigna directamente desde el campo status_code . |
SubjectDomainName |
principal.administrative_domain |
Se asigna directamente desde el campo SubjectDomainName . |
SubjectLogonId |
principal.resource.attribute.labels |
Se agrega como un par clave-valor al array principal.resource.attribute.labels con la clave "SubjectLogonId". |
SubjectUserName |
principal.user.userid |
Se asigna directamente desde el campo SubjectUserName . |
SubjectUserSid |
principal.user.windows_sid |
Se asigna directamente desde el campo SubjectUserSid . |
targetHost |
target.hostname , target.asset.hostname |
Se convierte en una dirección IP si es posible. De lo contrario, se analiza para extraer el nombre de host y se asigna a target.hostname y target.asset.hostname . |
TargetHandleId |
target.resource.id |
Se asigna directamente desde el campo TargetHandleId . |
TargetLogonId |
principal.resource.attribute.labels |
Se agrega como un par clave-valor al array principal.resource.attribute.labels con la clave "TargetLogonId" si es diferente de SubjectLogonId . |
TargetProcessId |
target.process.pid |
Se asigna directamente desde el campo TargetProcessId . |
TargetUserName |
target.user.userid |
Se asigna directamente desde el campo TargetUserName . |
TargetUserSid |
target.user.windows_sid |
Se asigna directamente desde el campo TargetUserSid . |
Task |
additional.fields |
Se convirtió en una cadena. Se agrega como un par clave-valor al array additional.fields con la clave "Task". |
timestamp |
metadata.event_timestamp |
El campo de segundos se usa para crear una marca de tiempo. |
ts |
metadata.event_timestamp |
Si ts está vacío, se crea combinando tsDate , tsTime y tsTZ . Si contiene " |
type |
security_result.summary , metadata.product_event_type |
Se asigna directamente desde el campo type en los registros JSON. También se usa como eventSummary y metadata.product_event_type en algunos casos. |
url |
target.url , principal.url |
Se asigna directamente desde el campo url . |
url1 |
target.url |
Se asigna directamente desde el campo url1 . |
user |
target.user.group_identifiers |
Se combinó en el array target.user.group_identifiers . |
user_id |
target.user.userid |
Se asigna directamente desde el campo user_id . |
UserID |
principal.user.windows_sid |
Se asigna directamente desde el campo UserID . |
UserName |
principal.user.userid |
Se asigna directamente desde el campo UserName . |
user_agent |
network.http.user_agent |
Se asigna directamente desde el campo user_agent . |
userId |
target.user.userid |
Se asigna directamente desde el campo userId . |
vap |
additional.fields |
Se agrega como un par clave-valor al array additional.fields con la clave "vap". |
VirtualAccount |
security_result.about.labels |
Se agrega como un par clave-valor al array security_result.about.labels con la clave "VirtualAccount". |
wiredLastSeen |
security_result.detection_fields |
Se convirtió en una cadena. Se agrega como un par clave-valor al array security_result.detection_fields con la clave "wiredLastSeen". |
wiredMacs |
intermediary.mac |
Se convirtió a minúsculas. Se combinó en el array intermediary.mac . |
WorkstationName |
principal.hostname , principal.asset.hostname |
Se asigna directamente desde el campo WorkstationName . |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.