Instala y configura el reenviador
En este documento, se describe cómo instalar y configurar el agente de reenvío de Google Security Operations en sistemas Linux y Windows con Docker.
El retransmisor es un componente de software que puedes instalar en una máquina o un dispositivo, como un servidor, dentro de tu red. Recopila datos de registro y los reenvía a tu instancia de Google SecOps.
Puedes usar el reenvío para enviar registros directamente desde tu entorno a Google SecOps, sin necesidad de buckets de Cloud ni APIs de terceros para los tipos de registros no admitidos. El reenviador funciona como una solución lista para implementar, lo que elimina la necesidad de realizar una integración manual con la API de transferencia.
Google SecOps proporciona un contenedor de Docker para la implementación segura del reenvío. Puedes ejecutar y administrar el contenedor de Docker en máquinas físicas o virtuales.
Requisitos del sistema
Las siguientes son recomendaciones generales. Para obtener recomendaciones específicas para tu sistema, comunícate con el equipo de asistencia al cliente de Google SecOps.
Sistema Linux
El reenvío es compatible con varias distribuciones de Linux, como Debian, Ubuntu, Red Hat y SUSE. Para obtener un rendimiento óptimo, es necesario usar la versión 20.10.21
o una posterior de Docker.
RAM: Se requiere 1 GB de RAM para cada tipo de datos recopilados que Google SecOps acepta para la transferencia. Por ejemplo, si especificas cuatro recopiladores diferentes, necesitarás 4 GB de RAM para recopilar datos de los cuatro.
CPU: Dos CPU son suficientes para controlar hasta 10,000 eventos por segundo (EPS) en todos los tipos de datos. Si prevés que tu servidor de reenvío controlará más de 10,000 EPS, asigna de cuatro a seis CPUs.
Disco: Se recomiendan 20 GB de espacio en disco, independientemente de la cantidad de datos que maneje el reenviador.
Sistema Windows
El servidor de reenvío es compatible con Microsoft Windows Server 2022. Para obtener un rendimiento óptimo, es necesario usar la versión 20.10.21
o una posterior de Docker.
RAM: Se requiere 1.5 GB de RAM para cada tipo de datos recopilados que Google SecOps acepta para la transferencia. Por ejemplo, si especificas cuatro recopiladores diferentes, necesitarás 6 GB de RAM para recopilar datos de los cuatro.
CPU: Dos CPU son suficientes para controlar hasta 10,000 eventos por segundo (EPS) en todos los tipos de datos. Si prevés que tu reenvío controlará más de 10,000 EPS, asigna de cuatro a seis CPU.
Disco: Se recomiendan 20 GB de espacio en disco, independientemente de la cantidad de datos que maneje el reenvío.
Antes de comenzar
Antes de comenzar la implementación del reenvío, ten en cuenta lo siguiente.
Rangos de direcciones IP de Google
Cuando configures el reenviador, es posible que debas ajustar la configuración del firewall que implica especificar rangos de direcciones IP. Los rangos de IP de dominio predeterminados que usan las APIs y los servicios de Google se asignan de forma dinámica y cambian con frecuencia. Consulta Cómo obtener rangos de direcciones IP de Google para obtener más información.
Verifica la configuración del firewall
Si tu contenedor de reenvío está detrás de algún firewall o proxy autenticado, deberás abrir el acceso a los siguientes hosts:
Tipo de conexión | Destino | 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 | 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 |
Planifica tu implementación
Antes de comenzar a configurar el reenviador, planifica tu implementación. Esto te ayudará a alinear tus fuentes de datos y atributos de configuración con tus objetivos de seguridad, capacidades de infraestructura y requisitos de escalabilidad.
Determina los datos que se transferirán
Identifica las fuentes de datos más relevantes para tu reenvío entre las siguientes opciones:
Splunk: Es ideal si ya usas Splunk para la administración de registros.
Syslog: Es versátil para los registros del sistema y de las aplicaciones de varios dispositivos.
Archivo: Es flexible para la transferencia de cualquier archivo de registro.
Paquete: Ofrece visibilidad profunda de la red, ya que captura el tráfico sin procesar.
Kafka: Es 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.
Determina la configuración
Antes de instalar el reenvío, determina los siguientes atributos clave para garantizar una implementación exitosa.
Compresión de datos
La compresión de datos o registros reduce el consumo de ancho de banda de la red cuando se transfieren registros a Google SecOps. Sin embargo, podría causar un aumento en el 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 capacidad de compresión de los datos, los recursos de CPU disponibles y las restricciones de ancho de banda de la red.
Por ejemplo, los registros basados en texto suelen comprimirse bien y pueden proporcionar ahorros sustanciales de ancho de banda con un uso bajo de la CPU, mientras que los datos binarios o encriptados podrían no comprimirse de manera eficiente y podrían generar un mayor uso de la CPU.
De forma predeterminada, la compresión de registros está inhabilitada. Evalúa la compensación en función de tu entorno específico y la naturaleza de los datos de registro.
Almacenamiento en búfer de disco
Se recomienda habilitar el almacenamiento en búfer del disco. El almacenamiento en búfer de disco te permite almacenar mensajes pendientes en el disco en lugar de la memoria, lo que protege contra la pérdida de datos en caso de fallas del host o del reenvío. Sin embargo, habilitar el almacenamiento en búfer del disco puede afectar el rendimiento.
Si el almacenamiento en búfer de disco está inhabilitado, el retransmisor asigna 1 GB de memoria (RAM) para cada tipo de registro (por ejemplo, por conector). La memoria máxima permitida para el almacenamiento en búfer del disco es de 4 GB.
Filtros de expresión regular
Los filtros de expresiones regulares te permiten filtrar los registros según patrones coincidentes con los datos de registro sin procesar. Los filtros usan la sintaxis RE2. Los filtros deben incluir una expresión regular y, de forma opcional, definir un comportamiento cuando hay una coincidencia.
Etiquetas arbitrarias
Las etiquetas se usan para adjuntar metadatos personalizados a los registros con pares clave-valor. Puedes configurar etiquetas para un retransmisor completo o dentro de un recopilador específico del retransmisor. Si ambas están presentes, las etiquetas a nivel del recopilador anulan las etiquetas a nivel del retransmisor si las claves se superponen.
Espacios de nombres
Puedes usar etiquetas de espacio de nombres para identificar registros de segmentos de red distintos y resolver conflictos de direcciones IP superpuestas. Puedes configurar una etiqueta de espacio de nombres para un retransmisor completo o dentro de un recopilador específico del retransmisor. Si ambos están presentes, el espacio de nombres a nivel del recopilador anula el espacio de nombres a nivel del reenvío.
Tipo de registro
Las Operaciones de seguridad de Google admiten una variedad de tipos de registros. Para obtener una lista completa, consulta Conjuntos de datos compatibles.
Opciones de balanceo de cargas y alta disponibilidad
El balanceo de cargas solo se admite para el tipo de recopilación de syslog.
El retransmisor se puede implementar en entornos en los que se instala un balanceador de cargas de capa 4 entre las instancias de la fuente de datos y el retransmisor. Esto te permite distribuir la recopilación de registros en varios reenviadores, lo que mejora la confiabilidad, ya que se redireccionan los registros a un reenviador diferente en caso de falla.
El reenvío tiene un servidor HTTP integrado que responde a las verificaciones de estado de los balanceadores de cargas y evita la pérdida de registros durante el inicio y el cierre. Puedes configurar el servidor HTTP, el balanceo de cargas y las opciones de alta disponibilidad para especificar duraciones de tiempo de espera y códigos de estado para las verificaciones de estado. Esta configuración es compatible con las implementaciones basadas en contenedores y los balanceadores de cargas.
Parámetro de configuración | Descripción |
---|---|
Tiempo de espera ordenado | Es la cantidad de tiempo durante la cual se aceptan conexiones nuevas después de que el reenvío devuelve un estado unready en respuesta a una verificación de estado.
Este también es el tiempo que se debe esperar entre la recepción de una señal para detenerse y el inicio real del cierre del servidor. Esto le da tiempo al balanceador de cargas para quitar el reenvío del grupo.Los valores válidos se expresan en segundos. Por ejemplo, para especificar 10 segundos, escribe 10. . No se permiten valores decimales.Valor predeterminado: 15 segundos |
Tiempo de espera del desvío | Es la cantidad de tiempo que el reenvío espera a que las conexiones activas se cierren por sí solas antes de que el servidor las cierre. Por ejemplo, para especificar 5 segundos, escribe 5. . No se permiten valores decimales.Valor predeterminado: 10 segundos |
Puerto | Número de puerto en el que el servidor HTTP escucha las verificaciones de estado del balanceador de cargas. El valor debe estar entre 1,024 y 65,535. 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 en la 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 la configuración predeterminada. Es el tiempo máximo permitido para leer toda la solicitud, tanto el encabezado como el cuerpo. Puedes configurar tanto el campo tiempo de espera de lectura como el campo tiempo de espera del encabezado de lectura. Valor predeterminado: 3 segundos |
Tiempo de espera del encabezado de lectura | Se usa para ajustar el servidor HTTP. Por lo general, no es necesario cambiar la configuración predeterminada. Es el tiempo máximo permitido para leer los encabezados de 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 la configuración predeterminada. Es el 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 inactivo | Se usa para ajustar el servidor HTTP. Por lo general, no es necesario cambiar la configuración predeterminada. Es el tiempo máximo de espera para la próxima solicitud cuando se habilitan las conexiones inactivas. Si el campo idle timeout se establece en cero, se usa el valor del campo read timeout. Si ambos son cero, se usa el campo tiempo de espera de encabezado de lectura . Valor predeterminado: 3 segundos |
Código de estado disponible | Es el código de estado que devuelve el reenvío cuando se recibe una verificación de funcionamiento y el reenvío está disponible. Los programadores y orquestadores de contenedores suelen enviar verificaciones de actividad. Valor predeterminado: 204 |
Código de estado listo | Es el código de estado que devuelve el reenvío cuando está listo para aceptar tráfico en cualquiera de las siguientes situaciones:
|
Código de estado no listo | Es el código de estado que devuelve el reenvío cuando no está listo para aceptar tráfico. Valor predeterminado: 503 |
Paso 1: Define la configuración del reenvío
Cada servidor de reenvío implementado requiere un archivo de configuración. Un archivo de configuración del reenvío especifica la configuración para transferir los datos a tu instancia de Google SecOps. Te recomendamos que generes un archivo de configuración nuevo para cada host para mantener distinciones claras entre los recopiladores asociados con 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 coincidan con tus requisitos específicos y agregar detalles sobre los tipos de registros que deseas transferir.
Puedes generar un archivo de configuración de reenvío a través de la IU, la API o de forma manual.
La IU proporciona una interfaz gráfica para configurar los reenvíos y es el método recomendado para crear una configuración de reenvío. Esta es la forma más sencilla de comenzar y no requiere programación. Para descargar el archivo de configuración con la interfaz de usuario de Google SecOps, consulta Administra la configuración del reenvío a través de la IU de Google SecOps.
La API proporciona una forma programática de configurar los reenvíos. Para descargar la configuración del reenvío de forma programática, consulta la API de Forwarder Management.
Puedes crear el archivo de configuración de forma manual y agregarle las opciones de configuración. Recomendamos usar el método de la IU para generar el archivo de configuración y garantizar la precisión y minimizar los posibles errores. Para generar el archivo de forma manual, consulta Cómo administrar el archivo de configuración del reenvío de forma manual.
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 autenticarlo. Puedes autenticar Docker con la interfaz de línea de comandos (CLI) de Google Cloud CLI o, si no puedes instalar la interfaz de línea de comandos (CLI) de Google Cloud CLI, crear un nuevo archivo JSON de cuenta de servicio en la VM.
Método 1: Usa la interfaz de línea de comandos (CLI) de Google Cloud CLI
Ejecuta el siguiente comando para autenticar Docker:
gcloud auth configure-docker gcr.io
Método 2: Crea y descarga un nuevo archivo JSON de cuenta de servicio en la máquina virtual (VM).
Usa este método si no puedes instalar Google Cloud CLI (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 Configura 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 Cómo instalar Docker Engine.
Para verificar si Docker está instalado correctamente en tu sistema, ejecuta el siguiente comando (requiere privilegios elevados):
docker ps
La siguiente respuesta indica que Docker se instaló correctamente:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Sistema Windows
Inicia Windows PowerShell con privilegios de administrador y verifica la conectividad de red con Google Cloud siguiendo estos pasos:
Haz clic en Iniciar.
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 de Windows.
Habilita la función de contenedor de Microsoft Windows:
Install-WindowsFeature containers -Restart
Ejecuta el siguiente comando en el modo de 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
Para probar la interfaz de línea de comandos de Docker, ejecuta el comando
docker ps
, que muestra una lista de los contenedores en ejecución. Si Docker no está instalado correctamente, se muestra un error.Para obtener más información, consulta Primeros pasos: Prepara Windows para contenedores.
Para 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 reenvío con un contenedor de Docker.
Paso 3a: Mueve los archivos de configuración al directorio del reenvío
El primer paso en el proceso de instalación del servidor de reenvío consiste en colocar los archivos de configuración necesarios en el directorio designado del servidor de reenvío.
Sistema Linux
Para colocar los archivos de configuración en el directorio del reenvío, sigue estos pasos:
Conéctate al host de reenvío de Linux con la terminal.
Cambia el directorio al directorio principal que ejecuta el contenedor de Docker.
Crea un directorio para almacenar los archivos de configuración del reenvío.
mkdir /opt/chronicle/'CONFIG'
Puedes reemplazar el nombre del directorio,
CONFIG
, por cualquier nombre que elijas. Asegúrate de usar el mismo nombre de directorio cuando ejecutes el comandodocker run
.Cambia el directorio.
cd /opt/chronicle/config
Después de transferir los archivos, asegúrate de que los archivos de configuración se encuentren 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 reemplazar el nombre de la carpeta, config
, por cualquier nombre que elijas. Asegúrate de usar el mismo nombre de carpeta cuando ejecutes el comando docker run
.
Paso 3b: Ejecuta el reenviador
Después de colocar los archivos de configuración en el directorio del reenvío designado, puedes iniciar el reenvío o actualizarlo a la versión más reciente del contenedor de Google SecOps.
Si actualizas el contenedor, limpia 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 reenvío por primera vez o actualizarlo a la versión más reciente del contenedor de Google SecOps, haz lo siguiente:
Obtén la imagen de 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 reenvío desde el contenedor de 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 \ gcr.io/chronicle-container/cf_production_stable -v /var/log/<parser-name>:/opt/chronicle/edr \
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 se deben usar siempre que la versión de Docker que uses las admita.
Administra el reenvío
En las siguientes secciones, se proporciona orientación para administrar tu reenviador.
Cómo ver los registros del reenvío
Para ver los registros del reenvío, ejecuta el siguiente comando:
docker logs cfps
Para ver la ruta de acceso del archivo en el que se almacenan los registros, ejecuta el siguiente comando:
docker inspect --format='{{.LogPath}}' CONTAINER_NAME
Para ver los registros en ejecución en tiempo real, ejecuta el siguiente comando:
docker logs cfps -f
Para almacenar los registros en un archivo, ejecuta el siguiente comando:
docker logs cfps &> logs.txt
Desinstala el servidor de reenvío
Los siguientes comandos de Docker te ayudan a detener, desinstalar o quitar el reenvío.
Para detener o desinstalar el contenedor de reenvío, ejecuta el siguiente comando:
docker stop cfps
Para quitar el contenedor del reenviador, ejecuta el siguiente comando:
docker rm cfps
Actualiza el reenvío
El reenvío consta de dos componentes, cada uno con un proceso de actualización como el siguiente:
Forwarder Bundle: Este componente se actualiza automáticamente, por lo que no es necesario reiniciar el dispositivo.
Imagen de Docker del reenvío: Las actualizaciones de este componente se realizan de forma manual. Deberás detener la instancia de reenvío actual y comenzar una nueva, como se describe en el paso 3b.
Guías de transferencia para conjuntos de datos específicos
Para obtener información sobre cómo se ingiere un conjunto de datos en particular con los retransmisores, consulta lo siguiente:
- Instala el desviador de eventos de Carbon Black
- Recopila registros de firewall de Cisco ASA
- Recopila registros del sensor Corelight
- Recopila registros de Fluentd
- Recopila registros de auditoría de Linux y del sistema Unix
- Recopila datos de Microsoft Windows AD
- Recopila datos de DHCP de Microsoft Windows
- Recopila datos de DNS de Microsoft Windows
- Recopila datos de eventos de Microsoft Windows
- Recopila datos de Sysmon de Microsoft Windows
- Recopila registros de osquery
- Recopila registros de OSSEC
- Recopila registros del firewall de Palo Alto Networks
- Recopila registros de CIM de Splunk
- Recopila registros de Zeek
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.