Collecter les journaux Symantec Endpoint Protection
Ce document explique comment ingérer des journaux Symantec Endpoint Protection dans Google Security Operations à l'aide de Bindplane. Le parseur traite les journaux au format SYSLOG ou KV, en extrayant d'abord les codes temporels de différents formats dans les données de journal.
Il utilise ensuite un fichier de configuration distinct (sep_pt2.include
) pour analyser et structurer davantage les événements de journal, en s'assurant que le traitement n'est réussi que si l'extraction initiale du code temporel est réussie.
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é à la plate-forme Symantec Endpoint Protection
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du 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 sur lequel Bindplane sera installé.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent Bindplane
Installation de fenêtres
- Ouvrez l'invite de commandes 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" /quiet
Installation de Linux
- Ouvrez un terminal avec les droits 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.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
- 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).
- Recherchez le fichier
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: 'CES' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
Remplacez
<customer_id>
par le numéro client réel.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 dans Symantec Endpoint Protection
- Connectez-vous à l'interface utilisateur Web de Symantec Endpoint Protection Manager.
- Cliquez sur l'icône Admin.
- Localisez la section Afficher les serveurs, puis cliquez sur Serveurs.
- Cliquez sur Site local > Configurer la journalisation externe.
- Cochez la case Activer la transmission des journaux à un serveur Syslog.
- Fournissez les informations de configuration suivantes :
- Serveur Syslog : saisissez l'adresse IP Bindplane.
- Port de destination UDP : saisissez le numéro de port Bindplane (par exemple,
514
pour UDP). - Log Facility : saisissez Local6.
- Cochez la case Journaux d'audit.
- Cochez la case Journaux de sécurité.
- Cochez la case Risques.
- Cliquez sur OK.
Table de mappage UDM
Champ du journal | Mappage UDM | Logique |
---|---|---|
Action | security_result.action | La valeur est extraite du champ Action du journal brut et mappée à une action UDM. |
Type d'action | security_result.action_details | La valeur est extraite du champ Action Type du journal brut. |
Administrateur | ||
Motif d'autorisation de l'application | security_result.action_details | La valeur est extraite du champ Allowed application reason du journal brut. |
Application | principal.process.command_line | La valeur est extraite du champ Application du journal brut. |
Fonction de hachage de l'application | target.file.sha256 | La valeur est extraite du champ Application hash du journal brut. |
Nom de l'application | target.application | La valeur est extraite du champ Application name du journal brut. |
Application type (Type d'application) | target.resource.attribute.labels.value | La valeur est extraite du champ Application type du journal brut. La clé est codée en dur sur Application Type . |
Version de l'application | target.application.version | La valeur est extraite du champ Application version du journal brut. |
Commencer | ||
Heure de début | extensions.vulns.vulnerabilities.scan_start_time | La valeur est extraite du champ Begin Time du journal brut. |
Début : | extensions.vulns.vulnerabilities.scan_start_time | La valeur est extraite du champ Begin: du journal brut. |
Catégorie | principal.resource.attribute.labels.value | La valeur est extraite du champ Category du journal brut. La clé est codée en dur sur Category . |
Catégorie définie | security_result.category | La valeur est extraite du champ Category set du journal brut et mappée à une catégorie UDM. |
Type de catégorie | security_result.category_details | La valeur est extraite du champ Category type du journal brut. |
ID de signature CIDS | ||
Chaîne de signature CIDS | security_result.summary | La valeur est extraite du champ CIDS Signature string du journal brut. |
Sous-ID de signature CIDS | ||
Règles relatives aux clients | ||
Commande | ||
Ordinateur | target.hostname | La valeur est extraite du champ Computer du journal brut. |
Nom de l'ordinateur | principal.hostname | La valeur est extraite du champ Computer name du journal brut. |
Confiance | security_result.confidence_details | La valeur est extraite du champ Confidence du journal brut. |
données | ||
Description | security_result.action_details | La valeur est extraite du champ Description du journal brut. |
Description : | security_result.action_details | La valeur est extraite du champ Description: du journal brut. |
Score de détection | ||
Nombre d'envois de détection | ||
Type de détection | security_result.summary | La valeur est extraite du champ Detection type du journal brut. |
ID de l'appareil | target.asset.hostname | La valeur est extraite du champ Device ID du journal brut. |
Disposition | security_result.action | La valeur est extraite du champ Disposition du journal brut et mappée à une action UDM. |
Domaine | principal.administrative_domain | La valeur est extraite du champ Domain du journal brut. |
Nom de domaine | principal.administrative_domain | La valeur est extraite du champ Domain Name du journal brut. |
Nom de domaine : | principal.administrative_domain | La valeur est extraite du champ Domain Name: du journal brut. |
Téléchargé par | principal.process.file.full_path | La valeur est extraite du champ Downloaded by du journal brut. |
Site de téléchargement | ||
Durée (secondes) | extensions.vulns.vulnerabilities.scan_end_time | La valeur est extraite du champ Duration (seconds) du journal brut et ajoutée à l'heure de début de l'analyse. |
Fin | ||
Heure de fin | extensions.vulns.vulnerabilities.scan_end_time | La valeur est extraite du champ End Time du journal brut. |
Heure de fin : | extensions.vulns.vulnerabilities.scan_end_time | La valeur est extraite du champ End Time: du journal brut. |
Fin : | extensions.vulns.vulnerabilities.scan_end_time | La valeur est extraite du champ End: du journal brut. |
Description de l'événement | metadata.description | La valeur est extraite du champ Event Description du journal brut. |
Description de l'événement : | metadata.description | La valeur est extraite du champ Event Description: du journal brut. |
Heure d'insertion de l'événement | ||
Heure de l'événement | metadata.event_timestamp | La valeur est extraite du champ Event time du journal brut. |
Heure de l'événement : | metadata.event_timestamp | La valeur est extraite du champ Event time: du journal brut. |
Type d'événement | metadata.product_event_type | La valeur est extraite du champ Event Type du journal brut. |
Type d’événement : | metadata.product_event_type | La valeur est extraite du champ Event Type: du journal brut. |
Chemin d'accès au fichier | target.file.full_path | La valeur est extraite du champ File path du journal brut. |
Chemin d'accès au fichier : | target.file.full_path | La valeur est extraite du champ File path: du journal brut. |
Taille du fichier (en octets) | target.file.size | La valeur est extraite du champ File size (bytes) du journal brut. |
Première occurrence | security_result.action_details | La valeur est extraite du champ First Seen du journal brut. |
Première occurrence : | security_result.action_details | La valeur est extraite du champ First Seen: du journal brut. |
Groupe | principal.group.group_display_name | La valeur est extraite du champ Group du journal brut. |
Nom du groupe | principal.group.group_display_name | La valeur est extraite du champ Group Name du journal brut. |
Nom du groupe : | principal.group.group_display_name | La valeur est extraite du champ Group Name: du journal brut. |
Type de hachage | target.resource.attribute.labels.value | La valeur est extraite du champ Hash type du journal brut. La clé est codée en dur sur Hash Type . |
Niveau de protection renforcé | ||
ID d'intrusion | ||
URL de charge utile d'intrusion | ||
URL d'intrusion | ||
Adresse IP | principal.ip | La valeur est extraite du champ IP Address du journal brut. |
Adresse IP : | principal.ip | La valeur est extraite du champ IP Address: du journal brut. |
Heure de la dernière mise à jour | ||
Hôte local | principal.ip | La valeur est extraite du champ Local Host du journal brut. |
Adresse IP de l'hôte local | principal.ip | La valeur est extraite du champ Local Host IP du journal brut. |
Adresse MAC de l'hôte local | principal.mac | La valeur est extraite du champ Local Host MAC du journal brut. |
Port local | principal.port | La valeur est extraite du champ Local Port du journal brut. |
Emplacement | ||
MD-5 | ||
Occurrences | security_result.about.resource.attribute.labels.value | La valeur est extraite du champ Occurrences du journal brut. La clé est codée en dur sur Occurrences . |
Motif d'application autorisé | security_result.action_details | La valeur est extraite du champ Permitted application reason du journal brut. |
Prévalence | security_result.description | La valeur est extraite du champ Prevalence du journal brut. |
Chemin d'accès distant | target.file.full_path | La valeur est extraite du champ Remote file path du journal brut. |
Adresse IP de l'hôte distant | target.ip | La valeur est extraite du champ Remote Host IP du journal brut. |
Adresse MAC de l'hôte distant | target.mac | La valeur est extraite du champ Remote Host MAC du journal brut. |
Nom d'hôte distant | target.hostname | La valeur est extraite du champ Remote Host Name du journal brut. |
Port distant | target.port | La valeur est extraite du champ Remote Port du journal brut. |
Action demandée | security_result.action | La valeur est extraite du champ Requested action du journal brut et mappée à une action UDM. |
Niveau de risque | security_result.severity | La valeur est extraite du champ Risk Level du journal brut et mappée à une gravité UDM. |
Nom du risque | security_result.threat_name | La valeur est extraite du champ Risk name du journal brut. |
Type de risque | security_result.detection_fields.value | La valeur est extraite du champ Risk type du journal brut. La clé est codée en dur sur Risk Type . |
Règle | principal.resource.name | La valeur est extraite du champ Rule du journal brut. |
Règle : | principal.resource.name | La valeur est extraite du champ Rule: du journal brut. |
ID de l'analyse | extensions.vulns.vulnerabilities.name | La valeur est extraite du champ Scan ID du journal brut. |
ID de l'analyse : | extensions.vulns.vulnerabilities.name | La valeur est extraite du champ Scan ID: du journal brut. |
Type d'analyse | ||
Action secondaire | target.resource.attribute.labels.value | La valeur est extraite du champ Secondary action du journal brut. La clé est codée en dur sur Secondary action . |
Risque de sécurité détecté | metadata.description | La valeur est extraite du champ Security risk found du journal brut. |
Serveur | intermediary.hostname | La valeur est extraite du champ Server du journal brut. |
Nom du serveur | intermediary.hostname | La valeur est extraite du champ Server Name du journal brut. |
Nom du serveur : | intermediary.hostname | La valeur est extraite du champ Server Name: du journal brut. |
SHA-256 | principal.process.file.sha256 | La valeur est extraite du champ SHA-256 du journal brut. |
Site | additional.fields.value.string_value | La valeur est extraite du champ Site du journal brut. La clé est codée en dur sur Site Name . |
Nom du site | additional.fields.value.string_value | La valeur est extraite du champ Site Name du journal brut. La clé est codée en dur sur Site Name . |
Site : | additional.fields.value.string_value | La valeur est extraite du champ Site: du journal brut. La clé est codée en dur sur Site Name . |
Source | metadata.product_event_type | La valeur est extraite du champ Source du journal brut et ajoutée à la chaîne codée en dur Security risk found - . |
Ordinateur source | ||
Ordinateur source : | ||
Adresse IP source | ||
Adresse IP source : | ||
Source : | metadata.product_event_type | La valeur est extraite du champ Source: du journal brut et ajoutée à la chaîne codée en dur Security risk found - . |
ts | metadata.event_timestamp | La valeur est extraite du champ ts du journal brut. |
État du suivi des URL | ||
Utilisateur | principal.user.userid | La valeur est extraite du champ User du journal brut. |
Nom de l’utilisateur | principal.user.userid | La valeur est extraite du champ User Name du journal brut. |
Nom d'utilisateur : | principal.user.userid | La valeur est extraite du champ User Name: du journal brut. |
Domaine Web | ||
metadata.description | Si le journal brut contient la chaîne The client has downloaded , la description est définie sur The client has downloaded {target file name} . Si le journal brut contient la chaîne The management server received , la description est définie sur The management server received the client log successfully . Sinon, la description est définie sur la valeur du champ Event Description dans le journal brut. |
|
metadata.event_type | Le type d'événement est déterminé par la logique de l'analyseur en fonction du contenu du journal brut. | |
metadata.log_type | Le type de journal est codé en dur sur SEP . |
|
metadata.product_name | Le nom du produit est codé en dur pour être SEP . |
|
metadata.vendor_name | Le nom du fournisseur est codé en dur sur Symantec . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.