Collecter les journaux Cisco Firepower NGFW
Ce document explique comment ingérer les journaux Cisco Firepower Next Generation Firewall (NGFW) dans Google Security Operations à l'aide de Bindplane. L'analyseur extrait les journaux de différents formats (syslog, JSON et combinaisons de ces formats), normalise le code temporel et mappe les champs pertinents au modèle de données unifié (UDM). Il gère à la fois les messages syslog conventionnels et les charges utiles au format JSON dans les journaux, en tirant parti des modèles grok et de la logique conditionnelle pour extraire des champs tels que l'ID d'événement, la gravité et l'adresse IP du client. Il enrichit ensuite les données avec des libellés basés sur le nom d'hôte HTTP et l'URI.
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é à un appareil Cisco Firepower
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres 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 Bindplane pour ingérer les journaux Syslog et les 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_FIREPOWER_FIREWALL' 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
avec le chemin d'accès à l'emplacement 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 un appareil Cisco FirePower
- Connectez-vous à l'interface utilisateur Web de Firepower Device Manager.
- Accédez à Paramètres système > Paramètres de journalisation.
- Basculez le bouton Journalisation des données sur Activer.
- Cliquez sur l'icône + sous Syslog Servers (Serveurs Syslog).
- Cliquez sur Créer un serveur Syslog. (Vous pouvez également créer le serveur Syslog dans Objets > Serveurs Syslog.)
- Fournissez les informations de configuration suivantes :
- Adresse IP : saisissez l'adresse IP de l'agent Bindplane.
- Type de protocole : sélectionnez UDP.
- Numéro de port : saisissez le numéro de port de l'agent Bindplane.
- Sélectionnez Interface de données ou Interface de gestion.
- Cliquez sur OK.
- Sélectionnez le serveur Syslog que vous venez de créer dans la liste, puis cliquez sur OK.
- Cliquez sur Niveau de gravité pour filtrer tous les événements, puis sélectionnez le niveau de journalisation Informations dans la liste.
- Cliquez sur Enregistrer.
- Cliquez sur l'icône Déployer de nouveaux paramètres> Déployer maintenant.
- Cliquez sur Règles en haut de l'écran.
- Pointez sur le côté droit de la règle ACP, puis cliquez sur edit Modifier.
- Accédez à l'onglet Logging.
- Sélectionnez À la fin de la connexion.
- Ouvrez la liste Sélectionner une configuration d'alerte Syslog.
- Sélectionnez le serveur Syslog Bindplane.
- Cliquez sur OK.
- Cliquez sur l'icône Déployer de nouveaux paramètres> Déployer maintenant.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
AccessControlRuleAction |
security_result.action |
Directement mappé à partir du journal brut. Les valeurs sont normalisées en UDM (ALLOW/BLOCK). |
AccessControlRuleName |
security_result.rule_name |
Directement mappé à partir du journal brut. |
ACPolicy |
security_result.rule_labels.value |
Directement mappé à partir du journal brut. La clé est définie sur "ACPolicy". |
ApplicationProtocol |
network.application_protocol |
Directement mappé à partir du journal brut. |
Client |
network.http.user_agent |
Directement mappé à partir du journal brut. |
ClientVersion |
principal.asset.platform_version |
Directement mappé à partir du journal brut. |
collection_time.nanos |
metadata.event_timestamp.nanos |
Directement mappé à partir du journal brut. |
collection_time.seconds |
metadata.event_timestamp.seconds |
Directement mappé à partir du journal brut. |
ConnectionDuration |
network.session_duration.seconds |
Directement mappé à partir du journal brut, converti en secondes si nécessaire (par exemple, à partir du format de durée). |
data |
metadata.description |
Utilisé en association avec eventId pour générer une description plus détaillée. Également utilisé pour extraire d'autres champs à l'aide de grok et d'expressions régulières. |
deviceId |
metadata.product_log_id |
Directement mappé à partir du journal brut après avoir été renommé device_uuid . |
device_uuid |
metadata.product_log_id |
Directement mappé à partir du journal brut. |
DstIP |
target.asset.ip , target.ip |
Directement mappé à partir du journal brut. |
DstPort |
target.port |
Directement mappé à partir du journal brut. |
EgressInterface |
principal.asset.attribute.labels.value |
Directement mappé à partir du journal brut. La clé est définie sur "EgressInterface". |
EgressZone |
target.location.name |
Directement mappé à partir du journal brut. |
eventId |
metadata.product_event_type |
Directement mappé à partir du journal brut. Également utilisé pour la logique conditionnelle et le filtrage. |
FileAction |
security_result.summary |
Directement mappé à partir du journal brut. |
FileDirection |
metadata.description |
Directement mappé à partir du journal brut et ajouté à la description. |
FileName |
target.file.full_path |
Directement mappé à partir du journal brut. |
FilePolicy |
security_result.rule_name |
Directement mappé à partir du journal brut. |
FileSize |
target.file.size |
Directement mappé à partir du journal brut. |
FileSHA256 |
target.file.sha256 |
Directement mappé à partir du journal brut. |
FileSandboxStatus |
security_result.description |
Directement mappé à partir du journal brut. |
HTTPReferer |
network.http.referral_url |
Directement mappé à partir du journal brut. |
HTTPResponse |
network.http.response_code |
Directement mappé à partir du journal brut. |
HTTP_Hostname |
target.resource.attribute.labels.value |
Directement mappé à partir du journal brut. La clé est définie sur "HTTP_Hostname". |
HTTP_URI |
target.resource.attribute.labels.value |
Directement mappé à partir du journal brut. La clé est définie sur "HTTP_URI". |
IngressInterface |
principal.asset.attribute.labels.value |
Directement mappé à partir du journal brut. La clé est définie sur "IngressInterface". |
IngressZone |
principal.location.name |
Directement mappé à partir du journal brut. |
InitiatorBytes |
network.received_bytes |
Directement mappé à partir du journal brut. |
InlineResult |
security_result.action_details |
Directement mappé à partir du journal brut. |
IntrusionPolicy |
security_result.rule_name |
Directement mappé à partir du journal brut. |
log_type |
metadata.log_type |
Directement mappé à partir du journal brut. |
Message |
security_result.description |
Directement mappé à partir du journal brut, souvent précédé de "Message : ". |
NAPPolicy |
principal.asset.attribute.labels.value |
Directement mappé à partir du journal brut. La clé est définie sur "NAPPolicy". |
Prefilter Policy |
security_result.rule_labels.value |
Directement mappé à partir du journal brut. La clé est définie sur "Prefilter Policy". |
Priority |
security_result.priority_details |
Directement mappé à partir du journal brut. |
priorityId |
security_result.priority_details |
Directement mappé à partir du journal brut. |
product |
metadata.product_name |
Définissez-le sur "Firepower Firewall". |
Protocol |
network.ip_protocol |
Directement mappé à partir du journal brut. Les valeurs sont normalisées sur UDM (TCP, UDP, ICMP, etc.). |
ResponderBytes |
network.sent_bytes |
Directement mappé à partir du journal brut. |
Revision |
security_result.about.labels.value |
Directement mappé à partir du journal brut. La clé est définie sur "Signature_Version". |
ruleId |
security_result.rule_id |
Directement mappé à partir du journal brut. |
security_result.severity |
security_result.severity |
Définie en fonction du champ severity du journal brut, à l'aide d'une table de conversion pour le mappage aux valeurs de gravité UDM. |
security_result.severity_details |
security_result.severity_details |
Définie en fonction du champ severity du journal brut, à l'aide d'une table de recherche pour le mappage aux détails de gravité de l'UDM. |
SID |
security_result.threat_id |
Directement mappé à partir du journal brut. |
SrcIP |
principal.asset.ip , principal.ip |
Directement mappé à partir du journal brut. |
SrcPort |
principal.port |
Directement mappé à partir du journal brut. |
syslog_msg_id |
metadata.product_event_type |
Mappé directement à partir du journal brut après avoir été converti en chaîne. Permet de remplacer eventId , le cas échéant. |
syslog_msg_text |
metadata.description , security_result.description |
Mappé directement à partir du journal brut, parfois précédé de "Message : ". Utilisé pour remplacer la description générée à partir de data et eventId . |
syslog_severity |
security_result.severity |
Mappé directement à partir du journal brut après avoir été converti en chaîne. Permet de remplacer le niveau de gravité dérivé de eventId . Les valeurs sont normalisées au format UDM (INFORMATIONAL, WARNING, ERROR, etc.). |
sysloghost |
intermediary.hostname |
Directement mappé à partir du journal brut. |
ThreatName |
security_result.threat_name |
Directement mappé à partir du journal brut. |
ts |
metadata.event_timestamp |
Analysé à partir du journal brut à l'aide de filtres de date et de différents formats. |
ts_year |
metadata.event_timestamp |
Analysé à partir du journal brut à l'aide de filtres de date et de différents formats. |
URL |
target.url |
Directement mappé à partir du journal brut. |
URLCategory |
security_result.category_details |
Directement mappé à partir du journal brut. |
URLReputation |
security_result.confidence_details |
Directement mappé à partir du journal brut. |
User |
target.user.userid |
Directement mappé à partir du journal brut. |
UserAgent |
network.http.user_agent |
Directement mappé à partir du journal brut. |
UserName |
target.user.userid |
Directement mappé à partir du journal brut. |
user_name |
principal.user.email_addresses |
Directement mappé à partir du journal brut pour des types d'événements spécifiques. |
WebApplication |
target.application |
Directement mappé à partir du journal brut. |
metadata.event_type est défini sur la valeur par défaut NETWORK_CONNECTION et est parfois remplacé en fonction de eventId ou d'autres champs. |
||
metadata.vendor_name est toujours défini sur "Cisco". |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.