Collecter les journaux Cisco IronPort

Compatible avec :

Ce document explique comment ingérer des journaux Cisco IronPort dans Google Security Operations à l'aide de Bindplane. L'analyseur syntaxique extrait les champs des messages syslog, en particulier ceux liés aux événements AccessLogs_chron. Il utilise des modèles Grok pour analyser le message, convertir les types de données et mapper les champs extraits au modèle de données unifié (UDM), en gérant divers champs spécifiques à Cisco Ironport tels que les groupes de règles et les décisions d'accès. Il effectue également gestion des exceptions de base et définit des champs de métadonnées tels que le nom du fournisseur et du produit.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

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

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 Bindpolane 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_IRONPORT'
            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 sur Cisco IronPort

  1. Connectez-vous à l'interface utilisateur Web de Cisco IronPort.
  2. Cliquez sur Administration 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 Journaux d'accès ou d'autres journaux que vous souhaitez exporter.
    • Style du journal : sélectionnez Squid.
    • Nom du fichier : indiquez un nom de fichier s'il n'est pas fourni par défaut.
    • Méthode de récupération : sélectionnez Syslog Push (utilise le port par défaut 514).
    • Nom d'hôte : saisissez l'adresse IP de l'agent Bindplane.
    • Protocole : sélectionnez UDP.
    • Établissement : sélectionnez local0 ou syslog.
  5. Cliquez sur Envoyer.

Table de mappage UDM

Champ de journal Mappage UDM Logique
AccessLogs_chron metadata.product_event_type Directement mappé à partir du champ product_event extrait par le premier analyseur grok.
acl_decision_tag security_result.detection_fields.key La valeur est "ACL Decision Tag". La logique du parseur définit cette valeur lorsque acl_decision_tag est présent dans les journaux.
acl_decision_tag security_result.detection_fields.value Directement mappé à partir du champ acl_decision_tag extrait par le deuxième analyseur grok.
access_or_decryption_policy_group security_result.detection_fields.key La valeur est "AccessOrDecryptionPolicyGroup". La logique du parseur définit cette valeur lorsque access_or_decryption_policy_group est présent dans les journaux.
access_or_decryption_policy_group security_result.detection_fields.value Directement mappé à partir du champ access_or_decryption_policy_group extrait par le deuxième analyseur grok.
authenticated_user principal.user.userid Extrait du champ authenticated_user à l'aide de grok et gsub pour supprimer les barres obliques inverses et les guillemets.
cache_hierarchy_retrieval security_result.detection_fields.key La valeur est "Cache Hierarchy Retrieval" (Récupération de la hiérarchie du cache). La logique du parseur définit cette valeur lorsque cache_hierarchy_retrieval est présent dans les journaux.
cache_hierarchy_retrieval security_result.detection_fields.value Directement mappé à partir du champ cache_hierarchy_retrieval extrait par le deuxième analyseur grok.
data_security_policy_group security_result.detection_fields.key La valeur est "DataSecurityPolicyGroup". La logique du parseur définit cette valeur lorsque data_security_policy_group est présent dans les journaux.
data_security_policy_group security_result.detection_fields.value Directement mappé à partir du champ data_security_policy_group extrait par le deuxième analyseur grok.
external_dlp_policy_group security_result.detection_fields.key La valeur est "ExternalDlpPolicyGroup". La logique du parseur définit cette valeur lorsque external_dlp_policy_group est présent dans les journaux.
external_dlp_policy_group security_result.detection_fields.value Directement mappé à partir du champ external_dlp_policy_group extrait par le deuxième analyseur grok.
hostname principal.asset.hostname Directement mappé à partir du champ hostname extrait par le premier analyseur grok.
hostname principal.hostname Directement mappé à partir du champ hostname extrait par le premier analyseur grok.
http_method network.http.method Directement mappé à partir du champ http_method extrait par le deuxième analyseur grok.
http_response_code network.http.response_code Mappé directement à partir du champ http_response_code extrait par le deuxième analyseur grok et converti en entier.
identity_policy_group security_result.detection_fields.key La valeur est "IdentityPolicyGroup". La logique du parseur définit cette valeur lorsque identity_policy_group est présent dans les journaux.
identity_policy_group security_result.detection_fields.value Directement mappé à partir du champ identity_policy_group extrait par le deuxième analyseur grok. Copié à partir du champ timestamp après le traitement du filtre de date. Défini sur "STATUS_UPDATE" si has_principal est défini sur "true", sinon défini sur "GENERIC_EVENT". Valeur constante : "Cisco Ironport". Valeur constante : "Cisco".
outbound_malware_scanning_policy_group security_result.detection_fields.key La valeur est "OutboundMalwareScanningPolicyGroupS". La logique du parseur définit cette valeur lorsque outbound_malware_scanning_policy_group est présent dans les journaux.
outbound_malware_scanning_policy_group security_result.detection_fields.value Directement mappé à partir du champ outbound_malware_scanning_policy_group extrait par le deuxième analyseur grok.
request_method_uri target.url Directement mappé à partir du champ request_method_uri extrait par le deuxième analyseur grok.
result_code security_result.detection_fields.key La valeur est "Code de résultat". La logique du parseur définit cette valeur lorsque result_code est présent dans les journaux.
result_code security_result.detection_fields.value Directement mappé à partir du champ result_code extrait par le deuxième analyseur grok.
routing_policy_group security_result.detection_fields.key La valeur est "RoutingPolicyGroup". La logique du parseur définit cette valeur lorsque routing_policy_group est présent dans les journaux.
routing_policy_group security_result.detection_fields.value Directement mappé à partir du champ routing_policy_group extrait par le deuxième analyseur grok.
severity security_result.severity Mappé à partir du champ severity. Si la valeur est "Info", elle est définie sur "INFORMATIONAL".
source_ip principal.asset.ip Directement mappé à partir du champ source_ip extrait par le deuxième analyseur grok.
source_ip principal.ip Directement mappé à partir du champ source_ip extrait par le deuxième analyseur grok.
timestamp timestamp Extraite du champ message à l'aide de grok, puis analysée à l'aide du filtre de date.
total_bytes network.sent_bytes Directement mappé à partir du champ total_bytes extrait par le deuxième analyseur grok et converti en entier non signé. Ne sera mappé que s'il n'est pas vide ou s'il n'est pas défini sur "0".

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