Collecter les journaux F5 AFM

Compatible avec :

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

  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.
  4. 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

  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).

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.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: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.0 pour écouter sur toutes les interfaces (recommandé)
      • Le port 5145 est 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
    • customer_id : ID client copié depuis la console Google SecOps
    • 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.

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"
        

Activer F5 BIG-IP Advanced Firewall Manager

  1. Connectez-vous à la console de gestion de l'appliance BIG-IP.
  2. Accédez à Système > Licence.
  3. Vérifiez que le Gestionnaire de pare-feu avancé est sous licence et activé.
  4. Pour activer le Gestionnaire de pare-feu avancé, accédez à Système > Ressource > Provisionnement.
  5. Cochez la case dans la colonne "Provisionnement", puis sélectionnez Nominal dans la liste.
  6. Cliquez sur Envoyer.

Configurer le pool de journalisation dans F5 AFM

  1. Accédez à Trafic local > Pools.
  2. Cliquez sur Créer.
  3. 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 <<.
  4. Dans l'onglet Ressource, sélectionnez le pool de journaux que vous avez créé précédemment dans la liste Nom du nœud.
  5. Dans le champ Adresse, saisissez l'adresse IP de l'agent Bindplane.
  6. Dans le champ Port du service, saisissez 5145 ou un autre port tel que vous l'avez défini dans l'agent Bindplane.
  7. Cliquez sur Ajouter.
  8. Cliquez sur Terminer.

Configurer la destination du journal mis en forme dans F5 AFM

  1. Accédez à Système> Journaux> Configuration> Destinations des journaux.
  2. Cliquez sur Créer.
  3. 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).
  4. Cliquez sur Terminé.

Configurer Log Publisher dans F5 AFM

  1. Accédez à Système > Journaux > Configuration > Éditeurs de journaux.
  2. Cliquez sur Créer.
  3. 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.

Configurer le profil de journalisation dans F5 AFM

  1. Accédez à Sécurité > Journaux d'événements > Profil de journalisation.
  2. Cliquez sur Créer.
  3. 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).
  4. Cliquez sur Terminé.

Configurer l'association de profil de serveur virtuel dans F5 AFM

  1. Accédez à Trafic local> Serveurs virtuels.
  2. Sélectionnez le serveur virtuel à modifier.
  3. Accédez à l'onglet Sécurité> Règles.
  4. Dans la liste Profil de journal, sélectionnez Activé.
  5. Dans le champ Profil, sélectionnez Logging_Profile, puis cliquez sur <<.
  6. 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.