Collecter les journaux HP ProCurve

Compatible avec:

Ce document explique comment ingérer les journaux des commutateurs HP ProCurve dans Google Security Operations à l'aide de Bindplane. Le code de l'analyseur tente d'abord d'analyser le message de journal brut au format JSON. Si cela échoue, il utilise des expressions régulières (modèles grok) pour extraire des champs du message en fonction des formats de journal HP ProCurve courants.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes:

  • Instance Google SecOps
  • Windows 2016 ou version ultérieure, ou hôte Linux avec systemd
  • Si l'exécution se fait derrière un proxy, les ports du pare-feu sont ouverts.
  • Accès privilégié à un commutateur HP ProCurve

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 le numéro client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Profil.
  3. Copiez et sauvegardez le numéro client dans la section Détails de l'organisation.

Installer l'agent Bindplane

Installation de Windows

  1. Ouvrez l'invite de commande 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 des 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
    

Autres ressources d'installation

Pour plus d'options d'installation, consultez le guide d'installation.

Configurer l'agent Bindplane pour qu'il ingère les journaux Syslog et les envoie à 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 (nano, vi ou Bloc-notes, par exemple).
  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: '/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: HP_PROCURVE
                    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 dans votre infrastructure si nécessaire.

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

  5. Remplacez /path/to/ingestion-authentication-file.json par le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification d'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 commutateur HP ProCurve

  1. Connectez-vous au commutateur HP Procurve à l'aide de SSH.
  2. Vérifiez l'interface du commutateur à l'aide de la commande suivante:

    show ip int br
    
  3. Activez le mode de configuration sur le commutateur à l'aide de la commande suivante:

    console# conf t
    
  4. Configurez le commutateur pour qu'il envoie des journaux à l'aide des commandes suivantes:

        logging host <bindplae-server-ip> transport <udp/tcp> port <port-number>
        logging facility syslog
        logging trap informational
        logging buffer 65536
        logging origin-id hostname
        logging source-interface <interface>
    
  5. Remplacez <bindplae-server-ip> et <port-number> par l'adresse IP et le numéro de port de Bindplane.

  6. Remplacez <udp/tcp> en sélectionnant uniquement UDP ou TCP comme protocole de communication (en fonction de la configuration de votre agent Bindplane).

  7. Remplacez <interface> par l'ID d'interface que vous avez reçu précédemment du commutateur (par exemple, Ethernet1/1).

  8. Quittez le mode de configuration et enregistrez les modifications à l'aide des commandes suivantes:

    console# exit
    console# wr
    

Tableau de mappage UDM

