Collecter les journaux VPN Cisco

Compatible avec :

Ce document explique comment ingérer des journaux VPN Cisco ASA dans Google Security Operations à l'aide de Bindplane. L'analyseur extrait les champs des messages syslog à l'aide de modèles Grok, en gérant à la fois les formats syslog standards et les structures de messages alternatives. Il mappe ensuite les champs extraits au modèle de données unifié (UDM), catégorise les événements en fonction des ID et des informations extraites, et enrichit les données avec des métadonnées telles que le fournisseur, le produit et le type d'événement. L'analyseur gère également des ID d'événement spécifiques, en appliquant des modèles et une logique grok supplémentaires pour extraire les détails pertinents et les mapper aux champs UDM appropriés.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Instance Google SecOps
  • Un hôte Windows 2016 ou version ultérieure, ou un hôte Linux avec systemd
  • Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
  • Accès privilégié à Cisco ASA

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel Bindplane sera installé.

Obtenir l'ID client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Profil.
  3. Copiez et enregistrez le numéro client de la section Informations sur l'organisation.

Installer l'agent Bindplane

Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

Installation de fenêtres

  1. Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Installation de Linux

  1. Ouvrez un terminal avec les droits root ou sudo.
  2. Exécutez la commande suivante :

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Ressources d'installation supplémentaires

Pour plus d'options d'installation, consultez le guide d'installation.

Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps

  1. Accédez au fichier de configuration :
    • Trouvez le fichier config.yaml. Il se trouve généralement dans le répertoire /etc/bindplane-agent/ sous Linux ou dans le répertoire d'installation sous Windows.
    • Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple, nano, vi ou le Bloc-notes).
  2. Modifiez le fichier config.yaml comme suit :

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'CISCO_VPN'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
    • Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
    • Remplacez <customer_id> par le numéro client réel.
    • Mettez à jour /path/to/ingestion-authentication-file.json en indiquant le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.

Redémarrez l'agent Bindplane pour appliquer les modifications.

  • Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :

    sudo systemctl restart bindplane-agent
    
  • Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurer Syslog pour Cisco ASA VPN

  1. Ouvrez Cisco ASDM.
  2. Accédez à Configuration> Fonctionnalités> Propriétés> Journalisation> Configuration de la journalisation.
  3. Cochez la case Activer la journalisation pour activer syslog.
  4. Sélectionnez Syslog Servers (Serveurs Syslog) dans Logging (Journalisation), puis cliquez sur Add (Ajouter).
  5. Dans la fenêtre Ajouter un serveur Syslog, saisissez les informations de configuration suivantes :
    • Interface : sélectionnez l'interface pour la communication sortante.
    • Adresse IP : saisissez l'adresse IP de l'agent Bindplane.
    • Protocole : sélectionnez UDP.
    • Port : saisissez le numéro de port de l'agent Bindplane.
    • Cliquez sur OK.
  6. Sélectionnez Filtres de journalisation dans la section Journalisation.
  7. Sélectionnez Serveurs Syslog, puis cliquez sur Modifier.
  8. Sélectionnez Informational (Informationnel) dans la liste Filter on severity (Filtrer par gravité).
  9. Cliquez sur OK.
  10. Cliquez sur Appliquer.

Table de mappage UDM

