Instalar y configurar el reenviador
En este documento se describe cómo instalar y configurar el reenviador de Google Security Operations en sistemas Linux y Windows mediante Docker.
El reenviador es un componente de software que puedes instalar en una máquina o un dispositivo, como un servidor, de tu red. Recoge datos de registro y los reenvía a tu instancia de Google SecOps.
Puedes usar el reenviador para enviar registros directamente desde tu entorno a Google SecOps, sin necesidad de usar segmentos en la nube ni APIs de terceros para los tipos de registro no compatibles. El reenviador es una solución lista para implementarse, lo que elimina la necesidad de integrarlo manualmente con la API de ingestión.
Google SecOps proporciona un contenedor Docker para la implementación segura de reenviadores. Puedes ejecutar y gestionar el contenedor Docker en máquinas físicas o virtuales.
Requisitos del sistema
A continuación, se indican recomendaciones generales. Para obtener recomendaciones específicas para tu sistema, ponte en contacto con el equipo de Asistencia de Google SecOps.
Sistema Linux
El reenviador es compatible con varias distribuciones de Linux, como Debian, Ubuntu, Red Hat y Suse. Para que el rendimiento sea óptimo, es necesario usar Docker versión 20.10.21
o posterior.
RAM se requiere 1 GB de RAM por cada tipo de datos recogido que Google SecOps acepte para la ingestión. Por ejemplo, si especifica cuatro colectores diferentes, necesitará 4 GB de RAM para recoger datos de los cuatro.
CPU: dos CPUs son suficientes para gestionar hasta 10.000 eventos por segundo (EPS) en todos los tipos de datos. Si prevés que tu empresa de transporte gestionará más de 10.000 EPS, asigna entre cuatro y seis CPUs.
Disco: se recomienda un espacio en disco de 20 GB, independientemente de la cantidad de datos que gestione el reenviador.
Sistema Windows
El reenviador es compatible con Microsoft Windows Server 2022. Para que el rendimiento sea óptimo, es necesario usar la versión 20.10.21
o una posterior de Docker.
RAM se necesitan 1,5 GB de RAM por cada tipo de datos recogidos que Google SecOps acepte para la ingestión. Por ejemplo, si especifica cuatro colectores diferentes, necesitará 6 GB de RAM para recoger datos de los cuatro.
CPU: dos CPUs son suficientes para gestionar hasta 10.000 eventos por segundo (EPS) en todos los tipos de datos. Si prevé que su transitario gestionará más de 10.000 EPS, asigne entre cuatro y seis CPUs.
Disco: se recomienda un espacio en disco de 20 GB, independientemente de la cantidad de datos que gestione el reenviador.
Antes de empezar
Antes de empezar a implementar el reenviador, ten en cuenta lo siguiente.
Intervalos de direcciones IP de Google
Al configurar el reenviador, es posible que tengas que ajustar la configuración del cortafuegos, lo que implica especificar intervalos de direcciones IP. Los intervalos de IP de los dominios predeterminados que usan las APIs y los servicios de Google se asignan de forma dinámica y cambian con frecuencia. Consulta más información en el artículo Obtener intervalos de direcciones IP de Google.
Verificar la configuración del cortafuegos
Si el contenedor de reenvío se ejecuta detrás de un cortafuegos o un proxy autenticado, concede acceso saliente a los siguientes hosts:
Tipo de conexión | Destino | Port (Puerto) |
TCP | malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-northeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-south1-malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-southeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | australia-southeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | eu-chronicle.googleapis.com | 443 |
TCP | europe-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west2-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west3-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west6-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west9-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west12-malachiteingestion-pa.googleapis.com | 443 |
TCP | me-central1-malachiteingestion-pa.googleapis.com | 443 |
TCP | me-central2-malachiteingestion-pa.googleapis.com | 443 |
TCP | me-west1-malachiteingestion-pa.googleapis.com | 443 |
TCP | northamerica-northeast2-malachiteingestion-pa.googleapis.com | 443 |
TCP | southamerica-east1-malachiteingestion-pa.googleapis.com | 443 |
TCP | accounts.google.com | 443 |
TCP | gcr.io | 443 |
TCP | cloud.google.com/artifact-registry | 443 |
TCP | oauth2.googleapis.com | 443 |
TCP | storage.googleapis.com | 443 |
Planificar la implementación
Antes de empezar a configurar el reenviador, planifica la implementación. De esta forma, podrás alinear tus fuentes de datos y atributos de configuración con tus objetivos de seguridad, las funciones de tu infraestructura y tus requisitos de escalabilidad.
Determina los datos que se van a ingerir
Identifica las fuentes de datos más relevantes para tu remitente entre las siguientes opciones:
Splunk: es ideal si ya usas Splunk para gestionar los registros.
Syslog versátil para registros del sistema y de aplicaciones de varios dispositivos.
Archivo: flexible para ingerir cualquier archivo de registro.
Paquete: ofrece una visibilidad de la red en profundidad capturando el tráfico sin procesar.
Kafka ideal para la agregación de registros en tiempo real y de gran volumen de sistemas distribuidos.
WebProxy ideal para obtener estadísticas sobre el tráfico web y el comportamiento de los usuarios.
Limitación
Los feeds de datos tienen un tamaño máximo de línea de registro de 4 MB.
Determinar la configuración
Antes de instalar el reenviador, determina los siguientes atributos clave para asegurarte de que la implementación se realiza correctamente.
Compresión de datos
La compresión de datos o registros reduce el consumo de ancho de banda de la red al transferir registros a Google SecOps. Sin embargo, puede provocar un aumento del uso de la CPU. El equilibrio óptimo entre el ahorro de ancho de banda y el uso de la CPU depende de varios factores, como el tipo de registro, la compresibilidad de los datos, los recursos de CPU disponibles y las limitaciones de ancho de banda de la red.
Por ejemplo, los registros basados en texto suelen comprimirse bien y pueden proporcionar un ahorro de ancho de banda considerable con un uso de CPU bajo, mientras que los datos cifrados o binarios pueden no comprimirse de forma eficiente y pueden incurrir en un uso de CPU más alto.
De forma predeterminada, la compresión de registros está inhabilitada. Evalúa el equilibrio en función de tu entorno específico y de la naturaleza de tus datos de registro.
Almacenamiento en búfer en el disco
Se recomienda habilitar el almacenamiento en búfer en el disco. El almacenamiento en búfer en el disco te permite almacenar en búfer los mensajes pendientes en el disco, en lugar de en la memoria, lo que te protege frente a la pérdida de datos en caso de fallo del reenviador o del host. Sin embargo, habilitar el almacenamiento en búfer en el disco puede afectar al rendimiento.
Si el almacenamiento en búfer en el disco está inhabilitado, el reenviador asigna 1 GB de memoria RAM a cada tipo de registro (por ejemplo, por conector). La memoria máxima permitida para el almacenamiento en búfer de disco es de 4 GB.
Filtros de expresiones regulares
Los filtros de expresiones regulares te permiten filtrar registros buscando patrones en los datos de registro sin procesar. Los filtros utilizan la sintaxis de RE2. Los filtros deben incluir una expresión regular y, opcionalmente, definir un comportamiento cuando haya una coincidencia.
Etiquetas arbitrarias
Las etiquetas se usan para asociar metadatos personalizados a los registros mediante pares clave-valor. Puede configurar etiquetas para todo un reenviador o para un recopilador específico del reenviador. Si ambos están presentes, las etiquetas a nivel de recolector anulan las etiquetas a nivel de reenviador si las claves se solapan.
Espacios de nombres
Puedes usar etiquetas de espacio de nombres para identificar registros de distintos segmentos de red y resolver conflictos de direcciones IP solapadas. Puede configurar una etiqueta de espacio de nombres para un reenviador completo o en un recopilador específico del reenviador. Si ambos están presentes, el espacio de nombres a nivel de recopilador anula el espacio de nombres a nivel de reenviador.
Tipo de registro
Google SecOps admite varios tipos de registros. Para ver una lista completa, consulta Conjuntos de datos admitidos.
Opciones de balanceo de carga y alta disponibilidad
El balanceo de carga solo se admite en el tipo de recogida syslog.
El reenviador se puede implementar en entornos en los que se haya instalado un balanceador de carga de capa 4 entre la fuente de datos y las instancias del reenviador. De esta forma, puedes distribuir la recogida de registros en varios reenviadores, lo que mejora la fiabilidad al redirigir los registros a otro reenviador en caso de fallo.
El reenviador tiene un servidor HTTP integrado que responde a las comprobaciones de estado de los balanceadores de carga y evita la pérdida de registros durante el inicio y el cierre. Puedes configurar el servidor HTTP, el balanceo de carga y las opciones de alta disponibilidad para especificar las duraciones de tiempo de espera y los códigos de estado de las comprobaciones de estado. Esta configuración es compatible con las implementaciones basadas en contenedores y con los balanceadores de carga.
Ambientación | Descripción |
---|---|
Tiempo de espera suave | Tiempo durante el que se aceptan nuevas conexiones después de que el reenviador devuelva el estado unready en respuesta a una comprobación del estado.
También es el tiempo que se espera entre la recepción de una señal de parada y el inicio del cierre del servidor. De este modo, el balanceador de carga tiene tiempo para quitar el reenviador del grupo.Los valores válidos se expresan en segundos. Por ejemplo, para especificar 10 segundos, escriba 10. .
No se admiten valores decimales.Valor predeterminado: 15 segundos |
Tiempo de espera de purga | Tiempo que espera el reenviador a que las conexiones activas se cierren solas antes de que las cierre el servidor. Por ejemplo, para especificar 5 segundos, escriba 5. .
No se admiten valores decimales.Valor predeterminado: 10 segundos |
Port (Puerto) | Número de puerto en el que escucha el servidor HTTP las comprobaciones de estado
del balanceador de carga. El valor debe estar comprendido entre 1024 y 65535. Valor predeterminado: 8080 |
Dirección IP o nombre de host | La dirección IP o el nombre de host que se puede resolver en una dirección IP
que el servidor debe escuchar. Valor predeterminado: 0.0.0.0 (el sistema local) |
Tiempo de espera de lectura | Se usa para ajustar el servidor HTTP. Por lo general, no es necesario cambiar el valor predeterminado. Tiempo máximo permitido para leer toda la solicitud, tanto el encabezado como el cuerpo. Puedes definir tanto el campo Tiempo de espera de lectura como el campo Tiempo de espera de lectura del encabezado. Valor predeterminado: 3 segundos |
Leer tiempo de espera del encabezado | Se usa para ajustar el servidor HTTP. Por lo general, no es necesario cambiar el valor predeterminado. Tiempo máximo permitido para leer los encabezados de la solicitud. El plazo de lectura de la conexión se restablece después de leer el encabezado. Valor predeterminado: 3 segundos |
Tiempo de espera de escritura | Se usa para ajustar el servidor HTTP. Por lo general, no es necesario cambiar el valor predeterminado. Tiempo máximo permitido para enviar una respuesta. Se restablece cuando se lee un nuevo encabezado de solicitud. Valor predeterminado: 3 segundos |
Tiempo de espera de inactividad | Se usa para ajustar el servidor HTTP. Por lo general, no es necesario cambiar el valor predeterminado. Tiempo máximo que se espera para la
siguiente solicitud cuando las conexiones inactivas están habilitadas. Si el campo idle
timeout se define como cero, se usará el valor del campo read
timeout. Si ambos son cero, se usa el campo Tiempo de espera de lectura del encabezado . Valor predeterminado: 3 segundos |
Código de estado disponible | El código de estado que devuelve el reenviador cuando se recibe una comprobación de actividad y el reenviador está disponible. Los programadores y orquestadores de contenedores suelen enviar comprobaciones de actividad. Valor predeterminado: 204 |
Código de estado Listo | El código de estado que devuelve el reenviador cuando está listo para aceptar tráfico en cualquiera de las siguientes situaciones:
|
Código de estado no preparado | El código de estado que devuelve el reenviador cuando no está listo para aceptar tráfico. Valor predeterminado: 503 |
Paso 1: Define la configuración del reenviador
Cada reenviador implementado requiere un archivo de configuración. Un archivo de configuración de reenviador especifica los ajustes para transferir los datos a tu instancia de Google SecOps. Te recomendamos que generes un archivo de configuración para cada host para mantener una distinción clara entre los colectores asociados a cada uno.
Google Cloud personaliza estos archivos de configuración con metadatos específicos para cada instancia de reenvío. Puedes modificar estos archivos para que se ajusten a tus requisitos específicos e incluir detalles sobre los tipos de registros que quieras ingerir.
Puede generar un archivo de configuración de reenvío a través de la interfaz de usuario, de la API o manualmente.
La interfaz de usuario proporciona una interfaz gráfica para configurar reenviadores y es el método recomendado para crear una configuración de reenviador. Esta es la forma más sencilla de empezar y no requiere programación. Para descargar el archivo de configuración mediante la interfaz de usuario de Google SecOps, consulta Gestionar configuraciones de reenviador a través de la interfaz de usuario de Google SecOps.
La API proporciona una forma automatizada de configurar las herramientas de reenvío. Para descargar la configuración del reenviador de forma programática, consulta la API Forwarder Management.
Puedes crear el archivo de configuración manualmente y añadirle las opciones de configuración. Te recomendamos que uses el método de la interfaz de usuario para generar el archivo de configuración, ya que así te asegurarás de que sea preciso y minimizarás los posibles errores. Para generar el archivo manualmente, consulta Gestionar manualmente el archivo de configuración del reenviador.
Paso 2: Instala Docker
En esta sección se describe cómo instalar Docker en tu sistema.
Autenticación de Docker con Artifact Registry
Como parte de la instalación de Docker, debes autenticar Docker. Puedes autenticar Docker mediante la interfaz de línea de comandos (CLI) de Google Cloud o, si no puedes instalar la CLI de Google Cloud, creando un archivo JSON de cuenta de servicio en la VM.
Método 1: Usar la interfaz de línea de comandos (CLI) de Google Cloud
Ejecuta el siguiente comando para autenticar Docker:
gcloud auth configure-docker gcr.io
Método 2: Crear y descargar un archivo JSON de cuenta de servicio en la máquina virtual (VM)
Usa este método si no puedes instalar la CLI de Google Cloud (interfaz de línea de comandos).
Ejecuta el siguiente comando para autenticar Docker:
cat key.json | docker login -u _json_key --password-stdin https://gcr.io
Para obtener más información sobre otros métodos de autenticación de Docker, consulta el artículo Configurar la autenticación en Artifact Registry para Docker.
Sistema Linux
Docker es de código abierto y toda la documentación necesaria está disponible en la comunidad de código abierto de Docker. Para obtener instrucciones sobre la instalación de Docker, consulta el artículo Instalar Docker Engine.
Para comprobar si Docker está instalado correctamente en tu sistema, ejecuta el siguiente comando (requiere privilegios elevados):
docker ps
La siguiente respuesta indica que Docker se ha instalado correctamente:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Sistema Windows
Inicia Windows PowerShell con privilegios de administrador y comprueba la conectividad de red con Google Cloud siguiendo estos pasos:
Haz clic en Empezar.
Escribe
PowerShell
y haz clic con el botón derecho en Windows PowerShell.Haz clic en Ejecutar como administrador.
Ejecuta el siguiente comando:
C:\> test-netconnection <host> -port <port>
El resultado del comando indica que el estado de
TcpTestSucceeded
estrue
.Ejemplo:
C:\> test-netconnection malachiteingestion-pa.googleapis.com -port 443 ComputerName : malachiteingestion-pa.googleapis.com RemoteAddress : 198.51.100.1 RemotePort : 443 InterfaceAlias : Ethernet SourceAddress : 203.0.113.1 TcpTestSucceeded : True
Para instalar Docker, haz lo siguiente en tu servidor Windows.
Habilita la función de contenedor de Microsoft Windows:
Install-WindowsFeature containers -Restart
Ejecuta el siguiente comando en el modo Administrador de PowerShell para instalar Docker CE:
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1 .\install-docker-ce.ps1
Prueba la interfaz de línea de comandos de Docker ejecutando el comando
docker ps
, que devuelve una lista de los contenedores en ejecución. Si Docker no está instalado correctamente, se mostrará un error.Para obtener más información, consulta el artículo Primeros pasos: preparar Windows para los contenedores.
En las implementaciones empresariales, instala Mirantis Container Runtime, también conocido como Docker EE.
Paso 3: Instala el reenviador
En esta sección se describe cómo instalar el reenviador mediante un contenedor Docker.
Paso 3a: Mueve los archivos de configuración al directorio del reenviador
El primer paso del proceso de instalación del reenviador consiste en colocar los archivos de configuración necesarios en el directorio del reenviador designado.
Sistema Linux
Coloca los archivos de configuración en el directorio del reenviador siguiendo estos pasos:
Conéctate al host de reenvío de Linux mediante la terminal.
Cambia el directorio al directorio principal que ejecuta el contenedor Docker.
Crea un directorio para almacenar los archivos de configuración del reenviador.
mkdir /opt/chronicle/'CONFIG'
Puedes sustituir el nombre del directorio,
CONFIG
, por el que quieras. Asegúrate de usar el mismo nombre de directorio al ejecutar el comandodocker run
.Cambia el directorio.
cd /opt/chronicle/config
Una vez transferidos los archivos, comprueba que los archivos de configuración se encuentran en el directorio
/opt/chronicle/config
.ls -l
Sistema Windows
Crea una carpeta C:\config
y coloca los archivos de configuración en ella. Puedes sustituir el nombre de la carpeta, config
, por el que quieras. Asegúrate de usar el mismo nombre de carpeta al ejecutar el comando docker run
.
Paso 3b: Ejecuta el reenviador
Una vez que los archivos de configuración se hayan colocado en el directorio del reenviador designado, puedes iniciar el reenviador o actualizar a la versión más reciente del contenedor de Google SecOps.
Si vas a actualizar el contenedor, elimina cualquier ejecución anterior de Docker ejecutando los siguientes comandos.
docker stop 'cfps'
docker rm 'cfps'
En el ejemplo, el nombre del contenedor de Docker es cfps
.
Para iniciar el reenviador por primera vez o actualizar a la versión más reciente del contenedor de Google SecOps, haz lo siguiente:
Obtén la imagen Docker más reciente de Google Cloud:
Sistema Linux:
docker pull gcr.io/chronicle-container/cf_production_stable
Sistema Windows:
docker pull gcr.io/chronicle-container/cf_production_stable_windows
Inicia el reenviador desde el contenedor Docker:
Sistema Linux:
docker run \ --detach \ --name cfps \ --restart=always \ --log-opt max-size=100m \ --log-opt max-file=10 \ --net=host \ -v /opt/chronicle/config:/opt/chronicle/external \ -v /var/log/<parser-name>:/opt/chronicle/edr \ gcr.io/chronicle-container/cf_production_stable
Sistema Windows:
docker run ` --detach ` --name cfps ` --restart=always ` --log-opt max-size=100m ` --log-opt max-file=10 ` -p 0.0.0.0:10515-10520:10515-10520/udp ` -v C:\config\:C:/opt/chronicle/external ` gcr.io/chronicle-container/cf_production_stable_windows
Las opciones de --log-opt
están disponibles desde Docker 1.13. Estas opciones limitan el tamaño de los archivos de registro del contenedor y deben usarse siempre que la versión de Docker que utilices las admita.
Gestionar el reenviador
En las siguientes secciones se explica cómo gestionar tu reenviador.
Ver registros de reenviadores
Para ver los registros del reenviador, ejecuta el siguiente comando:
docker logs cfps
Para ver la ruta del archivo en el que se almacenan los registros, ejecuta el siguiente comando:
docker inspect --format='{{.LogPath}}' CONTAINER_NAME
Para ver los registros activos, ejecuta el siguiente comando:
docker logs cfps -f
Para almacenar los registros en un archivo, ejecuta el siguiente comando:
docker logs cfps &> logs.txt
Desinstalar el reenviador
Los siguientes comandos de Docker te ayudan a detener, desinstalar o quitar el reenviador.
Para detener o desinstalar el contenedor de reenvío, ejecuta el siguiente comando:
docker stop cfps
Para quitar el contenedor de reenvío, ejecuta el siguiente comando:
docker rm cfps
Actualizar el remitente
El reenviador consta de dos componentes, cada uno con un proceso de actualización como el siguiente:
Paquete de reenvío: este componente se actualiza automáticamente, por lo que no es necesario reiniciar.
Imagen Docker de Forwarder: las actualizaciones de este componente se realizan manualmente. Tendrás que detener la instancia de reenvío actual e iniciar una nueva, tal como se describe en el paso 3b.
Guías de ingesta de reenviadores para conjuntos de datos específicos
Para saber cómo se ingiere un conjunto de datos concreto mediante reenviadores, consulta lo siguiente:
- Instalar Carbon Black Event Forwarder
- Recoger registros de cortafuegos de Cisco ASA
- Recoger registros de Corelight Sensor
- Recoger registros de Fluentd
- Recoger registros del sistema de auditd de Linux y Unix
- Recoger datos de Microsoft Windows AD
- Recoger datos de DHCP de Microsoft Windows
- Recoger datos de DNS de Microsoft Windows
- Recoger datos de eventos de Microsoft Windows
- Recoger datos de Sysmon de Microsoft Windows
- Recopilar registros de osquery
- Recoger registros de OSSEC
- Recoger registros de firewall de Palo Alto Networks
- Recopilar registros de Splunk CIM
- Recoger registros de Zeek
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.