Collecter les journaux PTC Windchill
Ce document explique comment ingérer des journaux PTC Windchill dans Google Security Operations à l'aide de Bindplane.
PTC Windchill est une plate-forme de gestion du cycle de vie des produits (PLM) utilisée pour gérer les données, les processus et la collaboration entre les équipes d'ingénierie et de fabrication. La plate-forme génère des journaux d'accès, d'audit et de modification de configuration à partir de déploiements de serveurs sur site.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Une instance Google SecOps
- Windows Server 2016 ou version ultérieure, ou un hôte Linux avec
systemd - Connectivité réseau entre l'agent Bindplane et le serveur PTC Windchill
- 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é au serveur PTC Windchill avec des autorisations d'administrateur
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à SIEM Settings > Collection Agents (Paramètres 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 où Bindplane sera installé.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM > Profil.
Copiez et enregistrez l'ID client de la section Organization Details (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 sous Windows
- Ouvrez l'invite de commande 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-collector
L'état du service doit être RUNNING (En cours d'exécution).
Installation sous Linux
- Ouvrez un terminal avec des privilèges 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-collector
L'état du service doit être active (running) (Actif (en cours d'exécution)).
Ressources d'installation supplémentaires
Pour obtenir des options d'installation supplémentaires et des informations sur la résolution des problèmes, consultez le guide d'installation de l'agent Bindplane.
Configurer l'agent Bindplane pour ingérer Syslog et l'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"
Modifier le fichier de configuration
Remplacez l'intégralité du contenu de
config.yamlpar la configuration suivante :receivers: tcplog: listen_address: "0.0.0.0:514" exporters: chronicle/windchill: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: WINDCHILL raw_log_field: body service: pipelines: logs/windchill_to_chronicle: receivers: - tcplog exporters: - chronicle/windchill
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
514est le port Syslog standard (nécessite un accès root sous Linux ; utilisez1514pour un accès non root)
Configuration de l'exportateur :
creds_file_path: chemin d'accès complet au fichier d'authentification d'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 - Consultez la liste complète des points de terminaison régionaux.
- États-Unis :
Enregistrer 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 File > Save
- Linux : appuyez sur
Redémarrer 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 sous Windows :
Choisissez l'une des options suivantes :
- Invite de commande ou PowerShell en tant qu'administrateur :
net stop observiq-otel-collector && net start observiq-otel-collector- Console Services :
- Appuyez sur
Win+R, saisissezservices.msc, puis appuyez sur Entrée. - Recherchez observIQ OpenTelemetry Collector.
- Faites un clic droit et sélectionnez Restart (Redémarrer).
- Appuyez sur
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"
Configurer le transfert Syslog PTC Windchill
- Connectez-vous au serveur PTC Windchill en tant qu'administrateur.
Configurez rsyslog ou un agent Syslog pour transférer les journaux d'application Windchill. Modifiez la configuration rsyslog :
sudo nano /etc/rsyslog.d/windchill.confAjoutez les lignes suivantes pour transférer les fichiers journaux Windchill à l'agent Bindplane :
# Forward PTC Windchill logs to Bindplane agent module(load="imfile") input(type="imfile" File="/path/to/windchill/logs/*.log" Tag="windchill" Severity="info" Facility="local0") if $syslogtag == 'windchill' then @@<bindplane-ip>:514- Remplacez
/path/to/windchill/logs/par le chemin d'accès réel au répertoire des journaux Windchill. - Remplacez
<bindplane-ip>par l'adresse IP de l'hôte de l'agent Bindplane.
- Remplacez
Redémarrez le service rsyslog :
sudo systemctl restart rsyslogVérifiez que les journaux sont envoyés en consultant les journaux de l'agent Bindplane.
Table de mappage UDM
| Champ du journal | Mappage UDM | Logique |
|---|---|---|
| eventlabel | metadata.description | Valeur copiée directement |
| eventtime | metadata.event_timestamp | Converti à l'aide du filtre de date avec les formats SYSLOGTIMESTAMP et ISO8601 |
| metadata.event_type | Défini sur "USER_LOGIN" si has_principal == "true" et has_principal_user == "true" et has_target == "true" ; "USER_RESOURCE_ACCESS" si has_target_resource == "true" ; "USER_UNCATEGORIZED" si has_principal == "true" et has_principal_user == "true" ; "STATUS_UPDATE" si has_principal == "true" ; sinon "GENERIC_EVENT" | |
| dbschema | metadata.ingestion_labels | Fusionné avec l'objet db_schema (clé="DBSCHEMA", valeur=dbschema) |
| dbname | metadata.product_deployment_id | Valeur copiée directement |
| eventlabel, description | metadata.product_event_type | Valeur de la description si elle n'est pas vide, sinon valeur de l'étiquette d'événement |
| context | metadata.product_log_id | Valeur copiée directement |
| version | metadata.product_version | Valeur copiée directement |
| ohost | observer.hostname | Valeur copiée directement si ohost n'est pas une adresse IP |
| ohost | observer.ip | Valeur copiée directement si ohost est une adresse IP |
| domainpath | principal.administrative_domain | Valeur copiée directement |
| ipaddress | principal.asset.hostname | Valeur copiée directement si ipaddress n'est pas une adresse IP |
| ipaddress | principal.asset.ip | Valeur copiée directement si ipaddress est une adresse IP |
| ipaddress, phost | principal.hostname | Valeur de ipaddress si ce n'est pas une adresse IP, sinon valeur de phost si ce n'est pas une adresse IP |
| ipaddress, phost | principal.ip | Valeur de ipaddress si c'est une adresse IP, sinon valeur de phost si c'est une adresse IP |
| folderpath | principal.process.file.full_path | Valeur copiée directement |
| user_product_object_id | principal.user.product_object_id | Valeur copiée directement |
| user_display_name | principal.user.user_display_name | Valeur copiée directement |
| username, user_userid | principal.user.userid | Valeur de username si elle n'est pas vide, sinon valeur de user_userid |
| domain_name | target.domain.name | Valeur copiée directement |
| target_path | target.file.full_path | Valeur copiée directement |
| namespace | target.namespace | Valeur copiée directement |
| lifecyclestate, targetname, targetnumber, targettype | target.resource.attribute.labels | Fusionné avec lifecyclestate_label (clé="lifecyclestate", valeur=lifecyclestate), targetname_label (clé="targetname", valeur=targetname), targetnumber_label (clé="targetnumber", valeur=targetnumber), targettype_label (clé="targettype", valeur=targettype) |
| target_number | target.resource.id | Valeur copiée directement |
| target_name | target.resource.name | Valeur copiée directement |
| target_identity | target.resource.product_object_id | Valeur copiée directement |
| target_subtype | target.resource.resource_subtype | Valeur copiée directement |
| metadata.product_name | Défini sur "Windchill" | |
| metadata.vendor_name | Défini sur "PTC" |
Journal des modifications
Consulter le journal des modifications de ce parser
Vous avez encore besoin d'aide ? Obtenez des réponses auprès des membres de la communauté et des professionnels Google SecOps.