Collecter les journaux Aruba ClearPass
Ce document explique comment collecter les journaux Aruba ClearPass à l'aide de Bindplane. L'analyseur tente de nettoyer et de structurer les journaux entrants en supprimant les champs superflus et en normalisant le format des messages. Ensuite, selon que le journal suit le format CEF ou une structure différente, le code utilise une combinaison de modèles grok, d'extractions de paires clé-valeur et de logique conditionnelle pour mapper les champs pertinents au modèle de données unifié (UDM), en classant finalement chaque événement dans un type d'événement de sécurité spécifique.
Avant de commencer
- Assurez-vous de disposer d'une instance Google Security Operations.
- Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec
systemd
. - Si vous exécutez le programme derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
- Assurez-vous de disposer d'un accès privilégié à un Aruba ClearPass.
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 ce 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: CLEARPASS 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 le serveur syslog Aruba ClearPass
- Connectez-vous à la console ClearPass Policy Manager.
- Sélectionnez Administration > Serveurs externes > Cibles Syslog.
- Cliquez sur Ajouter.
- Dans la fenêtre Ajouter une cible syslog qui s'affiche, spécifiez les détails suivants :
- Adresse de l'hôte : saisissez l'adresse IP Bindplane.
- Port du serveur : saisissez le numéro de port Bindplane.
- Protocole : sélectionnez UDP (vous pouvez également sélectionner TCP, en fonction de votre configuration Bindplane).
- Cliquez sur Enregistrer.
Configurer les filtres d'exportation syslog
- Accédez à Administration > Serveurs externes > Filtres d'exportation Syslog.
- Cliquez sur Ajouter.
- Dans la fenêtre Ajouter des filtres Syslog qui s'affiche, spécifiez les éléments suivants dans l'onglet Général :
- Nom : saisissez le nom du filtre d'exportation syslog en fonction du tableau dans Éléments du modèle d'exportation.
- Modèle d'exportation : sélectionnez le modèle d'exportation approprié en fonction du tableau dans Éléments du modèle d'exportation.
- Type de format d'événement à exporter : sélectionnez Standard.
- Serveurs Syslog : sélectionnez l'adresse IP Bindplane.
- Dans la liste Exporter le modèle, lorsque vous sélectionnez les modèles d'exportation Session ou Insight, l'onglet Filtre et colonnes est activé. Procédez comme suit :
- Cliquez sur l'onglet Filtre et colonnes.
- Filtre de données : assurez-vous que la valeur par défaut Toutes les demandes est sélectionnée.
- Sélection des colonnes : sélectionnez le groupe de champs prédéfini en fonction du tableau dans Éléments du modèle d'exportation.
- Colonnes sélectionnées : vérifiez que les champs renseignés automatiquement correspondent au tableau de la section Éléments du modèle d'exportation.
- Cliquez sur l'onglet Récapitulatif.
- Cliquez sur Enregistrer.
- Dans la liste Modèle d'exportation, lorsque vous sélectionnez les modèles d'exportation Événements système et Enregistrements d'audit, l'onglet Filtre et colonnes n'est pas activé. Accédez à l'onglet Récapitulatif, puis cliquez sur Enregistrer.
- Répétez les étapes pour ajouter des filtres d'exportation Syslog pour tous les modèles d'exportation Session, Insight, Enregistrements d'audit et Événements système en fonction des informations du tableau dans Récapitulatif des éléments du modèle d'exportation.
Exporter les éléments de modèle
Le tableau suivant décrit les éléments que vous devez configurer pour chaque modèle d'exportation. Les champs par défaut listés dans "Colonnes sélectionnées" sont compatibles avec l'analyse des événements. Assurez-vous que tous les champs mentionnés dans le tableau sous "Colonnes sélectionnées (par défaut)" sont présents et dans le même ordre. Assurez-vous de créer des modèles de filtres d'exportation syslog exactement comme indiqué dans le tableau, y compris le nom du filtre (sensible à la casse).
Nom du filtre d'exportation Syslog (sensible à la casse) | Exporter le modèle | Groupes de champs prédéfinis | Colonnes sélectionnées (par défaut) |
---|---|---|---|
ACPPM_radauth | Journaux d'insight | Authentifications Radius | Auth.Username Auth.Host-MAC-Address Auth.Protocol Auth.NAS-IP-Address CppmNode.CPPM-Node Auth.Login-Status Auth.Service Auth.Source Auth.Roles Auth.Enforcement-Profiles |
ACPPM_radfailedauth | Journaux d'insight | Échecs d'authentification Radius | Auth.Username Auth.Host-MAC-Address Auth.NAS-IP-Address CppmNode.CPPM-Node Auth.Service CppmErrorCode.Error-Code-Details CppmAlert.Alerts |
ACPPM_radacct | Journaux d'insight | Comptabilité RADIUS | Radius.Username Radius.Calling-Station-Id Radius.Framed-IP-Address Radius.NAS-IP-Address Radius.Start-Time Radius.End-Time Radius.Duration Radius.Input-bytes Radius.Output-bytes |
ACPPM_tacauth | Journaux d'insight | Authentification tacacs | tacacs.Username tacacs.Remote-Address tacacs.Request-Type tacacs.NAS-IP-Address tacacs.Service tacacs.Auth-Source tacacs.Roles tacacs.Enforcement-Profiles tacacs.Privilege-Level |
ACPPM_tacfailedauth | Journaux d'insight | Échec de l'authentification TACACS | tacacs.Username tacacs.Remote-Address tacacs.Request-Type tacacs.NAS-IP-Address tacacs.Service CppmErrorCode.Error-Code-Details CppmAlert.Alerts |
ACPPM_webauth | Journaux d'insight | WEBAUTH | Auth.Username Auth.Host-MAC-Address Auth.Host-IP-Address Auth.Protocol Auth.System-Posture-Token CppmNode.CPPM-Node Auth.Login-Status Auth.Service Auth.Source Auth.Roles Auth.Enforcement-Profiles |
ACPPM_webfailedauth | Journaux d'insight | Échecs d'authentification WEBAUTH | Auth.Username Auth.Host-MAC-Address Auth.Host-IP-Address Auth.Protocol Auth.System-Posture-Token CppmNode.CPPM-Node Auth.Login-Status Auth.Service CppmErrorCode.Error-Code-Details CppmAlert.Alerts |
ACPPM_appauth | Journaux d'insight | Authentification des applications | Auth.Username Auth.Host-IP-Address Auth.Protocol CppmNode.CPPM-Node Auth.Login-Status Auth.Service Auth.Source Auth.Roles Auth.Enforcement-Profiles |
ACPPM_failedappauth | Journaux d'insight | Échec de l'authentification de l'application | Auth.Username Auth.Host-IP-Address Auth.Protocol CppmNode.CPPM-Node Auth.Login-Status Auth.Service CppmErrorCode.Error-Code-Details CppmAlert.Alerts |
ACPPM_endpoints | Journaux d'insight | Points de terminaison | Endpoint.MAC-Address Endpoint.MAC-Vendor Endpoint.IP-Address Endpoint.Username Endpoint.Device-Category Endpoint.Device-Family Endpoint.Device-Name Endpoint.Conflict Endpoint.Status Endpoint.Added-At Endpoint.Updated-At |
ACPPM_cpguest | Journaux d'insight | Clearpass Guest | Guest.Username Guest.MAC-Address Guest.Visitor-Name Guest.Visitor-Company Guest.Role-Name Guest.Enabled Guest.Created-At Guest.Starts-At Guest.Expires-At |
ACPPM_onbenroll | Journaux d'insight | Enregistrement à bord | OnboardEnrollment.Username OnboardEnrollment.Device-Name OnboardEnrollment.MAC-Address OnboardEnrollment.Device-Product OnboardEnrollment.Device-Version OnboardEnrollment.Added-At OnboardEnrollment.Updated-At |
ACPPM_onbcert | Journaux d'insight | Certificat d'embarquement | OnboardCert.Username OnboardCert.Mac-Address OnboardCert.Subject OnboardCert.Issuer OnboardCert.Valid-From OnboardCert.Valid-To OnboardCert.Revoked-At |
ACPPM_onboscp | Journaux d'insight | Intégrer OCSP | OnboardOCSP.Remote-Address OnboardOCSP.Response-Status-Name OnboardOCSP.Timestamp |
ACPPM_cpsysevent | Journaux d'insight | Événements système Clearpass | CppmNode.CPPM-Node CppmSystemEvent.Source CppmSystemEvent.Level CppmSystemEvent.Category CppmSystemEvent.Action CppmSystemEvent.Timestamp |
ACPPM_cpconfaudit | Journaux d'insight | Audit de configuration Clearpass | CppmConfigAudit.Name CppmConfigAudit.Action CppmConfigAudit.Category CppmConfigAudit.Updated-By CppmConfigAudit.Updated-At |
ACPPM_possummary | Journaux d'insight | Récapitulatif de la stratégie | Endpoint.MAC-Address Endpoint.IP-Address Endpoint.Hostname Endpoint.Usermame Endpoint.System-Agent-Type Endpoint.System-Agent-Version Endpoint.System-Client-OS Endpoint.System-Posture-Token Endpoint.Posture-Healthy Endpoint.Posture-Unhealthy |
ACPPM_posfwsummary | Journaux d'insight | Récapitulatif du pare-feu de posture | Endpoint.MAC-Address Endpoint.IP-Address Endpoint.Hostname Endpoint.Usermame Endpoint.System-Agent-Type Endpoint.System-Agent-Version Endpoint.System-Client-OS Endpoint.System-Posture-Token Endpoint.Firewall-APT Endpoint.Firewall-Input Endpoint.Firewall-Output |
ACPPM_poavsummary | Journaux d'insight | Récapitulatif de l'antivirus de posture | Endpoint.MAC-Address Endpoint.IP-Address Endpoint.Hostname Endpoint.Usermame Endpoint.System-Agent-Type Endpoint.System-Agent-Version Endpoint.System-Client-OS Endpoint.System-Posture-Token Endpoint.Antivirus-APT Endpoint.Antivirus-Input Endpoint.Antivirus-Output |
ACPPM_posassummary | Journaux d'insight | Récapitulatif de la stratégie anti-logiciels espions | Endpoint.MAC-Address Endpoint.IP-Address Endpoint.Hostname Endpoint.Usermame Endpoint.System-Agent-Type Endpoint.System-Agent-Version Endpoint.System-Client-OS Endpoint.System-Posture-Token Endpoint.Antispyware-APT Endpoint.Antispyware-Input Endpoint.Antispyware-Output |
ACPPM_posdskencrpsummary | Journaux d'insight | Récapitulatif de la stratégie DiskEncryption | Endpoint.MAC-Address Endpoint.IP-Address Endpoint.Hostname Endpoint.Usermame Endpoint.System-Agent-Type Endpoint.System-Agent-Version Endpoint.System-Client-OS Endpoint.System-Posture-Token Endpoint.DiskEncryption-APT Endpoint.DiskEncryption-Input Endpoint.DiskEncryption-Output |
ACPPM_loggedusers | Journaux de session | Utilisateurs connectés | Common.Username Common.Service Common.Roles Common.Host-MAC-Address RADIUS.Acct-Framed-IP-Address Common.NAS-IP-Address Common.Request-Timestamp |
ACPPM_failedauth | Journaux de session | Échecs d'authentification | Common.Username Common.Service Common.Roles RADIUS.Auth-Source RADIUS.Auth-Method Common.System-Posture-Token Common.Enforcement-Profiles Common.Host-MAC-Address Common.NAS-IP-Address Common.Error-Code Common.Alerts Common.Request-Timestamp |
ACPPM_radacctsession | Journaux de session | Comptabilité RADIUS | RADIUS.Acct-Username RADIUS.Acct-NAS-IP-Address RADIUS.Acct-NAS-Port RADIUS.Acct-NAS-Port-Type RADIUS.Acct-Calling-Station-Id RADIUS.Acct-Framed-IP-Address RADIUS.Acct-Session-Id RADIUS.Acct-Session-Time RADIUS.Acct-Output-Pkts RADIUS.Acct-Input-Pkts RADIUS.Acct-Output-Octets RADIUS.Acct-Input.Octets RADIUS.Acct-Service-Name RADIUS.Acct-Timestamp |
ACPPM_tacadmin | Journaux de session | Administration tacacs+ | Common.Username Common.Service tacacs.Remote-Address tacacs.Privilege.Level Common.Request-Timestamp |
ACPPM_tacacct | Journaux de session | Comptabilité tacacs+ | Common.Username Common.Service tacacs.Remote-Address tacacs.Acct-Flags tacacs.Privilege.Level Common.Request-Timestamp |
ACPPM_webauthsession | Journaux de session | Authentification Web | Common.Username Common.Host-MAC-Address WEBAUTH.Host-IP-Address Common.Roles Common.System-Posture-Token Common.Enforcement-Profiles Common.Request-Timestamp |
ACPPM_guestacc | Journaux de session | Accès invité | Common.Username RADIUS.Auth-Method Common.Host-MAC-Address Common.Roles Common.System-Posture-Token Common.Enforcement-Profiles Common.Request-Timestamp |
ACPPM_auditrecords | Enregistrements d'audit | Non applicable | Non applicable |
ACPPM_systemevents | Événements système | Non applicable | Non applicable |
Table de mappage UDM
Champ du journal | Mappage UDM | Logique |
---|---|---|
Action | security_result.action | La valeur est mappée à partir du champ "Action" si sa valeur est "ALLOW" ou "BLOCK". |
Auth.Enforcement-Profiles | security_result.detection_fields.value | La valeur est mappée à partir du champ "Auth.Enforcement-Profiles". |
Auth.Host-MAC-Address | principal.mac | La valeur est mappée à partir du champ "Auth.Host-MAC-Address" après avoir été convertie au format d'adresse MAC séparée par des deux-points. |
Auth.Login-Status | security_result.detection_fields.value | La valeur est mappée à partir du champ "Auth.Login-Status". |
Auth.NAS-IP-Address | target.ip | La valeur est mappée à partir du champ "Auth.NAS-IP-Address". |
Auth.Protocol | intermediary.application | La valeur est mappée à partir du champ "Auth.Protocol". |
Auth.Service | security_result.detection_fields.value | La valeur est mappée à partir du champ "Auth.Service". |
Auth.Source | principal.hostname | La valeur est mappée à partir du champ "Auth.Source" après suppression des caractères alphanumériques et des espaces de début. |
Auth.Username | principal.user.user_display_name | La valeur est mappée à partir du champ "Auth.Username". |
Catégorie | metadata.event_type | Si la valeur est "Logged in" (Connecté), le champ UDM est défini sur "USER_LOGIN". Si la valeur est "Déconnecté", le champ UDM est défini sur "USER_LOGOUT". |
Common.Alerts | security_result.description | La valeur est mappée à partir du champ "Common.Alerts". |
Common.Enforcement-Profiles | security_result.detection_fields.value | La valeur est mappée à partir du champ "Common.Enforcement-Profiles". |
Common.Login-Status | security_result.detection_fields.value | La valeur est mappée à partir du champ "Common.Login-Status". |
Common.NAS-IP-Address | target.ip | La valeur est mappée à partir du champ "Common.NAS-IP-Address". |
Common.Roles | principal.user.group_identifiers | La valeur est mappée à partir du champ "Common.Roles". |
Common.Service | security_result.detection_fields.value | La valeur est mappée à partir du champ "Common.Service". |
Common.Username | principal.user.userid | La valeur est mappée à partir du champ "Common.Username". |
Composant | intermediary.application | La valeur est mappée à partir du champ "Composant". |
Description | metadata.description | La valeur est mappée à partir du champ "Description" après avoir remplacé les caractères de nouvelle ligne par le symbole pipe. Si le champ "Description" contient "User", "Address" et "Role", il est analysé en tant que paires clé/valeur et mappé aux champs UDM correspondants. Si le champ "Description" contient "Impossible de se connecter à", le nom d'hôte cible est extrait et mappé à "target.hostname". |
EntityName | principal.hostname | La valeur est mappée à partir du champ "EntityName". |
InterIP | target.ip | La valeur est mappée à partir du champ "InterIP". |
Niveau | security_result.severity | Si la valeur est "ERROR" ou "FATAL", le champ UDM est défini sur "HIGH". Si la valeur est "WARN", le champ UDM est défini sur "MEDIUM". Si la valeur est "INFO" ou "DEBUG", le champ UDM est défini sur "LOW". |
LogNumber | metadata.product_log_id | La valeur est mappée à partir du champ "LogNumber". |
RADIUS.Acct-Framed-IP-Address | principal.ip | La valeur est mappée à partir du champ "RADIUS.Acct-Framed-IP-Address". |
Horodatage | metadata.event_timestamp | La valeur est mappée à partir du champ "Code temporel" après avoir été convertie au format UTC et analysée en tant que code temporel. |
Utilisateur | principal.user.userid | La valeur est mappée à partir du champ "Utilisateur". |
agent_ip | principal.ip, principal.asset.ip | La valeur est mappée à partir du champ "agent_ip". |
communauté | additional.fields.value.string_value | La valeur est mappée à partir du champ "community" (communauté). |
descr | metadata.description | La valeur est mappée à partir du champ "descr". |
entreprise | additional.fields.value.string_value | La valeur est mappée à partir du champ "enterprise" |
eventDescription | metadata.description | La valeur est mappée à partir du champ "eventDescription" après suppression des guillemets. |
generic_num | additional.fields.value.string_value | La valeur est mappée à partir du champ "generic_num". |
prin_mac | principal.mac | La valeur est mappée à partir du champ "prin_mac" après sa conversion au format d'adresse MAC séparée par des deux-points. |
prin_port | principal.port | La valeur est mappée à partir du champ "prin_port" et convertie en entier. |
specificTrap_name | additional.fields.value.string_value | La valeur est mappée à partir du champ "specificTrap_name". |
specificTrap_num | additional.fields.value.string_value | La valeur est mappée à partir du champ "specificTrap_num". |
uptime | additional.fields.value.string_value | La valeur est mappée à partir du champ "uptime". |
version | metadata.product_version | La valeur est mappée à partir du champ "version". |
extensions.auth.type | La valeur est définie sur "SSO". | |
metadata.event_type | La valeur est déterminée en fonction de différents champs de journaux et de la logique de l'analyseur. Pour en savoir plus, consultez le code du parseur. | |
metadata.log_type | La valeur est définie sur "CLEARPASS". | |
metadata.product_name | La valeur est définie sur "ClearPass". | |
metadata.vendor_name | La valeur est définie sur "ArubaNetworks". |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.