Recolha registos do Cisco Meraki
Este documento descreve como pode recolher registos do Cisco Meraki através de um encaminhador do Google Security Operations.
Para mais informações, consulte o artigo Ingestão de dados no Google Security Operations.
Uma etiqueta de carregamento identifica o analisador que normaliza os dados de registo não processados
para o formato UDM estruturado. As informações neste documento aplicam-se ao analisador com a etiqueta de carregamento CISCO_MERAKI
.
Configure o Cisco Meraki
- Inicie sessão no painel de controlo do Cisco Meraki.
- No painel de controlo do Cisco Meraki, selecione Configure > Alerts & administration.
- Na secção Registo, faça o seguinte:
- No campo IP do servidor, especifique o endereço IP do encaminhador do Google Security Operations.
- No campo Porta, especifique o valor da porta, como 514.
- No campo Funções, selecione as quatro opções disponíveis para obter todos os registos ou selecione qualquer combinação de acordo com o seu requisito.
- Clique em Guardar alterações.
Configure o encaminhador e o syslog do Google Security Operations para carregar registos do Cisco Meraki
- Aceda a Definições do SIEM > Encaminhadores.
- Clique em Adicionar novo encaminhador.
- No campo Nome do encaminhador, introduza um nome exclusivo para o encaminhador.
- Clique em Enviar. O encaminhador é adicionado e é apresentada a janela Adicionar configuração do coletor.
- No campo Nome do coletor, introduza um nome.
- Selecione Cisco Meraki como o Tipo de registo.
- Selecione Syslog como o tipo de coletor.
- Configure os seguintes parâmetros de entrada obrigatórios:
- Protocolo: especifique o protocolo.
- Endereço: especifique o endereço IP ou o nome de anfitrião de destino onde o coletor reside e escuta os dados syslog.
- Porta: especifique a porta de destino onde o coletor reside e ouve dados syslog.
- Clique em Enviar.
Para mais informações sobre os encaminhadores do Google Security Operations, consulte a documentação dos encaminhadores do Google Security Operations.
Para obter informações sobre os requisitos de cada tipo de encaminhador, consulte o artigo Configuração do encaminhador por tipo.
Se tiver problemas ao criar encaminhamentos, contacte o apoio técnico das Operações de segurança da Google.
Referência de mapeamento de campos
Este analisador processa registos do Cisco Meraki (identificados como Cisco/Meraki) no formato SYSLOG ou JSON, normalizando-os no UDM. Usa padrões grok para analisar mensagens syslog e lógica condicional com base no campo eventType
para extrair informações relevantes, processando vários tipos de eventos, como fluxos de rede, pedidos de URL, eventos de firewall e eventos genéricos, mapeando-os para campos UDM adequados e enriquecendo os dados com contexto adicional. Se a entrada não for syslog, tenta analisá-la como JSON e mapeia os campos relevantes para o UDM.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
action |
security_result.action |
O valor é convertido em maiúsculas. Se o valor for "deny", é substituído por "BLOCK". Se sc_action contiver "allow", o valor é substituído por "ALLOW". Caso contrário, se decision contiver "block", o valor é substituído por "BLOCK". Caso contrário, se authorization for "success", é definido como "ALLOW" e, se for "failure", é definido como "BLOCK". Caso contrário, se pattern for "1 all", "deny all" ou "Group Policy Deny", é definido como "BLOCK". Se pattern for "allow all", "Group Policy Allow" ou "0 all", é definido como "ALLOW". Caso contrário, é definido como "UNKNOWN_ACTION". Se decision contiver "block", é definido como "BLOCK". |
adId |
principal.user.user_display_name |
Mapeado diretamente a partir do campo adId nos registos JSON. |
agent |
network.http.user_agent |
Os apóstrofos são removidos. Mapeado diretamente a partir do campo agent . Também foi convertido para network.http.parsed_user_agent através do filtro parseduseragent . |
aid |
network.session_id |
Mapeado diretamente a partir do campo aid . |
appProtocol |
network.application_protocol |
Convertido em maiúsculas. Mapeado diretamente a partir do campo appProtocol . |
attr |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "attr". |
authorization |
security_result.action_details |
Mapeado diretamente a partir do campo authorization nos registos JSON. |
band |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "band". |
bssids.bssid |
principal.mac |
Convertido em minúsculas. Unido na matriz principal.mac . |
bssids.detectedBy.device |
intermediary.asset.asset_id |
Formatado como "ID do dispositivo: |
bssids.detectedBy.rssi |
intermediary.asset.product_object_id |
Convertido numa string. |
Channel |
about.resource.attribute.labels |
Adicionado como um par de chave-valor à matriz about.resource.attribute.labels com a chave "Channel". |
clientDescription |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "clientDescription". |
clientId |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "clientId". |
clientIp |
principal.ip , principal.asset.ip |
Mapeado diretamente a partir do campo clientIp . |
clientMac |
principal.mac |
Convertido em minúsculas. Mapeado diretamente a partir do campo clientMac nos registos JSON. |
client_ip |
principal.ip , principal.asset.ip |
Mapeado diretamente a partir do campo client_ip . |
client_mac |
principal.mac |
Convertido em minúsculas. Mapeado diretamente a partir do campo client_mac . |
code |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "code". |
collection_time |
metadata.event_timestamp |
Os campos de segundos e nanos são combinados para criar uma data/hora. |
Conditions |
security_result.about.resource.attribute.labels |
Os retornos de carro, as novas linhas e as tabulações são substituídos por espaços, e os valores específicos são substituídos. O valor modificado é adicionado como um par de chave-valor à matriz security_result.about.resource.attribute.labels com a chave "Conditions". |
decision |
security_result.action |
Se o valor for "blocked", é definido como "BLOCK". |
desc |
metadata.description |
Mapeado diretamente a partir do campo desc . |
description |
security_result.description |
Mapeado diretamente a partir do campo description nos registos JSON. |
DestAddress |
target.ip , target.asset.ip |
Mapeado diretamente a partir do campo DestAddress . |
DestPort |
target.port |
Convertido num número inteiro. Mapeado diretamente a partir do campo DestPort . |
deviceIp |
target.ip |
Mapeado diretamente a partir do campo deviceIp . |
deviceMac |
target.mac |
Convertido em minúsculas. Mapeado diretamente a partir do campo deviceMac . |
deviceName |
target.hostname , target.asset.hostname |
Mapeado diretamente a partir do campo deviceName nos registos JSON. |
deviceSerial |
target.asset.hardware.serial_number |
Mapeado diretamente a partir do campo deviceSerial nos registos JSON. |
Direction |
network.direction |
Os carateres especiais são removidos e o valor é mapeado para network.direction . |
DisabledPrivilegeList |
target.user.attribute |
Os retornos de carro, as novas linhas e as tabulações são substituídos, e o valor modificado é analisado como JSON e unido ao objeto target.user.attribute . |
dport |
target.port |
Convertido num número inteiro. Mapeado diretamente a partir do campo dport . |
dst |
target.ip , target.asset.ip |
Mapeado diretamente a partir do campo dst . |
dstIp |
target.ip , target.asset.ip |
Mapeado diretamente a partir do campo dstIp . |
dstPort |
target.port |
Convertido num número inteiro. Mapeado diretamente a partir do campo dstPort . |
dvc |
intermediary.hostname |
Mapeado diretamente a partir do campo dvc . |
EnabledPrivilegeList |
target.user.attribute |
Os retornos de carro, as novas linhas e as tabulações são substituídos, e o valor modificado é analisado como JSON e unido ao objeto target.user.attribute . |
eventData.aid |
principal.asset_id |
Formatado como "ASSET_ID: |
eventData.client_ip |
principal.ip , principal.asset.ip |
Mapeado diretamente a partir do campo eventData.client_ip nos registos JSON. |
eventData.client_mac |
principal.mac |
Convertido em minúsculas. Mapeado diretamente a partir do campo eventData.client_mac nos registos JSON. |
eventData.group |
principal.group.group_display_name |
Mapeado diretamente a partir do campo eventData.group nos registos JSON. |
eventData.identity |
principal.hostname |
Mapeado diretamente a partir do campo eventData.identity nos registos JSON. |
eventData.ip |
principal.ip , principal.asset.ip |
Mapeado diretamente a partir do campo eventData.ip nos registos JSON. |
EventID |
metadata.product_event_type , security_result.rule_name |
Convertido numa string. Mapeado para metadata.product_event_type . Também usado para criar security_result.rule_name no formato "EventID: event_type e sec_action . |
eventSummary |
security_result.summary , metadata.description |
Mapeado diretamente a partir do campo eventSummary . Também é usado no security_result.description para alguns eventos. |
eventType |
metadata.product_event_type |
Mapeado diretamente a partir do campo eventType . Usado para determinar a lógica de análise a aplicar. |
filename |
principal.process.file.full_path |
Mapeado diretamente a partir do campo filename . |
FilterId |
target.resource.product_object_id |
Mapeado diretamente a partir do campo FilterId para o EventID 5447. |
FilterName |
target.resource.name |
Mapeado diretamente a partir do campo FilterName para o EventID 5447. |
FilterRTID |
security_result.detection_fields |
Adicionado como um par de chave-valor à matriz security_result.detection_fields com a chave "FilterRTID". |
firstSeen |
security_result.detection_fields |
Convertido numa string. Adicionado como um par de chave-valor à matriz security_result.detection_fields com a chave "firstSeen". |
gatewayDeviceMac |
target.mac |
Convertido em minúsculas. Unido na matriz target.mac . |
group |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "group". |
GroupMembership |
target.user |
Os retornos de carro, as novas linhas, as tabulações e os carateres especiais são removidos. O valor modificado é analisado como JSON e é unido ao objeto target.user . |
Hostname |
principal.hostname , principal.asset.hostname |
Mapeado diretamente a partir do campo Hostname . |
identity |
target.user.userid |
Mapeado diretamente a partir do campo identity . |
instigator |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "instigator". |
int_ip |
intermediary.ip |
Mapeado diretamente a partir do campo int_ip . |
ip_msg |
principal.resource.attribute.labels |
Adicionado como um par de chave-valor à matriz principal.resource.attribute.labels com a chave "IPs". |
is_8021x |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "is_8021x". |
KeyName |
target.resource.name |
Mapeado diretamente a partir do campo KeyName . |
KeyFilePath |
target.file.full_path |
Mapeado diretamente a partir do campo KeyFilePath . |
lastSeen |
security_result.detection_fields |
Convertido numa string. Adicionado como um par de chave-valor à matriz security_result.detection_fields com a chave "lastSeen". |
last_known_client_ip |
principal.ip , principal.asset.ip |
Mapeado diretamente a partir do campo last_known_client_ip . |
LayerName |
security_result.detection_fields |
Adicionado como um par de chave-valor à matriz security_result.detection_fields com a chave "Nome da camada". |
LayerRTID |
security_result.detection_fields |
Adicionado como um par de chave-valor à matriz security_result.detection_fields com a chave "LayerRTID". |
localIp |
principal.ip , principal.asset.ip |
Mapeado diretamente a partir do campo localIp . |
login |
principal.user.email_addresses |
Mapeado diretamente a partir do campo login nos registos JSON se corresponder a um formato de endereço de email. |
LogonGuid |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "LogonGuid". |
LogonType |
extensions.auth.mechanism |
Mapeado para um mecanismo de autenticação específico com base no respetivo valor. Se PreAuthType estiver presente, substitui LogonType . Os valores são mapeados da seguinte forma: 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, outro -> MECHANISM_UNSPECIFIED. |
mac |
principal.mac |
Convertido em minúsculas. Unido na matriz principal.mac . |
MandatoryLabel |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "MandatoryLabel". |
Message |
security_result.description , security_result.summary |
Se AccessReason estiver presente, Message é mapeado para security_result.summary e AccessReason é mapeado para security_result.description . Caso contrário, Message é mapeado para security_result.description . |
method |
network.http.method |
Mapeado diretamente a partir do campo method . |
msg |
security_result.description |
Mapeado diretamente a partir do campo msg . |
name |
principal.user.user_display_name |
Mapeado diretamente a partir do campo name nos registos JSON. |
natsrcIp |
principal.nat_ip |
Mapeado diretamente a partir do campo natsrcIp . |
natsrcport |
principal.nat_port |
Convertido num número inteiro. Mapeado diretamente a partir do campo natsrcport . |
network_id |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "ID da rede". |
NewProcessId |
target.process.pid |
Mapeado diretamente a partir do campo NewProcessId . |
NewProcessName |
target.process.file.full_path |
Mapeado diretamente a partir do campo NewProcessName . |
NewSd |
target.resource.attribute.labels |
Adicionado como um par de chave-valor à matriz target.resource.attribute.labels com a chave "New Security Descriptor". |
occurredAt |
metadata.event_timestamp |
Analisado como uma data/hora com o formato ISO8601. |
ObjectName |
target.file.full_path , target.registry.registry_key , target.process.file.full_path , additional.fields |
Se EventID for 4663 e ObjectType for "Process", é mapeado para target.process.file.full_path . Se ObjectType for "Chave", está mapeado para target.registry.registry_key . Caso contrário, é mapeado para target.file.full_path . Para outros eventos, é adicionado como um par de chave-valor à matriz additional.fields com a chave "ObjectName". |
ObjectType |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "ObjectType". Usado para determinar event_type . |
OldSd |
target.resource.attribute.labels |
Adicionado como um par de chave-valor à matriz target.resource.attribute.labels com a chave "Original Security Descriptor". |
organizationId |
principal.resource.id |
Mapeado diretamente a partir do campo organizationId nos registos JSON. |
ParentProcessName |
target.process.parent_process.file.full_path |
Mapeado diretamente a partir do campo ParentProcessName . |
pattern |
security_result.description |
Mapeado diretamente para security_result.description . Usado para determinar security_result.action . |
peer_ident |
target.user.userid |
Mapeado diretamente a partir do campo peer_ident . |
PreAuthType |
extensions.auth.mechanism |
Usado para determinar o mecanismo de autenticação, se presente. Substitui LogonType . |
principalIp |
principal.ip , principal.asset.ip |
Mapeado diretamente a partir do campo principalIp . |
principalMac |
principal.mac |
Convertido em minúsculas. Unido na matriz principal.mac . |
principalPort |
principal.port |
Convertido num número inteiro. Mapeado diretamente a partir do campo principalPort . |
prin_ip2 |
principal.ip , principal.asset.ip |
Mapeado diretamente a partir do campo prin_ip2 . |
prin_url |
principal.url |
Mapeado diretamente a partir do campo prin_url . |
priority |
security_result.priority |
Mapeado para um nível de prioridade com base no respetivo valor: 1 -> HIGH_PRIORITY, 2 -> MEDIUM_PRIORITY, 3 -> LOW_PRIORITY, outro -> UNKNOWN_PRIORITY. |
ProcessID |
principal.process.pid |
Convertido numa string. Mapeado diretamente a partir do campo ProcessID . |
ProcessName |
principal.process.file.full_path , target.process.file.full_path |
Se EventID for 4689, é mapeado para target.process.file.full_path . Caso contrário, é mapeado para principal.process.file.full_path . |
prod_log_id |
metadata.product_log_id |
Mapeado diretamente a partir do campo prod_log_id . |
protocol |
network.ip_protocol |
Convertido em maiúsculas. Se for um número, é convertido no nome do protocolo IP correspondente. Se for "ICMP6", é substituído por "ICMP". Mapeado diretamente a partir do campo protocol . |
ProviderGuid |
metadata.product_deployment_id |
Mapeado diretamente a partir do campo ProviderGuid . |
query |
network.dns.questions.name |
Mapeado diretamente a partir do campo query . |
query_type |
network.dns.questions.type |
O nome foi mudado para question.type e o elemento foi unido à matriz network.dns.questions . Mapeado para um valor numérico com base no tipo de consulta DHCP. |
radio |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "radio". |
reason |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "reason". |
rec_bytes |
network.received_bytes |
Convertido num número inteiro sem sinal. Mapeado diretamente a partir do campo rec_bytes . |
RecordNumber |
metadata.product_log_id |
Convertido numa string. Mapeado diretamente a partir do campo RecordNumber . |
RelativeTargetName |
target.process.file.full_path |
Mapeado diretamente a partir do campo RelativeTargetName . |
response_ip |
principal.ip , principal.asset.ip |
Mapeado diretamente a partir do campo response_ip . |
rssi |
intermediary.asset.product_object_id |
Mapeado diretamente a partir do campo rssi . |
sc_action |
security_result.action_details |
Mapeado diretamente a partir do campo sc_action . |
sec_action |
security_result.action |
Unido na matriz security_result.action . |
server_ip |
client_ip |
Mapeado diretamente para o campo client_ip . |
Severity |
security_result.severity |
Mapeado para um nível de gravidade com base no respetivo valor: "Info" -> INFORMATIONAL, "Error" -> ERROR, "Warning" -> MEDIUM, outro -> UNKNOWN_SEVERITY. |
sha256 |
target.file.sha256 |
Mapeado diretamente a partir do campo sha256 . |
signature |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "signature". |
SourceAddress |
principal.ip , principal.asset.ip |
Mapeado diretamente a partir do campo SourceAddress . |
SourceHandleId |
src.resource.id |
Mapeado diretamente a partir do campo SourceHandleId . |
SourceModuleName |
observer.labels |
Adicionado como um par de chave-valor à matriz observer.labels com a chave "SourceModuleName". |
SourceModuleType |
observer.application |
Mapeado diretamente a partir do campo SourceModuleType . |
SourcePort |
principal.port |
Convertido num número inteiro. Mapeado diretamente a partir do campo SourcePort . |
SourceProcessId |
src.process.pid |
Mapeado diretamente a partir do campo SourceProcessId . |
source_client_ip |
client_ip |
Mapeado diretamente para o campo client_ip . |
sport |
principal.port |
Convertido num número inteiro. Mapeado diretamente a partir do campo sport . |
src |
principal.ip , principal.asset.ip |
Mapeado diretamente a partir do campo src . |
ssid |
network.session_id |
Mapeado diretamente a partir do campo ssid nos registos JSON. |
ssidName |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "ssidName". |
state |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "state". |
Status |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "Status". |
status_code |
network.http.response_code |
Convertido num número inteiro. Mapeado diretamente a partir do campo status_code . |
SubjectDomainName |
principal.administrative_domain |
Mapeado diretamente a partir do campo SubjectDomainName . |
SubjectLogonId |
principal.resource.attribute.labels |
Adicionado como um par de chave-valor à matriz principal.resource.attribute.labels com a chave "SubjectLogonId". |
SubjectUserName |
principal.user.userid |
Mapeado diretamente a partir do campo SubjectUserName . |
SubjectUserSid |
principal.user.windows_sid |
Mapeado diretamente a partir do campo SubjectUserSid . |
targetHost |
target.hostname , target.asset.hostname |
Convertido num endereço IP, se possível. Caso contrário, é analisado para extrair o nome de anfitrião e mapeado para target.hostname e target.asset.hostname . |
TargetHandleId |
target.resource.id |
Mapeado diretamente a partir do campo TargetHandleId . |
TargetLogonId |
principal.resource.attribute.labels |
Adicionado como um par de chave-valor à matriz principal.resource.attribute.labels com a chave "TargetLogonId" se for diferente de SubjectLogonId . |
TargetProcessId |
target.process.pid |
Mapeado diretamente a partir do campo TargetProcessId . |
TargetUserName |
target.user.userid |
Mapeado diretamente a partir do campo TargetUserName . |
TargetUserSid |
target.user.windows_sid |
Mapeado diretamente a partir do campo TargetUserSid . |
Task |
additional.fields |
Convertido numa string. Adicionado como um par de chave-valor à matriz additional.fields com a chave "Task". |
timestamp |
metadata.event_timestamp |
O campo de segundos é usado para criar uma data/hora. |
ts |
metadata.event_timestamp |
Se ts estiver vazio, é criado combinando tsDate , tsTime e tsTZ . Se contiver " |
type |
security_result.summary , metadata.product_event_type |
Mapeado diretamente a partir do campo type nos registos JSON. Também usado como eventSummary e metadata.product_event_type em alguns casos. |
url |
target.url , principal.url |
Mapeado diretamente a partir do campo url . |
url1 |
target.url |
Mapeado diretamente a partir do campo url1 . |
user |
target.user.group_identifiers |
Unido na matriz target.user.group_identifiers . |
user_id |
target.user.userid |
Mapeado diretamente a partir do campo user_id . |
UserID |
principal.user.windows_sid |
Mapeado diretamente a partir do campo UserID . |
UserName |
principal.user.userid |
Mapeado diretamente a partir do campo UserName . |
user_agent |
network.http.user_agent |
Mapeado diretamente a partir do campo user_agent . |
userId |
target.user.userid |
Mapeado diretamente a partir do campo userId . |
vap |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "vap". |
VirtualAccount |
security_result.about.labels |
Adicionado como um par de chave-valor à matriz security_result.about.labels com a chave "VirtualAccount". |
wiredLastSeen |
security_result.detection_fields |
Convertido numa string. Adicionado como um par de chave-valor à matriz security_result.detection_fields com a chave "wiredLastSeen". |
wiredMacs |
intermediary.mac |
Convertido em minúsculas. Unido na matriz intermediary.mac . |
WorkstationName |
principal.hostname , principal.asset.hostname |
Mapeado diretamente a partir do campo WorkstationName . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.