Collecter les journaux ADVA Fiber Service Platform
Ce document explique comment ingérer des journaux ADVA Fiber Service Platform (ADVA FSP) dans Google Security Operations à l'aide de Bindplane. L'analyseur extrait les champs des messages syslog du routeur et du commutateur, et les convertit en paires clé-valeur. Il mappe ensuite ces champs extraits et leurs valeurs aux champs correspondants du schéma UDM Chronicle, ce qui enrichit les données pour l'analyse de la sécurité.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Une instance Google SecOps
- Un hôte Windows 2012 SP2 ou version ultérieure, ou un hôte Linux avec
systemd - 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é à la console de gestion des appareils ADVA FSP
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
Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.
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
Autres ressources d'installation
- 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 :
- Trouvez le fichier
config.yaml. Il se trouve généralement 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,viou le Bloc-notes).
- Trouvez le fichier
Modifiez le fichier
config.yaml. Voici deux options de récepteur fonctionnel. Choisissez celle qui correspond à la façon dont votre appareil envoie les journaux :- Option A : Récepteur de journaux UDP (UDP simple)
receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: <CUSTOMER_ID> endpoint: malachiteingestion-pa.googleapis.com log_type: 'ADVA_FSP' raw_log_field: body ingestion_labels: service: pipelines: logs/adva-fsp: receivers: - udplog exporters: - chronicle/chronicle_w_labels- Option B : récepteur Syslog (recommandé pour un cadrage Syslog strict)
receivers: syslog: tcp: listen_address: "0.0.0.0:514" protocol: rfc5424 # or rfc3164 if your device uses BSD syslog exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: <CUSTOMER_ID> endpoint: malachiteingestion-pa.googleapis.com log_type: 'ADVA_FSP' raw_log_field: body ingestion_labels: source: 'adva-fsp' env: 'production' service: pipelines: logs/adva-fsp: receivers: - syslog 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.jsonen 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-agentPour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :
net stop BindPlaneAgent && net start BindPlaneAgentConfigurer le transfert Syslog sur ADVA FSP
- Connectez-vous à la console de gestion ADVA FSP.
- Accédez à Node (Nœud) > General (Général) > Controls (Commandes).
- Dans la section Destinataires d'événements à distance (SysLog), cliquez sur Ajouter.
- Fournissez les informations de configuration suivantes :
- Adresse IPv4/v6 : saisissez l'adresse IP de l'agent Bindplane.
- Port : saisissez le numéro de port de l'agent Bindplane (par exemple,
514). - Protocole : sélectionnez UDP ou TCP, en fonction de la configuration réelle de votre agent Bindplane.
- Extension de message : facultatif : cliquez sur Ajouter un libellé utilisateur pour inclure des identifiants supplémentaires dans les messages.
- Cliquez sur Enregistrer pour activer la configuration.
Table de mappage UDM
| Champ du journal | Mappage UDM | Logique |
|---|---|---|
| ACCESSORDER (COMMANDE D'ACCÈS) | additional.fields.value.string_value | La valeur est extraite du champ ACCESSORDER du journal brut. |
| ADDRESS | principal.ip | La valeur est extraite du champ ADDRESS du journal brut et analysée en tant qu'adresse IP. |
| ADMINSTATE | additional.fields.value.string_value | La valeur est extraite du champ ADMINSTATE du journal brut. |
| AISCLIENTMDLEVEL | additional.fields.value.string_value | La valeur est extraite du champ "AISCLIENTMDLEVEL" du journal brut. |
| AISGENENABLED | additional.fields.value.string_value | La valeur est extraite du champ AISGENENABLED du journal brut. |
| AISPRIORITY | additional.fields.value.string_value | La valeur est extraite du champ AISPRIORITY du journal brut. |
| AISTXPERIOD | additional.fields.value.string_value | La valeur est extraite du champ AISTXPERIOD du journal brut. |
| AISTRIGGERTYPES | additional.fields.value.string_value | La valeur est extraite du champ AISTRIGGERTYPES du journal brut. |
| BUFFERSIZE | additional.fields.value.string_value | La valeur est extraite du champ BUFFERSIZE du journal brut. |
| CCIENABLED (CCI ACTIVÉ) | additional.fields.value.string_value | La valeur est extraite du champ CCIENABLED du journal brut. |
| CCMINTERFACESTATUSTLVCONTROL | additional.fields.value.string_value | La valeur est extraite du champ CCMINTERFACESTATUSTLVCONTROL du journal brut. |
| CCMLTMPRIORITY | additional.fields.value.string_value | La valeur est extraite du champ CCMLTMPRIORITY du journal brut. |
| CFMTAGETHERTYPE | additional.fields.value.string_value | La valeur est extraite du champ CFMTAGETHERTYPE du journal brut. |
| CIR | additional.fields.value.string_value | La valeur est extraite du champ "CIR" du journal brut. |
| COS | additional.fields.value.string_value | La valeur est extraite du champ COS du journal brut. |
| CT | metadata.description | La valeur est extraite du champ "CT" du journal brut. |
| DESTBMAC | target.mac | La valeur est extraite du champ DESTBMAC du journal brut et analysée en tant qu'adresse MAC. |
| DHCPCIDENABLED | additional.fields.value.string_value | La valeur est extraite du champ DHCPCIDENABLED du journal brut. |
| DHCPENABLED | additional.fields.value.string_value | La valeur est extraite du champ "DHCPENABLED" du journal brut. |
| DHCPHOSTNAME | network.dhcp.client_hostname | La valeur est extraite du champ DHCPHOSTNAME du journal brut. |
| DHCPHOSTNAMEENABLED | additional.fields.value.string_value | La valeur est extraite du champ DHCPHOSTNAMEENABLED du journal brut. |
| DHCPHOSTNAMETYPE | additional.fields.value.string_value | La valeur est extraite du champ DHCPHOSTNAMETYPE du journal brut. |
| DHCPLOGSERVERENABLED | additional.fields.value.string_value | La valeur est extraite du champ DHCPLOGSERVERENABLED du journal brut. |
| DHCPNTPSERVERENABLED | additional.fields.value.string_value | La valeur est extraite du champ DHCPNTPSERVERENABLED du journal brut. |
| DHCPV6CIDENABLED | additional.fields.value.string_value | La valeur est extraite du champ DHCPV6CIDENABLED du journal brut. |
| DHCPV6ENABLED | additional.fields.value.string_value | La valeur est extraite du champ "DHCPV6ENABLED" du journal brut. |
| DHCPV6ROLE | additional.fields.value.string_value | La valeur est extraite du champ DHCPV6ROLE du journal brut. |
| DHCPVENDORINFOTYPE | additional.fields.value.string_value | La valeur est extraite du champ DHCPVENDORINFOTYPE du journal brut. |
| DIR | additional.fields.value.string_value | La valeur est extraite du champ "DIR" du journal brut. |
| DIRECTION | network.direction | La valeur est définie sur "OUTBOUND" si le champ DIRECTION du journal brut est "UP" (non sensible à la casse), sur "INBOUND" s'il est "DOWN" et est laissée vide dans le cas contraire. |
| ENCAPSULATIONTYPE | additional.fields.value.string_value | La valeur est extraite du champ ENCAPSULATIONTYPE du journal brut. |
| GUARANTEEDA2NBW | additional.fields.value.string_value | La valeur est extraite du champ "GUARANTEEDA2NBW" du journal brut. |
| HCOSMGMTENABLED | additional.fields.value.string_value | La valeur est extraite du champ HCOSMGMTENABLED du journal brut. |
| ENT | additional.fields.value.string_value | La valeur est extraite du champ INT du journal brut. |
| IPMODE | additional.fields.value.string_value | La valeur est extraite du champ IPMODE du journal brut. |
| IPV6ADDR | principal.ip | La valeur est extraite du champ IPV6ADDR du journal brut et analysée en tant qu'adresse IP. |
| IPV6ADDRPREFIXLENGTH | additional.fields.value.string_value | La valeur est extraite du champ IPV6ADDRPREFIXLENGTH du journal brut. |
| IPV6MTU | additional.fields.value.string_value | La valeur est extraite du champ "IPV6MTU" du journal brut. |
| ITAG | additional.fields.value.string_value | La valeur est extraite du champ ITAG du journal brut. |
| ITAGENABLED (TAG ACTIVÉ) | additional.fields.value.string_value | La valeur est extraite du champ ITAGENABLED du journal brut. |
| LBMTXDESTTYPE | additional.fields.value.string_value | La valeur est extraite du champ LBMTXDESTTYPE du journal brut. |
| LBMTXNUMMSGS | additional.fields.value.string_value | La valeur est extraite du champ LBMTXNUMMSGS du journal brut. |
| LBMTXVLANDROPENABLE | additional.fields.value.string_value | La valeur est extraite du champ LBMTXVLANDROPENABLE du journal brut. |
| LBMTXVLANPRIORITY | additional.fields.value.string_value | La valeur est extraite du champ "LBMTXVLANPRIORITY" du journal brut. |
| LLRESPONDERENABLED | additional.fields.value.string_value | La valeur est extraite du champ LLRESPONDERENABLED du journal brut. |
| LLVIDLIST | additional.fields.value.string_value | La valeur est extraite du champ LLVIDLIST du journal brut. |
| LMDUALENDEDCOUNTALLPRIOS | additional.fields.value.string_value | La valeur est extraite du champ "LMDUALENDEDCOUNTALLPRIOS" du journal brut. |
| LMINPROFILEONLY | additional.fields.value.string_value | La valeur est extraite du champ LMINPROFILEONLY du journal brut. |
| LMRXCOUNTALLPRIOS | additional.fields.value.string_value | La valeur est extraite du champ LMRXCOUNTALLPRIOS du journal brut. |
| LMTXCOUNTALLPRIOS | additional.fields.value.string_value | La valeur est extraite du champ LMTXCOUNTALLPRIOS du journal brut. |
| LOC | additional.fields.value.string_value | La valeur est extraite du champ "LOC" du journal brut. |
| LOCN | additional.fields.value.string_value | La valeur est extraite du champ LOCN du journal brut. |
| LOGINTIMEOUT | additional.fields.value.string_value | La valeur est extraite du champ LOGINTIMEOUT du journal brut. |
| LOOPBACKBLOCKINGENABLED | additional.fields.value.string_value | La valeur est extraite du champ "LOOPBACKBLOCKINGENABLED" du journal brut. |
| LOOPBACKCONFIG | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKCONFIG du journal brut. |
| LOOPBACKDESTMAC | target.mac | La valeur est extraite du champ LOOPBACKDESTMAC du journal brut et analysée en tant qu'adresse MAC. |
| LOOPBACKDESTMACCONTROL | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKDESTMACCONTROL du journal brut. |
| LOOPBACKINNERVLAN1 | additional.fields.value.string_value | La valeur est extraite du champ "LOOPBACKINNERVLAN1" du journal brut. |
| LOOPBACKINNERVLAN1ENABLED | additional.fields.value.string_value | La valeur est extraite du champ "LOOPBACKINNERVLAN1ENABLED" du journal brut. |
| LOOPBACKINNERVLAN2 | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKINNERVLAN2 du journal brut. |
| LOOPBACKINNERVLAN2ENABLED | additional.fields.value.string_value | La valeur est extraite du champ "LOOPBACKINNERVLAN2ENABLED" du journal brut. |
| LOOPBACKINNERVLAN3 | additional.fields.value.string_value | La valeur est extraite du champ "LOOPBACKINNERVLAN3" du journal brut. |
| LOOPBACKINNERVLAN3ENABLED | additional.fields.value.string_value | La valeur est extraite du champ "LOOPBACKINNERVLAN3ENABLED" du journal brut. |
| LOOPBACKOUTERITAG1 | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKOUTERITAG1 du journal brut. |
| LOOPBACKOUTERITAG1ENABLED | additional.fields.value.string_value | La valeur est extraite du champ "LOOPBACKOUTERITAG1ENABLED" du journal brut. |
| LOOPBACKOUTERITAG2 | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKOUTERITAG2 du journal brut. |
| LOOPBACKOUTERITAG2ENABLED | additional.fields.value.string_value | La valeur est extraite du champ "LOOPBACKOUTERITAG2ENABLED" du journal brut. |
| LOOPBACKOUTERITAG3 | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKOUTERITAG3 du journal brut. |
| LOOPBACKOUTERITAG3ENABLED | additional.fields.value.string_value | La valeur est extraite du champ "LOOPBACKOUTERITAG3ENABLED" du journal brut. |
| LOOPBACKOUTERVLAN1 | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKOUTERVLAN1 du journal brut. |
| LOOPBACKOUTERVLAN1ENABLED | additional.fields.value.string_value | La valeur est extraite du champ "LOOPBACKOUTERVLAN1ENABLED" du journal brut. |
| LOOPBACKOUTERVLAN2 | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKOUTERVLAN2 du journal brut. |
| LOOPBACKOUTERVLAN2ENABLED | additional.fields.value.string_value | La valeur est extraite du champ "LOOPBACKOUTERVLAN2ENABLED" du journal brut. |
| LOOPBACKOUTERVLAN3 | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKOUTERVLAN3 du journal brut. |
| LOOPBACKOUTERVLAN3ENABLED | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKOUTERVLAN3ENABLED du journal brut. |
| LOOPBACKSOURCEMAC | principal.mac | La valeur est extraite du champ LOOPBACKSOURCEMAC du journal brut et analysée en tant qu'adresse MAC. |
| LOOPBACKSWAPSADA | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKSWAPSADA du journal brut. |
| LOOPBACKTIMER | additional.fields.value.string_value | La valeur est extraite du champ LOOPBACKTIMER du journal brut. |
| LOWESTPRIODEFECT (DÉFAUT DE PRIX LE PLUS BAS) | additional.fields.value.string_value | La valeur est extraite du champ LOWESTPRIODEFECT du journal brut. |
| LTMTXDESTTYPE | additional.fields.value.string_value | La valeur est extraite du champ LTMTXDESTTYPE du journal brut. |
| LTMTXEGRESSID | metadata.product_log_id | La valeur est extraite du champ LTMTXEGRESSID du journal brut. |
| LTMTXFLAGS | additional.fields.value.string_value | La valeur est extraite du champ LTMTXFLAGS du journal brut. |
| LTMTXTTL | additional.fields.value.string_value | La valeur est extraite du champ LTMTXTTL du journal brut. |
| MT | additional.fields.value.string_value | La valeur est extraite du champ "MT" du journal brut. |
| MAXIMUMA2NBW | additional.fields.value.string_value | La valeur est extraite du champ MAXIMUMA2NBW du journal brut. |
| MVAL | additional.fields.value.string_value | La valeur est extraite du champ MVAL du journal brut. |
| NOM | additional.fields.value.string_value | La valeur est extraite du champ NAME du journal brut. |
| NC | additional.fields.value.string_value | La valeur est extraite du champ "NC" du journal brut. |
| PORTEID | additional.fields.value.string_value | La valeur est extraite du champ PORTEID du journal brut. |
| PORTLLENABLED | additional.fields.value.string_value | La valeur est extraite du champ PORTLLENABLED du journal brut. |
| PRIMARYSERVER | target.ip | La valeur est extraite du champ PRIMARYSERVER du journal brut et analysée en tant qu'adresse IP. |
| PRIMARYVID | additional.fields.value.string_value | La valeur est extraite du champ PRIMARYVID du journal brut. |
| QUEUEPROFILEID | additional.fields.value.string_value | La valeur est extraite du champ QUEUEPROFILEID du journal brut. |
| RXSHAPEREID | additional.fields.value.string_value | La valeur est extraite du champ RXSHAPEREID du journal brut. |
| SATRESPONDENABLED | additional.fields.value.string_value | La valeur est extraite du champ SATRESPONDENABLED du journal brut. |
| SE | additional.fields.value.string_value | La valeur est extraite du champ "SE" du journal brut. |
| SHAREDVIM | additional.fields.value.string_value | La valeur est extraite du champ SHAREDVIM du journal brut. |
| SVLANENABLED (SVLAN ACTIVÉ) | additional.fields.value.string_value | La valeur est extraite du champ SVLANENABLED du journal brut. |
| SVLANID | additional.fields.value.string_value | La valeur est extraite du champ SVLANID du journal brut. |
| SYSLOCATION | principal.location.country_or_region | La valeur est extraite du champ SYSLOCATION du journal brut. |
| THVAL | additional.fields.value.string_value | La valeur est extraite du champ THVAL du journal brut. |
| TYPE | additional.fields.value.string_value | La valeur est extraite du champ TYPE du journal brut. |
| USERACCESSTYPE (TYPE D'ACCÈS UTILISATEUR) | additional.fields.value.string_value | La valeur est extraite du champ USERACCESSTYPE du journal brut. |
| USERAUTHKEY | additional.fields.value.string_value | La valeur est extraite du champ USERAUTHKEY du journal brut. |
| USERAUTHKEYLOCAL | additional.fields.value.string_value | La valeur est extraite du champ USERAUTHKEYLOCAL du journal brut. |
| USERAUTHPROTOCOL | additional.fields.value.string_value | La valeur est extraite du champ USERAUTHPROTOCOL du journal brut. |
| USERENGINEID | additional.fields.value.string_value | La valeur est extraite du champ USERENGINEID du journal brut. |
| USERKEYSLOCAL | additional.fields.value.string_value | La valeur est extraite du champ USERKEYSLOCAL du journal brut. |
| NOM D'UTILISATEUR | principal.user.userid | La valeur est extraite du champ USERNAME du journal brut. |
| USERPRIVKEY | additional.fields.value.string_value | La valeur est extraite du champ USERPRIVKEY du journal brut. |
| USERPRIVKEYLOCAL | additional.fields.value.string_value | La valeur est extraite du champ USERPRIVKEYLOCAL du journal brut. |
| USERPRIVPROTOCOL | additional.fields.value.string_value | La valeur est extraite du champ USERPRIVPROTOCOL du journal brut. |
| USERSECURITYLEVEL | additional.fields.value.string_value | La valeur est extraite du champ USERSECURITYLEVEL du journal brut. |
| USERSECURITYNAME | principal.user.user_display_name | La valeur est extraite du champ USERSECURITYNAME du journal brut. |
| application | principal.application | La valeur est extraite du champ d'application par l'analyseur grok. |
| description | security_result.description | La valeur est extraite du champ de description par l'analyseur grok. |
| metadata.description | La valeur est définie sur "Backup NTP Server Failed" (Échec du serveur NTP de sauvegarde) si le champ CT du journal brut est "Backup NTP Server Failed". | |
| metadata.event_timestamp.seconds | La valeur est extraite du champ d'horodatage par l'analyseur grok et convertie en secondes epoch. | |
| metadata.event_type | La valeur est définie selon la logique suivante : = NETWORK_DHCP si network_dhcp_present est défini sur "true" et si principal_present ou target_present est défini sur "true". : NETWORK_CONNECTION si target_present et principal_present sont tous les deux définis sur "true". : USER_RESOURCE_ACCESS si user_present est défini sur "true". : STATUS_UPDATE si principal_present est défini sur "true". : GENERIC_EVENT sinon. |
|
| metadata.product_log_id | La valeur est extraite du champ LTMTXEGRESSID du journal brut. | |
| metadata.product_name | La valeur est définie sur "ADVA_FSP". | |
| metadata.vendor_name | La valeur est définie sur "ADVA_FSP". | |
| network.application_protocol | La valeur est définie sur "DHCP" si network_dhcp_present est défini sur "true" et si principal_present ou target_present sont définis sur "true". | |
| principal.hostname | La valeur est extraite du champ principal_hostname par l'analyseur grok, sans les traits de soulignement. | |
| principal.ip | La valeur est extraite du champ IPADDR du journal brut et analysée en tant qu'adresse IP. | |
| timestamp.seconds | La valeur est extraite du champ d'horodatage par l'analyseur grok et convertie en secondes epoch. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.