Collecter les journaux Cisco IronPort
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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- 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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- 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
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installation de Linux
- Ouvrez un terminal avec les droits root ou sudo.
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
- 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).
- Trouvez le fichier
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
- Connectez-vous à l'interface utilisateur Web de Cisco IronPort.
- Cliquez sur Administration système > Abonnements aux journaux.
- Cliquez sur Ajouter un abonnement au journal.
- 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
ousyslog
.
- 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.