Raccogliere i log di Cisco Meraki
Questo documento descrive come raccogliere i log di Cisco Meraki utilizzando un forwarder Google Security Operations.
Per ulteriori informazioni, consulta Importazione dei dati in Google Security Operations.
Un'etichetta di importazione identifica il parser che normalizza i dati dei log non elaborati
in formato UDM strutturato. Le informazioni contenute in questo documento si applicano al parser
con l'etichetta di importazione CISCO_MERAKI
.
Configurare Cisco Meraki
- Accedi alla dashboard di Cisco Meraki.
- Nella dashboard Cisco Meraki, seleziona Configure > Alerts & administration (Configura > Avvisi e amministrazione).
- Nella sezione Logging, segui questi passaggi:
- Nel campo IP server, specifica l'indirizzo IP del forwarder di Google Security Operations.
- Nel campo Porta, specifica il valore della porta, ad esempio 514.
- Nel campo Ruoli, seleziona le quattro opzioni disponibili per ottenere tutti i log o seleziona una combinazione in base alle tue esigenze.
- Fai clic su Salva modifiche.
Configura il forwarder e syslog di Google Security Operations per importare i log di Cisco Meraki
- Vai a Impostazioni SIEM > Forwarder.
- Fai clic su Aggiungi nuovo inoltro.
- Nel campo Nome forwarder, inserisci un nome univoco per il forwarder.
- Fai clic su Invia. Il forwarder viene aggiunto e viene visualizzata la finestra Aggiungi configurazione del raccoglitore.
- Nel campo Nome del raccoglitore, digita un nome.
- Seleziona Cisco Meraki come Tipo di log.
- Seleziona Syslog come Tipo di raccoglitore.
- Configura i seguenti parametri di input obbligatori:
- Protocollo: specifica il protocollo.
- Indirizzo: specifica l'indirizzo IP o il nome host di destinazione in cui risiede il raccoglitore e ascolta i dati syslog.
- Porta: specifica la porta di destinazione in cui risiede il raccoglitore e ascolta i dati syslog.
- Fai clic su Invia.
Per saperne di più sui forwarder di Google Security Operations, consulta la documentazione sui forwarder di Google Security Operations.
Per informazioni sui requisiti per ciascun tipo di forwarder, consulta Configurazione del forwarder per tipo.
Se riscontri problemi durante la creazione degli inoltri, contatta l'assistenza di Google Security Operations.
Riferimento alla mappatura dei campi
Questo parser gestisce i log Cisco Meraki (identificati come Cisco/Meraki) in formato SYSLOG o JSON, normalizzandoli in UDM. Utilizza pattern grok per analizzare i messaggi syslog e la logica condizionale basata sul campo eventType
per estrarre le informazioni pertinenti, gestendo vari tipi di eventi come flussi di rete, richieste URL, eventi firewall ed eventi generici, mappandoli ai campi UDM appropriati e arricchendo i dati con un contesto aggiuntivo. Se l'input non è syslog, tenta di analizzarlo come JSON e mappa i campi pertinenti in UDM.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
action |
security_result.action |
Il valore viene convertito in maiuscolo. Se il valore è "deny", viene sostituito con "BLOCK". Se sc_action contiene "allow", il valore viene sostituito con "ALLOW". Altrimenti, se decision contiene "block", il valore viene sostituito con "BLOCK". In caso contrario, se authorization è "success", è impostato su "ALLOW", mentre se è "failure", è impostato su "BLOCK". In caso contrario, se pattern è "1 all", "deny all" o "Group Policy Deny", viene impostato su "BLOCK". Se pattern è "consenti tutto", "consenti criteri di gruppo" o "0 tutto", è impostato su "CONSENTI". In caso contrario, è impostato su "UNKNOWN_ACTION". Se decision contiene "block", è impostato su "BLOCK". |
adId |
principal.user.user_display_name |
Mappato direttamente dal campo adId nei log JSON. |
agent |
network.http.user_agent |
Gli apostrofi vengono rimossi. Mappato direttamente dal campo agent . Inoltre, è stato convertito in network.http.parsed_user_agent utilizzando il filtro parseduseragent . |
aid |
network.session_id |
Mappato direttamente dal campo aid . |
appProtocol |
network.application_protocol |
Convertito in maiuscolo. Mappato direttamente dal campo appProtocol . |
attr |
additional.fields |
Aggiunta come coppia chiave-valore all'array additional.fields con la chiave "attr". |
authorization |
security_result.action_details |
Mappato direttamente dal campo authorization nei log JSON. |
band |
additional.fields |
Aggiunta come coppia chiave-valore all'array additional.fields con la chiave "band". |
bssids.bssid |
principal.mac |
Convertito in minuscolo. Unito all'array principal.mac . |
bssids.detectedBy.device |
intermediary.asset.asset_id |
Formattato come "ID dispositivo: |
bssids.detectedBy.rssi |
intermediary.asset.product_object_id |
Convertito in una stringa. |
Channel |
about.resource.attribute.labels |
Aggiunta come coppia chiave-valore all'array about.resource.attribute.labels con la chiave "Channel". |
clientDescription |
additional.fields |
Aggiunta come coppia chiave-valore all'array additional.fields con la chiave "clientDescription". |
clientId |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "clientId". |
clientIp |
principal.ip , principal.asset.ip |
Mappato direttamente dal campo clientIp . |
clientMac |
principal.mac |
Convertito in minuscolo. Mappato direttamente dal campo clientMac nei log JSON. |
client_ip |
principal.ip , principal.asset.ip |
Mappato direttamente dal campo client_ip . |
client_mac |
principal.mac |
Convertito in minuscolo. Mappato direttamente dal campo client_mac . |
code |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "code". |
collection_time |
metadata.event_timestamp |
I campi secondi e nanosecondi vengono combinati per creare un timestamp. |
Conditions |
security_result.about.resource.attribute.labels |
I ritorni a capo, i nuovi valori e le tabulazioni vengono sostituiti con spazi e valori specifici. Il valore modificato viene aggiunto come coppia chiave-valore all'array security_result.about.resource.attribute.labels con la chiave "Conditions". |
decision |
security_result.action |
Se il valore è "blocked", è impostato su "BLOCK". |
desc |
metadata.description |
Mappato direttamente dal campo desc . |
description |
security_result.description |
Mappato direttamente dal campo description nei log JSON. |
DestAddress |
target.ip , target.asset.ip |
Mappato direttamente dal campo DestAddress . |
DestPort |
target.port |
Convertito in un numero intero. Mappato direttamente dal campo DestPort . |
deviceIp |
target.ip |
Mappato direttamente dal campo deviceIp . |
deviceMac |
target.mac |
Convertito in minuscolo. Mappato direttamente dal campo deviceMac . |
deviceName |
target.hostname , target.asset.hostname |
Mappato direttamente dal campo deviceName nei log JSON. |
deviceSerial |
target.asset.hardware.serial_number |
Mappato direttamente dal campo deviceSerial nei log JSON. |
Direction |
network.direction |
I caratteri speciali vengono rimossi e il valore viene mappato a network.direction . |
DisabledPrivilegeList |
target.user.attribute |
I ritorni a capo, i nuovi righi e le tabulazioni vengono sostituiti e il valore modificato viene analizzato come JSON e unito all'oggetto target.user.attribute . |
dport |
target.port |
Convertito in un numero intero. Mappato direttamente dal campo dport . |
dst |
target.ip , target.asset.ip |
Mappato direttamente dal campo dst . |
dstIp |
target.ip , target.asset.ip |
Mappato direttamente dal campo dstIp . |
dstPort |
target.port |
Convertito in un numero intero. Mappato direttamente dal campo dstPort . |
dvc |
intermediary.hostname |
Mappato direttamente dal campo dvc . |
EnabledPrivilegeList |
target.user.attribute |
I ritorni a capo, i nuovi righi e le tabulazioni vengono sostituiti e il valore modificato viene analizzato come JSON e unito all'oggetto target.user.attribute . |
eventData.aid |
principal.asset_id |
Formattato come "ASSET_ID: |
eventData.client_ip |
principal.ip , principal.asset.ip |
Mappato direttamente dal campo eventData.client_ip nei log JSON. |
eventData.client_mac |
principal.mac |
Convertito in minuscolo. Mappato direttamente dal campo eventData.client_mac nei log JSON. |
eventData.group |
principal.group.group_display_name |
Mappato direttamente dal campo eventData.group nei log JSON. |
eventData.identity |
principal.hostname |
Mappato direttamente dal campo eventData.identity nei log JSON. |
eventData.ip |
principal.ip , principal.asset.ip |
Mappato direttamente dal campo eventData.ip nei log JSON. |
EventID |
metadata.product_event_type , security_result.rule_name |
Convertito in una stringa. Mappato a metadata.product_event_type . Utilizzato anche per creare security_result.rule_name nel formato "EventID: event_type e sec_action . |
eventSummary |
security_result.summary , metadata.description |
Mappato direttamente dal campo eventSummary . Utilizzato anche in security_result.description per alcuni eventi. |
eventType |
metadata.product_event_type |
Mappato direttamente dal campo eventType . Utilizzato per determinare quale logica di analisi applicare. |
filename |
principal.process.file.full_path |
Mappato direttamente dal campo filename . |
FilterId |
target.resource.product_object_id |
Mappato direttamente dal campo FilterId per EventID 5447. |
FilterName |
target.resource.name |
Mappato direttamente dal campo FilterName per EventID 5447. |
FilterRTID |
security_result.detection_fields |
Aggiunto come coppia chiave-valore all'array security_result.detection_fields con la chiave "FilterRTID". |
firstSeen |
security_result.detection_fields |
Convertito in una stringa. Aggiunta come coppia chiave-valore all'array security_result.detection_fields con la chiave "firstSeen". |
gatewayDeviceMac |
target.mac |
Convertito in minuscolo. Unito all'array target.mac . |
group |
additional.fields |
Aggiunta come coppia chiave-valore all'array additional.fields con la chiave "group". |
GroupMembership |
target.user |
I ritorni a capo, i nuovi righi, le tabulazioni e i caratteri speciali vengono rimossi. Il valore modificato viene analizzato come JSON e unito all'oggetto target.user . |
Hostname |
principal.hostname , principal.asset.hostname |
Mappato direttamente dal campo Hostname . |
identity |
target.user.userid |
Mappato direttamente dal campo identity . |
instigator |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "instigator". |
int_ip |
intermediary.ip |
Mappato direttamente dal campo int_ip . |
ip_msg |
principal.resource.attribute.labels |
Aggiunto come coppia chiave-valore all'array principal.resource.attribute.labels con la chiave "IP". |
is_8021x |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "is_8021x". |
KeyName |
target.resource.name |
Mappato direttamente dal campo KeyName . |
KeyFilePath |
target.file.full_path |
Mappato direttamente dal campo KeyFilePath . |
lastSeen |
security_result.detection_fields |
Convertito in una stringa. Aggiunto come coppia chiave-valore all'array security_result.detection_fields con la chiave "lastSeen". |
last_known_client_ip |
principal.ip , principal.asset.ip |
Mappato direttamente dal campo last_known_client_ip . |
LayerName |
security_result.detection_fields |
Aggiunto come coppia chiave-valore all'array security_result.detection_fields con la chiave "Layer Name". |
LayerRTID |
security_result.detection_fields |
Aggiunto come coppia chiave-valore all'array security_result.detection_fields con la chiave "LayerRTID". |
localIp |
principal.ip , principal.asset.ip |
Mappato direttamente dal campo localIp . |
login |
principal.user.email_addresses |
Mappato direttamente dal campo login nei log JSON se corrisponde a un formato di indirizzo email. |
LogonGuid |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "LogonGuid". |
LogonType |
extensions.auth.mechanism |
Mappato a un meccanismo di autenticazione specifico in base al suo valore. Se PreAuthType è presente, sostituisce LogonType . I valori sono mappati nel seguente modo: 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 |
Convertito in minuscolo. Unito all'array principal.mac . |
MandatoryLabel |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "MandatoryLabel". |
Message |
security_result.description , security_result.summary |
Se è presente AccessReason , Message viene mappato a security_result.summary e AccessReason viene mappato a security_result.description . In caso contrario, Message viene mappato a security_result.description . |
method |
network.http.method |
Mappato direttamente dal campo method . |
msg |
security_result.description |
Mappato direttamente dal campo msg . |
name |
principal.user.user_display_name |
Mappato direttamente dal campo name nei log JSON. |
natsrcIp |
principal.nat_ip |
Mappato direttamente dal campo natsrcIp . |
natsrcport |
principal.nat_port |
Convertito in un numero intero. Mappato direttamente dal campo natsrcport . |
network_id |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "ID rete". |
NewProcessId |
target.process.pid |
Mappato direttamente dal campo NewProcessId . |
NewProcessName |
target.process.file.full_path |
Mappato direttamente dal campo NewProcessName . |
NewSd |
target.resource.attribute.labels |
Aggiunto come coppia chiave-valore all'array target.resource.attribute.labels con la chiave "New Security Descriptor". |
occurredAt |
metadata.event_timestamp |
Analizzato come timestamp utilizzando il formato ISO8601. |
ObjectName |
target.file.full_path , target.registry.registry_key , target.process.file.full_path , additional.fields |
Se EventID è 4663 e ObjectType è "Process", è mappato a target.process.file.full_path . Se ObjectType è "Key", viene mappato a target.registry.registry_key . In caso contrario, viene mappato a target.file.full_path . Per gli altri eventi, viene aggiunto come coppia chiave-valore all'array additional.fields con la chiave "ObjectName". |
ObjectType |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "ObjectType". Utilizzato per determinare event_type . |
OldSd |
target.resource.attribute.labels |
Aggiunto come coppia chiave-valore all'array target.resource.attribute.labels con la chiave "Original Security Descriptor". |
organizationId |
principal.resource.id |
Mappato direttamente dal campo organizationId nei log JSON. |
ParentProcessName |
target.process.parent_process.file.full_path |
Mappato direttamente dal campo ParentProcessName . |
pattern |
security_result.description |
Mappato direttamente a security_result.description . Utilizzato per determinare security_result.action . |
peer_ident |
target.user.userid |
Mappato direttamente dal campo peer_ident . |
PreAuthType |
extensions.auth.mechanism |
Utilizzato per determinare il meccanismo di autenticazione, se presente. Sostituisce LogonType . |
principalIp |
principal.ip , principal.asset.ip |
Mappato direttamente dal campo principalIp . |
principalMac |
principal.mac |
Convertito in minuscolo. Unito all'array principal.mac . |
principalPort |
principal.port |
Convertito in un numero intero. Mappato direttamente dal campo principalPort . |
prin_ip2 |
principal.ip , principal.asset.ip |
Mappato direttamente dal campo prin_ip2 . |
prin_url |
principal.url |
Mappato direttamente dal campo prin_url . |
priority |
security_result.priority |
Mappato a un livello di priorità in base al suo valore: 1 -> HIGH_PRIORITY, 2 -> MEDIUM_PRIORITY, 3 -> LOW_PRIORITY, altro -> UNKNOWN_PRIORITY. |
ProcessID |
principal.process.pid |
Convertito in una stringa. Mappato direttamente dal campo ProcessID . |
ProcessName |
principal.process.file.full_path , target.process.file.full_path |
Se EventID è 4689, viene mappato a target.process.file.full_path . In caso contrario, viene mappato a principal.process.file.full_path . |
prod_log_id |
metadata.product_log_id |
Mappato direttamente dal campo prod_log_id . |
protocol |
network.ip_protocol |
Convertito in maiuscolo. Se è un numero, viene convertito nel nome del protocollo IP corrispondente. Se è "ICMP6", viene sostituito con "ICMP". Mappato direttamente dal campo protocol . |
ProviderGuid |
metadata.product_deployment_id |
Mappato direttamente dal campo ProviderGuid . |
query |
network.dns.questions.name |
Mappato direttamente dal campo query . |
query_type |
network.dns.questions.type |
Rinominato in question.type e unito all'array network.dns.questions . Mappato a un valore numerico in base al tipo di query DHCP. |
radio |
additional.fields |
Aggiunta come coppia chiave-valore all'array additional.fields con la chiave "radio". |
reason |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "reason". |
rec_bytes |
network.received_bytes |
Convertito in un numero intero senza segno. Mappato direttamente dal campo rec_bytes . |
RecordNumber |
metadata.product_log_id |
Convertito in una stringa. Mappato direttamente dal campo RecordNumber . |
RelativeTargetName |
target.process.file.full_path |
Mappato direttamente dal campo RelativeTargetName . |
response_ip |
principal.ip , principal.asset.ip |
Mappato direttamente dal campo response_ip . |
rssi |
intermediary.asset.product_object_id |
Mappato direttamente dal campo rssi . |
sc_action |
security_result.action_details |
Mappato direttamente dal campo sc_action . |
sec_action |
security_result.action |
Unito all'array security_result.action . |
server_ip |
client_ip |
Mappato direttamente al campo client_ip . |
Severity |
security_result.severity |
Mappato a un livello di gravità in base al suo valore: "Info" -> INFORMATIONAL, "Error" -> ERROR, "Warning" -> MEDIUM, altro -> UNKNOWN_SEVERITY. |
sha256 |
target.file.sha256 |
Mappato direttamente dal campo sha256 . |
signature |
additional.fields |
Aggiunta come coppia chiave-valore all'array additional.fields con la chiave "signature". |
SourceAddress |
principal.ip , principal.asset.ip |
Mappato direttamente dal campo SourceAddress . |
SourceHandleId |
src.resource.id |
Mappato direttamente dal campo SourceHandleId . |
SourceModuleName |
observer.labels |
Aggiunto come coppia chiave-valore all'array observer.labels con la chiave "SourceModuleName". |
SourceModuleType |
observer.application |
Mappato direttamente dal campo SourceModuleType . |
SourcePort |
principal.port |
Convertito in un numero intero. Mappato direttamente dal campo SourcePort . |
SourceProcessId |
src.process.pid |
Mappato direttamente dal campo SourceProcessId . |
source_client_ip |
client_ip |
Mappato direttamente al campo client_ip . |
sport |
principal.port |
Convertito in un numero intero. Mappato direttamente dal campo sport . |
src |
principal.ip , principal.asset.ip |
Mappato direttamente dal campo src . |
ssid |
network.session_id |
Mappato direttamente dal campo ssid nei log JSON. |
ssidName |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "ssidName". |
state |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "state". |
Status |
additional.fields |
Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "Status". |
status_code |
network.http.response_code |
Convertito in un numero intero. Mappato direttamente dal campo status_code . |
SubjectDomainName |
principal.administrative_domain |
Mappato direttamente dal campo SubjectDomainName . |
SubjectLogonId |
principal.resource.attribute.labels |
Aggiunto come coppia chiave-valore all'array principal.resource.attribute.labels con la chiave "SubjectLogonId". |
SubjectUserName |
principal.user.userid |
Mappato direttamente dal campo SubjectUserName . |
SubjectUserSid |
principal.user.windows_sid |
Mappato direttamente dal campo SubjectUserSid . |
targetHost |
target.hostname , target.asset.hostname |
Convertito in un indirizzo IP, se possibile. In caso contrario, viene analizzato per estrarre il nome host e mappato su target.hostname e target.asset.hostname . |
TargetHandleId |
target.resource.id |
Mappato direttamente dal campo TargetHandleId . |
TargetLogonId |
principal.resource.attribute.labels |
Aggiunto come coppia chiave-valore all'array principal.resource.attribute.labels con la chiave"TargetLogonId" se è diverso da SubjectLogonId . |
TargetProcessId |
target.process.pid |
Mappato direttamente dal campo TargetProcessId . |
TargetUserName |
target.user.userid |
Mappato direttamente dal campo TargetUserName . |
TargetUserSid |
target.user.windows_sid |
Mappato direttamente dal campo TargetUserSid . |
Task |
additional.fields |
Convertito in una stringa. Aggiunto come coppia chiave-valore all'array additional.fields con la chiave "Task". |
timestamp |
metadata.event_timestamp |
Il campo dei secondi viene utilizzato per creare un timestamp. |
ts |
metadata.event_timestamp |
Se ts è vuoto, viene creato combinando tsDate , tsTime e tsTZ . Se contiene " |
type |
security_result.summary , metadata.product_event_type |
Mappato direttamente dal campo type nei log JSON. In alcuni casi viene utilizzato anche come eventSummary e metadata.product_event_type . |
url |
target.url , principal.url |
Mappato direttamente dal campo url . |
url1 |
target.url |
Mappato direttamente dal campo url1 . |
user |
target.user.group_identifiers |
Unito all'array target.user.group_identifiers . |
user_id |
target.user.userid |
Mappato direttamente dal campo user_id . |
UserID |
principal.user.windows_sid |
Mappato direttamente dal campo UserID . |
UserName |
principal.user.userid |
Mappato direttamente dal campo UserName . |
user_agent |
network.http.user_agent |
Mappato direttamente dal campo user_agent . |
userId |
target.user.userid |
Mappato direttamente dal campo userId . |
vap |
additional.fields |
Aggiunta come coppia chiave-valore all'array additional.fields con la chiave "vap". |
VirtualAccount |
security_result.about.labels |
Aggiunto come coppia chiave-valore all'array security_result.about.labels con la chiave "VirtualAccount". |
wiredLastSeen |
security_result.detection_fields |
Convertito in una stringa. Aggiunto come coppia chiave-valore all'array security_result.detection_fields con la chiave "wiredLastSeen". |
wiredMacs |
intermediary.mac |
Convertito in minuscolo. Unito all'array intermediary.mac . |
WorkstationName |
principal.hostname , principal.asset.hostname |
Mappato direttamente dal campo WorkstationName . |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.