Recoger registros de Forescout NAC

Disponible en:

En este documento se explica cómo ingerir registros de control de acceso a la red (NAC) de Forescout en Google Security Operations mediante Bindplane. El analizador gestiona los registros con formato syslog y CEF de Forescout NAC. Extrae campos mediante patrones grok, los asigna al modelo de datos unificado (UDM) y categoriza los eventos en función de las palabras clave y los campos extraídos. Además, gestiona los inicios y cierres de sesión, las conexiones de red, los eventos de correo y las actualizaciones del estado del sistema. Se ha implementado una lógica específica para gestionar los eventos "CounterACT" y "Virtual Firewall", incluida la asignación de gravedad y el enriquecimiento del contexto del usuario.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Windows 2016 o versiones posteriores, o un host Linux con systemd
  • Si se ejecuta a través de un proxy, los puertos del cortafuegos están abiertos
  • Debe instalarse ForeScout CounterAct v8.0 o la versión más reciente.
  • Debe instalarse el complemento Syslog v3.5 del módulo de extensión principal de ForeScout CounterAct.
  • Acceso privilegiado a Forescout Appliance y al complemento CounterACT

Obtener el archivo de autenticación de ingestión de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.

Obtener el ID de cliente de Google SecOps

  1. Inicia sesión en 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.

Instalar el agente de Bindplane

Instala el agente de Bindplane en tu sistema operativo Windows o Linux siguiendo las instrucciones que se indican a continuación.

Instalación de ventanas

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

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación de Linux

  1. Abre un terminal con privilegios de superusuario o sudo.
  2. Ejecuta el siguiente comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalación adicionales

Para ver más opciones de instalación, consulta la guía de instalación.

Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:
    • Busca el archivo config.yaml. Normalmente, se encuentra en el directorio /etc/bindplane-agent/ en Linux o en el directorio de instalación en Windows.
    • Abre el archivo con un editor de texto (por ejemplo, nano, vi o Bloc de notas).
  2. Edita el archivo config.yaml de la siguiente manera:

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: 'FORESCOUT_NAC'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.

  4. Sustituye <customer_id> por el ID de cliente real.

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta en la que se guardó el archivo de autenticación en la sección Obtener el archivo de autenticación de ingestión de Google SecOps.

Reinicia el agente de Bindplane para aplicar los cambios

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

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Instalar el complemento Syslog de CounterACT

  1. Ve a la página Forescount Base Plugins (Complementos básicos de Forescount) y descarga el archivo del complemento .fpi.
  2. Guarda el archivo en el equipo en el que esté instalada la consola CounterACT.
  3. Inicia sesión en la consola CounterACT.
  4. Selecciona Opciones > Complementos > Instalar.
  5. Busca y selecciona el archivo FPI del complemento guardado.
  6. Haz clic en Instalar.
  7. Acepta el contrato de licencia para continuar.
  8. Una vez que se haya completado la instalación, haz clic en Cerrar.
  9. Selecciona el complemento en el panel Complemento y haz clic en Iniciar.
  10. Selecciona los dispositivos CounterACT en los que quieras iniciar el complemento (se recomienda ejecutar el complemento en todos los dispositivos del entorno).
  11. Haz clic en Aceptar.
  12. Haz clic en Cerrar.

Configurar Syslog en el complemento Syslog de Forescout CounterACT

  1. En el panel Plugins (Complementos), haz clic en Syslog > Configure (Configurar).
  2. Seleccione cualquier dispositivo o Enterprise Manager en el cuadro de diálogo y haga clic en Aceptar.
  3. En Enviar eventos a, haz clic en Añadir.
  4. Proporcione los siguientes detalles de configuración:
    • Dirección del servidor: introduce la dirección IP del agente de Bindplane.
    • Puerto del servidor: introduce el número de puerto del agente de Bindplane (por ejemplo, 514 para UDP).
    • Protocolo de servidor: selecciona UDP.
    • Identidad: campo de texto libre para identificar el mensaje syslog.
    • Opcional: Instalación: instalación del mensaje syslog que se transmite como parte del campo Prioridad del mensaje. Si no se menciona el valor de la instalación, se asigna el valor local5.
    • Gravedad: selecciona Información.
  5. Ve a la pestaña Activador de Syslog.
  6. No selecciones la casilla Solo enviar mensajes generados por la acción "Enviar mensaje a Syslog".
  7. Selecciona solo la casilla Incluir la marca de tiempo y el identificador del dispositivo CounterACT en todos los mensajes.
  8. Haga clic en Opciones para definir qué tipos de eventos activan los mensajes syslog:
    • Incluye los registros de políticas de NAC.
    • Incluye eventos de coincidencia y no coincidencia de la política de NAC.
    • Selecciona otros eventos si están disponibles.
  9. Ve a la pestaña Configuración de acciones predeterminadas.
  10. Proporcione los siguientes detalles de configuración:
    • Dirección del servidor: introduce la dirección IP del agente de Bindplane.
    • Puerto del servidor: introduce el número de puerto del agente de Bindplane (por ejemplo, 514 para UDP).
    • Protocolo de servidor: selecciona UDP.
    • Identidad del mensaje: campo de texto libre para identificar el mensaje Syslog.
    • Opcional: Facility (Instalación): instalación de mensajes de syslog que se transmite como parte del campo Prioridad del mensaje. Si no se menciona el valor de la instalación, se asigna local5.
    • Gravedad: selecciona Información.
  11. Haz clic en Aceptar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
