Instala y configura el reenviador

Compatible con:

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:
  • Se recibe una verificación de preparación de un programador o un orquestador de contenedores.
  • Se recibe una verificación de estado de un balanceador de cargas.
Valor predeterminado: 204
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:

  1. Haz clic en Iniciar.

  2. Escribe PowerShell y haz clic con el botón derecho en Windows PowerShell.

  3. Haz clic en Ejecutar como administrador.

  4. Ejecuta el siguiente comando:

    C:\> test-netconnection <host> -port <port>
    

    El resultado del comando indica que el estado de TcpTestSucceeded es true.

    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.

  1. Habilita la función de contenedor de Microsoft Windows:

    Install-WindowsFeature containers -Restart
    
  2. 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
    
    
  3. 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:

  1. Conéctate al host de reenvío de Linux con la terminal.

  2. Cambia el directorio al directorio principal que ejecuta el contenedor de Docker.

  3. 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 comando docker run.

  4. Cambia el directorio.

      cd /opt/chronicle/config
    

  5. 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:

  1. 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
    
  2. 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:

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