Collecter les journaux HAProxy

Compatible avec :

Ce document explique comment ingérer des journaux HAProxy dans Google Security Operations à l'aide de Bindplane. L'analyseur Logstash extrait les champs des messages syslog HAProxy à l'aide d'une série de règles de correspondance de modèle Grok, spécialement conçues pour gérer différents formats de journaux HAProxy. Il mappe ensuite les champs extraits au modèle de données unifié (UDM), en enrichissant les données avec un contexte supplémentaire et en standardisant la représentation pour une analyse plus approfondie.

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, les ports du pare-feu sont ouverts.
  • Accès privilégié à HAProxy

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

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 Bindplane pour ingérer Syslog et l'envoyer à Google SecOps

  1. Accédez au fichier de configuration :
    • Recherchez le fichier config.yaml. En règle générale, il se trouve 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
            ingestion_labels:
                log_type: 'HAPROXY'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.

  4. Remplacez <customer_id> par le numéro client réel.

  5. 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 pour HAProxy

  1. Connectez-vous à HAproxy à l'aide de la CLI.
  2. Ajoutez la directive log dans la section global de la Configuration pour transférer les messages Syslog via UDP.

    • Remplacez <bindplane-ips> par l'adresse IP réelle de l'agent Bindplane.
    global
      log <bindplane-ip>:514 local0
    
    defaults
      log global
    

Table de mappage UDM

Champ du journal Mappage UDM Logique
accept_date_ms
actconn
backend_name
backend_queue
beconn
bytes_read network.received_bytes Extrait du champ bytes_read du journal et converti en entier non signé.
captured_request_headers
client_ip principal.ip Extrait du champ client_ip du journal.
client_port principal.port Extrait du champ client_port du journal et converti en entier.
command_description metadata.description Extrait du champ command_description du journal, s'il est disponible. Sinon, il est dérivé d'autres champs tels que action ou status, en fonction du message du journal.
Date/Heure metadata.event_timestamp.seconds Extrait du champ datetime du journal, s'il est disponible. Sinon, il est dérivé du champ timestamp de l'entrée de journal.
description metadata.description Extrait du champ description du journal, s'il est disponible. Sinon, il est dérivé d'autres champs tels que command_description ou action, en fonction du message du journal.
feconn
frontend_name
http_request target.url Extrait du champ http_request du journal.
http_status_code network.http.response_code Extrait du champ http_status_code du journal et converti en entier.
http_verb network.http.method Extrait du champ http_verb du journal.
http_version metadata.product_version Extrait du champ http_version du journal et mis en forme en tant que HTTP/{version}.
initiateur target.application Extrait du champ initiator du journal.
module
Message security_result.summary Extrait du champ msg du journal.
pid target.process.pid Extrait du champ pid du journal.
de diffusion inverse
process_name target.application Extrait du champ process_name du journal.
retries
server_name target.hostname Extrait du champ server_name du journal. Si ce champ est vide, la valeur par défaut est celle de syslog_server.
de gravité, security_result.severity Mappé à partir du champ severity dans le journal. WARNING correspond à MEDIUM, ALERT correspond à CRITICAL et NOTICE correspond à INFORMATIONAL.
shell
srv_queue
srvconn
état
syslog_server target.hostname, intermediary.hostname Extrait du champ syslog_server du journal. Utilisé à la fois pour le nom d'hôte cible (si server_name est vide) et pour le nom d'hôte intermédiaire.
syslog_timestamp
syslog_timestamp_1
syslog_timestamp_2
syslog_timestamp_4
target_ip
time_backend_connect
time_backend_response
time_duration
time_queue
time_request
timestamp metadata.event_timestamp.seconds Extrait du champ timestamp du journal et analysé pour obtenir des informations sur la date et l'heure. Utilisé comme code temporel de l'événement.
unknown_parameters1
unknown_parameters2
user_name target.user.userid Extrait du champ user_name du journal.
metadata.event_type Défini sur NETWORK_HTTP par défaut. Passé à des types d'événements spécifiques tels que PROCESS_UNCATEGORIZED, STATUS_UPDATE ou USER_UNCATEGORIZED en fonction du message du journal et des champs analysés.
metadata.vendor_name Variable définie sur HAProxy Enterprise.
metadata.product_name Variable définie sur HAProxy.
network.application_protocol Définie sur HTTP si le champ message contient HTTP.
metadata.log_type Variable définie sur HAPROXY.

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