Raccogli i log di Cisco Email Security
Questo documento spiega come importare i log di Cisco Email Security in Google Security Operations utilizzando Bindplane.
L'analizzatore sintattico estrae i campi dai log formattati in syslog, coppie chiave-valore e JSON di Cisco Email Security Appliance. Utilizza grok e/o kv per analizzare il messaggio di log e quindi mappa questi valori al modello UDM (Unified Data Model). Imposta anche i valori predefiniti dei metadati per l'origine e il tipo di evento.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Windows Server 2016 o versioni successive oppure host 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 con privilegi all'interfaccia web di Cisco Email Security Appliance
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. 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 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" /quietAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo il comando:
sc query observiq-otel-collector
Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.
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.shAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo il comando:
sudo systemctl status observiq-otel-collector
Il servizio dovrebbe essere visualizzato come attivo (in esecuzione).
Risorse aggiuntive per l'installazione
Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la Guida all'installazione dell'agente Bindplane.
Configura l'agente Bindplane per importare syslog e inviarli a Google SecOps
Individua il file di configurazione
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifica il file di configurazione
Sostituisci l'intero contenuto di
config.yamlcon la seguente configurazione:receivers: tcplog: 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: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: 'CISCO_EMAIL_SECURITY' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Parametri di configurazione
Sostituisci i seguenti segnaposto:
Configurazione del ricevitore:
tcplog: usaudplogper syslog UDP otcplogper syslog TCP0.0.0.0: indirizzo IP su cui ascoltare (0.0.0.0per ascoltare su tutte le interfacce)514: Numero di porta su cui ascoltare (porta syslog standard)
Configurazione dell'esportatore:
creds_file_path: percorso completo del file di autenticazione importazione:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
YOUR_CUSTOMER_ID: l'ID cliente della sezione Recupera ID clienteendpoint: URL endpoint regionale:- Stati Uniti:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Per l'elenco completo, vedi Endpoint regionali.
- Stati Uniti:
log_type: Tipo di log esattamente come appare in Chronicle (CISCO_EMAIL_SECURITY)
Salvare il file di configurazione
- Dopo la modifica, salva il file:
- Linux: premi
Ctrl+O, poiEntere infineCtrl+X. - Windows: fai clic su File > Salva.
- Linux: premi
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart observiq-otel-collectorVerifica che il servizio sia in esecuzione:
sudo systemctl status observiq-otel-collectorControlla i log per individuare eventuali errori:
sudo journalctl -u observiq-otel-collector -f
Per riavviare l'agente Bindplane in Windows, scegli una delle seguenti opzioni:
Prompt dei comandi o PowerShell come amministratore:
net stop observiq-otel-collector && net start observiq-otel-collectorConsole dei servizi:
- Premi
Win+R, digitaservices.msce premi Invio. - Individua observIQ OpenTelemetry Collector.
Fai clic con il tasto destro del mouse e seleziona Riavvia.
Verifica che il servizio sia in esecuzione:
sc query observiq-otel-collectorControlla i log per individuare eventuali errori:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Premi
Configurare l'inoltro di Syslog su Cisco Email Security Appliance
- Accedi all'interfaccia web dell'appliance di sicurezza email Cisco.
- Vai a Amministrazione di sistema > Abbonamenti ai log.
- Fai clic su Aggiungi abbonamento ai log.
- Fornisci i seguenti dettagli di configurazione:
- Tipo di log: seleziona il tipo di log da inoltrare (ad esempio Log eventi consolidati, Log di posta, Log di posta di testo).
- Nome: inserisci un nome descrittivo (ad esempio,
Google-SecOps-Syslog). - Metodo di recupero: seleziona Syslog Push.
- Nome host: inserisci l'indirizzo IP dell'host dell'agente Bindplane.
- Protocollo: seleziona TCP.
- Porta: inserisci
514. - Struttura: seleziona LOG_MAIL (o la struttura che preferisci).
- Fai clic su Invia.
- Ripeti i passaggi da 3 a 5 per ogni tipo di log aggiuntivo da inoltrare. Tipi di log consigliati:
- Log eventi consolidati
- Log di Text Mail
- Log antispam
- Log antivirus
- Log del motore AMP
- Log del filtro dei contenuti
- Fai clic su Applica modifiche per applicare la configurazione.
- Verifica che i messaggi syslog vengano inviati controllando i log dell'agente Bindplane.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logic |
|---|---|---|
| acl_decision_tag | read_only_udm.security_result.detection_fields.value | Mappato direttamente se non è vuoto, "-" o "NONE". La chiave è "ACL Decision Tag". |
| access_or_decryption_policy_group | read_only_udm.security_result.detection_fields.value | Mappato direttamente se non è vuoto, "-" o "NONE". La chiave è "AccessOrDecryptionPolicyGroup". |
| atto | read_only_udm.security_result.action_details | Mappato direttamente. |
| authenticated_user | read_only_udm.principal.user.userid | Mappato direttamente se non è vuoto, "-" o "NONE". |
| cache_hierarchy_retrieval | read_only_udm.security_result.detection_fields.value | Mappato direttamente se non è vuoto, "-" o "NONE". La chiave è "Recupero gerarchia cache". |
| crittografia | read_only_udm.network.tls.cipher | Mappato direttamente. |
| country | read_only_udm.principal.location.country_or_region | Mappato direttamente. |
| data_security_policy_group | read_only_udm.security_result.detection_fields.value | Mappato direttamente se non è vuoto, "-" o "NONE". La chiave è "DataSecurityPolicyGroup". |
| descrizione | read_only_udm.metadata.description | Mappato direttamente per i messaggi syslog. Per i messaggi CEF, diventa la descrizione complessiva del prodotto. Diversi pattern grok estraggono descrizioni specifiche in base a product_event. Alcune descrizioni vengono modificate da gsub per rimuovere spazi e due punti iniziali/finali. |
| deviceDirection | read_only_udm.network.direction | Se il valore è "0", viene mappato su "INBOUND". Se è "1", viene mappato su "IN USCITA". Utilizzato per determinare quale cifrario e protocollo TLS mappare direttamente e quale mappare come etichette. |
| deviceExternalId | read_only_udm.principal.asset.asset_id | Mappato come "ID dispositivo:". |
| dominio | read_only_udm.target.administrative_domain | Mappati direttamente dai log JSON. |
| domain_age | read_only_udm.security_result.about.labels.value | Mappato direttamente. La chiave è "YoungestDomainAge". |
| duser | read_only_udm.target.user.email_addresses, read_only_udm.network.email.to | Se contiene ";", dividi in più indirizzi email e mappa ciascuno su entrambi i campi UDM. In caso contrario, esegui la mappatura direttamente su entrambi i campi UDM se l'indirizzo email è valido. Utilizzato anche per compilare network_to se è vuoto. |
| dvc | read_only_udm.target.ip | Mappato direttamente. |
| entries.collection_time.nanos, entries.collection_time.seconds | read_only_udm.metadata.event_timestamp.nanos, read_only_udm.metadata.event_timestamp.seconds | Utilizzato per creare il timestamp dell'evento. |
| env-from | read_only_udm.additional.fields.value.string_value | Mappato direttamente. La chiave è "Env-From". |
| ESAAttachmentDetails | read_only_udm.security_result.about.file.full_path, read_only_udm.security_result.about.file.sha256 | Analizzato per estrarre i nomi dei file e gli hash SHA256. È possibile estrarre più file e hash. |
| ESADCID | read_only_udm.security_result.about.labels.value | Mappato direttamente. La chiave è "ESADCID". |
| ESAFriendlyFrom | read_only_udm.principal.user.user_display_name, read_only_udm.network.email.from | Analizzato per estrarre il nome visualizzato e l'indirizzo email. |
| ESAHeloDomain | read_only_udm.intermediary.administrative_domain | Mappato direttamente. |
| ESAHeloIP | read_only_udm.intermediary.ip | Mappato direttamente. |
| ESAICID | read_only_udm.security_result.about.labels.value | Mappato direttamente. La chiave è "ESAICID". |
| ESAMailFlowPolicy | read_only_udm.security_result.rule_name | Mappato direttamente. |
| ESAMID | read_only_udm.security_result.about.labels.value | Mappato direttamente. La chiave è "ESAMID". |
| ESAReplyTo | read_only_udm.network.email.reply_to | Mappato direttamente se è un indirizzo email valido. Utilizzato anche per compilare network_to. |
| ESASDRDomainAge | read_only_udm.security_result.about.labels.value | Mappato direttamente. La chiave è "ESASDRDomainAge". |
| ESASenderGroup | read_only_udm.principal.group.group_display_name | Mappato direttamente. |
| ESAStatus | read_only_udm.security_result.about.labels.value | Mappato direttamente. La chiave è "ESAStatus". |
| ESATLSInCipher | read_only_udm.network.tls.cipher o read_only_udm.security_result.about.labels.value | Mappato direttamente alla cifra se deviceDirection è "0". In caso contrario, viene mappato come etichetta con la chiave "ESATLSInCipher". |
| ESATLSInProtocol | read_only_udm.network.tls.version o read_only_udm.security_result.about.labels.value | Versione TLS estratta e mappata direttamente se deviceDirection è "0". In caso contrario, viene mappato come etichetta con la chiave "ESATLSInProtocol". |
| ESATLSOutCipher | read_only_udm.network.tls.cipher o read_only_udm.security_result.about.labels.value | Mappato direttamente alla cifra se deviceDirection è "1". In caso contrario, viene mappato come etichetta con la chiave "ESATLSOutCipher". |
| ESATLSOutProtocol | read_only_udm.network.tls.version o read_only_udm.security_result.about.labels.value | Versione TLS estratta e mappata direttamente se deviceDirection è "1". In caso contrario, viene mappato come etichetta con la chiave "ESATLSOutProtocol". |
| ESAURLDetails | read_only_udm.target.url | Analizzato per estrarre gli URL. Viene mappato solo il primo URL perché il campo non viene ripetuto. |
| external_dlp_policy_group | read_only_udm.security_result.detection_fields.value | Mappato direttamente se non è vuoto, "-" o "NONE". La chiave è "ExternalDlpPolicyGroup". |
| ExternalMsgID | read_only_udm.security_result.about.labels.value | Mappato direttamente dopo la rimozione di virgolette singole e parentesi angolari. La chiave è "ExternalMsgID". |
| da | read_only_udm.network.email.from | Mappato direttamente se è un indirizzo email valido. Utilizzato anche per compilare network_from. |
| host.hostname | read_only_udm.principal.hostname o read_only_udm.intermediary.hostname | Mappato al nome host principale se il campo host non è valido. Mappato anche al nome host intermedio. |
| host.ip | read_only_udm.principal.ip o read_only_udm.intermediary.ip | Mappato all'IP principale se il campo ip non è impostato nei log JSON. Mappato anche all'IP intermediario. |
| nome host | read_only_udm.target.hostname | Mappato direttamente. |
| http_method | read_only_udm.network.http.method | Mappato direttamente. |
| http_response_code | read_only_udm.network.http.response_code | Mappato e convertito direttamente in un numero intero. |
| identity_policy_group | read_only_udm.security_result.detection_fields.value | Mappato direttamente se non è vuoto, "-" o "NONE". La chiave è "IdentityPolicyGroup". |
| ip | read_only_udm.principal.ip | Mappato direttamente. Sovrascritta da source_ip se presente. |
| kv_msg | Varie | Analizzato utilizzando il filtro kv. Il pre-elaborazione include la sostituzione degli spazi prima delle chiavi con "#" e lo scambio dei valori csLabel. |
| log_type | read_only_udm.metadata.log_type | Codificato in modo permanente su "CISCO_EMAIL_SECURITY". |
| loglevel | read_only_udm.security_result.severity, read_only_udm.security_result.action | Utilizzato per determinare la gravità e l'azione. "Info", "", "Debug", "Trace" corrispondono a "INFORMATIONAL" e "ALLOW". "Warning" (Avviso) corrisponde a "MEDIUM" (MEDIA) e "ALLOW" (CONSENTI). "Alto" corrisponde a "HIGH" e "BLOCK". "Critica" e "Avviso" corrispondono a "CRITICA" e "BLOCCO". |
| mail_id | read_only_udm.network.email.mail_id | Mappati direttamente dai log JSON. |
| mailto | read_only_udm.target.user.email_addresses, read_only_udm.network.email.to | Mappato direttamente a entrambi i campi UDM se è un indirizzo email valido. |
| MailPolicy | read_only_udm.security_result.about.labels.value | Mappato direttamente. La chiave è "MailPolicy". |
| messaggio | Varie | Analizzato come JSON, se possibile. In caso contrario, viene elaborato come messaggio syslog. |
| message_id | read_only_udm.network.email.mail_id | Mappato direttamente. Utilizzato anche per compilare network_data. |
| msg | read_only_udm.network.email.subject | Mappato direttamente dopo la decodifica UTF-8 e la rimozione di ritorni a capo, nuove righe e virgolette aggiuntive. Utilizzato anche per compilare network_data. |
| msg1 | Varie | Analizzato utilizzando il filtro kv. Utilizzato per estrarre nome host, helo, env-from e reply-to. |
| outbound_malware_scanning_policy_group | read_only_udm.security_result.detection_fields.value | Mappato direttamente se non è vuoto, "-" o "NONE". La chiave è "DataSecurityPolicyGroup". |
| porta | read_only_udm.target.port | Mappato e convertito direttamente in un numero intero. |
| principalMail | read_only_udm.principal.user.email_addresses | Mappato direttamente. |
| principalUrl | read_only_udm.principal.url | Mappato direttamente. |
| product_event | read_only_udm.metadata.product_event_type | Mappato direttamente. Utilizzato per determinare quali pattern grok applicare. I caratteri "%" iniziali vengono rimossi. "amp" viene sostituito con "SIEM_AMPenginelogs". |
| product_version | read_only_udm.metadata.product_version | Mappato direttamente. |
| protocollo | read_only_udm.network.tls.version | Mappato direttamente. |
| received_bytes | read_only_udm.network.received_bytes | Mappato e convertito direttamente in numero intero senza segno. |
| rispondi a | read_only_udm.additional.fields.value.string_value | Mappato direttamente. La chiave è "Reply-To". |
| reputazione | read_only_udm.security_result.confidence_details | Mappato direttamente. |
| request_method_uri | read_only_udm.target.url | Mappato direttamente. |
| result_code | read_only_udm.security_result.detection_fields.value | Mappato direttamente. La chiave è "Result Code". |
| routing_policy_group | read_only_udm.security_result.detection_fields.value | Mappato direttamente se non è vuoto, "-" o "NONE". La chiave è "RoutingPolicyGroup". |
| regola | read_only_udm.security_result.detection_fields.value | Mappato direttamente. La chiave è "Condizione soddisfatta". |
| SDRThreatCategory | read_only_udm.security_result.threat_name | Mappato direttamente se non è vuoto o "N/A". |
| SenderCountry | read_only_udm.principal.location.country_or_region | Mappato direttamente. |
| senderGroup | read_only_udm.principal.group.group_display_name | Mappato direttamente. |
| security_description | read_only_udm.security_result.description | Mappato direttamente. |
| security_email | read_only_udm.security_result.about.email o read_only_udm.principal.hostname | Mappato all'email se è un indirizzo email valido. In caso contrario, viene mappato al nome host dopo l'estrazione con grok. |
| origine | read_only_udm.network.ip_protocol | Se contiene "tcp", viene mappato su "TCP". |
| sourceAddress | read_only_udm.principal.ip | Mappato direttamente. |
| sourceHostName | read_only_udm.principal.administrative_domain | Mappato direttamente se non è "sconosciuto". |
| source_ip | read_only_udm.principal.ip | Mappato direttamente. Sovrascrive l'IP, se presente. |
| Oggetto | read_only_udm.network.email.subject | Mappato direttamente dopo la rimozione dei punti finali. Utilizzato anche per compilare network_data. |
| suser | read_only_udm.principal.user.email_addresses, read_only_udm.network.email.bounce_address | Mappato direttamente a entrambi i campi UDM se è un indirizzo email valido. |
| target_ip | read_only_udm.target.ip | Mappato direttamente. |
| a | read_only_udm.network.email.to | Mappato direttamente se è un indirizzo email valido. Utilizzato anche per compilare network_to. |
| total_bytes | read_only_udm.network.sent_bytes | Mappato e convertito direttamente in numero intero senza segno. |
| trackerHeader | read_only_udm.additional.fields.value.string_value | Mappato direttamente. La chiave è "Tracker Header". |
| ts, ts1, year | read_only_udm.metadata.event_timestamp.seconds | Utilizzato per creare il timestamp dell'evento. ts1 e year vengono combinati se ts1 è presente. Sono supportati vari formati, con e senza l'anno. Se l'anno non è presente, viene utilizzato l'anno corrente. Codificato in modo permanente su "Cisco". Codificato in modo permanente su "Cisco Email Security". Il valore predefinito è "ALLOW". Impostato su "BLOCK" in base al livello di log o alla descrizione. Se application_protocol è presente, il valore predefinito è "INBOUND". Imposta in base a deviceDirection per i messaggi CEF. Determinato in base a una combinazione di campi, tra cui network_from, network_to, target_ip, ip, description, event_type, principal_host, Hostname, user_id e sourceAddress. Il valore predefinito è "GENERIC_EVENT". Impostato su "SMTP" se application_protocol è "SMTP" o "smtp" oppure se sono presenti target_ip e ip. Imposta "AUTHTYPE_UNSPECIFIED" se login_status e user_id sono presenti nei log di sshd. Impostato su true se loglevel è "Critical" o "Alert". |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.