Coletar registros do Cisco Email Security
Este documento explica como ingerir registros do Cisco Email Security no Google Security Operations usando o Bindplane.
O analisador extrai campos de syslog, chave-valor e registros formatados em JSON do Cisco Email Security Appliance. Ele usa grok e/ou kv para analisar a mensagem de registro e mapeia esses valores para o modelo de dados unificado (UDM). Ele também define valores de metadados padrão para a origem e o tipo do evento.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Windows Server 2016 ou mais recente ou host Linux com
systemd - Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente Bindplane.
- Acesso privilegiado à interface da Web do Cisco Email Security Appliance
Receber o arquivo de autenticação de ingestão do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura no sistema em que o Bindplane será instalado.
Receber o ID de cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie e salve o ID do cliente na seção Detalhes da organização.
Instalar o agente do Bindplane
Instale o agente do Bindplane no sistema operacional Windows ou Linux de acordo com as instruções a seguir.
Instalação do Windows
- Abra o prompt de comando ou o PowerShell como administrador.
Execute este comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietAguarde a conclusão da instalação.
Execute o seguinte comando para confirmar a instalação:
sc query observiq-otel-collector
O serviço vai aparecer como EM EXECUÇÃO.
Instalação do Linux
- Abra um terminal com privilégios de root ou sudo.
Execute este comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shAguarde a conclusão da instalação.
Execute o seguinte comando para confirmar a instalação:
sudo systemctl status observiq-otel-collector
O serviço vai aparecer como ativo (em execução).
Outros recursos de instalação
Para mais opções de instalação e solução de problemas, consulte o guia de instalação do agente do Bindplane.
Configurar o agente do Bindplane para ingerir syslog e enviar ao Google SecOps
Localizar o arquivo de configuração
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Editar o arquivo de configuração
Substitua todo o conteúdo de
config.yamlpela seguinte configuração: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
Parâmetros de configuração
Substitua os seguintes marcadores de posição:
Configuração do receptor:
tcplog: useudplogpara syslog UDP outcplogpara syslog TCP.0.0.0.0: endereço IP para escutar (0.0.0.0para escutar em todas as interfaces)514: número da porta a ser detectada (porta syslog padrão).
Configuração do exportador:
creds_file_path: caminho completo para o arquivo de autenticação de ingestão:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
YOUR_CUSTOMER_ID: ID do cliente da seção "Receber ID do cliente"endpoint: URL do endpoint regional:- EUA:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Ásia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Consulte a lista completa em Endpoints regionais.
- EUA:
log_type: tipo de registro exatamente como aparece no Chronicle (CISCO_EMAIL_SECURITY)
Salve o arquivo de configuração.
- Depois de editar, salve o arquivo:
- Linux: pressione
Ctrl+O,EntereCtrl+X. - Windows: clique em Arquivo > Salvar.
- Linux: pressione
Reinicie o agente do Bindplane para aplicar as mudanças
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart observiq-otel-collectorVerifique se o serviço está em execução:
sudo systemctl status observiq-otel-collectorVerifique se há erros nos registros:
sudo journalctl -u observiq-otel-collector -f
Para reiniciar o agente do Bindplane em Windows, escolha uma das seguintes opções:
Prompt de comando ou PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collectorConsole de serviços:
- Pressione
Win+R, digiteservices.msce pressione Enter. - Localize o Coletor do OpenTelemetry da observIQ.
Clique com o botão direito do mouse e selecione Reiniciar.
Verifique se o serviço está em execução:
sc query observiq-otel-collectorVerifique se há erros nos registros:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Pressione
Configurar o encaminhamento do Syslog no Cisco Email Security Appliance
- Faça login na interface da Web do Cisco Email Security Appliance.
- Acesse Administração do sistema > Assinaturas de registros.
- Clique em Adicionar assinatura de registro.
- Informe os seguintes detalhes de configuração:
- Tipo de registro: selecione o tipo de registro a ser encaminhado (por exemplo, Registros de eventos consolidados, Registros de e-mail, Registros de e-mail de texto).
- Nome: insira um nome descritivo, por exemplo,
Google-SecOps-Syslog. - Método de recuperação: selecione Envio de syslog.
- Nome do host: insira o endereço IP do host do agente do Bindplane.
- Protocolo: selecione TCP.
- Porta: insira
514. - Instalação: selecione LOG_MAIL (ou sua instalação preferida).
- Clique em Enviar.
- Repita as etapas de 3 a 5 para cada tipo de registro adicional que você quer encaminhar. Tipos de registros recomendados:
- Logs de eventos consolidados
- Registros de e-mail de texto
- Registros antispam
- Registros de antivírus
- Registros do mecanismo AMP
- Registros de filtragem de conteúdo
- Clique em Confirmar mudanças para aplicar a configuração.
- Verifique se as mensagens syslog estão sendo enviadas conferindo os registros do agente Bindplane.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| acl_decision_tag | read_only_udm.security_result.detection_fields.value | Mapeado diretamente se não estiver vazio, "-" ou "NONE". A chave é "ACL Decision Tag". |
| access_or_decryption_policy_group | read_only_udm.security_result.detection_fields.value | Mapeado diretamente se não estiver vazio, "-" ou "NONE". A chave é "AccessOrDecryptionPolicyGroup". |
| agir | read_only_udm.security_result.action_details | Mapeado diretamente. |
| authenticated_user | read_only_udm.principal.user.userid | Mapeado diretamente se não estiver vazio, "-" ou "NONE". |
| cache_hierarchy_retrieval | read_only_udm.security_result.detection_fields.value | Mapeado diretamente se não estiver vazio, "-" ou "NONE". A chave é "Recuperação da hierarquia de cache". |
| criptografia | read_only_udm.network.tls.cipher | Mapeado diretamente. |
| país | read_only_udm.principal.location.country_or_region | Mapeado diretamente. |
| data_security_policy_group | read_only_udm.security_result.detection_fields.value | Mapeado diretamente se não estiver vazio, "-" ou "NONE". A chave é "DataSecurityPolicyGroup". |
| descrição | read_only_udm.metadata.description | Mapeado diretamente para mensagens do syslog. Para mensagens CEF, ela se torna a descrição geral do produto. Vários padrões do Grok extraem descrições específicas com base no product_event. Algumas descrições são modificadas por gsub para remover espaços e dois-pontos à esquerda/direita. |
| deviceDirection | read_only_udm.network.direction | Se for "0", será mapeado como "INBOUND". Se for "1", será mapeado como "OUTBOUND". Usado para determinar quais criptografias e protocolos TLS mapear diretamente e quais mapear como rótulos. |
| deviceExternalId | read_only_udm.principal.asset.asset_id | Mapeado como "ID do dispositivo:". |
| domínio | read_only_udm.target.administrative_domain | Mapeado diretamente dos registros JSON. |
| domain_age | read_only_udm.security_result.about.labels.value | Mapeado diretamente. A chave é "YoungestDomainAge". |
| duser | read_only_udm.target.user.email_addresses, read_only_udm.network.email.to | Se contiver ";", divida em vários endereços de e-mail e mapeie cada um para os dois campos da UDM. Caso contrário, mapeie diretamente para os dois campos do UDM se for um endereço de e-mail válido. Também usado para preencher "network_to" se estiver vazio. |
| dvc | read_only_udm.target.ip | Mapeado diretamente. |
| entries.collection_time.nanos, entries.collection_time.seconds | read_only_udm.metadata.event_timestamp.nanos, read_only_udm.metadata.event_timestamp.seconds | Usado para criar o carimbo de data/hora do evento. |
| env-from | read_only_udm.additional.fields.value.string_value | Mapeado diretamente. A chave é "Env-From". |
| ESAAttachmentDetails | read_only_udm.security_result.about.file.full_path, read_only_udm.security_result.about.file.sha256 | Analisado para extrair nomes de arquivos e hashes SHA256. É possível extrair vários arquivos e hashes. |
| ESADCID | read_only_udm.security_result.about.labels.value | Mapeado diretamente. A chave é "ESADCID". |
| ESAFriendlyFrom | read_only_udm.principal.user.user_display_name, read_only_udm.network.email.from | Analisado para extrair o nome de exibição e o endereço de e-mail. |
| ESAHeloDomain | read_only_udm.intermediary.administrative_domain | Mapeado diretamente. |
| ESAHeloIP | read_only_udm.intermediary.ip | Mapeado diretamente. |
| ESAICID | read_only_udm.security_result.about.labels.value | Mapeado diretamente. A chave é "ESAICID". |
| ESAMailFlowPolicy | read_only_udm.security_result.rule_name | Mapeado diretamente. |
| ESAMID | read_only_udm.security_result.about.labels.value | Mapeado diretamente. A chave é "ESAMID". |
| ESAReplyTo | read_only_udm.network.email.reply_to | Mapeado diretamente se for um endereço de e-mail válido. Também usado para preencher "network_to". |
| ESASDRDomainAge | read_only_udm.security_result.about.labels.value | Mapeado diretamente. A chave é "ESASDRDomainAge". |
| ESASenderGroup | read_only_udm.principal.group.group_display_name | Mapeado diretamente. |
| ESAStatus | read_only_udm.security_result.about.labels.value | Mapeado diretamente. A chave é "ESAStatus". |
| ESATLSInCipher | read_only_udm.network.tls.cipher ou read_only_udm.security_result.about.labels.value | Mapeado diretamente para a cifra se deviceDirection for "0". Caso contrário, será mapeado como um rótulo com a chave "ESATLSInCipher". |
| ESATLSInProtocol | read_only_udm.network.tls.version ou read_only_udm.security_result.about.labels.value | A versão do TLS é extraída e mapeada diretamente se deviceDirection for "0". Caso contrário, será mapeado como um rótulo com a chave "ESATLSInProtocol". |
| ESATLSOutCipher | read_only_udm.network.tls.cipher ou read_only_udm.security_result.about.labels.value | Mapeado diretamente para a cifra se deviceDirection for "1". Caso contrário, será mapeado como um rótulo com a chave "ESATLSOutCipher". |
| ESATLSOutProtocol | read_only_udm.network.tls.version ou read_only_udm.security_result.about.labels.value | A versão do TLS é extraída e mapeada diretamente se deviceDirection for "1". Caso contrário, será mapeado como um rótulo com a chave "ESATLSOutProtocol". |
| ESAURLDetails | read_only_udm.target.url | Analisado para extrair URLs. Somente o primeiro URL é mapeado porque o campo não é repetido. |
| external_dlp_policy_group | read_only_udm.security_result.detection_fields.value | Mapeado diretamente se não estiver vazio, "-" ou "NONE". A chave é "ExternalDlpPolicyGroup". |
| ExternalMsgID | read_only_udm.security_result.about.labels.value | Mapeado diretamente após a remoção de aspas simples e colchetes angulares. A chave é "ExternalMsgID". |
| de | read_only_udm.network.email.from | Mapeado diretamente se for um endereço de e-mail válido. Também usado para preencher "network_from". |
| host.hostname | read_only_udm.principal.hostname ou read_only_udm.intermediary.hostname | Mapeado para o nome do host principal se o campo do host for inválido. Também mapeado para o nome do host intermediário. |
| host.ip | read_only_udm.principal.ip ou read_only_udm.intermediary.ip | Mapeado para o IP principal se o campo "ip" não estiver definido nos registros JSON. Também mapeado para o IP intermediário. |
| nome do host | read_only_udm.target.hostname | Mapeado diretamente. |
| http_method | read_only_udm.network.http.method | Mapeado diretamente. |
| http_response_code | read_only_udm.network.http.response_code | Mapeado e convertido diretamente para número inteiro. |
| identity_policy_group | read_only_udm.security_result.detection_fields.value | Mapeado diretamente se não estiver vazio, "-" ou "NONE". A chave é "IdentityPolicyGroup". |
| ip | read_only_udm.principal.ip | Mapeado diretamente. Substituído por source_ip, se presente. |
| kv_msg | Vários | Analisado usando o filtro kv. O pré-processamento inclui substituir espaços antes das chaves por "#" e trocar valores csLabel. |
| log_type | read_only_udm.metadata.log_type | Fixado no código como "CISCO_EMAIL_SECURITY". |
| loglevel | read_only_udm.security_result.severity, read_only_udm.security_result.action | Usado para determinar a gravidade e a ação. "Info", "", "Debug", "Trace" são mapeados para "INFORMATIONAL" e "ALLOW". "Warning" é mapeado para "MEDIUM" e "ALLOW". "High" é mapeado para "HIGH" e "BLOCK". "Crítico" e "Alerta" são mapeados para "CRITICAL" e "BLOCK". |
| mail_id | read_only_udm.network.email.mail_id | Mapeado diretamente dos registros JSON. |
| mailto | read_only_udm.target.user.email_addresses, read_only_udm.network.email.to | Mapeado diretamente para os dois campos do UDM se for um endereço de e-mail válido. |
| MailPolicy | read_only_udm.security_result.about.labels.value | Mapeado diretamente. A chave é "MailPolicy". |
| mensagem | Vários | Analisado como JSON, se possível. Caso contrário, ele será processado como uma mensagem do syslog. |
| message_id | read_only_udm.network.email.mail_id | Mapeado diretamente. Também usado para preencher network_data. |
| msg | read_only_udm.network.email.subject | Mapeado diretamente após a decodificação UTF-8 e a remoção de retornos de carro, novas linhas e aspas extras. Também usado para preencher network_data. |
| msg1 | Vários | Analisado usando o filtro kv. Usado para extrair nome do host, helo, env-from e reply-to. |
| outbound_malware_scanning_policy_group | read_only_udm.security_result.detection_fields.value | Mapeado diretamente se não estiver vazio, "-" ou "NONE". A chave é "DataSecurityPolicyGroup". |
| porta | read_only_udm.target.port | Mapeado e convertido diretamente para número inteiro. |
| principalMail | read_only_udm.principal.user.email_addresses | Mapeado diretamente. |
| principalUrl | read_only_udm.principal.url | Mapeado diretamente. |
| product_event | read_only_udm.metadata.product_event_type | Mapeado diretamente. Usado para determinar quais padrões grok aplicar. Os caracteres "%" iniciais são removidos. "amp" é substituído por "SIEM_AMPenginelogs". |
| product_version | read_only_udm.metadata.product_version | Mapeado diretamente. |
| protocolo | read_only_udm.network.tls.version | Mapeado diretamente. |
| received_bytes | read_only_udm.network.received_bytes | Mapeado diretamente e convertido em um número inteiro sem sinal. |
| responder para | read_only_udm.additional.fields.value.string_value | Mapeado diretamente. A chave é "Reply-To". |
| reputação | read_only_udm.security_result.confidence_details | Mapeado diretamente. |
| request_method_uri | read_only_udm.target.url | Mapeado diretamente. |
| result_code | read_only_udm.security_result.detection_fields.value | Mapeado diretamente. A chave é "Código do resultado". |
| routing_policy_group | read_only_udm.security_result.detection_fields.value | Mapeado diretamente se não estiver vazio, "-" ou "NONE". A chave é "RoutingPolicyGroup". |
| regra | read_only_udm.security_result.detection_fields.value | Mapeado diretamente. A chave é "Condição correspondente". |
| SDRThreatCategory | read_only_udm.security_result.threat_name | Mapeado diretamente se não estiver vazio ou "N/A". |
| SenderCountry | read_only_udm.principal.location.country_or_region | Mapeado diretamente. |
| senderGroup | read_only_udm.principal.group.group_display_name | Mapeado diretamente. |
| security_description | read_only_udm.security_result.description | Mapeado diretamente. |
| security_email | read_only_udm.security_result.about.email ou read_only_udm.principal.hostname | Mapeado para e-mail se for um endereço de e-mail válido. Caso contrário, será mapeado para o nome do host após a extração com grok. |
| source | read_only_udm.network.ip_protocol | Se contiver "tcp", será mapeado para "TCP". |
| sourceAddress | read_only_udm.principal.ip | Mapeado diretamente. |
| sourceHostName | read_only_udm.principal.administrative_domain | Mapeado diretamente se não for "desconhecido". |
| source_ip | read_only_udm.principal.ip | Mapeado diretamente. Substitui o IP, se presente. |
| Assunto | read_only_udm.network.email.subject | Mapeado diretamente após a remoção dos pontos finais. Também usado para preencher network_data. |
| suser | read_only_udm.principal.user.email_addresses, read_only_udm.network.email.bounce_address | Mapeado diretamente para os dois campos do UDM se for um endereço de e-mail válido. |
| target_ip | read_only_udm.target.ip | Mapeado diretamente. |
| a | read_only_udm.network.email.to | Mapeado diretamente se for um endereço de e-mail válido. Também usado para preencher "network_to". |
| total_bytes | read_only_udm.network.sent_bytes | Mapeado diretamente e convertido em um número inteiro sem sinal. |
| trackerHeader | read_only_udm.additional.fields.value.string_value | Mapeado diretamente. A chave é "Tracker Header". |
| ts, ts1, year | read_only_udm.metadata.event_timestamp.seconds | Usado para construir o carimbo de data/hora do evento. ts1 e ano são combinados se ts1 estiver presente. Vários formatos são aceitos, com e sem o ano. Se o ano não estiver presente, o ano atual será usado. Fixado no código como "Cisco". Codificado como "Cisco Email Security". O padrão é "ALLOW". Definido como "BLOCK" com base no nível de registro ou na descrição. O padrão é "INBOUND" se "application_protocol" estiver presente. Definido com base em deviceDirection para mensagens CEF. Determinado com base em uma combinação de campos, incluindo network_from, network_to, target_ip, ip, description, event_type, principal_host, Hostname, user_id e sourceAddress. O padrão é "GENERIC_EVENT". Definido como "SMTP" se application_protocol for "SMTP" ou "smtp", ou se target_ip e ip estiverem presentes. Definido como "AUTHTYPE_UNSPECIFIED" se login_status e user_id estiverem presentes nos registros do sshd. Defina como "true" se loglevel for "Critical" ou "Alert". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.