Raccogli i log della piattaforma di servizi in fibra ADVA
Questo documento spiega come importare i log di ADVA Fiber Service Platform (ADVA FSP) in Google Security Operations utilizzando Bindplane. L'analizzatore sintattico estrae i campi dai messaggi syslog di switch e router, convertendoli in coppie chiave-valore. Quindi, mappa questi campi estratti e i relativi valori con i campi corrispondenti nello schema UDM di Chronicle, arricchendo i dati per l'analisi della sicurezza.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Un host Windows 2012 SP2 o versioni successive o Linux con
systemd - Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
- Accesso privilegiato alla console di gestione dei dispositivi ADVA FSP
Recuperare il file di autenticazione dell'importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Recuperare l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane
Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.
Installazione di Windows
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installazione di Linux
- Apri un terminale con privilegi di root o sudo.
Esegui questo comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Risorse aggiuntive per l'installazione
- Per ulteriori opzioni di installazione, consulta questa guida all'installazione.
Configura l'agente Bindplane per importare Syslog e inviarlo a Google SecOps
Accedi al file di configurazione:
- Individua il file
config.yaml. In genere si trova nella directory/etc/bindplane-agent/su Linux o nella directory di installazione su Windows. - Apri il file utilizzando un editor di testo (ad esempio
nano,vio Blocco note).
- Individua il file
Modifica il file
config.yaml. Di seguito sono riportate due opzioni di ricevitore funzionanti. Scegli quella che corrisponde al modo in cui il tuo dispositivo invia i log:- Opzione A - Ricevitore log UDP (UDP semplice)
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- Opzione B: ricevitore Syslog (consigliata per l'inquadratura Syslog rigorosa)
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- Sostituisci la porta e l'indirizzo IP come richiesto nella tua infrastruttura.
- Sostituisci
<CUSTOMER_ID>con l'ID cliente effettivo. - Aggiorna
/path/to/ingestion-authentication-file.jsonal percorso in cui è stato salvato il file di autenticazione nella sezione Recupera il file di autenticazione per l'importazione di Google SecOps.
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart bindplane-agentPer riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgentConfigura l'inoltro di Syslog su ADVA FSP
- Accedi alla console di gestione ADVA FSP.
- Vai a Nodo > Generale > Controlli.
- Nella sezione Destinatari eventi remoti (SysLog), fai clic su Aggiungi.
- Fornisci i seguenti dettagli di configurazione:
- Indirizzo IPv4/v6: inserisci l'indirizzo IP dell'agente Bindplane.
- Porta: inserisci il numero di porta dell'agente Bindplane (ad esempio,
514). - Protocollo: seleziona UDP o TCP, a seconda della configurazione effettiva dell'agente Bindplane.
- Estensione di messaggistica: (facoltativo) fai clic su Aggiungi etichetta utente per includere identificatori aggiuntivi nei messaggi.
- Fai clic su Salva per attivare la configurazione.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logic |
|---|---|---|
| ACCESSORDER | additional.fields.value.string_value | Il valore viene estratto dal campo ACCESSORDER nel log non elaborato. |
| INDIRIZZO | principal.ip | Il valore viene estratto dal campo ADDRESS del log non elaborato e analizzato come indirizzo IP. |
| ADMINSTATE | additional.fields.value.string_value | Il valore viene estratto dal campo ADMINSTATE nel log non elaborato. |
| AISCLIENTMDLEVEL | additional.fields.value.string_value | Il valore viene estratto dal campo AISCLIENTMDLEVEL nel log non elaborato. |
| AISGENENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo AISGENENABLED nel log non elaborato. |
| AISPRIORITY | additional.fields.value.string_value | Il valore viene estratto dal campo AISPRIORITY nel log non elaborato. |
| AISTXPERIOD | additional.fields.value.string_value | Il valore viene estratto dal campo AISTXPERIOD nel log non elaborato. |
| AISTRIGGERTYPES | additional.fields.value.string_value | Il valore viene estratto dal campo AISTRIGGERTYPES nel log non elaborato. |
| BUFFERSIZE | additional.fields.value.string_value | Il valore viene estratto dal campo BUFFERSIZE nel log non elaborato. |
| CCIENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo CCIENABLED nel log non elaborato. |
| CCMINTERFACESTATUSTLVCONTROL | additional.fields.value.string_value | Il valore viene estratto dal campo CCMINTERFACESTATUSTLVCONTROL nel log non elaborato. |
| CCMLTMPRIORITY | additional.fields.value.string_value | Il valore viene estratto dal campo CCMLTMPRIORITY nel log non elaborato. |
| CFMTAGETHERTYPE | additional.fields.value.string_value | Il valore viene estratto dal campo CFMTAGETHERTYPE nel log non elaborato. |
| CIR | additional.fields.value.string_value | Il valore viene estratto dal campo CIR nel log non elaborato. |
| COS | additional.fields.value.string_value | Il valore viene estratto dal campo COS nel log non elaborato. |
| CT | metadata.description | Il valore viene estratto dal campo CT nel log non elaborato. |
| DESTBMAC | target.mac | Il valore viene estratto dal campo DESTBMAC nel log non elaborato e analizzato come indirizzo MAC. |
| DHCPCIDENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo DHCPCIDENABLED nel log non elaborato. |
| DHCPENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo DHCPENABLED nel log non elaborato. |
| DHCPHOSTNAME | network.dhcp.client_hostname | Il valore viene estratto dal campo DHCPHOSTNAME nel log non elaborato. |
| DHCPHOSTNAMEENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo DHCPHOSTNAMEENABLED nel log non elaborato. |
| DHCPHOSTNAMETYPE | additional.fields.value.string_value | Il valore viene estratto dal campo DHCPHOSTNAMETYPE nel log non elaborato. |
| DHCPLOGSERVERENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo DHCPLOGSERVERENABLED nel log non elaborato. |
| DHCPNTPSERVERENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo DHCPNTPSERVERENABLED nel log non elaborato. |
| DHCPV6CIDENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo DHCPV6CIDENABLED nel log non elaborato. |
| DHCPV6ENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo DHCPV6ENABLED nel log non elaborato. |
| DHCPV6ROLE | additional.fields.value.string_value | Il valore viene estratto dal campo DHCPV6ROLE nel log non elaborato. |
| DHCPVENDORINFOTYPE | additional.fields.value.string_value | Il valore viene estratto dal campo DHCPVENDORINFOTYPE nel log non elaborato. |
| DIR | additional.fields.value.string_value | Il valore viene estratto dal campo DIR nel log non elaborato. |
| DIREZIONE | network.direction | Il valore è impostato su "OUTBOUND" se il campo DIRECTION nel log non elaborato è "UP" (senza distinzione tra maiuscole e minuscole), su "INBOUND" se è "DOWN" e viene lasciato vuoto in caso contrario. |
| ENCAPSULATIONTYPE | additional.fields.value.string_value | Il valore viene estratto dal campo ENCAPSULATIONTYPE nel log non elaborato. |
| GUARANTEEDA2NBW | additional.fields.value.string_value | Il valore viene estratto dal campo GUARANTEEDA2NBW nel log non elaborato. |
| HCOSMGMTENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo HCOSMGMTENABLED nel log non elaborato. |
| INT | additional.fields.value.string_value | Il valore viene estratto dal campo INT nel log non elaborato. |
| IPMODE | additional.fields.value.string_value | Il valore viene estratto dal campo IPMODE nel log non elaborato. |
| IPV6ADDR | principal.ip | Il valore viene estratto dal campo IPV6ADDR nel log non elaborato e analizzato come indirizzo IP. |
| IPV6ADDRPREFIXLENGTH | additional.fields.value.string_value | Il valore viene estratto dal campo IPV6ADDRPREFIXLENGTH nel log non elaborato. |
| IPV6MTU | additional.fields.value.string_value | Il valore viene estratto dal campo IPV6MTU nel log non elaborato. |
| ITAG | additional.fields.value.string_value | Il valore viene estratto dal campo ITAG nel log non elaborato. |
| ITAGENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo ITAGENABLED nel log non elaborato. |
| LBMTXDESTTYPE | additional.fields.value.string_value | Il valore viene estratto dal campo LBMTXDESTTYPE nel log non elaborato. |
| LBMTXNUMMSGS | additional.fields.value.string_value | Il valore viene estratto dal campo LBMTXNUMMSGS nel log non elaborato. |
| LBMTXVLANDROPENABLE | additional.fields.value.string_value | Il valore viene estratto dal campo LBMTXVLANDROPENABLE nel log non elaborato. |
| LBMTXVLANPRIORITY | additional.fields.value.string_value | Il valore viene estratto dal campo LBMTXVLANPRIORITY nel log non elaborato. |
| LLRESPONDERENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo LLRESPONDERENABLED nel log non elaborato. |
| LLVIDLIST | additional.fields.value.string_value | Il valore viene estratto dal campo LLVIDLIST nel log non elaborato. |
| LMDUALENDEDCOUNTALLPRIOS | additional.fields.value.string_value | Il valore viene estratto dal campo LMDUALENDEDCOUNTALLPRIOS nel log non elaborato. |
| LMINPROFILEONLY | additional.fields.value.string_value | Il valore viene estratto dal campo LMINPROFILEONLY nel log non elaborato. |
| LMRXCOUNTALLPRIOS | additional.fields.value.string_value | Il valore viene estratto dal campo LMRXCOUNTALLPRIOS nel log non elaborato. |
| LMTXCOUNTALLPRIOS | additional.fields.value.string_value | Il valore viene estratto dal campo LMTXCOUNTALLPRIOS nel log non elaborato. |
| LOC | additional.fields.value.string_value | Il valore viene estratto dal campo LOC nel log non elaborato. |
| LOCN | additional.fields.value.string_value | Il valore viene estratto dal campo LOCN nel log non elaborato. |
| LOGINTIMEOUT | additional.fields.value.string_value | Il valore viene estratto dal campo LOGINTIMEOUT nel log non elaborato. |
| LOOPBACKBLOCKINGENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKBLOCKINGENABLED nel log non elaborato. |
| LOOPBACKCONFIG | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKCONFIG nel log non elaborato. |
| LOOPBACKDESTMAC | target.mac | Il valore viene estratto dal campo LOOPBACKDESTMAC nel log non elaborato e analizzato come indirizzo MAC. |
| LOOPBACKDESTMACCONTROL | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKDESTMACCONTROL nel log non elaborato. |
| LOOPBACKINNERVLAN1 | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKINNERVLAN1 nel log non elaborato. |
| LOOPBACKINNERVLAN1ENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKINNERVLAN1ENABLED nel log non elaborato. |
| LOOPBACKINNERVLAN2 | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKINNERVLAN2 nel log non elaborato. |
| LOOPBACKINNERVLAN2ENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKINNERVLAN2ENABLED nel log non elaborato. |
| LOOPBACKINNERVLAN3 | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKINNERVLAN3 nel log non elaborato. |
| LOOPBACKINNERVLAN3ENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKINNERVLAN3ENABLED nel log non elaborato. |
| LOOPBACKOUTERITAG1 | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERITAG1 nel log non elaborato. |
| LOOPBACKOUTERITAG1ENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERITAG1ENABLED nel log non elaborato. |
| LOOPBACKOUTERITAG2 | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERITAG2 nel log non elaborato. |
| LOOPBACKOUTERITAG2ENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERITAG2ENABLED nel log non elaborato. |
| LOOPBACKOUTERITAG3 | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERITAG3 nel log non elaborato. |
| LOOPBACKOUTERITAG3ENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERITAG3ENABLED nel log non elaborato. |
| LOOPBACKOUTERVLAN1 | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERVLAN1 nel log non elaborato. |
| LOOPBACKOUTERVLAN1ENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERVLAN1ENABLED nel log non elaborato. |
| LOOPBACKOUTERVLAN2 | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERVLAN2 nel log non elaborato. |
| LOOPBACKOUTERVLAN2ENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERVLAN2ENABLED nel log non elaborato. |
| LOOPBACKOUTERVLAN3 | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERVLAN3 nel log non elaborato. |
| LOOPBACKOUTERVLAN3ENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKOUTERVLAN3ENABLED nel log non elaborato. |
| LOOPBACKSOURCEMAC | principal.mac | Il valore viene estratto dal campo LOOPBACKSOURCEMAC nel log non elaborato e analizzato come indirizzo MAC. |
| LOOPBACKSWAPSADA | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKSWAPSADA nel log non elaborato. |
| LOOPBACKTIMER | additional.fields.value.string_value | Il valore viene estratto dal campo LOOPBACKTIMER nel log non elaborato. |
| LOWESTPRIODEFECT | additional.fields.value.string_value | Il valore viene estratto dal campo LOWESTPRIODEFECT nel log non elaborato. |
| LTMTXDESTTYPE | additional.fields.value.string_value | Il valore viene estratto dal campo LTMTXDESTTYPE nel log non elaborato. |
| LTMTXEGRESSID | metadata.product_log_id | Il valore viene estratto dal campo LTMTXEGRESSID nel log non elaborato. |
| LTMTXFLAGS | additional.fields.value.string_value | Il valore viene estratto dal campo LTMTXFLAGS nel log non elaborato. |
| LTMTXTTL | additional.fields.value.string_value | Il valore viene estratto dal campo LTMTXTTL nel log non elaborato. |
| MT | additional.fields.value.string_value | Il valore viene estratto dal campo MT nel log non elaborato. |
| MAXIMUMA2NBW | additional.fields.value.string_value | Il valore viene estratto dal campo MAXIMUMA2NBW nel log non elaborato. |
| MVAL | additional.fields.value.string_value | Il valore viene estratto dal campo MVAL nel log non elaborato. |
| NOME | additional.fields.value.string_value | Il valore viene estratto dal campo NAME (NOME) del log non elaborato. |
| NC | additional.fields.value.string_value | Il valore viene estratto dal campo NC nel log non elaborato. |
| PORTEID | additional.fields.value.string_value | Il valore viene estratto dal campo PORTEID nel log non elaborato. |
| PORTLLENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo PORTLLENABLED nel log non elaborato. |
| PRIMARYSERVER | target.ip | Il valore viene estratto dal campo PRIMARYSERVER nel log non elaborato e analizzato come indirizzo IP. |
| PRIMARYVID | additional.fields.value.string_value | Il valore viene estratto dal campo PRIMARYVID nel log non elaborato. |
| QUEUEPROFILEID | additional.fields.value.string_value | Il valore viene estratto dal campo QUEUEPROFILEID nel log non elaborato. |
| RXSHAPEREID | additional.fields.value.string_value | Il valore viene estratto dal campo RXSHAPEREID nel log non elaborato. |
| SATRESPONDENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo SATRESPONDENABLED nel log non elaborato. |
| SE | additional.fields.value.string_value | Il valore viene estratto dal campo SE nel log non elaborato. |
| SHAREDVIM | additional.fields.value.string_value | Il valore viene estratto dal campo SHAREDVIM nel log non elaborato. |
| SVLANENABLED | additional.fields.value.string_value | Il valore viene estratto dal campo SVLANENABLED nel log non elaborato. |
| SVLANID | additional.fields.value.string_value | Il valore viene estratto dal campo SVLANID nel log non elaborato. |
| SYSLOCATION | principal.location.country_or_region | Il valore viene estratto dal campo SYSLOCATION nel log non elaborato. |
| THVAL | additional.fields.value.string_value | Il valore viene estratto dal campo THVAL nel log non elaborato. |
| TIPO | additional.fields.value.string_value | Il valore viene estratto dal campo TYPE nel log non elaborato. |
| USERACCESSTYPE | additional.fields.value.string_value | Il valore viene estratto dal campo USERACCESSTYPE nel log non elaborato. |
| USERAUTHKEY | additional.fields.value.string_value | Il valore viene estratto dal campo USERAUTHKEY nel log non elaborato. |
| USERAUTHKEYLOCAL | additional.fields.value.string_value | Il valore viene estratto dal campo USERAUTHKEYLOCAL nel log non elaborato. |
| USERAUTHPROTOCOL | additional.fields.value.string_value | Il valore viene estratto dal campo USERAUTHPROTOCOL nel log non elaborato. |
| USERENGINEID | additional.fields.value.string_value | Il valore viene estratto dal campo USERENGINEID nel log non elaborato. |
| USERKEYSLOCAL | additional.fields.value.string_value | Il valore viene estratto dal campo USERKEYSLOCAL nel log non elaborato. |
| NOME UTENTE | principal.user.userid | Il valore viene estratto dal campo USERNAME nel log non elaborato. |
| USERPRIVKEY | additional.fields.value.string_value | Il valore viene estratto dal campo USERPRIVKEY nel log non elaborato. |
| USERPRIVKEYLOCAL | additional.fields.value.string_value | Il valore viene estratto dal campo USERPRIVKEYLOCAL nel log non elaborato. |
| USERPRIVPROTOCOL | additional.fields.value.string_value | Il valore viene estratto dal campo USERPRIVPROTOCOL nel log non elaborato. |
| USERSECURITYLEVEL | additional.fields.value.string_value | Il valore viene estratto dal campo USERSECURITYLEVEL nel log non elaborato. |
| USERSECURITYNAME | principal.user.user_display_name | Il valore viene estratto dal campo USERSECURITYNAME nel log non elaborato. |
| applicazione | principal.application | Il valore viene estratto dal campo dell'applicazione dal parser Grok. |
| descrizione | security_result.description | Il valore viene estratto dal campo della descrizione dal parser grok. |
| metadata.description | Il valore è impostato su "Backup NTP Server Failed" (Errore del server NTP di backup) se il campo CT nel log non elaborato è "Backup NTP Server Failed". | |
| metadata.event_timestamp.seconds | Il valore viene estratto dal campo timestamp dal parser Grok e convertito in secondi epoch. | |
| metadata.event_type | Il valore viene impostato in base alla seguente logica: - NETWORK_DHCP se network_dhcp_present è true e principal_present o target_present è true. - NETWORK_CONNECTION se target_present e principal_present sono entrambi true. - USER_RESOURCE_ACCESS se user_present è true. - STATUS_UPDATE se principal_present è true. - GENERIC_EVENT altrimenti. |
|
| metadata.product_log_id | Il valore viene estratto dal campo LTMTXEGRESSID nel log non elaborato. | |
| metadata.product_name | Il valore è impostato su "ADVA_FSP". | |
| metadata.vendor_name | Il valore è impostato su "ADVA_FSP". | |
| network.application_protocol | Il valore è impostato su "DHCP" se network_dhcp_present è true e principal_present o target_present è true. | |
| principal.hostname | Il valore viene estratto dal campo principal_hostname analizzato dal parser grok, con i trattini bassi rimossi. | |
| principal.ip | Il valore viene estratto dal campo IPADDR nel log non elaborato e analizzato come indirizzo IP. | |
| timestamp.seconds | Il valore viene estratto dal campo timestamp dal parser Grok e convertito in secondi epoch. |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.