Recopila registros de NAC de Forescout

Compatible con:

En este documento, se explica cómo transferir registros de Forescout Network Access Control (NAC) a Google Security Operations con Bindplane. El analizador controla los registros con formato syslog y CEF del NAC de Forescout. Extrae campos con patrones de Grok, los asigna al modelo de datos unificado (UDM) y categoriza los eventos según las palabras clave y los campos extraídos, y controla los accesos y cierres de sesión, las conexiones de red, los eventos de correo y las actualizaciones de estado del sistema. Se implementa lógica específica para controlar los eventos de "CounterACT" y "Firewall virtual", lo que incluye la asignación de gravedad y el enriquecimiento del contexto del usuario.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

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

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

  1. Accede a la consola de Google SecOps.
  2. Ve a SIEM Settings > Collection Agents.
  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 SIEM Settings > Profile.
  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 siguiente comando:

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

Instalación en Linux

  1. Abre una terminal con privilegios de raíz 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 obtener más opciones de instalación, consulta la guía de instalación.

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

  1. Accede al archivo de configuración:
    • Ubica el archivo config.yaml. Por lo general, 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. Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.

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

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Obtén el archivo de autenticación de la transferencia 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 de Servicios o ingresar el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Instala el complemento CounterACT Syslog

  1. Ve a la página Forescount Base Plugins y descarga el archivo del complemento .fpi.
  2. Guarda el archivo en la máquina en la que está instalada la consola de CounterACT.
  3. Accede a CounterACT Console.
  4. Selecciona Opciones > Complementos > Instalar.
  5. Navega hasta el archivo FPI del complemento guardado y selecciónalo.
  6. Haz clic en Install.
  7. Acepta el contrato de licencia para continuar.
  8. Cuando se complete la instalación, haz clic en Cerrar.
  9. Selecciona el complemento en el panel Plugin y haz clic en Start.
  10. Selecciona los dispositivos CounterACT en los que se iniciará el complemento (se recomienda ejecutar el complemento en todos los dispositivos del entorno).
  11. Haz clic en Aceptar.
  12. Haz clic en Cerrar.

Configura Syslog en el complemento Syslog de Forescout CounterACT

  1. En el panel Complementos, haz clic en Syslog > Configurar.
  2. Selecciona cualquier dispositivo o Enterprise Manager en el diálogo y haz clic en Aceptar.
  3. En Send Events To, haz clic en Add.
  4. Proporciona los siguientes detalles de configuración:
    • Dirección del servidor: Ingresa la dirección IP del agente de BindPlane.
    • Puerto del servidor: Ingresa el número de puerto del agente de Bindplane (por ejemplo, 514 para UDP).
    • Server Protocol: Selecciona UDP.
    • Identidad: Campo de texto libre para identificar el mensaje de syslog.
    • Opcional: Facility: Es la instalación del mensaje de Syslog que se transmite como parte del campo Priority del mensaje. Si no se menciona el valor de la instalación, se establece en local5.
    • Gravedad: Selecciona Info.
  5. Ve a la pestaña Syslog Trigger.
  6. No selecciones la casilla de verificación Only send messages generated by the "Send Message to Syslog" action.
  7. Selecciona solo la casilla de verificación Incluir la marca de tiempo y el identificador del dispositivo CounterACT en todos los mensajes.
  8. Haz clic en Opciones para definir qué tipos de eventos activan los mensajes de syslog:
    • Incluye 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 acción predeterminada.
  10. Proporciona los siguientes detalles de configuración:
    • Dirección del servidor: Ingresa la dirección IP del agente de BindPlane.
    • Puerto del servidor: Ingresa el número de puerto del agente de Bindplane (por ejemplo, 514 para UDP).
    • Server Protocol: Selecciona UDP.
    • Identidad del mensaje: Campo de texto libre para identificar el mensaje de Syslog.
    • Opcional: Facility: Es la instalación del mensaje de Syslog que se transmite como parte del campo Priority del mensaje. Si no se menciona el valor de la instalación, se establece en local5.
    • Gravedad: Selecciona Info.
  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 en los registros de CEF.
