Collecter les journaux Cisco Email Security

Compatible avec :

Ce document explique comment ingérer des journaux Cisco Email Security dans Google Security Operations à l'aide de Bindplane.

L'analyseur extrait les champs des journaux au format syslog, clé-valeur et JSON de Cisco Email Security Appliance. Il utilise grok et/ou kv pour analyser le message du journal, puis mappe ces valeurs au modèle de données unifié (UDM). Il définit également les valeurs de métadonnées par défaut pour la source et le type d'événement.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Windows Server 2016 ou version ultérieure, ou hôte Linux avec systemd
  • Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
  • Accès privilégié à l'interface Web de l'appliance Cisco Email Security

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
    
  3. Attendez la fin de l'installation.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sc query observiq-otel-collector
    

Le service doit être indiqué comme RUNNING (EN COURS D'EXÉCUTION).

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
    
  3. Attendez la fin de l'installation.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sudo systemctl status observiq-otel-collector
    

Le service doit être indiqué comme actif (en cours d'exécution).

Autres ressources d'installation

Pour obtenir d'autres options d'installation et de dépannage, consultez le guide d'installation de l'agent Bindplane.

Configurer l'agent Bindplane pour ingérer les journaux syslog et les envoyer à Google SecOps

Localiser le fichier de configuration

  • Linux :

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows :

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifiez le fichier de configuration

  • Remplacez l'intégralité du contenu de config.yaml par la configuration suivante :

    receivers:
        tcplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'CISCO_EMAIL_SECURITY'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Paramètres de configuration

  • Remplacez les espaces réservés suivants :

    • Configuration du récepteur :

      • tcplog : utilisez udplog pour syslog UDP ou tcplog pour syslog TCP.
      • 0.0.0.0 : adresse IP à écouter (0.0.0.0 pour écouter sur toutes les interfaces)
      • 514 : numéro de port à écouter (port syslog standard)
    • Configuration de l'exportateur :

      • creds_file_path : chemin d'accès complet au fichier d'authentification de l'ingestion :
        • Linux : /etc/bindplane-agent/ingestion-auth.json
        • Windows : C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID : ID client de la section "Obtenir l'ID client"
      • endpoint : URL du point de terminaison régional :
        • États-Unis : malachiteingestion-pa.googleapis.com
        • Europe : europe-malachiteingestion-pa.googleapis.com
        • Asie : asia-southeast1-malachiteingestion-pa.googleapis.com
        • Pour obtenir la liste complète, consultez Points de terminaison régionaux.
      • log_type : type de journal tel qu'il apparaît dans Chronicle (CISCO_EMAIL_SECURITY)

Enregistrez le fichier de configuration.

  • Après avoir modifié le fichier, enregistrez-le :
    • Linux : appuyez sur Ctrl+O, puis sur Enter, puis sur Ctrl+X.
    • Windows : cliquez sur Fichier > Enregistrer.

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 observiq-otel-collector
    
    1. Vérifiez que le service est en cours d'exécution :

        sudo systemctl status observiq-otel-collector
      
    2. Recherchez les erreurs dans les journaux :

        sudo journalctl -u observiq-otel-collector -f
      
  • Pour redémarrer l'agent Bindplane dans Windows, choisissez l'une des options suivantes :

    • Invite de commandes ou PowerShell en tant qu'administrateur :

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console Services :

      1. Appuyez sur Win+R, saisissez services.msc, puis appuyez sur Entrée.
      2. Localisez observIQ OpenTelemetry Collector.
      3. Effectuez un clic droit, puis sélectionnez Redémarrer.

      4. Vérifiez que le service est en cours d'exécution :

        sc query observiq-otel-collector
        
      5. Recherchez les erreurs dans les journaux :

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Configurer le transfert Syslog sur Cisco Email Security Appliance

  1. Connectez-vous à l'interface Web de Cisco Email Security Appliance.
  2. Accédez à Administration du système > Abonnements aux journaux.
  3. Cliquez sur Ajouter un abonnement au journal.
  4. Fournissez les informations de configuration suivantes :
    • Type de journal : sélectionnez le type de journal à transférer (par exemple, Journaux d'événements consolidés, Journaux de messagerie ou Journaux de messagerie texte).
    • Nom : saisissez un nom descriptif (par exemple, Google-SecOps-Syslog).
    • Méthode de récupération : sélectionnez Syslog Push.
    • Nom d'hôte : saisissez l'adresse IP de l'hôte de l'agent Bindplane.
    • Protocole : sélectionnez TCP.
    • Port : saisissez 514.
    • Établissement : sélectionnez LOG_MAIL (ou l'établissement de votre choix).
  5. Cliquez sur Envoyer.
  6. Répétez les étapes 3 à 5 pour chaque type de journal supplémentaire à transférer. Types de journaux recommandés :
    • Journaux d'événements consolidés
    • Journaux des messages
    • Journaux antispam
    • Journaux antivirus
    • Journaux du moteur AMP
    • Journaux du filtre de contenu
  7. Cliquez sur Valider les modifications pour appliquer la configuration.
  8. Vérifiez que les messages syslog sont envoyés en consultant les journaux de l'agent Bindplane.

Table de mappage UDM

Champ du journal Mappage UDM Logique
acl_decision_tag read_only_udm.security_result.detection_fields.value Directement mappé s'il n'est pas vide, "-" ou "NONE". La clé est "ACL Decision Tag".
access_or_decryption_policy_group read_only_udm.security_result.detection_fields.value Directement mappé s'il n'est pas vide, "-" ou "NONE". La clé est "AccessOrDecryptionPolicyGroup".
agir read_only_udm.security_result.action_details Mappé directement.
authenticated_user read_only_udm.principal.user.userid Directement mappé s'il n'est pas vide, "-" ou "NONE".
cache_hierarchy_retrieval read_only_udm.security_result.detection_fields.value Directement mappé s'il n'est pas vide, "-" ou "NONE". La clé est "Cache Hierarchy Retrieval".
chiffrement read_only_udm.network.tls.cipher Mappé directement.
pays read_only_udm.principal.location.country_or_region Mappé directement.
data_security_policy_group read_only_udm.security_result.detection_fields.value Directement mappé s'il n'est pas vide, "-" ou "NONE". La clé est "DataSecurityPolicyGroup".
description read_only_udm.metadata.description Mappé directement pour les messages syslog. Pour les messages CEF, il s'agit de la description générale du produit. Différents modèles Grok extraient des descriptions spécifiques en fonction de l'événement produit. Certaines descriptions sont modifiées par gsub pour supprimer les espaces et les deux-points en début et en fin de ligne.
deviceDirection read_only_udm.network.direction Si la valeur est "0", elle correspond à "INBOUND". Si la valeur est "1", la valeur correspondante est "OUTBOUND". Permet de déterminer le protocole et le chiffrement TLS à mapper directement et ceux à mapper en tant qu'étiquettes.
deviceExternalId read_only_udm.principal.asset.asset_id Mappé en tant que "ID de l'appareil".
domaine read_only_udm.target.administrative_domain Mappé directement à partir des journaux JSON.
domain_age read_only_udm.security_result.about.labels.value Mappé directement. La clé est "YoungestDomainAge".
duser read_only_udm.target.user.email_addresses, read_only_udm.network.email.to S'il contient ";", divisez-le en plusieurs adresses e-mail et mappez chacune d'elles aux deux champs UDM. Sinon, mappez directement les deux champs UDM si l'adresse e-mail est valide. Également utilisé pour remplir network_to s'il est vide.
dvc read_only_udm.target.ip Mappé directement.
entries.collection_time.nanos, entries.collection_time.seconds read_only_udm.metadata.event_timestamp.nanos, read_only_udm.metadata.event_timestamp.seconds Utilisé pour construire le code temporel de l'événement.
env-from read_only_udm.additional.fields.value.string_value Mappé directement. La clé est "Env-From".
ESAAttachmentDetails read_only_udm.security_result.about.file.full_path, read_only_udm.security_result.about.file.sha256 Analysé pour extraire les noms de fichiers et les hachages SHA256. Plusieurs fichiers et hachages peuvent être extraits.
ESADCID read_only_udm.security_result.about.labels.value Mappé directement. La clé est "ESADCID".
ESAFriendlyFrom read_only_udm.principal.user.user_display_name, read_only_udm.network.email.from Analysé pour extraire le nom à afficher et l'adresse e-mail.
ESAHeloDomain read_only_udm.intermediary.administrative_domain Mappé directement.
ESAHeloIP read_only_udm.intermediary.ip Mappé directement.
ESAICID read_only_udm.security_result.about.labels.value Mappé directement. La clé est "ESAICID".
ESAMailFlowPolicy read_only_udm.security_result.rule_name Mappé directement.
ESAMID read_only_udm.security_result.about.labels.value Mappé directement. La clé est "ESAMID".
ESAReplyTo read_only_udm.network.email.reply_to Mappé directement s'il s'agit d'une adresse e-mail valide. Sert également à renseigner network_to.
ESASDRDomainAge read_only_udm.security_result.about.labels.value Mappé directement. La clé est "ESASDRDomainAge".
ESASenderGroup read_only_udm.principal.group.group_display_name Mappé directement.
ESAStatus read_only_udm.security_result.about.labels.value Mappé directement. La clé est "ESAStatus".
ESATLSInCipher read_only_udm.network.tls.cipher ou read_only_udm.security_result.about.labels.value Mappé directement au chiffrement si deviceDirection est défini sur "0". Dans le cas contraire, elle est mappée en tant que libellé avec la clé "ESATLSInCipher".
ESATLSInProtocol read_only_udm.network.tls.version ou read_only_udm.security_result.about.labels.value La version TLS est extraite et mappée directement si deviceDirection est défini sur "0". Dans le cas contraire, elle est mappée en tant que libellé avec la clé "ESATLSInProtocol".
ESATLSOutCipher read_only_udm.network.tls.cipher ou read_only_udm.security_result.about.labels.value Mappé directement au chiffrement si deviceDirection est défini sur "1". Dans le cas contraire, elle est mappée en tant que libellé avec la clé "ESATLSOutCipher".
ESATLSOutProtocol read_only_udm.network.tls.version ou read_only_udm.security_result.about.labels.value La version TLS est extraite et mappée directement si deviceDirection est défini sur "1". Dans le cas contraire, elle est mappée en tant que libellé avec la clé "ESATLSOutProtocol".
ESAURLDetails read_only_udm.target.url L'URL est analysée pour être extraite. Seule la première URL est mappée, car le champ n'est pas répété.
external_dlp_policy_group read_only_udm.security_result.detection_fields.value Directement mappé s'il n'est pas vide, "-" ou "NONE". La clé est "ExternalDlpPolicyGroup".
ExternalMsgID read_only_udm.security_result.about.labels.value Mappé directement après la suppression des guillemets simples et des chevrons. La clé est "ExternalMsgID".
de read_only_udm.network.email.from Mappé directement s'il s'agit d'une adresse e-mail valide. Sert également à renseigner network_from.
host.hostname read_only_udm.principal.hostname ou read_only_udm.intermediary.hostname Mappé au nom d'hôte principal si le champ "hôte" n'est pas valide. Également mappé au nom d'hôte intermédiaire.
host.ip read_only_udm.principal.ip ou read_only_udm.intermediary.ip Mappé à l'adresse IP principale si le champ "ip" n'est pas défini dans les journaux JSON. Également mappé à l'adresse IP intermédiaire.
nom d'hôte read_only_udm.target.hostname Mappé directement.
http_method read_only_udm.network.http.method Mappé directement.
http_response_code read_only_udm.network.http.response_code Mappé directement et converti en entier.
identity_policy_group read_only_udm.security_result.detection_fields.value Directement mappé s'il n'est pas vide, "-" ou "NONE". La clé est "IdentityPolicyGroup".
ip read_only_udm.principal.ip Mappé directement. Remplacé par source_ip, le cas échéant.
kv_msg Diverses Analysé à l'aide du filtre kv. Le prétraitement consiste à remplacer les espaces avant les clés par "#" et à inverser les valeurs csLabel.
log_type read_only_udm.metadata.log_type Codé en dur sur "CISCO_EMAIL_SECURITY".
loglevel read_only_udm.security_result.severity, read_only_udm.security_result.action Utilisé pour déterminer la gravité et l'action. "Info", "", "Debug" et "Trace" correspondent à "INFORMATIONAL" et "ALLOW". "Avertissement" correspond à "MEDIUM" et "ALLOW". "High" correspond à "HIGH" et "BLOCK". "Critique" et "Alerte" correspondent à "CRITICAL" et "BLOCK".
mail_id read_only_udm.network.email.mail_id Mappé directement à partir des journaux JSON.
mailto read_only_udm.target.user.email_addresses, read_only_udm.network.email.to Mappé directement aux deux champs UDM s'il s'agit d'une adresse e-mail valide.
MailPolicy read_only_udm.security_result.about.labels.value Mappé directement. La clé est "MailPolicy".
message Diverses Analysé au format JSON si possible. Sinon, il est traité comme un message syslog.
message_id read_only_udm.network.email.mail_id Mappé directement. Également utilisé pour remplir network_data.
Message read_only_udm.network.email.subject Mappé directement après le décodage UTF-8 et la suppression des retours chariot, des sauts de ligne et des guillemets supplémentaires. Également utilisé pour remplir network_data.
msg1 Diverses Analysé à l'aide du filtre kv. Utilisé pour extraire le nom d'hôte, helo, env-from et reply-to.
outbound_malware_scanning_policy_group read_only_udm.security_result.detection_fields.value Directement mappé s'il n'est pas vide, "-" ou "NONE". La clé est "DataSecurityPolicyGroup".
port read_only_udm.target.port Mappé directement et converti en entier.
principalMail read_only_udm.principal.user.email_addresses Mappé directement.
principalUrl read_only_udm.principal.url Mappé directement.
product_event read_only_udm.metadata.product_event_type Mappé directement. Permet de déterminer les modèles grok à appliquer. Les caractères "%" en début de chaîne sont supprimés. "amp" est remplacé par "SIEM_AMPenginelogs".
product_version read_only_udm.metadata.product_version Mappé directement.
protocol read_only_udm.network.tls.version Mappé directement.
received_bytes read_only_udm.network.received_bytes Mappé directement et converti en entier non signé.
adresse-réponse read_only_udm.additional.fields.value.string_value Mappé directement. La clé est "Reply-To".
réputation read_only_udm.security_result.confidence_details Mappé directement.
request_method_uri read_only_udm.target.url Mappé directement.
result_code read_only_udm.security_result.detection_fields.value Mappé directement. La clé est "Code de résultat".
routing_policy_group read_only_udm.security_result.detection_fields.value Directement mappé s'il n'est pas vide, "-" ou "NONE". La clé est "RoutingPolicyGroup".
règle read_only_udm.security_result.detection_fields.value Mappé directement. La clé est "Matched Condition".
SDRThreatCategory read_only_udm.security_result.threat_name Directement mappé s'il n'est pas vide ou si la valeur est "N/A".
SenderCountry read_only_udm.principal.location.country_or_region Mappé directement.
senderGroup read_only_udm.principal.group.group_display_name Mappé directement.
security_description read_only_udm.security_result.description Mappé directement.
security_email read_only_udm.security_result.about.email ou read_only_udm.principal.hostname Mappé à l'adresse e-mail si elle est valide. Sinon, mappé au nom d'hôte après extraction avec grok.
source read_only_udm.network.ip_protocol Si la valeur contient "tcp", elle est associée à "TCP".
sourceAddress read_only_udm.principal.ip Mappé directement.
sourceHostName read_only_udm.principal.administrative_domain Mappé directement si la valeur n'est pas "unknown" (inconnu).
source_ip read_only_udm.principal.ip Mappé directement. Remplace l'adresse IP, le cas échéant.
Objet read_only_udm.network.email.subject Mappé directement après suppression des points de fin. Également utilisé pour remplir network_data.
suser read_only_udm.principal.user.email_addresses, read_only_udm.network.email.bounce_address Mappé directement aux deux champs UDM s'il s'agit d'une adresse e-mail valide.
target_ip read_only_udm.target.ip Mappé directement.
à read_only_udm.network.email.to Mappé directement s'il s'agit d'une adresse e-mail valide. Sert également à renseigner network_to.
total_bytes read_only_udm.network.sent_bytes Mappé directement et converti en entier non signé.
trackerHeader read_only_udm.additional.fields.value.string_value Mappé directement. La clé est "Tracker Header".
ts, ts1, year read_only_udm.metadata.event_timestamp.seconds Permet de construire l'horodatage de l'événement. ts1 et l'année sont combinés si ts1 est présent. Différents formats sont acceptés, avec ou sans l'année. Si l'année n'est pas indiquée, l'année en cours est utilisée. Codé en dur sur "Cisco". Codé en dur sur "Cisco Email Security". La valeur par défaut est "ALLOW" (AUTORISER). Défini sur "BLOCK" en fonction du niveau de journalisation ou de la description. La valeur par défaut est "INBOUND" si application_protocol est présent. Définissez deviceDirection pour les messages CEF. Déterminé en fonction d'une combinaison de champs, y compris network_from, network_to, target_ip, ip, description, event_type, principal_host, Hostname, user_id et sourceAddress. La valeur par défaut est "GENERIC_EVENT". Définissez sur "SMTP" si application_protocol est "SMTP" ou "smtp", ou si target_ip et ip sont présents. Définissez la valeur sur "AUTHTYPE_UNSPECIFIED" si login_status et user_id sont présents dans les journaux sshd. Défini sur "true" si le niveau de journalisation est "Critical" ou "Alert".

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