Collecter les journaux F5 AFM
Ce document explique comment ingérer les journaux F5 Advanced Firewall Management (AFM) dans Google Security Operations à l'aide de l'agent Bindplane.
F5 BIG-IP AFM est un module de pare-feu de réseau qui génère des messages syslog pour les actions des règles de pare-feu (accepter, supprimer, refuser), les événements d'intelligence IP et les erreurs TCP. L'analyseur extrait les champs des journaux au format CSV ou syslog, et les mappe au modèle UDM (Unified Data Model).
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 - Connectivité réseau entre l'agent Bindplane et l'appliance F5-BIG-IP
- 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é à F5 BIG-IP et F5 Advanced Firewall Management
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 l'agent 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" /quietAttendez la fin de l'installation.
Vérifiez l'installation en exécutant la commande suivante :
sc query observiq-otel-collectorLe service doit être indiqué comme RUNNING (EN COURS D'EXÉCUTION).
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.shAttendez la fin de l'installation.
Vérifiez l'installation en exécutant la commande suivante :
sudo systemctl status observiq-otel-collectorLe service doit être indiqué comme actif (en cours d'exécution).
Ressources d'installation supplémentaires
Pour obtenir d'autres options d'installation et des conseils 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.yamlWindows :
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifiez le fichier de configuration
Remplacez l'intégralité du contenu de
config.yamlpar la configuration suivante :receivers: tcplog: listen_address: "0.0.0.0:5145" exporters: chronicle/f5_afm: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: F5_AFM raw_log_field: body service: pipelines: logs/f5_afm_to_chronicle: receivers: - tcplog exporters: - chronicle/f5_afm
Paramètres de configuration
Remplacez les espaces réservés suivants :
Configuration du récepteur :
listen_address: adresse IP et port à écouter :0.0.0.0pour écouter sur toutes les interfaces (recommandé)- Le port
5145est utilisé pour la journalisation haute vitesse F5 AFM (ajustez-le en fonction de votre configuration F5).
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
- Linux :
customer_id: ID client copié depuis la console Google SecOpsendpoint: 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.
- États-Unis :
Enregistrez le fichier de configuration.
- Après avoir modifié le fichier, enregistrez-le :
- Linux : appuyez sur
Ctrl+O, puis surEnter, puis surCtrl+X. - Windows : cliquez sur Fichier > Enregistrer.
- Linux : appuyez sur
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-collectorVérifiez que le service est en cours d'exécution :
sudo systemctl status observiq-otel-collectorRecherchez 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-collectorConsole Services :
- Appuyez sur
Win+R, saisissezservices.msc, puis appuyez sur Entrée. - Localisez observIQ OpenTelemetry Collector.
- Effectuez un clic droit, puis sélectionnez Redémarrer.
Vérifiez que le service est en cours d'exécution :
sc query observiq-otel-collectorRecherchez les erreurs dans les journaux :
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Appuyez sur
Activer F5 BIG-IP Advanced Firewall Manager
- Connectez-vous à la console de gestion de l'appliance BIG-IP.
- Accédez à Système > Licence.
- Vérifiez que le Gestionnaire de pare-feu avancé est sous licence et activé.
- Pour activer le Gestionnaire de pare-feu avancé, accédez à Système > Ressource > Provisionnement.
- Cochez la case dans la colonne "Provisionnement", puis sélectionnez Nominal dans la liste.
- Cliquez sur Envoyer.
Configurer le pool de journalisation dans F5 AFM
- Accédez à Trafic local > Pools.
- Cliquez sur Créer.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez un nom pour le pool de journaux (par exemple, logging_pool).
- Health Monitor (Surveillance de l'état) : dans la liste Available (Disponible), sélectionnez TCP, puis cliquez sur <<.
- Dans l'onglet Ressource, sélectionnez le pool de journaux que vous avez créé précédemment dans la liste Nom du nœud.
- Dans le champ Adresse, saisissez l'adresse IP de l'agent Bindplane.
- Dans le champ Port du service, saisissez
5145ou un autre port tel que vous l'avez défini dans l'agent Bindplane. - Cliquez sur Ajouter.
- Cliquez sur Terminer.
Configurer la destination du journal mis en forme dans F5 AFM
- Accédez à Système> Journaux> Configuration> Destinations des journaux.
- Cliquez sur Créer.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez un nom pour la destination du format de journalisation (par exemple,
Logging_Format_Destination). - Description : saisissez une description.
- Type : sélectionnez Syslog distant.
- Format Syslog : sélectionnez Syslog.
- Destination des journaux à haut débit : sélectionnez la destination des journaux à haut débit (par exemple,
Logging_HSL_Destination).
- Nom : saisissez un nom pour la destination du format de journalisation (par exemple,
- Cliquez sur Terminé.
Configurer Log Publisher dans F5 AFM
- Accédez à Système > Journaux > Configuration > Éditeurs de journaux.
- Cliquez sur Créer.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez un nom pour l'éditeur (par exemple,
Log_Publisher). - Description : saisissez une description.
- Destinations : sélectionnez le nom de la destination du journal que vous avez créé à l'étape Configurer le pool de journalisation dans F5 AFM, puis cliquez sur << pour ajouter des éléments à la liste Sélectionnés.
- Nom : saisissez un nom pour l'éditeur (par exemple,
Configurer le profil de journalisation dans F5 AFM
- Accédez à Sécurité > Journaux d'événements > Profil de journalisation.
- Cliquez sur Créer.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez un nom pour le profil de journal (par exemple, Logging_Profile).
- Pare-feu réseau : cochez la case Activé.
- Éditeur : sélectionnez l'éditeur de journaux que vous avez configuré précédemment (par exemple,
Log_Publisher). - Correspondances des règles de journalisation : cochez les cases Accepter, Supprimer et Refuser.
- Consigner les erreurs d'adresse IP : cochez la case Activé.
- Consigner les erreurs TCP : cochez la case Activé.
- Consigner les événements TCP : cochez la case Activé.
- Format de stockage : sélectionnez Liste de champs.
- Délimiteur : saisissez
,(virgule) comme délimiteur pour les événements. - Options de stockage : sélectionnez toutes les options dans la liste Éléments disponibles, puis cliquez sur <<.
- Dans l'onglet IP Intelligence, sélectionnez l'éditeur de journaux que vous avez configuré (par exemple,
Log_Publisher).
- Cliquez sur Terminé.
Configurer l'association de profil de serveur virtuel dans F5 AFM
- Accédez à Trafic local> Serveurs virtuels.
- Sélectionnez le serveur virtuel à modifier.
- Accédez à l'onglet Sécurité> Règles.
- Dans la liste Profil de journal, sélectionnez Activé.
- Dans le champ Profil, sélectionnez Logging_Profile, puis cliquez sur <<.
- Cliquez sur Mettre à jour.
Table de mappage UDM
| Champ du journal | Mappage UDM | Logique |
|---|---|---|
| acl_policy_name | security_result.detection_fields.acl_policy_name | Valeur de la colonne 22 si le format du journal est SYSLOG, sinon valeur de la colonne 13 |
| acl_policy_type | security_result.detection_fields.acl_policy_type | Valeur de la colonne 21 si le format du journal est SYSLOG, sinon valeur de la colonne 18 |
| acl_rule_name | security_result.rule_name | Valeur de la colonne 23 si le format du journal est SYSLOG, sinon valeur de la colonne 11 |
| acl_rule_uuid | security_result.rule_id | Valeur du champ "acl_rule_uuid" du modèle Grok |
| action | security_result.action | Si la valeur de la colonne 25 est Drop, Reject ou Block, alors BLOCK. Sinon, si la valeur de la colonne 25 est Accept, Accept decisively, Established ou Allow, alors ALLOW. |
| attackID | security_result.detection_fields.attackID | Valeur de la colonne 12 si le format du journal est CSV sans src_ip |
| bigip_hostname | intermediary.hostname | Valeur de la colonne 2 si le format du journal est SYSLOG, sinon valeur de la colonne 3 |
| bigip_ip | intermediary.ip | Valeur de la colonne 2 si le format du journal est SYSLOG, sinon valeur de la colonne 1 |
| context_name | additional.fields.context_name.string_value | Valeur de la colonne 4 si le format du journal est SYSLOG, sinon valeur de la colonne 10 si src_ip est présent, sinon valeur de la colonne 5 |
| context_type | additional.fields.context_type.string_value | Valeur de la colonne 3 si le format du journal est SYSLOG, sinon valeur de la colonne 4 si src_ip est présent, sinon valeur de la colonne 4 |
| dest_fqdn | additional.fields.dest_fqdn.string_value | Valeur de la colonne 7 si le format du journal est SYSLOG, sinon valeur de la colonne 13 |
| dest_geo | additional.fields.dest_geo.string_value | Valeur de la colonne 14 |
| dest_ip | target.asset.ip, target.ip | Valeur de la colonne 8 si le format du journal est SYSLOG, sinon valeur de la colonne 6 si src_ip est présent, sinon valeur de la colonne 6 |
| dest_port | target.port | Valeur de la colonne 10 si le format du journal est SYSLOG, sinon valeur de la colonne 8 si src_ip est présent, sinon valeur de la colonne 8 |
| drop_reason | security_result.summary | Valeur de la colonne 26 si le format du journal est SYSLOG, sinon valeur de la colonne 19 |
| eventId | additional.fields.eventId.string_value | Valeur capturée dans le modèle Grok |
| flow_id | additional.fields.flow_id.string_value | Valeur de la colonne 29 si le format du journal est SYSLOG, sinon valeur de la colonne 17 |
| loglevel | security_result.severity | Si la valeur du champ "loglevel" du modèle Grok est warning, debug ou notice, le niveau de gravité est "MEDIUM". Si la valeur est info ou informational, le niveau de gravité est "INFORMATIONAL". Si la valeur est err ou error, le niveau de gravité est "HIGH". Si la valeur est alert, crit ou emer, le niveau de gravité est "CRITICAL". |
| packetsReceived | network.received_packets | Valeur de la colonne 15 si le format du journal est CSV sans src_ip |
| de diffusion inverse | target.application | Valeur du champ de processus à partir du modèle grok |
| protocol_number_src | network.ip_protocol | Valeur de la colonne 12 si le format du journal est SYSLOG, sinon valeur extraite de la variable ip_protocol_out |
| route_domain | additional.fields.route_domain.string_value | Valeur de la colonne 13 si le format du journal est SYSLOG, sinon valeur de la colonne 9 |
| source_fqdn | additional.fields.source_fqdn.string_value | Valeur de la colonne 5 si le format du journal est SYSLOG, sinon valeur de la colonne 7 |
| src_geo | additional.fields.src_geo.string_value | Valeur de la colonne 8 |
| src_ip | principal.asset.ip, principal.ip | Valeur de la colonne 6 si le format du journal est SYSLOG, sinon valeur de la colonne 9 si le format du journal est CSV sans src_ip, sinon valeur de la colonne 5 |
| src_port | principal.port | Valeur de la colonne 9 si le format du journal est SYSLOG, sinon valeur de la colonne 7 si le format du journal est CSV sans src_ip, sinon valeur de la colonne 7 |
| ts | metadata.event_timestamp | Valeur du champ "ts" du modèle grok |
| vlan | additional.fields.vlan.string_value | Valeur de la colonne 11 si le format du journal est SYSLOG, sinon valeur de la colonne 21 |
| metadata.event_type | Si src_ip et dest_ip existent, NETWORK_CONNECTION. Si seul src_ip existe, STATUS_UPDATE. Sinon, GENERIC_EVENT. | |
| metadata.log_type | F5_AFM | |
| metadata.product_name | Gestion avancée du pare-feu | |
| metadata.vendor_name | F5 |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.