Recopila registros de la puerta de enlace de correo electrónico seguro de Cisco (anteriormente, dispositivo de seguridad de correo electrónico)
En este documento, se explica cómo transferir registros de Cisco Secure Email Gateway (antes conocido como Email Security Appliance) a Google Security Operations con Bindplane.
El analizador extrae campos de los registros con formato syslog, par clave-valor y JSON de Cisco Secure Email Gateway. Utiliza grok o kv para analizar el mensaje de registro y, luego, asigna estos valores al Modelo de datos unificados (UDM). También establece valores de metadatos predeterminados para el origen y el tipo del evento.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Windows Server 2016 o versiones posteriores, o host de Linux con
systemd - Si se ejecuta detrás de un proxy, asegúrate de que los puertos de firewall estén abiertos según los requisitos del agente de Bindplane.
- Acceso privilegiado a la interfaz web de Cisco Secure Email Gateway
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.
Instalación en Windows
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el comando siguiente:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietEspera a que se complete la instalación.
Ejecuta el siguiente comando para verificar la instalación:
sc query observiq-otel-collector
El servicio debe mostrarse como RUNNING.
Instalación en Linux
- Abre una terminal con privilegios de raíz o sudo.
Ejecuta el comando siguiente:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shEspera a que se complete la instalación.
Ejecuta el siguiente comando para verificar la instalación:
sudo systemctl status observiq-otel-collector
El servicio debería mostrarse como activo (en ejecución).
Recursos de instalación adicionales
Para obtener más opciones de instalación y solución de problemas, consulta la guía de instalación del agente de Bindplane.
Configura el agente de BindPlane para transferir registros de Syslog y enviarlos a Google SecOps
Ubica el archivo de configuración
Ubica el archivo de configuración en tu sistema operativo de la siguiente manera:
- Linux:
sudo systemctl status observiq-otel-collector- Windows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Edita el archivo de configuración
Reemplaza todo el contenido de
config.yamlpor la siguiente configuración: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 configuración
Reemplaza los marcadores de posición que se indican más abajo:
Configuración del receptor:
tcplog: Usaudplogpara el registro del sistema UDP otcplogpara el registro del sistema TCP.0.0.0.0: Dirección IP en la que se realizará la escucha (0.0.0.0para escuchar en todas las interfaces)514: Número de puerto en el que se debe escuchar (puerto syslog estándar)
Configuración del exportador:
creds_file_path: Ruta de acceso completa al archivo de autenticación de la transferencia:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
YOUR_CUSTOMER_ID: ID de cliente de la sección Obtén el ID de clienteendpoint: URL del extremo regional:- EE.UU.:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Consulta Extremos regionales para obtener la lista completa.
- EE.UU.:
log_type: Tipo de registro tal como aparece en Google SecOps (CISCO_EMAIL_SECURITY)
Guarda el archivo de configuración
- Después de editarlo, guarda el archivo:
- Linux: Presiona
Ctrl+O, luegoEntery, después,Ctrl+X. - Windows: Haz clic en Archivo > Guardar
- Linux: Presiona
Reinicia el agente de Bindplane para aplicar los cambios
Para reiniciar el agente de Bindplane en Linux, haz lo siguiente:
Ejecuta el comando siguiente:
sudo systemctl restart observiq-otel-collectorVerifica que el servicio esté en ejecución:
sudo systemctl status observiq-otel-collectorRevisa los registros en busca de errores:
sudo journalctl -u observiq-otel-collector -f
Para reiniciar el agente de Bindplane en Windows, haz lo siguiente:
Elige una de las siguientes opciones:
- Símbolo del sistema o PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collector- Consola de Services:
- Presiona
Win+R, escribeservices.mscy presiona Intro. - Busca observIQ OpenTelemetry Collector.
- Haz clic con el botón derecho y selecciona Reiniciar.
- Presiona
Verifica que el servicio esté en ejecución:
sc query observiq-otel-collectorRevisa los registros en busca de errores:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configura el reenvío de syslog en la puerta de enlace de correo electrónico seguro de Cisco
- Accede a la interfaz web de Cisco Secure Email Gateway.
- Ve a Administración del sistema > Suscripciones de registros.
- Haz clic en Agregar suscripción al registro.
- Proporciona los siguientes detalles de configuración:
- Log Type: Selecciona el tipo de registro que se reenviará (por ejemplo, Consolidated Event Logs, Mail Logs, Text Mail Logs).
- Nombre: Ingresa un nombre descriptivo (por ejemplo,
Google-SecOps-Syslog). - Método de recuperación: Selecciona Envío de Syslog.
- Nombre de host: Ingresa la dirección IP del host del agente de BindPlane.
- Protocolo: Selecciona TCP.
- Puerto: Ingresa
514. - Facility: Selecciona LOG_MAIL (o la instalación que prefieras).
- Haz clic en Enviar.
- Repite los pasos del 3 al 5 para cada tipo de registro adicional que desees reenviar. Tipos de registros recomendados:
- Registros de eventos consolidados
- Registros de correo de texto
- Registros de protección contra spam
- Registros de antivirus
- Registros del motor de AMP
- Registros del filtro de contenido
- Haz clic en Confirmar cambios para aplicar la configuración.
- Para verificar que se envíen los mensajes de syslog, consulta los registros del agente de Bindplane.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
| acl_decision_tag | read_only_udm.security_result.detection_fields.value | Se asigna directamente si no está vacío, es "-" o "NONE". La clave es "ACL Decision Tag". |
| access_or_decryption_policy_group | read_only_udm.security_result.detection_fields.value | Se asigna directamente si no está vacío, es "-" o "NONE". La clave es "AccessOrDecryptionPolicyGroup". |
| actúa | read_only_udm.security_result.action_details | Se asigna directamente. |
| authenticated_user | read_only_udm.principal.user.userid | Se asigna directamente si no está vacío, es "-" o "NONE". |
| cache_hierarchy_retrieval | read_only_udm.security_result.detection_fields.value | Se asigna directamente si no está vacío, es "-" o "NONE". La clave es "Cache Hierarchy Retrieval". |
| cifrado | read_only_udm.network.tls.cipher | Se asigna directamente. |
| País | read_only_udm.principal.location.country_or_region | Se asigna directamente. |
| data_security_policy_group | read_only_udm.security_result.detection_fields.value | Se asigna directamente si no está vacío, es "-" o "NONE". La clave es "DataSecurityPolicyGroup". |
| descripción | read_only_udm.metadata.description | Se asigna directamente a los mensajes de syslog. En el caso de los mensajes de CEF, se convierte en la descripción general del producto. Varios patrones de Grok extraen descripciones específicas según el evento del producto. gsub modifica algunas descripciones para quitar los espacios y los dos puntos iniciales o finales. |
| deviceDirection | read_only_udm.network.direction | Si es "0", se asigna a "INBOUND". Si es "1", se asigna a "OUTBOUND". Se usa para determinar qué protocolo y cifrado TLS se deben asignar directamente y cuáles se deben asignar como etiquetas. |
| deviceExternalId | read_only_udm.principal.asset.asset_id | Se asigna como "ID del dispositivo:". |
| dominio | read_only_udm.target.administrative_domain | Se asigna directamente desde los registros JSON. |
| domain_age | read_only_udm.security_result.about.labels.value | Se asigna directamente. La clave es "YoungestDomainAge". |
| duser | read_only_udm.target.user.email_addresses, read_only_udm.network.email.to | Si contiene ";", se divide en varias direcciones de correo electrónico y se asigna cada una a ambos campos del UDM. De lo contrario, asigna directamente ambos campos del UDM si se trata de una dirección de correo electrónico válida. También se usa para completar network_to si está vacío. |
| dvc | read_only_udm.target.ip | Se asigna directamente. |
| entries.collection_time.nanos, entries.collection_time.seconds | read_only_udm.metadata.event_timestamp.nanos, read_only_udm.metadata.event_timestamp.seconds | Se usa para crear la marca de tiempo del evento. |
| env-from | read_only_udm.additional.fields.value.string_value | Se asigna directamente. La clave es "Env-From". |
| ESAAttachmentDetails | read_only_udm.security_result.about.file.full_path, read_only_udm.security_result.about.file.sha256 | Se analiza para extraer nombres de archivos y hashes SHA256. Se pueden extraer varios archivos y hashes. |
| ESADCID | read_only_udm.security_result.about.labels.value | Se asigna directamente. La clave es "ESADCID". |
| ESAFriendlyFrom | read_only_udm.principal.user.user_display_name, read_only_udm.network.email.from | Se analizó para extraer el nombre visible y la dirección de correo electrónico. |
| ESAHeloDomain | read_only_udm.intermediary.administrative_domain | Se asigna directamente. |
| ESAHeloIP | read_only_udm.intermediary.ip | Se asigna directamente. |
| ESAICID | read_only_udm.security_result.about.labels.value | Se asigna directamente. La clave es "ESAICID". |
| ESAMailFlowPolicy | read_only_udm.security_result.rule_name | Se asigna directamente. |
| ESAMID | read_only_udm.security_result.about.labels.value | Se asigna directamente. La clave es "ESAMID". |
| ESAReplyTo | read_only_udm.network.email.reply_to | Se asigna directamente si es una dirección de correo electrónico válida. También se usa para propagar network_to. |
| ESASDRDomainAge | read_only_udm.security_result.about.labels.value | Se asigna directamente. La clave es "ESASDRDomainAge". |
| ESASenderGroup | read_only_udm.principal.group.group_display_name | Se asigna directamente. |
| ESAStatus | read_only_udm.security_result.about.labels.value | Se asigna directamente. La clave es "ESAStatus". |
| ESATLSInCipher | read_only_udm.network.tls.cipher o read_only_udm.security_result.about.labels.value | Se asigna directamente al cifrado si deviceDirection es "0". De lo contrario, se asigna como una etiqueta con la clave "ESATLSInCipher". |
| ESATLSInProtocol | read_only_udm.network.tls.version o read_only_udm.security_result.about.labels.value | La versión de TLS se extrae y se asigna directamente si deviceDirection es "0". De lo contrario, se asigna como una etiqueta con la clave "ESATLSInProtocol". |
| ESATLSOutCipher | read_only_udm.network.tls.cipher o read_only_udm.security_result.about.labels.value | Se asigna directamente al cifrado si deviceDirection es "1". De lo contrario, se asigna como una etiqueta con la clave "ESATLSOutCipher". |
| ESATLSOutProtocol | read_only_udm.network.tls.version o read_only_udm.security_result.about.labels.value | La versión de TLS se extrae y se asigna directamente si deviceDirection es "1". De lo contrario, se asigna como una etiqueta con la clave "ESATLSOutProtocol". |
| ESAURLDetails | read_only_udm.target.url | Se analizó para extraer URLs. Solo se asigna la primera URL porque el campo no se repite. |
| external_dlp_policy_group | read_only_udm.security_result.detection_fields.value | Se asigna directamente si no está vacío, es "-" o "NONE". La clave es "ExternalDlpPolicyGroup". |
| ExternalMsgID | read_only_udm.security_result.about.labels.value | Se asigna directamente después de quitar las comillas simples y los corchetes angulares. La clave es "ExternalMsgID". |
| de | read_only_udm.network.email.from | Se asigna directamente si es una dirección de correo electrónico válida. También se usa para propagar network_from. |
| host.hostname | read_only_udm.principal.hostname o read_only_udm.intermediary.hostname | Se asigna al nombre de host principal si el campo de host no es válido. También se asigna al nombre de host intermedio. |
| host.ip | read_only_udm.principal.ip o read_only_udm.intermediary.ip | Se asigna a la IP principal si el campo ip no está configurado en los registros JSON. También se asigna a la IP intermedia. |
| Nombre de host | read_only_udm.target.hostname | Se asigna directamente. |
| http_method | read_only_udm.network.http.method | Se asigna directamente. |
| http_response_code | read_only_udm.network.http.response_code | Se asigna y convierte directamente en un número entero. |
| identity_policy_group | read_only_udm.security_result.detection_fields.value | Se asigna directamente si no está vacío, es "-" o "NONE". La clave es "IdentityPolicyGroup". |
| ip | read_only_udm.principal.ip | Se asigna directamente. Se reemplaza por source_ip si está presente. |
| kv_msg | Varios | Se analizó con el filtro kv. El preprocesamiento incluye reemplazar los espacios antes de las claves por "#" y cambiar los valores de csLabel. |
| log_type | read_only_udm.metadata.log_type | Está codificado como "CISCO_EMAIL_SECURITY". |
| loglevel | read_only_udm.security_result.severity, read_only_udm.security_result.action | Se usa para determinar la gravedad y la acción. "Info", "", "Debug", "Trace" se asignan a "INFORMATIONAL" y "ALLOW". "Advertencia" se asigna a "MEDIO" y "PERMITIR". "High" se asigna a "HIGH" y "BLOCK". Los niveles "Crítico" y "Alerta" se asignan a "CRITICAL" y "BLOCK". |
| mail_id | read_only_udm.network.email.mail_id | Se asigna directamente desde los registros JSON. |
| mailto | read_only_udm.target.user.email_addresses, read_only_udm.network.email.to | Se asigna directamente a ambos campos del UDM si es una dirección de correo electrónico válida. |
| MailPolicy | read_only_udm.security_result.about.labels.value | Se asigna directamente. La clave es "MailPolicy". |
| mensaje | Varios | Se analiza como JSON si es posible. De lo contrario, se procesará como un mensaje de syslog. |
| message_id | read_only_udm.network.email.mail_id | Se asigna directamente. También se usa para completar network_data. |
| msg | read_only_udm.network.email.subject | Se asigna directamente después de la decodificación UTF-8 y la eliminación de retornos de carro, saltos de línea y comillas adicionales. También se usa para completar network_data. |
| msg1 | Varios | Se analizó con el filtro kv. Se usa para extraer el nombre de host, helo, env-from y reply-to. |
| outbound_malware_scanning_policy_group | read_only_udm.security_result.detection_fields.value | Se asigna directamente si no está vacío, es "-" o "NONE". La clave es "DataSecurityPolicyGroup". |
| puerto | read_only_udm.target.port | Se asigna y convierte directamente en un número entero. |
| principalMail | read_only_udm.principal.user.email_addresses | Se asigna directamente. |
| principalUrl | read_only_udm.principal.url | Se asigna directamente. |
| product_event | read_only_udm.metadata.product_event_type | Se asigna directamente. Se usa para determinar qué patrones de Grok se deben aplicar. Se quitan los caracteres "%" iniciales. "amp" se reemplaza por "SIEM_AMPenginelogs". |
| product_version | read_only_udm.metadata.product_version | Se asigna directamente. |
| protocolo | read_only_udm.network.tls.version | Se asigna directamente. |
| received_bytes | read_only_udm.network.received_bytes | Se asigna y convierte directamente en un número entero sin signo. |
| responder a | read_only_udm.additional.fields.value.string_value | Se asigna directamente. La clave es "Reply-To". |
| reputación | read_only_udm.security_result.confidence_details | Se asigna directamente. |
| request_method_uri | read_only_udm.target.url | Se asigna directamente. |
| result_code | read_only_udm.security_result.detection_fields.value | Se asigna directamente. La clave es "Result Code". |
| routing_policy_group | read_only_udm.security_result.detection_fields.value | Se asigna directamente si no está vacío, es "-" o "NONE". La clave es "RoutingPolicyGroup". |
| regla | read_only_udm.security_result.detection_fields.value | Se asigna directamente. La clave es "Condición coincidente". |
| SDRThreatCategory | read_only_udm.security_result.threat_name | Se asigna directamente si no está vacío o es "N/A". |
| SenderCountry | read_only_udm.principal.location.country_or_region | Se asigna directamente. |
| senderGroup | read_only_udm.principal.group.group_display_name | Se asigna directamente. |
| security_description | read_only_udm.security_result.description | Se asigna directamente. |
| security_email | read_only_udm.security_result.about.email o read_only_udm.principal.hostname | Se asigna al correo electrónico si es una dirección de correo electrónico válida. De lo contrario, se asigna al nombre de host después de la extracción con grok. |
| source | read_only_udm.network.ip_protocol | Si contiene "tcp", se asigna a "TCP". |
| sourceAddress | read_only_udm.principal.ip | Se asigna directamente. |
| sourceHostName | read_only_udm.principal.administrative_domain | Se asigna directamente si no es "desconocido". |
| source_ip | read_only_udm.principal.ip | Se asigna directamente. Reemplaza la IP si está presente. |
| Asunto | read_only_udm.network.email.subject | Se mapea directamente después de quitar los puntos finales. También se usa para completar network_data. |
| suser | read_only_udm.principal.user.email_addresses, read_only_udm.network.email.bounce_address | Se asigna directamente a ambos campos del UDM si es una dirección de correo electrónico válida. |
| target_ip | read_only_udm.target.ip | Se asigna directamente. |
| a | read_only_udm.network.email.to | Se asigna directamente si es una dirección de correo electrónico válida. También se usa para propagar network_to. |
| total_bytes | read_only_udm.network.sent_bytes | Se asigna y convierte directamente en un número entero sin signo. |
| trackerHeader | read_only_udm.additional.fields.value.string_value | Se asigna directamente. La clave es "Tracker Header". |
| ts, ts1, year | read_only_udm.metadata.event_timestamp.seconds | Se usa para construir la marca de tiempo del evento. ts1 y year se combinan si ts1 está presente. Se admiten varios formatos, con y sin el año. Si no se incluye el año, se usa el año actual. Está codificado como "Cisco". Está codificado como "Cisco Email Security". El valor predeterminado es "ALLOW". Se establece en "BLOCK" según el nivel de registro o la descripción. Si application_protocol está presente, el valor predeterminado es "INBOUND". Es el valor establecido según deviceDirection para los mensajes de CEF. Se determina en función de una combinación de campos, incluidos network_from, network_to, target_ip, ip, description, event_type, principal_host, Hostname, user_id y sourceAddress. El valor predeterminado es “GENERIC_EVENT”. Se establece en "SMTP" si application_protocol es "SMTP" o "smtp", o si target_ip y ip están presentes. Se establece en "AUTHTYPE_UNSPECIFIED" si login_status y user_id están presentes en los registros de sshd. Se establece como verdadero si el nivel de registro es "Crítico" o "Alerta". |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.