Collecter les journaux Cisco Secure ACS
Ce document explique comment collecter les journaux Cisco Secure Access Control Server (ACS) à l'aide d'un transmetteur Google Security Operations.
Pour en savoir plus, consultez Ingestion de données dans Google Security Operations.
Une étiquette 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_ACS
.
Configurer Cisco Secure ACS
- Connectez-vous à la console Cisco Secure ACS à l'aide des identifiants administrateur.
- Dans la console Cisco Secure ACS, sélectionnez System administration > Configuration > Log configuration > Remote log targets.
- Cliquez sur Créer.
Dans la fenêtre Créer, spécifiez les valeurs des champs suivants :
Champ Description Nom Nom du redirecteur Google Security Operations. Description Description du transmetteur Google Security Operations. Adresse IP Adresse IP du redirecteur Google Security Operations. Utiliser les options syslog avancées Sélectionnez cette option pour activer les options syslog avancées. Type de cible Sélectionnez "Syslog TCP" ou "Syslog UDP". Port Utilisez un port élevé, tel que 10514. Code de l'établissement LOCAL6 (code = 22 ; par défaut) Longueur maximale La valeur recommandée est 1 024. Cliquez sur Envoyer. La fenêtre Cibles de journaux à distance s'affiche avec la nouvelle configuration de la cible de journaux à distance.
Dans la console Cisco Secure ACS, sélectionnez System administration > Configuration > Log configuration > Logging categories > Per-Instance.
Sélectionnez ACS, puis cliquez sur Configurer.
Dans la fenêtre Par instance, sélectionnez une catégorie de journalisation, puis cliquez sur Modifier.
Dans l'onglet Général, pour certaines catégories de journalisation, la gravité de la journalisation doit être définie sur la valeur par défaut ou sur celle fournie par le fournisseur.
Pour Cisco Secure ACS, le niveau de gravité par défaut est Avertissement pour toutes les catégories de journaux, à l'exception de celles pour lesquelles le niveau de gravité ne peut pas être modifié, telles que les notifications d'audit AAA, les notifications de comptabilité, les notifications d'audit administratif et opérationnel, et les notifications de statistiques système.
Cliquez sur l'onglet Cible syslog distante, puis déplacez la cible distante que vous venez de créer de Cibles disponibles vers Cibles sélectionnées.
Cliquez sur Envoyer.
Pour configurer des cibles distantes pour d'autres catégories de journalisation, répétez les étapes 8 à 10.
Configurer le redirecteur Google Security Operations et Syslog pour ingérer les journaux Cisco Secure ACS
- 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 ACS 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 cibles où réside le collecteur et les adresses des 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 ACS, y compris l'authentification, la comptabilité, les diagnostics et les statistiques système. Il utilise des modèles Grok pour extraire des champs de différents formats de journaux (SYSLOG+KV, LEEF), normalise les codes temporels et les fuseaux horaires, et mappe les champs clés à l'UDM, en gérant différents types de journaux avec une logique spécifique pour les réussites/échecs d'authentification, la comptabilité TACACS+ et les événements RADIUS. Il enrichit également les données UDM avec des champs supplémentaires tels que les informations sur l'appareil et les détails d'authentification.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
Acct-Authentic |
additional.fields[].value.string_value |
La valeur est extraite du champ Acct-Authentic . |
Acct-Delay-Time |
additional.fields[].value.string_value |
La valeur est extraite du champ Acct-Delay-Time . |
Acct-Input-Octets |
additional.fields[].value.string_value |
La valeur est extraite du champ Acct-Input-Octets . |
Acct-Input-Packets |
additional.fields[].value.string_value |
La valeur est extraite du champ Acct-Input-Packets . |
Acct-Output-Octets |
additional.fields[].value.string_value |
La valeur est extraite du champ Acct-Output-Octets . |
Acct-Output-Packets |
additional.fields[].value.string_value |
La valeur est extraite du champ Acct-Output-Packets . |
Acct-Session-Id |
additional.fields[].value.string_value |
La valeur est extraite du champ Acct-Session-Id . |
Acct-Session-Time |
additional.fields[].value.string_value |
La valeur est extraite du champ Acct-Session-Time . |
Acct-Status-Type |
additional.fields[].value.string_value |
La valeur est extraite du champ Acct-Status-Type . |
Acct-Terminate-Cause |
additional.fields[].value.string_value |
La valeur est extraite du champ Acct-Terminate-Cause . |
ACSVersion |
additional.fields[].value.string_value |
La valeur est extraite du champ ACSVersion . |
AD-Domain |
principal.group.group_display_name |
La valeur est extraite du champ AD-Domain . |
AD-IP-Address |
principal.ip |
La valeur est extraite du champ AD-IP-Address . |
Called-Station-ID |
additional.fields[].value.string_value |
La valeur est extraite du champ Called-Station-ID . |
Calling-Station-ID |
additional.fields[].value.string_value |
La valeur est extraite du champ Calling-Station-ID . |
Class |
additional.fields[].value.string_value |
La valeur est extraite du champ Class . |
CmdSet |
(non mappé) | Non mappé à l'objet IDM. |
ConfigVersionId |
additional.fields[].value.number_value |
La valeur est extraite du champ ConfigVersionId et convertie en float. |
DestinationIPAddress |
target.ip , intermediary.ip |
La valeur est extraite du champ DestinationIPAddress . intermediary.ip est dérivé de Device IP Address . |
DestinationPort |
target.port |
La valeur est extraite du champ DestinationPort et convertie en nombre entier. |
Device IP Address |
intermediary.ip |
La valeur est extraite du champ Device IP Address . |
Device Port |
intermediary.port |
La valeur est extraite du champ Device Port et convertie en nombre entier. |
DetailedInfo |
security_result.summary , security_result.description , security_result.action |
Si DetailedInfo est défini sur "Authentication succeed" (Authentification réussie), security_result.summary est défini sur "successful login occurred" (Connexion réussie) et security_result.action est défini sur ALLOW (AUTORISER). Si DetailedInfo contient "Nom d'utilisateur ou mot de passe non valides", security_result.summary est "Échec de la connexion" et security_result.action est BLOCK. security_result.description est dérivé de log_header . |
Framed-IP-Address |
principal.ip |
La valeur est extraite du champ Framed-IP-Address . |
Framed-Protocol |
additional.fields[].value.string_value |
La valeur est extraite du champ Framed-Protocol . |
NAS-IP-Address |
target.ip |
La valeur est extraite du champ NAS-IP-Address . |
NAS-Port |
additional.fields[].value.string_value |
La valeur est extraite du champ NAS-Port . |
NAS-Port-Id |
target.port |
La valeur est extraite du champ NAS-Port-Id et convertie en nombre entier. |
NAS-Port-Type |
additional.fields[].value.string_value |
La valeur est extraite du champ NAS-Port-Type . |
NetworkDeviceName |
target.hostname |
La valeur est extraite du champ NetworkDeviceName . |
Protocol |
additional.fields[].value.string_value |
La valeur est extraite du champ Protocol . |
RadiusPacketType |
(non mappé) | Non mappé à l'objet IDM. |
Remote-Address |
principal.ip , target.ip |
La valeur est extraite du champ Remote-Address et analysée en tant qu'adresse IP. Il est associé à principal.ip pour les événements d'authentification et à target.ip pour les événements de comptabilité et de diagnostic. |
RequestLatency |
additional.fields[].value.string_value |
La valeur est extraite du champ RequestLatency . |
Response |
principal.user.userid |
Si Response contient "User-Name", le nom d'utilisateur est extrait et mappé à principal.user.userid . |
SelectedAccessService |
additional.fields[].value.string_value |
La valeur est extraite du champ SelectedAccessService . |
SelectedAuthenticationIdentityStores |
security_result.detection_fields[].value |
La valeur est extraite du champ SelectedAuthenticationIdentityStores . |
SelectedAuthorizationProfiles |
security_result.detection_fields[].value |
La valeur est extraite du champ SelectedAuthorizationProfiles . |
Service-Type |
additional.fields[].value.string_value |
La valeur est extraite du champ Service-Type . |
Tunnel-Client-Endpoint |
additional.fields[].value.string_value |
La valeur est extraite du champ Tunnel-Client-Endpoint et analysée en tant qu'adresse IP. |
User |
target.user.userid |
La valeur est extraite du champ User . |
UserName |
target.user.userid , principal.mac |
Si UserName est une adresse MAC, elle est analysée et mise en correspondance avec principal.mac . Sinon, il est mappé sur target.user.userid . |
ac-user-agent |
network.http.user_agent |
La valeur est extraite du champ ac-user-agent . |
cat |
metadata.description |
La valeur est extraite du champ cat . |
device-mac |
principal.mac |
La valeur est extraite du champ device-mac , des deux-points sont ajoutés et la valeur est convertie en minuscules. Si device-mac est "00", il est remplacé par "00:00:00:00:00:00". |
device-platform |
principal.asset.platform_software.platform |
Si device-platform est défini sur "win", la valeur "WINDOWS" est attribuée à principal.asset.platform_software.platform . |
device-platform-version |
principal.asset.platform_software.platform_version |
La valeur est extraite du champ device-platform-version . |
device-public-mac |
principal.mac |
La valeur est extraite du champ device-public-mac , les tirets sont remplacés par des deux-points et la valeur est convertie en minuscules. |
device-type |
principal.asset.hardware.model |
La valeur est extraite du champ device-type . |
device-uid |
principal.asset.asset_id |
La valeur est extraite du champ device-uid et précédée de "ASSET ID: ". |
device-uid-global |
principal.asset.product_object_id |
La valeur est extraite du champ device-uid-global . |
hostname |
principal.hostname |
La valeur est extraite du champ hostname . |
ip:source-ip |
principal.ip |
La valeur est extraite du champ ip:source-ip . |
kv.ADDomain |
(non mappé) | Non mappé à l'objet IDM. |
kv.Airespace-Wlan-Id |
(non mappé) | Non mappé à l'objet IDM. |
kv.AuthenticationIdentityStore |
(non mappé) | Non mappé à l'objet IDM. |
kv.AVPair |
(non mappé) | Non mappé à l'objet IDM. |
kv.CVPN3000/ASA/PIX7.x-DAP-Tunnel-Group-Name |
(non mappé) | Non mappé à l'objet IDM. |
kv.CVPN3000/ASA/PIX7.x-Group-Based-Address-Pools |
(non mappé) | Non mappé à l'objet IDM. |
kv.ExternalGroups |
(non mappé) | Non mappé à l'objet IDM. |
kv.FailureReason |
(non mappé) | Non mappé à l'objet IDM. |
kv.IdentityAccessRestricted |
(non mappé) | Non mappé à l'objet IDM. |
kv.IdentityGroup |
(non mappé) | Non mappé à l'objet IDM. |
kv.NAS-Identifier |
(non mappé) | Non mappé à l'objet IDM. |
kv.SelectedShellProfile |
(non mappé) | Non mappé à l'objet IDM. |
kv.ServiceSelectionMatchedRule |
(non mappé) | Non mappé à l'objet IDM. |
kv.State |
(non mappé) | Non mappé à l'objet IDM. |
kv.Step |
(non mappé) | Non mappé à l'objet IDM. |
kv.Tunnel-Medium-Type |
(non mappé) | Non mappé à l'objet IDM. |
kv.Tunnel-Private-Group-ID |
(non mappé) | Non mappé à l'objet IDM. |
kv.Tunnel-Type |
(non mappé) | Non mappé à l'objet IDM. |
kv.UseCase |
(non mappé) | Non mappé à l'objet IDM. |
kv.UserIdentityGroup |
(non mappé) | Non mappé à l'objet IDM. |
kv.VendorSpecific |
(non mappé) | Non mappé à l'objet IDM. |
kv.attribute-131 |
(non mappé) | Non mappé à l'objet IDM. |
kv.attribute-89 |
(non mappé) | Non mappé à l'objet IDM. |
kv.cisco-av-pair |
(non mappé) | Non mappé à l'objet IDM. |
kv.cisco-av-pair:CiscoSecure-Group-Id |
(non mappé) | Non mappé à l'objet IDM. |
leef_version |
(non mappé) | Non mappé à l'objet IDM. |
log_header |
metadata.description |
La valeur est extraite du champ log_header . |
log_id |
metadata.product_log_id |
La valeur est extraite du champ log_id . |
log_type |
metadata.product_event_type |
La valeur est extraite du champ log_type . |
message_severity |
(non mappé) | Non mappé à l'objet IDM. |
product |
metadata.product_name |
La valeur est extraite du champ product . |
product_version |
metadata.product_version |
La valeur est extraite du champ product_version . |
server_host |
target.hostname |
La valeur est extraite du champ server_host . |
timestamp |
metadata.event_timestamp |
La valeur est extraite des champs timestamp et timezone (après suppression du deux-points). La valeur combinée est analysée en tant que code temporel. |
url |
network.dns.questions[].name |
La valeur est extraite du champ url . |
vendor |
metadata.vendor_name |
La valeur est extraite du champ vendor . Défini sur "GENERIC_EVENT" au départ, puis potentiellement écrasé en fonction des champs log_type et analysés. Valeurs possibles : "USER_LOGIN", "USER_UNCATEGORIZED", "NETWORK_DNS", "NETWORK_CONNECTION", "STATUS_UPDATE" ou "STATUS_UNCATEGORIZED". La valeur initiale est "Cisco", mais elle peut être remplacée par le champ vendor . Définie sur "ACS" au départ, puis potentiellement remplacée par le champ product . Défini sur "CISCO_ACS". Défini sur "USERNAME_PASSWORD". Définissez-le sur "TACACS". Définissez la valeur sur "UDP" pour les événements de diagnostic et de comptabilité RADIUS. Définissez sa valeur sur "DNS" pour les événements DNS. Dérivé du champ security_action , qui est défini selon que la connexion a réussi ou non. Définissez la valeur sur "successful login occurred" (connexion réussie) pour les connexions réussies et sur "failed login occurred" (échec de connexion) pour les échecs de connexion. Peut également être défini sur "passed" (réussi) pour certains événements de diagnostic du magasin d'identité. Définissez-le sur "LOW" pour les tentatives de connexion ayant échoué. Construit en ajoutant le préfixe "ASSET ID: " au champ device-uid . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.