Recopila registros de NAC de Forescout
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
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Collection Agents.
- 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 SIEM Settings > Profile.
- 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 siguiente comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación en Linux
- Abre una terminal con privilegios de raíz o sudo.
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
- 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).
- Ubica el archivo
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
Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
Reemplaza
<customer_id>
por el ID de cliente real.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
- Ve a la página Forescount Base Plugins y descarga el archivo del complemento .fpi.
- Guarda el archivo en la máquina en la que está instalada la consola de CounterACT.
- Accede a CounterACT Console.
- Selecciona Opciones > Complementos > Instalar.
- Navega hasta el archivo FPI del complemento guardado y selecciónalo.
- Haz clic en Install.
- Acepta el contrato de licencia para continuar.
- Cuando se complete la instalación, haz clic en Cerrar.
- Selecciona el complemento en el panel Plugin y haz clic en Start.
- Selecciona los dispositivos CounterACT en los que se iniciará el complemento (se recomienda ejecutar el complemento en todos los dispositivos del entorno).
- Haz clic en Aceptar.
- Haz clic en Cerrar.
Configura Syslog en el complemento Syslog de Forescout CounterACT
- En el panel Complementos, haz clic en Syslog > Configurar.
- Selecciona cualquier dispositivo o Enterprise Manager en el diálogo y haz clic en Aceptar.
- En Send Events To, haz clic en Add.
- 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.
- Ve a la pestaña Syslog Trigger.
- No selecciones la casilla de verificación Only send messages generated by the "Send Message to Syslog" action.
- Selecciona solo la casilla de verificación Incluir la marca de tiempo y el identificador del dispositivo CounterACT en todos los mensajes.
- 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.
- Ve a la pestaña Configuración de acción predeterminada.
- 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.
- 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.