app network.application_protocol Se asigna directamente desde el campo app en los registros de 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 solicitud". 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 solicitud". La clave es "Hosts asignados" y el valor es la cadena extraída.
Category security_result.description Es parte de security_result.description cuando et_lower es "nac policy log". Se concatena con otros detalles.
command principal.process.command_line Se extrae del campo rnmsg en los registros de CEF cuando comienza con "command:".
Connected_clients additional.fields Se extrae de kv_log_data cuando event_type es "Estado de la solicitud". La clave es "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 en los registros de CEF. La clave es "Nombre de la política de cumplimiento".
cs2 additional.fields Se asigna directamente desde el campo cs2 en los registros de CEF. La clave es "Nombre de la subregla de la política de cumplimiento".
cs3 additional.fields Se asigna directamente desde el campo cs3 en los registros de CEF. La clave es "Estado de cumplimiento del host".
cs4 additional.fields Se asigna directamente desde el campo cs4 en los registros de 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 finales del UDM. No se asigna directamente a un solo campo de UDM.
details security_result.description Se usa para completar security_result.description en varios casos, incluso cuando se analizan eventos de "Registro" y cambios en la sesión del usuario. Se puede analizar más para obtener información específica.
Destination target.ip, target.hostname Se analizó 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 en los registros de CEF, con el prefijo "Forescout.CommandCenter:".
dhost target.hostname Se asigna directamente desde el campo dhost en los registros de CEF.
dmac target.mac Se asigna directamente desde el campo dmac en los registros de CEF.
dntdom target.administrative_domain Se asigna directamente desde el campo dntdom en los registros de CEF.
dst target.ip Se asigna directamente desde el campo dst en los registros de CEF.
dpt target.port Se asigna directamente desde el campo dpt en los registros de CEF.
duser target.user.user_display_name Se asigna directamente desde el campo duser en los registros de CEF.
dvc about.ip Se asigna directamente desde el campo dvc en los registros de CEF.
dvchost about.hostname Se asigna directamente desde el campo dvchost en los registros de CEF.
EM_connection_status additional.fields Se extrae de kv_log_data cuando event_type es "Estado de la solicitud". La clave es "Estado de conexión del 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 solicitud". La clave es "Estado del motor" y el valor es la cadena extraída.
event_type metadata.description, security_result.summary Se analiza a partir del mensaje de registro. Se usa para determinar el tipo de evento del UDM y otros campos. Si el evento es de tipo "GENERIC_EVENT", también se usa para la descripción.
eventtype additional.fields Se asigna directamente desde el campo eventtype en los registros de CEF. La clave es "eventtype".
externalId metadata.product_log_id Se asigna directamente desde el campo externalId en los registros de CEF.
from\[...\] to\[...\] principal.ip, target.ip Extrae las IPs de origen y destino del patrón "from[...] to[...]".
Host principal.ip, principal.hostname Se analizó 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 solicitud". La clave es "Installed Plugins" y el valor es la cadena extraída.
iporhost intermediary.ip, intermediary.hostname Se analizó desde 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", establece security_result.action en "BLOCK" y security_result.rule_name en "Bloqueo de firewall virtual".
log_description security_result.summary Se asigna directamente a security_result.summary cuando está presente.
log_type metadata.log_type Se establece en un valor constante "FORESCOUT_NAC".
MAC principal.mac Se analiza a partir de kv_data en los eventos de cambio de propiedad detectados y se formatea como una 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 según varias condiciones del analizador, incluida la presencia de campos y palabras clave específicos en el mensaje de registro. El valor predeterminado es GENERIC_EVENT y se actualiza según los datos analizados. Entre los ejemplos, se incluyen USER_LOGIN, USER_LOGOUT, NETWORK_CONNECTION, SCAN_NETWORK, STATUS_UPDATE, EMAIL_TRANSACTION y USER_UNCATEGORIZED.
metadata.product_name metadata.product_name Se establece en "FORESCOUT NAC" para la mayoría de los eventos o en el valor del campo product si existe. Para los eventos de CEF, se establece en "CounterAct".
metadata.vendor_name metadata.vendor_name Se establece en "FORESCOUT" para la mayoría de los eventos. En el caso de los eventos de CEF, se toma del campo cs1Label si existe o se establece en "ForeScout Technologies".
msg metadata.description Se asigna directamente desde el campo msg en los registros de CEF.
pid intermediary.process.pid Se asigna directamente desde el campo pid extraído de header_data.
policy_details security_result.description Es parte de security_result.description cuando et_lower es "nac policy log". Se concatena 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 en los registros de 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 en los registros de CEF.
rnmsg security_result.description, principal.process.command_line Si comienza con "command:", la parte posterior a "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 en los registros de 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 Se deriva del campo severity_level. Los valores de 0 a 3 se asignan a LOW, los de 4 a 6 a MEDIUM, los de 7 a 8 a HIGH y los de 9 a 10 a CRITICAL.
security_result.severity_details security_result.severity_details Se asigna directamente desde el campo severity en los registros de CEF.
Service target.port, network.ip_protocol Se analizó 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 en los registros de CEF.
severity_level security_result.severity Se usa para determinar el security_result.severity.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.