Collecter les journaux Cisco Meraki
Ce document explique comment collecter les journaux Cisco Meraki à l'aide d'un transmetteur Google Security Operations.
Pour en savoir plus, consultez Ingestion de données dans Google Security Operations.
Un libellé d'ingestion identifie l'analyseur qui normalise les données de journaux brutes au format UDM structuré. Les informations de ce document s'appliquent au parseur avec le libellé d'ingestion CISCO_MERAKI
.
Configurer Cisco Meraki
- Connectez-vous au tableau de bord Cisco Meraki.
- Dans le tableau de bord Cisco Meraki, sélectionnez Configurer > Alertes et administration.
- Dans la section Journalisation, procédez comme suit :
- Dans le champ Adresse IP du serveur, spécifiez l'adresse IP du redirecteur Google Security Operations.
- Dans le champ Port, spécifiez la valeur du port, par exemple 514.
- Dans le champ Rôles, sélectionnez les quatre options disponibles pour obtenir tous les journaux ou sélectionnez la combinaison de votre choix.
- Cliquez sur Enregistrer les modifications.
Configurer le redirecteur Google Security Operations et syslog pour ingérer les journaux Cisco Meraki
- Accédez à Paramètres SIEM > Transférateurs.
- Cliquez sur Ajouter un nouveau transfert.
- Dans le champ Nom du transitaire, saisissez un nom unique pour le transitaire.
- Cliquez sur Envoyer. Le redirecteur est ajouté et la fenêtre Ajouter une configuration de collecteur s'affiche.
- Dans le champ Nom du collecteur, saisissez un nom.
- Sélectionnez Cisco Meraki comme Type de journal.
- Sélectionnez Syslog comme type de collecteur.
- Configurez les paramètres d'entrée obligatoires suivants :
- Protocole : spécifiez le protocole.
- Adresse : spécifiez l'adresse IP ou le nom d'hôte cible où réside le collecteur et où il écoute les données syslog.
- Port : spécifiez le port cible sur lequel le collecteur réside et écoute les données syslog.
- Cliquez sur Envoyer.
Pour en savoir plus sur les redirecteurs Google Security Operations, consultez la documentation sur les redirecteurs Google Security Operations.
Pour en savoir plus sur les exigences de chaque type de redirecteur, consultez Configuration des redirecteurs par type.
Si vous rencontrez des problèmes lors de la création de transferts, contactez l'assistance Google Security Operations.
Référence du mappage de champs
Ce parseur gère les journaux Cisco Meraki (identifiés comme Cisco/Meraki) au format SYSLOG ou JSON, en les normalisant au format UDM. Il utilise des modèles grok pour analyser les messages syslog et une logique conditionnelle basée sur le champ eventType
pour extraire les informations pertinentes, en gérant différents types d'événements tels que les flux réseau, les requêtes d'URL, les événements de pare-feu et les événements génériques. Il les mappe aux champs UDM appropriés et enrichit les données avec un contexte supplémentaire. Si l'entrée n'est pas au format syslog, elle tente de l'analyser au format JSON et mappe les champs pertinents à l'UDM.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
action |
security_result.action |
La valeur est convertie en majuscules. Si la valeur est "deny", elle est remplacée par "BLOCK". Si sc_action contient "allow", la valeur est remplacée par "ALLOW". Sinon, si decision contient "block", la valeur est remplacée par "BLOCK". Sinon, si authorization est défini sur "success", il est défini sur "ALLOW" (AUTORISER), et s'il est défini sur "failure" (ÉCHEC), il est défini sur "BLOCK" (BLOQUER). Sinon, si pattern est défini sur "1 all", "deny all" ou "Group Policy Deny", il est défini sur "BLOCK". Si pattern est défini sur "allow all" (tout autoriser), "Group Policy Allow" (Autorisation de la stratégie de groupe) ou "0 all" (0 tout), la valeur est définie sur "ALLOW" (AUTORISER). Sinon, la valeur est définie sur "UNKNOWN_ACTION". Si decision contient "block", la valeur est définie sur "BLOCK". |
adId |
principal.user.user_display_name |
Mappé directement à partir du champ adId dans les journaux JSON. |
agent |
network.http.user_agent |
Les apostrophes sont supprimées. Mappé directement à partir du champ agent . Également converti en network.http.parsed_user_agent à l'aide du filtre parseduseragent . |
aid |
network.session_id |
Mappé directement à partir du champ aid . |
appProtocol |
network.application_protocol |
Converti en majuscules. Mappé directement à partir du champ appProtocol . |
attr |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "attr". |
authorization |
security_result.action_details |
Mappé directement à partir du champ authorization dans les journaux JSON. |
band |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "band". |
bssids.bssid |
principal.mac |
Converti en minuscules. Fusionné dans le tableau principal.mac . |
bssids.detectedBy.device |
intermediary.asset.asset_id |
Format : "ID de l'appareil : |
bssids.detectedBy.rssi |
intermediary.asset.product_object_id |
Converti en chaîne. |
Channel |
about.resource.attribute.labels |
Ajouté en tant que paire clé-valeur au tableau about.resource.attribute.labels avec la clé "Channel". |
clientDescription |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "clientDescription". |
clientId |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "clientId". |
clientIp |
principal.ip , principal.asset.ip |
Mappé directement à partir du champ clientIp . |
clientMac |
principal.mac |
Converti en minuscules. Mappé directement à partir du champ clientMac dans les journaux JSON. |
client_ip |
principal.ip , principal.asset.ip |
Mappé directement à partir du champ client_ip . |
client_mac |
principal.mac |
Converti en minuscules. Mappé directement à partir du champ client_mac . |
code |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "code". |
collection_time |
metadata.event_timestamp |
Les champs "seconds" et "nanos" sont combinés pour créer un code temporel. |
Conditions |
security_result.about.resource.attribute.labels |
Les retours chariot, les retours à la ligne et les tabulations sont remplacés par des espaces, et des valeurs spécifiques sont substituées. La valeur modifiée est ajoutée en tant que paire clé-valeur au tableau security_result.about.resource.attribute.labels avec la clé "Conditions". |
decision |
security_result.action |
Si la valeur est "blocked", elle est définie sur "BLOCK". |
desc |
metadata.description |
Mappé directement à partir du champ desc . |
description |
security_result.description |
Mappé directement à partir du champ description dans les journaux JSON. |
DestAddress |
target.ip , target.asset.ip |
Mappé directement à partir du champ DestAddress . |
DestPort |
target.port |
Converti en entier. Mappé directement à partir du champ DestPort . |
deviceIp |
target.ip |
Mappé directement à partir du champ deviceIp . |
deviceMac |
target.mac |
Converti en minuscules. Mappé directement à partir du champ deviceMac . |
deviceName |
target.hostname , target.asset.hostname |
Mappé directement à partir du champ deviceName dans les journaux JSON. |
deviceSerial |
target.asset.hardware.serial_number |
Mappé directement à partir du champ deviceSerial dans les journaux JSON. |
Direction |
network.direction |
Les caractères spéciaux sont supprimés et la valeur est mappée sur network.direction . |
DisabledPrivilegeList |
target.user.attribute |
Les retours chariot, les sauts de ligne et les tabulations sont remplacés, et la valeur modifiée est analysée en tant que JSON et fusionnée dans l'objet target.user.attribute . |
dport |
target.port |
Converti en entier. Mappé directement à partir du champ dport . |
dst |
target.ip , target.asset.ip |
Mappé directement à partir du champ dst . |
dstIp |
target.ip , target.asset.ip |
Mappé directement à partir du champ dstIp . |
dstPort |
target.port |
Converti en entier. Mappé directement à partir du champ dstPort . |
dvc |
intermediary.hostname |
Mappé directement à partir du champ dvc . |
EnabledPrivilegeList |
target.user.attribute |
Les retours chariot, les sauts de ligne et les tabulations sont remplacés, et la valeur modifiée est analysée en tant que JSON et fusionnée dans l'objet target.user.attribute . |
eventData.aid |
principal.asset_id |
Format : "ASSET_ID: |
eventData.client_ip |
principal.ip , principal.asset.ip |
Mappé directement à partir du champ eventData.client_ip dans les journaux JSON. |
eventData.client_mac |
principal.mac |
Converti en minuscules. Mappé directement à partir du champ eventData.client_mac dans les journaux JSON. |
eventData.group |
principal.group.group_display_name |
Mappé directement à partir du champ eventData.group dans les journaux JSON. |
eventData.identity |
principal.hostname |
Mappé directement à partir du champ eventData.identity dans les journaux JSON. |
eventData.ip |
principal.ip , principal.asset.ip |
Mappé directement à partir du champ eventData.ip dans les journaux JSON. |
EventID |
metadata.product_event_type , security_result.rule_name |
Converti en chaîne. Associé à metadata.product_event_type . Également utilisé pour créer security_result.rule_name au format "EventID: event_type et sec_action . |
eventSummary |
security_result.summary , metadata.description |
Mappé directement à partir du champ eventSummary . Également utilisé dans security_result.description pour certains événements. |
eventType |
metadata.product_event_type |
Mappé directement à partir du champ eventType . Permet de déterminer la logique d'analyse à appliquer. |
filename |
principal.process.file.full_path |
Mappé directement à partir du champ filename . |
FilterId |
target.resource.product_object_id |
Mappé directement à partir du champ FilterId pour l'EventID 5447. |
FilterName |
target.resource.name |
Mappé directement à partir du champ FilterName pour l'EventID 5447. |
FilterRTID |
security_result.detection_fields |
Ajouté en tant que paire clé-valeur au tableau security_result.detection_fields avec la clé "FilterRTID". |
firstSeen |
security_result.detection_fields |
Converti en chaîne. Ajouté en tant que paire clé-valeur au tableau security_result.detection_fields avec la clé "firstSeen". |
gatewayDeviceMac |
target.mac |
Converti en minuscules. Fusionné dans le tableau target.mac . |
group |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "group". |
GroupMembership |
target.user |
Les retours à la ligne, les nouvelles lignes, les tabulations et les caractères spéciaux sont supprimés. La valeur modifiée est analysée en tant que JSON et fusionnée dans l'objet target.user . |
Hostname |
principal.hostname , principal.asset.hostname |
Mappé directement à partir du champ Hostname . |
identity |
target.user.userid |
Mappé directement à partir du champ identity . |
instigator |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "instigator". |
int_ip |
intermediary.ip |
Mappé directement à partir du champ int_ip . |
ip_msg |
principal.resource.attribute.labels |
Ajouté en tant que paire clé-valeur au tableau principal.resource.attribute.labels avec la clé "IPs". |
is_8021x |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "is_8021x". |
KeyName |
target.resource.name |
Mappé directement à partir du champ KeyName . |
KeyFilePath |
target.file.full_path |
Mappé directement à partir du champ KeyFilePath . |
lastSeen |
security_result.detection_fields |
Converti en chaîne. Ajouté en tant que paire clé-valeur au tableau security_result.detection_fields avec la clé "lastSeen". |
last_known_client_ip |
principal.ip , principal.asset.ip |
Mappé directement à partir du champ last_known_client_ip . |
LayerName |
security_result.detection_fields |
Ajouté en tant que paire clé-valeur au tableau security_result.detection_fields avec la clé "Nom de la couche". |
LayerRTID |
security_result.detection_fields |
Ajouté en tant que paire clé-valeur au tableau security_result.detection_fields avec la clé "LayerRTID". |
localIp |
principal.ip , principal.asset.ip |
Mappé directement à partir du champ localIp . |
login |
principal.user.email_addresses |
Mappé directement à partir du champ login dans les journaux JSON s'il correspond à un format d'adresse e-mail. |
LogonGuid |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "LogonGuid". |
LogonType |
extensions.auth.mechanism |
Mappé à un mécanisme d'authentification spécifique en fonction de sa valeur. Si PreAuthType est présent, il remplace LogonType . Les valeurs sont mappées comme suit : 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, autre -> MECHANISM_UNSPECIFIED. |
mac |
principal.mac |
Converti en minuscules. Fusionné dans le tableau principal.mac . |
MandatoryLabel |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "MandatoryLabel". |
Message |
security_result.description , security_result.summary |
Si AccessReason est présent, Message est mappé sur security_result.summary et AccessReason est mappé sur security_result.description . Sinon, Message est mappé sur security_result.description . |
method |
network.http.method |
Mappé directement à partir du champ method . |
msg |
security_result.description |
Mappé directement à partir du champ msg . |
name |
principal.user.user_display_name |
Mappé directement à partir du champ name dans les journaux JSON. |
natsrcIp |
principal.nat_ip |
Mappé directement à partir du champ natsrcIp . |
natsrcport |
principal.nat_port |
Converti en entier. Mappé directement à partir du champ natsrcport . |
network_id |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "Network ID" (ID du réseau). |
NewProcessId |
target.process.pid |
Mappé directement à partir du champ NewProcessId . |
NewProcessName |
target.process.file.full_path |
Mappé directement à partir du champ NewProcessName . |
NewSd |
target.resource.attribute.labels |
Ajouté en tant que paire clé-valeur au tableau target.resource.attribute.labels avec la clé "New Security Descriptor" (Nouveau descripteur de sécurité). |
occurredAt |
metadata.event_timestamp |
Analysé en tant que code temporel au format ISO8601. |
ObjectName |
target.file.full_path , target.registry.registry_key , target.process.file.full_path , additional.fields |
Si EventID est défini sur 4663 et ObjectType sur "Process", il est mappé sur target.process.file.full_path . Si ObjectType est "Key", il est mappé sur target.registry.registry_key . Sinon, il est mappé sur target.file.full_path . Pour les autres événements, il est ajouté en tant que paire clé/valeur au tableau additional.fields avec la clé "ObjectName". |
ObjectType |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "ObjectType". Utilisé pour déterminer event_type . |
OldSd |
target.resource.attribute.labels |
Ajouté en tant que paire clé-valeur au tableau target.resource.attribute.labels avec la clé "Original Security Descriptor" (Descripteur de sécurité d'origine). |
organizationId |
principal.resource.id |
Mappé directement à partir du champ organizationId dans les journaux JSON. |
ParentProcessName |
target.process.parent_process.file.full_path |
Mappé directement à partir du champ ParentProcessName . |
pattern |
security_result.description |
Mappé directement sur security_result.description . Utilisé pour déterminer security_result.action . |
peer_ident |
target.user.userid |
Mappé directement à partir du champ peer_ident . |
PreAuthType |
extensions.auth.mechanism |
Utilisé pour déterminer le mécanisme d'authentification, le cas échéant. Ignore LogonType . |
principalIp |
principal.ip , principal.asset.ip |
Mappé directement à partir du champ principalIp . |
principalMac |
principal.mac |
Converti en minuscules. Fusionné dans le tableau principal.mac . |
principalPort |
principal.port |
Converti en entier. Mappé directement à partir du champ principalPort . |
prin_ip2 |
principal.ip , principal.asset.ip |
Mappé directement à partir du champ prin_ip2 . |
prin_url |
principal.url |
Mappé directement à partir du champ prin_url . |
priority |
security_result.priority |
Mappé à un niveau de priorité en fonction de sa valeur : 1 → HIGH_PRIORITY, 2 → MEDIUM_PRIORITY, 3 → LOW_PRIORITY, autre → UNKNOWN_PRIORITY. |
ProcessID |
principal.process.pid |
Converti en chaîne. Mappé directement à partir du champ ProcessID . |
ProcessName |
principal.process.file.full_path , target.process.file.full_path |
Si EventID est 4689, il est mappé sur target.process.file.full_path . Sinon, il est mappé sur principal.process.file.full_path . |
prod_log_id |
metadata.product_log_id |
Mappé directement à partir du champ prod_log_id . |
protocol |
network.ip_protocol |
Converti en majuscules. S'il s'agit d'un nombre, il est converti en nom de protocole IP correspondant. Si la valeur est "ICMP6", elle est remplacée par "ICMP". Mappé directement à partir du champ protocol . |
ProviderGuid |
metadata.product_deployment_id |
Mappé directement à partir du champ ProviderGuid . |
query |
network.dns.questions.name |
Mappé directement à partir du champ query . |
query_type |
network.dns.questions.type |
Renommée question.type et fusionnée dans le tableau network.dns.questions . Correspond à une valeur numérique basée sur le type de requête DHCP. |
radio |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "radio". |
reason |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "reason". |
rec_bytes |
network.received_bytes |
Converti en entier non signé. Mappé directement à partir du champ rec_bytes . |
RecordNumber |
metadata.product_log_id |
Converti en chaîne. Mappé directement à partir du champ RecordNumber . |
RelativeTargetName |
target.process.file.full_path |
Mappé directement à partir du champ RelativeTargetName . |
response_ip |
principal.ip , principal.asset.ip |
Mappé directement à partir du champ response_ip . |
rssi |
intermediary.asset.product_object_id |
Mappé directement à partir du champ rssi . |
sc_action |
security_result.action_details |
Mappé directement à partir du champ sc_action . |
sec_action |
security_result.action |
Fusionné dans le tableau security_result.action . |
server_ip |
client_ip |
Directement mappé au champ client_ip . |
Severity |
security_result.severity |
Mappé à un niveau de gravité en fonction de sa valeur : "Info" -> INFORMATIONAL, "Error" -> ERROR, "Warning" -> MEDIUM, autre -> UNKNOWN_SEVERITY. |
sha256 |
target.file.sha256 |
Mappé directement à partir du champ sha256 . |
signature |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "signature". |
SourceAddress |
principal.ip , principal.asset.ip |
Mappé directement à partir du champ SourceAddress . |
SourceHandleId |
src.resource.id |
Mappé directement à partir du champ SourceHandleId . |
SourceModuleName |
observer.labels |
Ajouté en tant que paire clé-valeur au tableau observer.labels avec la clé "SourceModuleName". |
SourceModuleType |
observer.application |
Mappé directement à partir du champ SourceModuleType . |
SourcePort |
principal.port |
Converti en entier. Mappé directement à partir du champ SourcePort . |
SourceProcessId |
src.process.pid |
Mappé directement à partir du champ SourceProcessId . |
source_client_ip |
client_ip |
Directement mappé au champ client_ip . |
sport |
principal.port |
Converti en entier. Mappé directement à partir du champ sport . |
src |
principal.ip , principal.asset.ip |
Mappé directement à partir du champ src . |
ssid |
network.session_id |
Mappé directement à partir du champ ssid dans les journaux JSON. |
ssidName |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "ssidName". |
state |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "state". |
Status |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "Status". |
status_code |
network.http.response_code |
Converti en entier. Mappé directement à partir du champ status_code . |
SubjectDomainName |
principal.administrative_domain |
Mappé directement à partir du champ SubjectDomainName . |
SubjectLogonId |
principal.resource.attribute.labels |
Ajouté en tant que paire clé-valeur au tableau principal.resource.attribute.labels avec la clé "SubjectLogonId". |
SubjectUserName |
principal.user.userid |
Mappé directement à partir du champ SubjectUserName . |
SubjectUserSid |
principal.user.windows_sid |
Mappé directement à partir du champ SubjectUserSid . |
targetHost |
target.hostname , target.asset.hostname |
Converti en adresse IP si possible. Sinon, il est analysé pour extraire le nom d'hôte et mappé sur target.hostname et target.asset.hostname . |
TargetHandleId |
target.resource.id |
Mappé directement à partir du champ TargetHandleId . |
TargetLogonId |
principal.resource.attribute.labels |
Ajouté en tant que paire clé-valeur au tableau principal.resource.attribute.labels avec la clé "TargetLogonId" s'il est différent de SubjectLogonId . |
TargetProcessId |
target.process.pid |
Mappé directement à partir du champ TargetProcessId . |
TargetUserName |
target.user.userid |
Mappé directement à partir du champ TargetUserName . |
TargetUserSid |
target.user.windows_sid |
Mappé directement à partir du champ TargetUserSid . |
Task |
additional.fields |
Converti en chaîne. Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "Task". |
timestamp |
metadata.event_timestamp |
Le champ "secondes" est utilisé pour créer un code temporel. |
ts |
metadata.event_timestamp |
Si ts est vide, il est créé en combinant tsDate , tsTime et tsTZ . S'il contient" |
type |
security_result.summary , metadata.product_event_type |
Mappé directement à partir du champ type dans les journaux JSON. Également utilisé comme eventSummary et metadata.product_event_type dans certains cas. |
url |
target.url , principal.url |
Mappé directement à partir du champ url . |
url1 |
target.url |
Mappé directement à partir du champ url1 . |
user |
target.user.group_identifiers |
Fusionné dans le tableau target.user.group_identifiers . |
user_id |
target.user.userid |
Mappé directement à partir du champ user_id . |
UserID |
principal.user.windows_sid |
Mappé directement à partir du champ UserID . |
UserName |
principal.user.userid |
Mappé directement à partir du champ UserName . |
user_agent |
network.http.user_agent |
Mappé directement à partir du champ user_agent . |
userId |
target.user.userid |
Mappé directement à partir du champ userId . |
vap |
additional.fields |
Ajouté en tant que paire clé-valeur au tableau additional.fields avec la clé "vap". |
VirtualAccount |
security_result.about.labels |
Ajouté en tant que paire clé-valeur au tableau security_result.about.labels avec la clé "VirtualAccount". |
wiredLastSeen |
security_result.detection_fields |
Converti en chaîne. Ajouté en tant que paire clé-valeur au tableau security_result.detection_fields avec la clé "wiredLastSeen". |
wiredMacs |
intermediary.mac |
Converti en minuscules. Fusionné dans le tableau intermediary.mac . |
WorkstationName |
principal.hostname , principal.asset.hostname |
Mappé directement à partir du champ WorkstationName . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.