Raccogliere i log degli switch Brocade
Questo parser estrae i campi dai log degli switch Brocade utilizzando pattern grok corrispondenti a vari formati di log. Poi mappa questi campi estratti ai campi UDM, gestisce strutture di log diverse e arricchisce i dati con metadati come informazioni su fornitori e prodotti. Il parser esegue anche trasformazioni dei dati, ad esempio la conversione dei livelli di gravità e la gestione dei messaggi ripetuti, prima di generare l'output UDM finale.
Prima di iniziare
- Assicurati di avere un'istanza Google Security Operations.
- Assicurati di utilizzare Windows 2016 o versioni successive o un host Linux con systemd.
- Se il servizio è in esecuzione dietro un proxy, assicurati che le porte del firewall siano aperte.
- Assicurati di disporre dell'accesso amministrativo CLI allo switch Brocade.
Recupera il file di autenticazione di importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione dell'importazione.
Ottenere 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 BindPlane Agent
- Per l'installazione su Windows, esegui il seguente script:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Per l'installazione di Linux, esegui il seguente script:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- Ulteriori opzioni di installazione sono disponibili in questa guida all'installazione.
Configurare l'agente BindPlane per importare i syslog e inviarli a Google SecOps
- Accedi al computer su cui è installato BindPlane.
Modifica il file
config.yaml
come segue:receivers: tcplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: Brocade_Switch raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Riavvia l'agente BindPlane per applicare le modifiche:
sudo systemctl restart bindplane
Configurare l'esportazione syslog da uno switch Brocade
- Connettiti allo switch Brocade utilizzando SSH o Telnet con le credenziali appropriate.
Esegui il seguente comando per specificare l'indirizzo IP o il nome host e la porta del server syslog (Bindplane):
syslogadmin --set -ip <IP> -port <Port>
Ad esempio:
syslogadmin --set -ip 10.10.10.10 -port 54525
Esegui il seguente comando per visualizzare i server syslog configurati:
syslogadmin --show -ip
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
application |
additional.fields[].key : "application"additional.fields[].value.string_value : |
Valore estratto dal campo application@1588 nel log non elaborato quando esiste il campo KV_DATA. |
class |
additional.fields[].key : "class"additional.fields[].value.string_value : |
Valore estratto dal campo class@1588 nel log non elaborato quando esiste il campo KV_DATA. |
domain |
principal.administrative_domain |
Valore estratto dal pattern Grok corrispondente al campo domain . |
Event |
additional.fields[].key : "event_category"additional.fields[].value.string_value : |
Valore estratto dal campo arg0@1588 nel log non elaborato quando esiste il campo KV_DATA. |
event_id |
metadata.product_log_id |
Valore estratto dal pattern Grok corrispondente al campo event_id . |
event_type |
metadata.product_event_type |
Valore estratto dal pattern Grok corrispondente al campo event_type . |
flags |
additional.fields[].key : "flags"additional.fields[].value.string_value : |
Valore estratto dal pattern Grok corrispondente al campo flags . |
Info |
metadata.description |
Valore estratto dal campo Info , analizzato utilizzando grok. |
interface |
app_protocol_src |
Valore estratto dal campo interface@1588 nel log non elaborato quando esiste il campo KV_DATA. Utilizzato per ricavare network.application_protocol . |
ip |
principal.ip |
Valore estratto dal campo ip , analizzato utilizzando grok. Unito a principal.ip se non è uguale all'IP estratto dal campo Info . |
Info , IP Addr |
principal.ip |
Valore estratto dal campo IP Addr all'interno del campo Info , analizzato utilizzando grok. |
log |
additional.fields[].key : "log"additional.fields[].value.string_value : |
Valore estratto dal campo log@1588 nel log non elaborato quando esiste il campo KV_DATA. |
msg |
metadata.description |
Valore estratto dal campo msg , analizzato utilizzando grok. |
msgid |
additional.fields[].key : "msgid"additional.fields[].value.string_value : |
Valore estratto dal campo msgid@1588 nel log non elaborato quando esiste il campo KV_DATA. |
prin_host |
principal.hostname principal.asset.hostname |
Valore estratto dal pattern Grok corrispondente al campo prin_host . |
product_version |
metadata.product_version |
Valore estratto dal pattern Grok corrispondente al campo product_version . |
repeat_count |
additional.fields[].key : "repeat_count"additional.fields[].value.string_value : |
Valore estratto dal campo msg , analizzato utilizzando grok. |
role , user_role |
principal.user.attribute.roles[].name |
Valore estratto dal campo role@1588 o user_role . Se il valore è "admin", viene sostituito con "Amministratore". |
sequence_number |
additional.fields[].key : "sequence_number"additional.fields[].value.string_value : |
Valore estratto dal pattern Grok corrispondente al campo sequence_number . |
severity |
security_result.severity |
Valore estratto dal campo severity , analizzato utilizzando grok. Mappati ai valori di gravità UDM (INFORMATIONAL, ERROR, CRITICAL, MEDIUM). |
Status |
security_result.summary |
Valore estratto dal campo Status . |
switch_name |
additional.fields[].key : "switch_name"additional.fields[].value.string_value : |
Valore estratto dal pattern Grok corrispondente al campo switch_name . |
target_application |
target.application |
Valore estratto dal pattern Grok corrispondente al campo target_application . |
time |
additional.fields[].key : "time"additional.fields[].value.string_value : |
Valore estratto dal campo time all'interno del campo kv_data3 . |
timestamp |
metadata.event_timestamp.seconds |
Valore estratto dal campo timestamp , analizzato utilizzando il filtro della data. |
user |
principal.user.userid principal.user.user_display_name |
Valore estratto dal campo user o user@1588 , analizzato utilizzando grok. Copiato da principal.hostname . Copiato da principal.ip . Copiato da metadata.product_event_type o impostato su "STATUS_UPDATE" in base alle condizioni. Copiato da create_time.nanos del log. Determinato dalla logica del parser in base ai valori di has_principal , has_target , has_userid e event_type . Può essere "SYSTEM_AUDIT_LOG_UNCATEGORIZED", "STATUS_UPDATE" o "GENERIC_EVENT". Hardcoded su "BROCADE_SWITCH". Hardcoded su "BROCADE". Hardcoded su "BROCADE_SWITCH". Dedotto dal campo interface o impostato su "SSH" se il campo interface contiene "SSH". |
Modifiche
2024-04-15
- È stato aggiunto il supporto per i log specifici del cliente.
2023-12-01
- Parser appena creato.