Collecter les journaux HP ProCurve

Compatible avec :

Ce document explique comment ingérer les journaux du commutateur 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 les champs du message en fonction des formats de journaux HP ProCurve courants.

Avant de commencer

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

  • Instance Google SecOps
  • Hôte Windows 2016 ou version ultérieure, ou 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é à 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 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: '/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 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 sur un commutateur HP ProCurve

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

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

    console# conf t
    
  4. Configurez le commutateur pour qu'il envoie les 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 Bindplane et le numéro de port.

  6. Remplacez <udp/tcp> en sélectionnant uniquement UDP ou TCP comme protocole de communication (selon 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 configuration et enregistrez les modifications à l'aide des commandes suivantes :

    console# exit
    console# wr
    

Table 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
Nom de l'appareil 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.
ID de l'événement 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 à 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'asset 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
Adresse IP distante 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.
NomUtilisateur 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 en secondes de l'horodatage 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é à l'UDM.
décroiss. read_only_udm.security_result.description Description extraite du message de journal
descrip Description extraite du champ desc, puis analysée pour les paires clé/valeur. Il n'est pas mappé à l'UDM.
description read_only_udm.security_result.description Si le champ existe dans le journal, il est mappé à 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 de l'événement extrait du message du journal
nom d'hôte read_only_udm.principal.hostname, read_only_udm.principal.asset.hostname Nom d'hôte extrait du message du journal et mappé au nom d'hôte principal et au 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é à l'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é au PID du processus principal.
programme Informations sur le programme extraites du message du journal, analysées plus en détail pour extraire le module, la gravité et l'action. Il n'est pas mappé à 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é au 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é à l'adresse IP principale et à l'adresse IP de l'asset 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 /. Elle est mappée sur les niveaux de gravité UDM et stockée en tant que détails bruts de 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 à 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 cible et à l'adresse IP de l'asset 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 à l'adresse IP cible et à l'adresse IP de l'élément cible
timestamp read_only_udm.metadata.event_timestamp.seconds Code temporel extrait du message du journal et converti en code temporel de l'événement
timestamp.seconds read_only_udm.metadata.event_timestamp.seconds Partie en secondes de l'horodatage 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 défini sur "true".
 – 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éfinie sur MACHINE, si event_type est USER_LOGOUT ou USER_LOGIN

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