Recoger registros de Cisco Meraki
En este documento se describe cómo puede recoger registros de Cisco Meraki mediante un reenviador de Google Security Operations.
Para obtener más información, consulta Ingestión de datos en Google Security Operations.
Una etiqueta de ingestión 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 ingestión CISCO_MERAKI
.
Configurar Cisco Meraki
- Inicia sesión en el panel de control de Cisco Meraki.
- En el panel de control de Cisco Meraki, selecciona Configurar > Alertas y administración.
- En la sección Registro, haga lo siguiente:
- En el campo IP del servidor, especifique la dirección IP del reenviador de Google Security Operations.
- En el campo Puerto, especifique 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 necesidades.
- Haz clic en Guardar cambios.
Configurar el reenviador de Google Security Operations y syslog para ingerir registros de Cisco Meraki
- Ve a Configuración de SIEM > Reenviadores.
- Haz clic en Añadir nuevo remitente.
- En el campo Nombre del reenviador, introduce un nombre único para el reenviador.
- Haz clic en Enviar. Se añade el reenviador y se muestra la ventana Añadir configuración de recopilador.
- En el campo Nombre del recolector, escribe un nombre.
- Seleccione Cisco Meraki como Tipo de registro.
- Seleccione Syslog como Tipo de recogida.
- Configure 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 recolector 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 reenviadores de Google Security Operations, consulta la documentación de los reenviadores de Google Security Operations.
Para obtener información sobre los requisitos de cada tipo de reenviador, consulta Configuración de reenviadores por tipo.
Si tienes problemas al crear reenviadores, ponte en contacto con el equipo de Asistencia de Google Security Operations.
Referencia de asignación de campos
Este analizador gestiona los registros de Cisco Meraki (identificados como Cisco/Meraki) en formato Syslog o JSON y los normaliza en UDM. Usa patrones grok para analizar mensajes syslog y lógica condicional basada en el campo eventType
para extraer información relevante, gestionar varios tipos de eventos (como flujos de red, solicitudes de URL, eventos de firewall y eventos genéricos), asignarlos a los campos de UDM correspondientes y enriquecer los datos con contexto adicional. Si la entrada no es syslog, intenta analizarla como JSON y asigna los campos relevantes a 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 sustituye por "BLOCK". Si sc_action contiene "allow", el valor se sustituye por "ALLOW". De lo contrario, si decision contiene "block", el valor se sustituye por "BLOCK". De lo contrario, si authorization es "success", se le asigna el valor "ALLOW", y si es "failure", se le asigna el valor "BLOCK". De lo contrario, si pattern es "1 all", "deny all" o "Group Policy Deny", se le asigna el valor "BLOCK". Si pattern es "allow all", "Group Policy Allow" o "0 all", se le asigna el valor "ALLOW". De lo contrario, se le asigna el valor "UNKNOWN_ACTION". Si decision contiene "block", se asigna el valor "BLOCK". |
adId |
principal.user.user_display_name |
Se asigna directamente desde el campo adId de los registros JSON. |
agent |
network.http.user_agent |
Se eliminan las comillas simples. Se asigna directamente desde el campo agent . También se ha convertido a network.http.parsed_user_agent mediante el filtro parseduseragent . |
aid |
network.session_id |
Se asigna directamente desde el campo aid . |
appProtocol |
network.application_protocol |
Se ha convertido a mayúsculas. Se asigna directamente desde el campo appProtocol . |
attr |
additional.fields |
Se añade como par clave-valor a la matriz additional.fields con la clave "attr". |
authorization |
security_result.action_details |
Se asigna directamente desde el campo authorization de los registros JSON. |
band |
additional.fields |
Se añade como un par clave-valor a la matriz additional.fields con la clave "band". |
bssids.bssid |
principal.mac |
Se ha convertido a minúsculas. Se ha combinado en la matriz principal.mac . |
bssids.detectedBy.device |
intermediary.asset.asset_id |
El formato es "ID de dispositivo: |
bssids.detectedBy.rssi |
intermediary.asset.product_object_id |
Se ha convertido en una cadena. |
Channel |
about.resource.attribute.labels |
Se añade como par clave-valor a la matriz about.resource.attribute.labels con la clave "Channel". |
clientDescription |
additional.fields |
Se añade como par clave-valor a la matriz additional.fields con la clave "clientDescription". |
clientId |
additional.fields |
Se añade como par clave-valor a la matriz additional.fields con la clave "clientId". |
clientIp |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo clientIp . |
clientMac |
principal.mac |
Se ha convertido a minúsculas. Se asigna directamente desde el campo clientMac de los registros JSON. |
client_ip |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo client_ip . |
client_mac |
principal.mac |
Se ha convertido a minúsculas. Se asigna directamente desde el campo client_mac . |
code |
additional.fields |
Se añade como par clave-valor a la matriz 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 sustituyen por espacios y se sustituyen valores específicos. El valor modificado se añade como un par clave-valor a la matriz security_result.about.resource.attribute.labels con la clave "Conditions". |
decision |
security_result.action |
Si el valor es "blocked", se asigna el valor "BLOCK". |
desc |
metadata.description |
Se asigna directamente desde el campo desc . |
description |
security_result.description |
Se asigna directamente desde el campo description de los registros JSON. |
DestAddress |
target.ip , target.asset.ip |
Se asigna directamente desde el campo DestAddress . |
DestPort |
target.port |
Se ha convertido 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 ha convertido a minúsculas. Se asigna directamente desde el campo deviceMac . |
deviceName |
target.hostname , target.asset.hostname |
Se asigna directamente desde el campo deviceName de los registros JSON. |
deviceSerial |
target.asset.hardware.serial_number |
Se asigna directamente desde el campo deviceSerial de los registros JSON. |
Direction |
network.direction |
Se quitan los caracteres especiales y el valor se asigna a network.direction . |
DisabledPrivilegeList |
target.user.attribute |
Se sustituyen 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 ha convertido 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 ha convertido 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 sustituyen 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 |
El formato es "ASSET_ID: |
eventData.client_ip |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo eventData.client_ip de los registros JSON. |
eventData.client_mac |
principal.mac |
Se ha convertido a minúsculas. Se asigna directamente desde el campo eventData.client_mac de los registros JSON. |
eventData.group |
principal.group.group_display_name |
Se asigna directamente desde el campo eventData.group de los registros JSON. |
eventData.identity |
principal.hostname |
Se asigna directamente desde el campo eventData.identity de los registros JSON. |
eventData.ip |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo eventData.ip de los registros JSON. |
EventID |
metadata.product_event_type , security_result.rule_name |
Se ha convertido en una cadena. Asignado a metadata.product_event_type . También se usa para crear security_result.rule_name con 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 ha asignado directamente desde el campo FilterId del EventID 5447. |
FilterName |
target.resource.name |
Se ha asignado directamente desde el campo FilterName del EventID 5447. |
FilterRTID |
security_result.detection_fields |
Se añade como un par clave-valor a la matriz security_result.detection_fields con la clave "FilterRTID". |
firstSeen |
security_result.detection_fields |
Se ha convertido en una cadena. Se añade como par clave-valor a la matriz security_result.detection_fields con la clave "firstSeen". |
gatewayDeviceMac |
target.mac |
Se ha convertido a minúsculas. Se ha combinado en la matriz target.mac . |
group |
additional.fields |
Se añade como un par clave-valor a la matriz additional.fields con la clave "group". |
GroupMembership |
target.user |
Se eliminan los retornos de carro, los saltos de línea, las tabulaciones y los caracteres especiales. El valor modificado se analiza como JSON y se combina con 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 añade como un par clave-valor a la matriz 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 añade como par clave-valor a la matriz principal.resource.attribute.labels con la clave "IPs". |
is_8021x |
additional.fields |
Se añade como un par clave-valor a la matriz 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 ha convertido en una cadena. Se añade como par clave-valor a la matriz 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 añade como par clave-valor a la matriz security_result.detection_fields con la clave "Nombre de capa". |
LayerRTID |
security_result.detection_fields |
Se añade como par clave-valor a la matriz 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 de los registros JSON si coincide con un formato de dirección de correo electrónico. |
LogonGuid |
additional.fields |
Se añade como par clave-valor a la matriz additional.fields con la clave "LogonGuid". |
LogonType |
extensions.auth.mechanism |
Se asigna a un mecanismo de autenticación específico en función de 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 ha convertido a minúsculas. Se ha combinado en la matriz principal.mac . |
MandatoryLabel |
additional.fields |
Se añade como un par clave-valor a la matriz 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 de los registros JSON. |
natsrcIp |
principal.nat_ip |
Se asigna directamente desde el campo natsrcIp . |
natsrcport |
principal.nat_port |
Se ha convertido en un número entero. Se asigna directamente desde el campo natsrcport . |
network_id |
additional.fields |
Se añade como un par clave-valor a la matriz 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 añade como par clave-valor a la matriz target.resource.attribute.labels con la clave "New Security Descriptor". |
occurredAt |
metadata.event_timestamp |
Se analiza como una marca de tiempo con el formato ISO 8601. |
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 "Clave", se asigna a target.registry.registry_key . De lo contrario, se asigna a target.file.full_path . En el caso de otros eventos, se añade como un par clave-valor a la matriz additional.fields con la clave "ObjectName". |
ObjectType |
additional.fields |
Se añade como un par clave-valor a la matriz additional.fields con la clave "ObjectType". Se usa para determinar event_type . |
OldSd |
target.resource.attribute.labels |
Se añade como un par clave-valor a la matriz target.resource.attribute.labels con la clave "Original Security Descriptor". |
organizationId |
principal.resource.id |
Se asigna directamente desde el campo organizationId de los registros JSON. |
ParentProcessName |
target.process.parent_process.file.full_path |
Se asigna directamente desde el campo ParentProcessName . |
pattern |
security_result.description |
Asignado 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 ha convertido a minúsculas. Se ha combinado en la matriz principal.mac . |
principalPort |
principal.port |
Se ha convertido 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 en función de su valor: 1 -> HIGH_PRIORITY, 2 -> MEDIUM_PRIORITY, 3 -> LOW_PRIORITY, otro -> UNKNOWN_PRIORITY. |
ProcessID |
principal.process.pid |
Se ha convertido 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 ha convertido a mayúsculas. Si es un número, se convierte en el nombre del protocolo IP correspondiente. Si es "ICMP6", se sustituye 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 ha cambiado el nombre a question.type y se ha combinado en la matriz network.dns.questions . Se asigna a un valor numérico en función del tipo de consulta DHCP. |
radio |
additional.fields |
Se añade como par clave-valor a la matriz additional.fields con la clave "radio". |
reason |
additional.fields |
Se añade como par clave-valor a la matriz additional.fields con la clave "reason". |
rec_bytes |
network.received_bytes |
Se ha convertido en un entero sin signo. Se asigna directamente desde el campo rec_bytes . |
RecordNumber |
metadata.product_log_id |
Se ha convertido 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 ha combinado en la matriz 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 en función de su valor: "Info" -> INFORMATIONAL, "Error" -> ERROR, "Warning" -> MEDIUM y otros -> UNKNOWN_SEVERITY. |
sha256 |
target.file.sha256 |
Se asigna directamente desde el campo sha256 . |
signature |
additional.fields |
Se añade como un par clave-valor a la matriz 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 añade como par clave-valor a la matriz observer.labels con la clave "SourceModuleName". |
SourceModuleType |
observer.application |
Se asigna directamente desde el campo SourceModuleType . |
SourcePort |
principal.port |
Se ha convertido 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 ha convertido 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 de los registros JSON. |
ssidName |
additional.fields |
Se añade como par clave-valor a la matriz additional.fields con la clave "ssidName". |
state |
additional.fields |
Se añade como par clave-valor a la matriz additional.fields con la clave "state". |
Status |
additional.fields |
Se añade como un par clave-valor a la matriz additional.fields con la clave "Status". |
status_code |
network.http.response_code |
Se ha convertido 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 añade como un par clave-valor a la matriz 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 ha convertido en una dirección IP, si ha sido 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 añade como un par clave-valor a la matriz 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 ha convertido en una cadena. Se añade como un par clave-valor a la matriz 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 de 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 ha combinado en la matriz 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 añade como par clave-valor a la matriz additional.fields con la clave "vap". |
VirtualAccount |
security_result.about.labels |
Se añade como par clave-valor a la matriz security_result.about.labels con la clave "VirtualAccount". |
wiredLastSeen |
security_result.detection_fields |
Se ha convertido en una cadena. Se añade como un par clave-valor a la matriz security_result.detection_fields con la clave "wiredLastSeen". |
wiredMacs |
intermediary.mac |
Se ha convertido a minúsculas. Se ha combinado en la matriz intermediary.mac . |
WorkstationName |
principal.hostname , principal.asset.hostname |
Se asigna directamente desde el campo WorkstationName . |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.