Raccogliere i log dello switch Brocade
Questo parser estrae i campi dai log degli switch Brocade utilizzando pattern grok che corrispondono a vari formati di log. Successivamente, esegue la mappatura di questi campi estratti ai campi UDM, gestendo diverse strutture di log e arricchendo i dati con metadati come informazioni su fornitore e prodotto. Il parser esegue anche trasformazioni dei dati, come 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 oppure un host Linux con systemd.
- Se l'esecuzione avviene tramite un proxy, assicurati che le porte del firewall siano aperte.
- Assicurati di disporre dell'accesso amministrativo CLI allo switch Brocade.
Recuperare il file di autenticazione importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione importazione.
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
- Per l'installazione di 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.
Configura l'agente Bindplane per importare Syslog e inviarlo a Google SecOps
- Accedi alla macchina in cui è installato Bindplane.
Modifica il file
config.yamlcome 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_labelsRiavvia l'agente Bindplane per applicare le modifiche:
sudo systemctl restart bindplane
Configura l'esportazione di Syslog da uno switch Brocade
- Connettiti allo switch Brocade utilizzando SSH o Telnet con le credenziali appropriate.
Esegui questo 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 54525Esegui questo comando per visualizzare i server syslog configurati:
syslogadmin --show -ip
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logic |
|---|---|---|
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 derivare 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.hostnameprincipal.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 "Admin". |
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. Mappato 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 per data. |
user |
principal.user.useridprincipal.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". Codificato come "BROCADE_SWITCH". Codificato in modo permanente su "BROCADE". Codificato come "BROCADE_SWITCH". Derivato dal campo interface o impostato su "SSH" se il campo interface contiene "SSH". |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.