Coletar registros do Cisco Secure Email Gateway (antigo Email Security Appliance)
Este documento explica como ingerir registros do Cisco Secure Email Gateway (antigo Email Security Appliance) no Google Security Operations usando o Bindplane.
O analisador extrai campos de syslog, chave-valor e registros formatados em JSON do Cisco Secure Email Gateway. Ele usa grok e/ou kv para analisar a mensagem de registro e mapeia esses valores para o modelo de dados unificado (UDM, na sigla em inglês). 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 Secure Email Gateway
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 seu 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
Localize o arquivo de configuração no seu sistema operacional da seguinte maneira:
- Linux:
sudo systemctl status observiq-otel-collector- Windows:
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 Google SecOps (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 este 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-collector- Console 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.
- Pressione
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"
Configurar o encaminhamento de syslog no Cisco Secure Email Gateway
- Faça login na interface da Web do Cisco Secure Email Gateway.
- 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. - Facility: 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". |
| age | 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 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 protocolos e cifras 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" mapeiam 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, será processada 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 é "Cabeçalho do rastreador". |
| 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.