Coletar registros do Cisco Meraki
Neste documento, descrevemos como coletar registros do Cisco Meraki usando um encaminhador do Google Security Operations.
Para mais informações, consulte Ingestão de dados no Google Security Operations.
Um rótulo de ingestão identifica o analisador que normaliza dados de registro brutos para o formato UDM estruturado. As informações neste documento se aplicam ao analisador
com o rótulo de ingestão CISCO_MERAKI
.
Configurar o Cisco Meraki
- Faça login no painel do Cisco Meraki.
- No painel Cisco Meraki, selecione Configure > Alerts & administration.
- Na seção Logging, 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 receber todos os registros ou selecione qualquer combinação de acordo com sua necessidade.
- Clique em Salvar alterações.
Configurar o encaminhador e o syslog do Google Security Operations para ingerir registros do Cisco Meraki
- Acesse Configurações do SIEM > Encaminhadores.
- Clique em Adicionar novo encaminhador.
- No campo Nome do encaminhador, insira um nome exclusivo para ele.
- Clique em Enviar. O encaminhador é adicionado, e a janela Adicionar configuração do coletor aparece.
- No campo Nome do coletor, digite um nome.
- Selecione Cisco Meraki como o Tipo de registro.
- 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 do host de destino em que o coletor reside e aguarda dados do syslog.
- Porta: especifique a porta de destino em que o coletor reside e detecta dados do syslog.
- Clique em Enviar.
Para mais informações sobre encaminhadores do Google Security Operations, consulte a documentação sobre encaminhadores do Google Security Operations.
Para informações sobre os requisitos de cada tipo de encaminhador, consulte Configuração do encaminhador por tipo.
Se você tiver problemas ao criar encaminhadores, entre em contato com o suporte do Google Security Operations.
Referência de mapeamento de campos
Esse analisador processa registros do Cisco Meraki (identificados como Cisco/Meraki) nos formatos SYSLOG ou JSON, normalizando-os para UDM. Ele 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, solicitações de URL, eventos de firewall e eventos genéricos, mapeando-os para campos UDM apropriados e enriquecendo os dados com mais contexto. Se a entrada não for syslog, ela tentará analisá-la como JSON e mapear os campos relevantes para o UDM.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
action |
security_result.action |
O valor é convertido em maiúsculas. Se o valor for "deny", ele será substituído por "BLOCK". Se sc_action contiver "allow", o valor será substituído por "ALLOW". Caso contrário, se decision contiver "block", o valor será substituído por "BLOCK". Caso contrário, se authorization for "success", ele será definido como "ALLOW", e se for "failure", será definido como "BLOCK". Caso contrário, se pattern for "1 all", "deny all" ou "Group Policy Deny", ele será definido como "BLOCK". Se pattern for "permitir tudo", "Permitir política de grupo" ou "0 tudo", ele será definido como "PERMITIR". Caso contrário, ela será definida como "UNKNOWN_ACTION". Se decision contiver "block", ele será definido como "BLOCK". |
adId |
principal.user.user_display_name |
Mapeado diretamente do campo adId nos registros JSON. |
agent |
network.http.user_agent |
Os apóstrofos são removidos. Mapeado diretamente do campo agent . Também convertido para network.http.parsed_user_agent usando o filtro parseduseragent . |
aid |
network.session_id |
Mapeado diretamente do campo aid . |
appProtocol |
network.application_protocol |
Convertido para maiúsculas. Mapeado diretamente 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 do campo authorization nos registros JSON. |
band |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "band". |
bssids.bssid |
principal.mac |
Convertido para minúsculas. Unidos à matriz principal.mac . |
bssids.detectedBy.device |
intermediary.asset.asset_id |
Formatado como "ID do dispositivo: |
bssids.detectedBy.rssi |
intermediary.asset.product_object_id |
Convertido em uma 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 do campo clientIp . |
clientMac |
principal.mac |
Convertido para minúsculas. Mapeado diretamente do campo clientMac nos registros JSON. |
client_ip |
principal.ip , principal.asset.ip |
Mapeado diretamente do campo client_ip . |
client_mac |
principal.mac |
Convertido para minúsculas. Mapeado diretamente 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 "seconds" e "nanos" são combinados para criar um carimbo de data/hora. |
Conditions |
security_result.about.resource.attribute.labels |
Retornos de carro, novas linhas e tabulações são substituídos por espaços, e 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 "Condições". |
decision |
security_result.action |
Se o valor for "blocked", ele será definido como "BLOCK". |
desc |
metadata.description |
Mapeado diretamente do campo desc . |
description |
security_result.description |
Mapeado diretamente do campo description nos registros JSON. |
DestAddress |
target.ip , target.asset.ip |
Mapeado diretamente do campo DestAddress . |
DestPort |
target.port |
Convertido em um número inteiro. Mapeado diretamente do campo DestPort . |
deviceIp |
target.ip |
Mapeado diretamente do campo deviceIp . |
deviceMac |
target.mac |
Convertido para minúsculas. Mapeado diretamente do campo deviceMac . |
deviceName |
target.hostname , target.asset.hostname |
Mapeado diretamente do campo deviceName nos registros JSON. |
deviceSerial |
target.asset.hardware.serial_number |
Mapeado diretamente do campo deviceSerial nos registros JSON. |
Direction |
network.direction |
Os caracteres 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 mesclado ao objeto target.user.attribute . |
dport |
target.port |
Convertido em um número inteiro. Mapeado diretamente do campo dport . |
dst |
target.ip , target.asset.ip |
Mapeado diretamente do campo dst . |
dstIp |
target.ip , target.asset.ip |
Mapeado diretamente do campo dstIp . |
dstPort |
target.port |
Convertido em um número inteiro. Mapeado diretamente do campo dstPort . |
dvc |
intermediary.hostname |
Mapeado diretamente 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 mesclado ao objeto target.user.attribute . |
eventData.aid |
principal.asset_id |
Formatado como "ASSET_ID: |
eventData.client_ip |
principal.ip , principal.asset.ip |
Mapeado diretamente do campo eventData.client_ip nos registros JSON. |
eventData.client_mac |
principal.mac |
Convertido para minúsculas. Mapeado diretamente do campo eventData.client_mac nos registros JSON. |
eventData.group |
principal.group.group_display_name |
Mapeado diretamente do campo eventData.group nos registros JSON. |
eventData.identity |
principal.hostname |
Mapeado diretamente do campo eventData.identity nos registros JSON. |
eventData.ip |
principal.ip , principal.asset.ip |
Mapeado diretamente do campo eventData.ip nos registros JSON. |
EventID |
metadata.product_event_type , security_result.rule_name |
Convertido em uma 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 do campo eventSummary . Também usado no security_result.description para alguns eventos. |
eventType |
metadata.product_event_type |
Mapeado diretamente do campo eventType . Usado para determinar qual lógica de análise aplicar. |
filename |
principal.process.file.full_path |
Mapeado diretamente do campo filename . |
FilterId |
target.resource.product_object_id |
Mapeado diretamente do campo FilterId para EventID 5447. |
FilterName |
target.resource.name |
Mapeado diretamente do campo FilterName para 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 em uma string. Adicionado como um par de chave-valor à matriz security_result.detection_fields com a chave "firstSeen". |
gatewayDeviceMac |
target.mac |
Convertido para minúsculas. Unidos à matriz target.mac . |
group |
additional.fields |
Adicionado como um par de chave-valor à matriz additional.fields com a chave "group". |
GroupMembership |
target.user |
Retornos de carro, novas linhas, tabulações e caracteres especiais são removidos. O valor modificado é analisado como JSON e mesclado ao objeto target.user . |
Hostname |
principal.hostname , principal.asset.hostname |
Mapeado diretamente do campo Hostname . |
identity |
target.user.userid |
Mapeado diretamente 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 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 do campo KeyName . |
KeyFilePath |
target.file.full_path |
Mapeado diretamente do campo KeyFilePath . |
lastSeen |
security_result.detection_fields |
Convertido em uma 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 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 do campo localIp . |
login |
principal.user.email_addresses |
Mapeado diretamente do campo login nos registros JSON se corresponder a um formato de endereço de e-mail. |
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 valor dele. Se PreAuthType estiver presente, ele vai substituir 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 para minúsculas. Unidos à 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 será mapeado para security_result.summary e AccessReason será mapeado para security_result.description . Caso contrário, Message será mapeado para security_result.description . |
method |
network.http.method |
Mapeado diretamente do campo method . |
msg |
security_result.description |
Mapeado diretamente do campo msg . |
name |
principal.user.user_display_name |
Mapeado diretamente do campo name nos registros JSON. |
natsrcIp |
principal.nat_ip |
Mapeado diretamente do campo natsrcIp . |
natsrcport |
principal.nat_port |
Convertido em um número inteiro. Mapeado diretamente 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 do campo NewProcessId . |
NewProcessName |
target.process.file.full_path |
Mapeado diretamente 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 um carimbo de data/hora usando 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", ele será mapeado para target.process.file.full_path . Se ObjectType for "Key", ele será mapeado para target.registry.registry_key . Caso contrário, ele será mapeado para target.file.full_path . Para outros eventos, ele é 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 do campo organizationId nos registros JSON. |
ParentProcessName |
target.process.parent_process.file.full_path |
Mapeado diretamente 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 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 do campo principalIp . |
principalMac |
principal.mac |
Convertido para minúsculas. Unidos à matriz principal.mac . |
principalPort |
principal.port |
Convertido em um número inteiro. Mapeado diretamente do campo principalPort . |
prin_ip2 |
principal.ip , principal.asset.ip |
Mapeado diretamente do campo prin_ip2 . |
prin_url |
principal.url |
Mapeado diretamente do campo prin_url . |
priority |
security_result.priority |
Mapeado para um nível de prioridade com base no valor: 1 -> HIGH_PRIORITY, 2 -> MEDIUM_PRIORITY, 3 -> LOW_PRIORITY, outro -> UNKNOWN_PRIORITY. |
ProcessID |
principal.process.pid |
Convertido em uma string. Mapeado diretamente do campo ProcessID . |
ProcessName |
principal.process.file.full_path , target.process.file.full_path |
Se EventID for 4689, ele será mapeado para target.process.file.full_path . Caso contrário, ele será mapeado para principal.process.file.full_path . |
prod_log_id |
metadata.product_log_id |
Mapeado diretamente do campo prod_log_id . |
protocol |
network.ip_protocol |
Convertido para maiúsculas. Se for um número, ele será convertido no nome do protocolo IP correspondente. Se for "ICMP6", ele será substituído por "ICMP". Mapeado diretamente do campo protocol . |
ProviderGuid |
metadata.product_deployment_id |
Mapeado diretamente do campo ProviderGuid . |
query |
network.dns.questions.name |
Mapeado diretamente do campo query . |
query_type |
network.dns.questions.type |
Renomeado como question.type e mesclado na 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 em um número inteiro sem sinal. Mapeado diretamente do campo rec_bytes . |
RecordNumber |
metadata.product_log_id |
Convertido em uma string. Mapeado diretamente do campo RecordNumber . |
RelativeTargetName |
target.process.file.full_path |
Mapeado diretamente do campo RelativeTargetName . |
response_ip |
principal.ip , principal.asset.ip |
Mapeado diretamente do campo response_ip . |
rssi |
intermediary.asset.product_object_id |
Mapeado diretamente do campo rssi . |
sc_action |
security_result.action_details |
Mapeado diretamente do campo sc_action . |
sec_action |
security_result.action |
Unidos à 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 valor: "Info" -> INFORMATIONAL, "Error" -> ERROR, "Warning" -> MEDIUM, other -> UNKNOWN_SEVERITY. |
sha256 |
target.file.sha256 |
Mapeado diretamente 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 do campo SourceAddress . |
SourceHandleId |
src.resource.id |
Mapeado diretamente 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 do campo SourceModuleType . |
SourcePort |
principal.port |
Convertido em um número inteiro. Mapeado diretamente do campo SourcePort . |
SourceProcessId |
src.process.pid |
Mapeado diretamente do campo SourceProcessId . |
source_client_ip |
client_ip |
Mapeado diretamente para o campo client_ip . |
sport |
principal.port |
Convertido em um número inteiro. Mapeado diretamente do campo sport . |
src |
principal.ip , principal.asset.ip |
Mapeado diretamente do campo src . |
ssid |
network.session_id |
Mapeado diretamente do campo ssid nos registros 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 em um número inteiro. Mapeado diretamente do campo status_code . |
SubjectDomainName |
principal.administrative_domain |
Mapeado diretamente 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 do campo SubjectUserName . |
SubjectUserSid |
principal.user.windows_sid |
Mapeado diretamente do campo SubjectUserSid . |
targetHost |
target.hostname , target.asset.hostname |
Convertido em um endereço IP, se possível. Caso contrário, será analisado para extrair o nome do host e mapeado para target.hostname e target.asset.hostname . |
TargetHandleId |
target.resource.id |
Mapeado diretamente 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 do campo TargetProcessId . |
TargetUserName |
target.user.userid |
Mapeado diretamente do campo TargetUserName . |
TargetUserSid |
target.user.windows_sid |
Mapeado diretamente do campo TargetUserSid . |
Task |
additional.fields |
Convertido em uma string. Adicionado como um par de chave-valor à matriz additional.fields com a chave "Task". |
timestamp |
metadata.event_timestamp |
O campo "seconds" é usado para criar um carimbo de data/hora. |
ts |
metadata.event_timestamp |
Se ts estiver vazio, ele será criado combinando tsDate , tsTime e tsTZ . Se ele contiver " |
type |
security_result.summary , metadata.product_event_type |
Mapeado diretamente do campo type nos registros JSON. Também usado como eventSummary e metadata.product_event_type em alguns casos. |
url |
target.url , principal.url |
Mapeado diretamente do campo url . |
url1 |
target.url |
Mapeado diretamente do campo url1 . |
user |
target.user.group_identifiers |
Unidos à matriz target.user.group_identifiers . |
user_id |
target.user.userid |
Mapeado diretamente do campo user_id . |
UserID |
principal.user.windows_sid |
Mapeado diretamente do campo UserID . |
UserName |
principal.user.userid |
Mapeado diretamente do campo UserName . |
user_agent |
network.http.user_agent |
Mapeado diretamente do campo user_agent . |
userId |
target.user.userid |
Mapeado diretamente 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 em uma string. Adicionado como um par de chave-valor à matriz security_result.detection_fields com a chave "wiredLastSeen". |
wiredMacs |
intermediary.mac |
Convertido para minúsculas. Unidos à matriz intermediary.mac . |
WorkstationName |
principal.hostname , principal.asset.hostname |
Mapeado diretamente do campo WorkstationName . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.