Champ du journal Mappage UDM Logique
AAAScheme read_only_udm.security_result.detection_fields.value Valeur extraite du champ descrip si la clé est AAAScheme
AAAType read_only_udm.security_result.detection_fields.value Valeur extraite du champ descrip si la clé est AAAType
ID du châssis read_only_udm.security_result.detection_fields.value Valeur extraite du champ description si la clé est Chassis ID
La commande est read_only_udm.security_result.detection_fields.value Texte après Command is dans le champ commandInfo
CommandSource read_only_udm.security_result.detection_fields.value Valeur extraite du champ descrip si la clé est CommandSource
Config-Method read_only_udm.additional.fields.value.string_value Si le champ existe dans le journal, il est placé dans les champs supplémentaires en tant que config_method.
ConfigDestination read_only_udm.security_result.detection_fields.value Valeur extraite du champ descrip si la clé est ConfigDestination
ConfigSource read_only_udm.security_result.detection_fields.value Valeur extraite du champ descrip si la clé est ConfigSource
Device-Name read_only_udm.principal.hostname Si le champ existe dans le journal, il est mappé au nom d'hôte principal et au nom d'hôte de l'asset.
Event-ID read_only_udm.additional.fields.value.string_value Si le champ existe dans le journal, il est placé dans les champs supplémentaires en tant que event_id.
EventIndex read_only_udm.security_result.detection_fields.value Valeur extraite du champ descrip si la clé est EventIndex
IfIndex read_only_udm.security_result.detection_fields.value Valeur extraite du champ description si la clé est IfIndex
Adresse IP: %{IP:IPAddr} read_only_udm.target.ip, read_only_udm.target.asset.ip Adresse IP extraite du champ desc et mappée sur l'adresse IP cible et l'adresse IP de l'élément cible
IPAddr read_only_udm.target.ip, read_only_udm.target.asset.ip Si le champ existe dans le journal, il est mappé sur l'adresse IP cible et l'adresse IP de l'élément cible.
Notice-Type read_only_udm.additional.fields.value.string_value Si le champ existe dans le journal, il est placé dans les champs supplémentaires en tant que notice_type.
ID du port read_only_udm.security_result.detection_fields.value Valeur extraite du champ description si la clé est Port ID
Remote-IP-Address read_only_udm.additional.fields.value.string_value Si le champ existe dans le journal, il est placé dans les champs supplémentaires en tant que remote_ip_address.
Service read_only_udm.security_result.detection_fields.value Valeur extraite du champ descrip si la clé est Service
Tâche read_only_udm.security_result.detection_fields.value Valeur extraite du champ descrip si la clé est Task
Utilisateur read_only_udm.principal.user.userid Si le champ existe dans le journal, il est mappé à l'ID utilisateur principal.
User-Name read_only_udm.principal.user.userid Si le champ existe dans le journal, il est mappé à l'ID utilisateur principal.
Nom d'utilisateur read_only_udm.principal.user.userid Si le champ existe dans le journal, il est mappé à l'ID utilisateur principal.
UserService read_only_udm.security_result.detection_fields.value Valeur extraite du champ desc si la clé est UserService
collection_time.seconds read_only_udm.metadata.event_timestamp.seconds Partie secondes du code temporel de l'événement
données Ce champ contient le message de journal brut et est analysé pour extraire d'autres champs. Il n'est pas mappé sur l'UDM.
décroiss. read_only_udm.security_result.description Description extraite du message de journal
descrip Description extraite du champ desc, analysée pour les paires clé-valeur. Il n'est pas mappé sur l'UDM.
description read_only_udm.security_result.description Si le champ existe dans le journal, il est mappé sur la description du résultat de sécurité.
descript read_only_udm.metadata.description Si le champ existe dans le journal, il est mappé à la description des métadonnées.
event_id read_only_udm.additional.fields.value.string_value Si le champ existe dans le journal, il est placé dans les champs supplémentaires en tant que event_id.
eventId read_only_udm.metadata.product_event_type ID d'événement extrait du message de journal
nom d'hôte read_only_udm.principal.hostname, read_only_udm.principal.asset.hostname Nom d'hôte extrait du message de journal et mappé sur le nom d'hôte principal et le nom d'hôte de l'élément
inter_ip read_only_udm.additional.fields.value.string_value, read_only_udm.intermediary.ip Si le champ existe dans le journal et qu'il s'agit d'une adresse IP valide, il est mappé sur une adresse IP intermédiaire. Sinon, il est placé dans les champs supplémentaires sous la forme inter_ip.
notice_type read_only_udm.additional.fields.value.string_value Si le champ existe dans le journal, il est placé dans les champs supplémentaires en tant que notice_type.
pid read_only_udm.principal.process.pid Si le champ existe dans le journal, il est mappé sur le PID du processus principal.
programme Informations sur le programme extraites du message de journal, analysées pour extraire le module, la gravité et l'action. Il n'est pas mappé sur l'UDM.
proto read_only_udm.network.application_protocol, read_only_udm.additional.fields.value.string_value Protocole extrait du message de journal. S'il correspond à des protocoles connus, il est mappé sur le protocole d'application. Sinon, il est placé dans les champs supplémentaires sous la forme Application Protocol.
remote_ip_address read_only_udm.principal.ip, read_only_udm.principal.asset.ip, read_only_udm.additional.fields.value.string_value Si le champ existe dans le journal et qu'il s'agit d'une adresse IP valide, il est mappé sur l'adresse IP principale et l'adresse IP de l'élément principal. Sinon, il est placé dans les champs supplémentaires sous la forme remote_ip_address.
de gravité, read_only_udm.security_result.severity, read_only_udm.security_result.severity_details Gravité extraite du champ program après fractionnement par /. Il est mappé sur les niveaux de gravité UDM et stocké sous forme de détails bruts sur la gravité.
src_ip read_only_udm.principal.ip, read_only_udm.principal.asset.ip Adresse IP source extraite du message de journal et mappée sur l'adresse IP principale et l'adresse IP de l'élément principal
état read_only_udm.additional.fields.value.string_value Si le champ existe dans le journal, il est placé dans les champs supplémentaires en tant que status.
targetHostname read_only_udm.target.hostname, read_only_udm.target.asset.ip Si le champ existe dans le journal, il est mappé au nom d'hôte et à l'adresse IP de l'élément cible.
target_ip read_only_udm.target.ip, read_only_udm.target.asset.ip Adresse IP cible extraite du message de journal et mappée sur l'adresse IP de l'élément cible
timestamp read_only_udm.metadata.event_timestamp.seconds Code temporel extrait du message de journal et converti en code temporel d'événement
timestamp.seconds read_only_udm.metadata.event_timestamp.seconds Partie secondes du code temporel de l'événement
nom d'utilisateur read_only_udm.principal.user.userid Si le champ existe dans le journal, il est mappé à l'ID utilisateur principal.
read_only_udm.metadata.event_type Déterminé en fonction d'une combinaison de champs et de logique:
- NETWORK_CONNECTION: si has_principal et has_target sont définis sur "true".
- USER_LOGOUT: si action est WEBOPT_LOGOUT, LOGOUT ou SHELL_LOGOUT.
- USER_LOGIN: si action est LOGIN ou WEBOPT_LOGIN_SUC.
- STATUS_UPDATE: si action n'est pas vide ou si src_ip/hostname ne sont pas vides.
- USER_UNCATEGORIZED: si has_user est vrai.
- GENERIC_EVENT: si aucune de ces conditions n'est remplie.
read_only_udm.metadata.product_name Codé en dur sur Procurve
read_only_udm.metadata.vendor_name Codé en dur sur HP
read_only_udm.extensions.auth.type Définissez-le sur MACHINE si event_type est USER_LOGOUT ou USER_LOGIN.

Modifications

2024-03-04

Amélioration :

  • Ajout d'un modèle Grok pour analyser les journaux non analysés.
  • Si severity est égal à DHCP, DHCP est mappé sur network.application_protocol.
  • Mappage de severity sur security_result.severity_details.
  • Mappage de prin_port sur principal.port.
  • Mappage de pid sur principal.process.pid.
  • Mappage de descript sur metadata.description.
  • Mappage de inter_ip sur intermediary.ip.
  • Mappage de remote_ip_address sur principal.ip.
  • Mappage de username sur principal.user.userid.
  • status, config_method, event_id et notice_type ont été mappés sur additional.fields.

2023-09-24

Amélioration :

  • Ajout d'un format Grok pour analyser les journaux non analysés.
  • Mappage de target_mac sur target.mac.
  • Mappage de msg sur metadata.description.
  • Mappage de src_mac sur principal.mac.
  • Mappage de severity sur security_result.severity.

2023-07-24

Amélioration :

  • Ajout d'un modèle Grok pour analyser et mapper les journaux non analysés.

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