act security_result.action_details Se asigna directamente desde el campo act de los registros CEF.
app network.application_protocol Se asigna directamente desde el campo app de los registros CEF.
Available_memory additional.fields Se extrae de kv_data cuando event_type es "Estadísticas del sistema". La clave es "Memoria disponible" y el valor es la cadena extraída.
Available_swap additional.fields Se extrae de kv_data cuando event_type es "Estadísticas del sistema". La clave es "Available swap" y el valor es la cadena extraída.
application_status additional.fields Se extrae de kv_data cuando event_type es "Estado de la aplicación". La clave es "Estado de la solicitud" y el valor es la cadena extraída.
Assigned_hosts additional.fields Se extrae de kv_log_data cuando event_type es "Estado de la aplicación". La clave es "Hosts asignados" y el valor es la cadena extraída.
Category security_result.description Parte de security_result.description cuando et_lower es "nac policy log". Concatenado con otros detalles.
command principal.process.command_line Se extrae del campo rnmsg de los registros CEF cuando empieza por "command:".
Connected_clients additional.fields Se extrae de kv_log_data cuando event_type es "Estado de la aplicación". La clave es "Connected clients" (Clientes conectados) y el valor es la cadena extraída.
CPU_usage additional.fields Se extrae de kv_data cuando event_type es "Estadísticas del sistema". La clave es "Uso de CPU" y el valor es la cadena extraída.
cs1 additional.fields Se asigna directamente desde el campo cs1 de los registros CEF. La clave es "Compliancy Policy Name".
cs2 additional.fields Se asigna directamente desde el campo cs2 de los registros CEF. La clave es "Compliancy Policy Subrule Name".
cs3 additional.fields Se asigna directamente desde el campo cs3 de los registros CEF. La clave es "Host Compliancy Status".
cs4 additional.fields Se asigna directamente desde el campo cs4 de los registros CEF. La clave es "Compliancy Event Trigger".
data security_result.description Se usa en varias partes del analizador para extraer información y contribuir a los campos de UDM finales. No se asigna directamente a un solo campo de UDM.
details security_result.description Se usa para rellenar security_result.description en varios casos, como al analizar eventos "Log" y cambios en la sesión del usuario. Se puede analizar más a fondo para obtener información específica.
Destination target.ip, target.hostname Analizado a partir de kv_data o data. Si se puede convertir en una dirección IP, se asigna a target.ip. De lo contrario, se asigna a target.hostname.
deviceExternalId about.asset.asset_id Se asigna directamente desde el campo deviceExternalId de los registros CEF, con el prefijo "Forescout.CommandCenter:".
dhost target.hostname Se asigna directamente desde el campo dhost de los registros CEF.
dmac target.mac Se asigna directamente desde el campo dmac de los registros CEF.
dntdom target.administrative_domain Se asigna directamente desde el campo dntdom de los registros CEF.
dst target.ip Se asigna directamente desde el campo dst de los registros CEF.
dpt target.port Se asigna directamente desde el campo dpt de los registros CEF.
duser target.user.user_display_name Se asigna directamente desde el campo duser de los registros CEF.
dvc about.ip Se asigna directamente desde el campo dvc de los registros CEF.
dvchost about.hostname Se asigna directamente desde el campo dvchost de los registros CEF.
EM_connection_status additional.fields Se extrae de kv_log_data cuando event_type es "Estado de la aplicación". La clave es "Estado de la conexión de EM" y el valor es la cadena extraída.
Engine_status additional.fields Se extrae de kv_log_data cuando event_type es "Estado de la aplicación". La clave es "Estado del motor" y el valor es la cadena extraída.
event_type metadata.description, security_result.summary Analizado a partir del mensaje de registro. Se usa para determinar el tipo de evento de UDM y otros campos. Si el evento es "GENERIC_EVENT", también se usa para la descripción.
eventtype additional.fields Se asigna directamente desde el campo eventtype de los registros CEF. La clave es "eventtype".
externalId metadata.product_log_id Se asigna directamente desde el campo externalId de los registros CEF.
from\[...\] to\[...\] principal.ip, target.ip Extrae las IPs de origen y destino del patrón "from[...] to[...]".
Host principal.ip, principal.hostname Analizado a partir de kv_data cuando et_lower es "block event". Si se puede convertir en una IP, se asigna a principal.ip; de lo contrario, a principal.hostname.
Hostname principal.hostname, principal.asset.hostname Se asigna a principal.hostname y principal.asset.hostname cuando está presente en los eventos de cambio de propiedad detectados.
Installed_Plugins additional.fields Se extrae de kv_log_data cuando event_type es "Estado de la aplicación". La clave es "Installed Plugins" (Complementos instalados) y el valor es la cadena extraída.
iporhost intermediary.ip, intermediary.hostname Analizado a partir de header_data. Si se puede convertir en una IP, se asigna a intermediary.ip; de lo contrario, a intermediary.hostname.
Is Virtual Firewall blocking rule security_result.action, security_result.rule_name Si es "true", asigna el valor "BLOCK" a security_result.action y "Virtual Firewall blocking" a security_result.rule_name.
log_description security_result.summary Se asigna directamente a security_result.summary cuando está presente.
log_type metadata.log_type Se asigna el valor constante "FORESCOUT_NAC".
MAC principal.mac Se analiza a partir de kv_data en los eventos de cambio de propiedad detectados y se da formato como dirección MAC.
mail_from network.email.from Se asigna directamente desde el campo mail_from extraído de mail_details.
mail_subject network.email.subject Se asigna directamente desde el campo mail_subject extraído de mail_details.
mail_to network.email.to Se asigna directamente desde el campo mail_to extraído de mail_details.
Match security_result.rule_name Se asigna directamente desde el campo Match cuando et_lower es "nac policy log".
metadata.event_type metadata.event_type Se determina en función de varias condiciones del analizador, como la presencia de campos y palabras clave específicos en el mensaje de registro. El valor predeterminado es GENERIC_EVENT y se actualiza en función de los datos analizados. Por ejemplo, USER_LOGIN, USER_LOGOUT, NETWORK_CONNECTION, SCAN_NETWORK, STATUS_UPDATE, EMAIL_TRANSACTION y USER_UNCATEGORIZED.
metadata.product_name metadata.product_name Se asigna el valor "FORESCOUT NAC" a la mayoría de los eventos o el valor del campo product, si existe. En el caso de los eventos CEF, se define como "CounterAct".
metadata.vendor_name metadata.vendor_name Se asigna el valor "FORESCOUT" a la mayoría de los eventos. En el caso de los eventos CEF, se toma del campo cs1Label si existe o se asigna el valor "ForeScout Technologies".
msg metadata.description Se asigna directamente desde el campo msg de los registros CEF.
pid intermediary.process.pid Se asigna directamente desde el campo pid extraído de header_data.
policy_details security_result.description Parte de security_result.description cuando et_lower es "nac policy log". Concatenado con otros detalles.
product metadata.product_name Se asigna directamente a metadata.product_name cuando está presente.
proto network.ip_protocol Se asigna directamente desde el campo proto de los registros CEF.
Reason security_result.description Se asigna directamente desde el campo Reason cuando et_lower es "block event".
resource principal.resource.name Se asigna directamente desde el campo resource de los registros CEF.
rnmsg security_result.description, principal.process.command_line Si empieza por "command:", la parte que aparece después de "command:" se asigna a principal.process.command_line. De lo contrario, se asigna a security_result.description.
rt metadata.event_timestamp Se asigna directamente desde el campo rt de los registros CEF y se convierte en una marca de tiempo.
Rule security_result.rule_id Se asigna directamente desde el campo Rule cuando et_lower es "nac policy log".
security_result.severity security_result.severity Derivado del campo severity_level. De 0 a 3 corresponde a BAJO, de 4 a 6 a MEDIO, de 7 a 8 a ALTO y de 9 a 10 a CRÍTICO.
security_result.severity_details security_result.severity_details Se asigna directamente desde el campo severity de los registros CEF.
Service target.port, network.ip_protocol Se analiza para extraer el puerto y el protocolo. El puerto se asigna a target.port y el protocolo a network.ip_protocol.
session_id network.session_id Se asigna directamente desde el campo session_id.
severity security_result.severity_details Se asigna directamente desde el campo severity de los registros CEF.
severity_level security_result.severity Se usa para determinar el security_result.severity.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.