Recopila registros de Cisco Email Security

Se admite en los siguientes sistemas operativos:

En este documento, se explica cómo transferir registros de Cisco Email Security a Google Security Operations con Bindplane.

El analizador extrae campos de los registros con formato syslog, clave-valor y JSON del dispositivo de seguridad de correo electrónico de Cisco. 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 con privilegios a la interfaz web del dispositivo de seguridad de correo electrónico de Cisco

Obtén el archivo de autenticación de transferencia de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. 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

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. 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

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el comando siguiente:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Espera a que se complete la instalación.

  4. Ejecute el siguiente comando para verificar la instalación:

    sc query observiq-otel-collector
    

El servicio debe mostrarse como RUNNING.

Instalación en Linux

  1. Abre una terminal con privilegios de administrador o sudo.
  2. Ejecuta el comando siguiente:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Espera a que se complete la instalación.

  4. Ejecute 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 solucionar problemas, consulta la guía de instalación del agente de Bindplane.

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

Ubica el archivo de configuración

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Edita el archivo de configuración

  • Reemplaza todo el contenido de config.yaml con 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: Usa udplog para el registro del sistema UDP o tcplog para el registro del sistema TCP.
      • 0.0.0.0: Dirección IP en la que se realizará la escucha (0.0.0.0 para 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
      • YOUR_CUSTOMER_ID: ID de cliente de la sección Obtén el ID de cliente
      • endpoint: 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.
      • log_type: Tipo de registro tal como aparece en Chronicle (CISCO_EMAIL_SECURITY)

Guarda el archivo de configuración

  • Después de editarlo, guarda el archivo:
    • Linux: Presiona Ctrl+O, luego Enter y, después, Ctrl+X.
    • Windows: Haz clic en Archivo > Guardar

Reinicia el agente de Bindplane para aplicar los cambios

  • Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:

    sudo systemctl restart observiq-otel-collector
    
    1. Verifica que el servicio esté en ejecución:

        sudo systemctl status observiq-otel-collector
      
    2. Revisa los registros en busca de errores:

        sudo journalctl -u observiq-otel-collector -f
      
  • Para reiniciar el agente de Bindplane en Windows, 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:

      1. Presiona Win+R, escribe services.msc y presiona Intro.
      2. Busca observIQ OpenTelemetry Collector.
      3. Haz clic con el botón derecho y selecciona Reiniciar.

      4. Verifica que el servicio esté en ejecución:

        sc query observiq-otel-collector
        
      5. Revisa los registros en busca de errores:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Configura el reenvío de Syslog en el dispositivo de seguridad de correo electrónico de Cisco

  1. Accede a la interfaz web del dispositivo de seguridad de correo electrónico de Cisco.
  2. Ve a Administración del sistema > Suscripciones de registros.
  3. Haz clic en Agregar suscripción al registro.
  4. 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).
  5. Haz clic en Enviar.
  6. 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
  7. Haz clic en Confirmar cambios para aplicar la configuración.
  8. 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.
country 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 basadas en el evento del producto. Algunas descripciones se modifican con gsub 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 de 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 de 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 de 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 procesa 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 decodificar UTF-8 y quitar 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 de 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.