Champ de journal Mappage UDM Logique
accesslist target.resource.name Extrait de message_info lorsque eventtype est "ASA-4-106103". Représente le nom de la liste d'accès.
action security_result.action Dérivé par l'analyseur en fonction des mots clés du message de journal (par exemple, "Refuser", "Rejeter", "Autoriser", "Accepter"). Correspond à ALLOW ou BLOCK.
action security_result.action_details Valeur brute de la chaîne de l'action effectuée (par exemple, "permitted", "denied", "disconnected").
app_name principal.application Nom de l'application utilisée par le principal (par exemple, "CLI"). Extrait de message_details pour les ID d'événement 111008, 111009 et 111010.
assigned_ipv4 N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
assigned_ipv6 N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
bytes_rcv network.received_bytes Nombre d'octets reçus au cours de la session. Extrait de log_mssg pour l'ID d'événement 113019.
bytes_sent network.sent_bytes Nombre d'octets envoyés au cours de la session. Extrait de log_mssg pour l'ID d'événement 113019.
cipher network.tls.cipher Algorithme de chiffrement utilisé pour la session SSL. Extrait de message_info pour le type d'événement 725012.
cisco_message_number security_result.rule_name Numéro du message Cisco, extrait du champ eventtype.
cisco_severity security_result.severity_details Niveau de gravité Cisco brut, extrait du champ eventtype.
command N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
cumulative_total_count.key security_result.outcomes.key La clé "cumulative_total_count" est ajoutée au tableau security_result.outcomes.
cumulative_total_count.value security_result.outcomes.value Valeur du nombre total cumulé, extraite de message_info.
current_average_rate.key security_result.outcomes.key La clé "current_average_rate" est ajoutée au tableau security_result.outcomes.
current_average_rate.value security_result.outcomes.value Valeur du taux moyen actuel, extraite de message_info.
current_burst_rate.key security_result.outcomes.key La clé "current_burst_rate" est ajoutée au tableau security_result.outcomes.
current_burst_rate.value security_result.outcomes.value Valeur du taux de rafale actuel, extraite de message_info.
desc metadata.description Description de l'événement, extraite du message du journal. Utilisé lorsqu'aucune description plus spécifique n'est disponible.
description metadata.description Description plus détaillée de l'événement, extraite du message du journal, le cas échéant.
destination_ip target.ip, target.asset.ip Adresse IP de destination, extraite de différents formats de messages de journaux.
destination_ip_port target.port ou network.application_protocol Port de destination, extrait de différents formats de messages de journaux. Si la valeur extraite n'est pas un nombre, elle est traitée comme le protocole d'application.
dst_email target.user.email_addresses ou target.user.userid Adresse e-mail ou ID utilisateur de destination, extraits de message_info. Si la valeur correspond à un format d'adresse e-mail, elle est ajoutée à email_addresses. Sinon, elle est utilisée comme userid.
dst_host target.hostname Nom d'hôte de destination, extrait de message_info.
dst_ip target.ip, target.asset.ip Adresse IP de destination, extraite du modèle grok principal ou d'autres modèles spécifiques.
dst_port target.port Port de destination, extrait du modèle grok principal ou d'autres modèles spécifiques.
duration network.session_duration Durée de la session, extraite de message_details et convertie en secondes.
event_date @timestamp Date et heure de l'événement, construites à partir de différents champs d'horodatage dans le journal brut et analysées à l'aide du filtre date.
event_id metadata.product_event_type (partie de) Utilisé en combinaison avec event_severity pour former le champ metadata.product_event_type.
event_name metadata.product_event_type (partie de) Utilisé en combinaison avec event_severity et event_type pour former le champ metadata.product_event_type, le cas échéant.
event_severity metadata.product_event_type (partie de), security_result.severity, is_alert, is_significant Utilisé en combinaison avec event_id ou event_name et event_type pour former le champ metadata.product_event_type. Également utilisé pour déduire les champs security_result.severity, is_alert et is_significant.
event_type metadata.product_event_type (partie de) Utilisé en combinaison avec event_name et event_severity pour former le champ metadata.product_event_type, le cas échéant.
eventtype metadata.product_event_type, security_result.rule_name, security_result.severity_details, security_result.severity Chaîne de type d'événement, utilisée pour dériver les champs metadata.product_event_type, security_result.rule_name, security_result.severity_details et security_result.severity.
fragment_id security_result.about.resource.id ID du fragment IP, extrait de message_details pour l'ID d'événement 209005.
group principal.group.group_display_name, principal.user.group_identifiers, target.user.group_identifiers Nom du groupe, extrait de différents formats de messages de journaux.
group_name principal.group.group_display_name Nom du groupe extrait du champ group lorsqu'il s'agit d'un nom d'hôte.
has_principal_ip N/A Variable interne utilisée pour la logique, non mappée à l'UDM.
has_target_ip N/A Variable interne utilisée pour la logique, non mappée à l'UDM.
hostname principal.hostname, principal.asset.hostname Nom d'hôte du principal, extrait de différents formats de messages de journal.
hostname2 principal.hostname, principal.asset.hostname Nom d'hôte du principal, extrait comme solution de repli lorsque hostname n'est pas disponible.
icmp_code N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
icmp_dst_ip target.ip, target.asset.ip Adresse IP de destination d'un message d'erreur ICMP.
icmp_id N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
icmp_src_ip principal.ip, principal.asset.ip Adresse IP source d'un message d'erreur ICMP.
icmp_type N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
intermediary_ip principal.ip, principal.asset.ip Adresse IP intermédiaire extraite de message_info pour l'ID d'événement 111010.
invalid_ip N/A Variable interne utilisée pour la logique, non mappée à l'UDM.
ip_1 principal.ip, principal.asset.ip Adresse IP source extraite en tant que solution de repli lorsque les adresses IP source et de destination sont identiques.
ip_2 target.ip, target.asset.ip Adresse IP de destination extraite en tant que solution de secours lorsque les adresses IP source et de destination sont identiques.
ipprotocol network.ip_protocol Protocole IP, extrait de différents formats de messages de journaux et converti en majuscules.
issuer network.tls.client.certificate.issuer Émetteur du certificat pair, extrait de message_details pour l'ID d'événement 717037.
local_proxy_ip intermediary.ip Adresse IP du proxy local, extraite de message_details pour l'ID d'événement 713041.
log_mssg security_result.description, sr.action Utilisé pour remplir le champ security_result.description et extraire les actions d'authentification.
login security_result.summary État de connexion, extrait de message_info.
max_configured_rate.key security_result.outcomes.key La clé "max_configured_rate" est ajoutée au tableau security_result.outcomes.
max_configured_rate.value security_result.outcomes.value Valeur du taux maximal configuré, extraite de message_info.
message_details Différents champs Partie principale du message de journal, contenant des informations sur l'événement. Analysé à l'aide de différents modèles Grok en fonction de l'ID d'événement.
message_info metadata.description Permet de remplir le champ metadata.description lorsqu'il est disponible.
observer observer.hostname ou observer.ip Nom d'hôte ou adresse IP de l'observateur, extraits du message du journal.
observer_ip observer.ip Adresse IP de l'observateur, extraite du champ observer.
peer_type N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
policy target.resource.name Nom de la règle, extrait de message_details pour l'ID d'événement 113003.
policy_name target.resource.name Nom de la règle, extrait de message_details pour les ID d'événement 113009 et 113011.
principal_ip principal.ip, principal.asset.ip Adresse IP principale extraite de message_details pour l'ID d'événement 113009.
privilege_level_from N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
privilege_level_to N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
process principal.process.command_line Nom du processus, extrait de message_details pour l'ID d'événement 711004.
protocol network.ip_protocol ou network.application_protocol Protocole utilisé dans l'événement, extrait de différents formats de messages de journaux. Si le protocole est un protocole IP standard (ICMP, TCP, UDP, ESP), il est mappé sur network.ip_protocol. Sinon, il est mappé sur network.application_protocol.
reason security_result.description Raison de l'événement, extraite de message_details pour l'ID d'événement 113016.
remote_proxy_ip intermediary.ip Adresse IP du proxy distant, extraite de message_details pour l'ID d'événement 713041.
retrieved_file target.file.full_path Chemin d'accès au fichier récupéré, extrait de message_info.
security_action security_result.action Action de sécurité, dérivée par l'analyseur en fonction du contexte de l'événement.
security_category security_result.category Catégorie de sécurité, dérivée par l'analyseur en fonction du contexte de l'événement.
security_result.description security_result.description Description du résultat de sécurité, extraite ou dérivée du message de journal.
security_result.severity security_result.severity Gravité du résultat de sécurité, dérivée du champ event_severity.
security_result.summary security_result.summary Résumé du résultat de sécurité, extrait ou dérivé du message du journal.
sent_bytes network.sent_bytes Nombre d'octets envoyés, extrait de message_info.
ses_id network.session_id ID de session extrait de message_info.
session_id network.session_id ID de session extrait de message_info.
sess_type principal.hostname, principal.asset.hostname Type de session, extrait de log_mssg et utilisé comme nom d'hôte lorsque hostname n'est pas disponible.
source_ip principal.ip, principal.asset.ip Adresse IP source, extraite de différents formats de messages de journaux.
source_ip_port principal.port Port source, extrait de différents formats de messages de journaux.
src_email principal.user.email_addresses ou principal.user.userid Adresse e-mail ou ID utilisateur source, extraits de message_info. Si la valeur correspond à un format d'adresse e-mail, elle est ajoutée à email_addresses. Sinon, elle est utilisée comme userid.
src_ip principal.ip, principal.asset.ip Adresse IP source, extraite du modèle grok principal ou d'autres modèles spécifiques.
src_port principal.port Port source, extrait du modèle grok principal ou d'autres modèles spécifiques.
src_user principal.user.user_display_name Nom à afficher de l'utilisateur source, extrait de message_details pour les ID d'événement 713049 et 713120.
subject network.tls.client.certificate.subject Objet du certificat pair, extrait de message_details pour l'ID d'événement 717037.
summary security_result.summary Résumé de l'événement, extrait de message_details pour l'ID d'événement 113016.
target_host target.hostname Nom d'hôte cible, extrait de message_details pour l'ID d'événement 113004.
target_ip target.ip, target.asset.ip Adresse IP cible, extraite de message_details pour l'ID d'événement 113004.
target_user target.user.userid ID utilisateur cible, extrait de message_details pour l'ID d'événement 113003.
task_duration N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
tcp_dst_ip target.ip, target.asset.ip Adresse IP de destination de la charge utile TCP d'origine d'un message d'erreur ICMP.
tcp_dst_port N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
tcp_src_ip principal.ip, principal.asset.ip Adresse IP source de la charge utile TCP d'origine d'un message d'erreur ICMP.
tcp_src_port N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
threshold N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
tls_version network.tls.version Version TLS extraite de message_details pour l'ID d'événement 725002.
ts @timestamp Code temporel de l'événement, analysé à l'aide du filtre date.
ts_day @timestamp (partie de) Jour du mois de l'horodatage, utilisé pour construire le champ @timestamp.
ts_month @timestamp (partie de) Mois de l'horodatage, utilisé pour construire le champ @timestamp.
ts_time @timestamp (partie de) Heure de l'horodatage, utilisée pour construire le champ @timestamp.
ts_year @timestamp (partie de) Année de l'horodatage, utilisée pour construire le champ @timestamp.
tunnel_type N/A Bien qu'il soit analysé, ce champ n'est pas mappé à l'objet IDM dans l'UDM.
user principal.user.userid, target.user.userid ID utilisateur, extrait de différents formats de messages de journaux.
user_agent network.http.user_agent Chaîne user-agent extraite de message_details pour l'ID d'événement 722055.
user_attr.key principal.user.attribute.labels.key Clé d'un attribut utilisateur, extraite de message_details pour les ID d'événement 734003 et 734001.
user_attr.value principal.user.attribute.labels.value Valeur d'un attribut utilisateur, extraite de message_details pour les ID d'événement 734003 et 734001.
userid principal.user.userid ID utilisateur extrait de message_details pour l'ID d'événement 106103.
username principal.user.userid Nom d'utilisateur extrait de message_details pour les ID d'événement 111008, 111009, 111010 et 113008.
N/A metadata.vendor_name Codé en dur sur "CISCO".
N/A metadata.product_name Codé en dur sur "ASA VPN" ou "VPN".
N/A metadata.event_type Déterminé par la logique de l'analyseur en fonction de la présence de certains champs et ID d'événement. Les valeurs possibles sont GENERIC_EVENT, NETWORK_CONNECTION, STATUS_UPDATE, NETWORK_FTP, USER_LOGIN, USER_LOGOUT, NETWORK_UNCATEGORIZED, USER_UNCATEGORIZED et NETWORK_FLOW.
N/A metadata.log_type Codé en dur sur "CISCO_VPN".
N/A metadata.event_timestamp Copié à partir du champ @timestamp analysé.
N/A extensions.auth.type Définissez sa valeur sur "VPN", "AUTHTYPE_UNSPECIFIED" ou "MACHINE" en fonction du contexte de l'événement.
N/A security_result.about.resource.type Définissez la valeur sur "PACKET FRAGMENT" pour l'ID d'événement 209005.
N/A is_alert Définissez sur "true" pour les événements de gravité élevée (event_severity 0 ou 1).
N/A is_significant Définissez sur "true" pour les événements de gravité élevée (event_severity 0 ou 1).

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.