Servidor de reenvío de Google Security Operations para Linux

En este documento, se describe cómo instalar y configurar el servidor de reenvío en Linux. Para instalar el servidor de reenvío en Windows, consulta Windows Forwarder.

Forwarder se usa para enviar registros del entorno del cliente a Google Security Operations. instancia. Se usa cuando los clientes quieren enviar los registros directamente a Google Security Operations y no deseas usar los buckets de la nube para transferir datos, o logtype no tiene transferencia nativa a través de una API de terceros. El reenviador puede ser como una solución lista para implementar, en lugar de incorporar manualmente transferencia de datos a una API.

Puedes instalar el servidor de reenvío en varias distribuciones de Linux, como Debian, Ubuntu, Red Hat y Suse. Google Cloud proporciona el software con un contenedor de Docker. Puedes ejecutar y administrar el contenedor de Docker física o virtual que ejecute Linux.

Requisitos del sistema

Las siguientes son recomendaciones generales. Para obtener recomendaciones específicas comunícate con el equipo de asistencia de Google Security Operations.

  • RAM: 1 GB para cada tipo de datos recopilados (colector) que acepta Google Security Operations para la transferencia. Por ejemplo, si especificaste 4 colectores diferentes, necesitan 4 GB de RAM para recopilar datos de los cuatro recopiladores.

  • CPU: 2 CPU son suficientes para manejar menos de 10,000 eventos por segundo (EPS) (total para todos los tipos de datos). Si esperas reenviar más de 10,000 EPS, aprovisiona de 4 a 6 CPU.

  • Disco: 100 MB de espacio en el disco son suficientes, independientemente de la cantidad de datos que El servidor de reenvío de Google Security Operations controla Si necesitas almacenar en búfer los mensajes pendientes en el disco en lugar de en la memoria, consulta Almacenamiento en búfer de disco. Google Security Operations los servidores de reenvío almacenan en la memoria de forma predeterminada.

Rangos de direcciones IP de Google

Es posible que necesites que el rango de direcciones IP se abra cuando establezcas una configuración de reenvío, como cuando estableces la configuración de tu firewall. Google no puede proporcionar una lista específica de direcciones IP. Sin embargo, puedes obtener rangos de direcciones IP de Google.

Verifica la configuración del firewall

Todos los firewalls o proxies autenticados entre Internet y el contenedor de reenvío de Google Security Operations requieren reglas para 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-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 accounts.google.com 443
TCP gcr.io 443
TCP oauth2.googleapis.com 443
TCP storage.googleapis.com 443

Personaliza los archivos de configuración

Google Cloud adapta los archivos de configuración a la instancia de reenvío con metadatos específicos, como se muestra en la sección de salida. Puedes descargar el archivo de configuración según tus requisitos e incluye información sobre los tipos de registros que se transferirán a los recopiladores sección. Para obtener más información sobre los parámetros de configuración, consulta Referencia de los parámetros de configuración.

Cómo configurar el servidor de reenvío de Linux

Para configurar el servidor de reenvío de Linux a través de la IU, consulta Administra la configuración de los servidores de reenvío con la IU de Google SecOps.

Para configurar el servidor de reenvío de Linux de forma manual, haz lo siguiente:

  1. Haz una copia de la plantilla del archivo de configuración que se proporciona con el software.

  2. Descarga el archivo de configuración a través de la IU.

  3. Guarda los dos archivos en el mismo directorio con la siguiente convención de nomenclatura:

    FORWARDER_NAME.conf: usa este archivo para definir las de configuración relacionados con la transferencia de registros.

    FORWARDER_NAME_auth.conf: usa este archivo para definir el credenciales de autorización.

  4. Modifica los archivos para incluir la configuración de la instancia de reenvío. Usa las muestras que se proporcionan en este documento como referencia.

  5. Asegúrate de que exista una entrada para cada entrada en el FORWARDER_NAME_auth.conf incluso si la entrada no tiene los detalles de autenticación correspondientes. Esto es necesario para asignar los datos correctamente.

El servidor de reenvío aplicará automáticamente cualquier cambio realizado en el archivo de configuración en un plazo de 5 minutos.

Configuración de ejemplo

El siguiente muestra de código muestra el formato de los archivos de configuración de una reenviador. Para obtener detalles sobre la configuración de cada tipo de transferencia de datos, como Splunk o Syslog, consulta Recopila datos.

El archivo FORWARDER_NAME.conf

output:
  url: malachiteingestion-pa.googleapis.com:443
  identity:
    identity:
    collector_id: COLLECTOR_ID \
    customer_id: CUSTOMER_ID \

collectors:
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DHCP"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10514
      udp_address: 0.0.0.0:10514
      connection_timeout_sec: 60
      tcp_buffer_size: 524288
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DNS"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10515
      connection_timeout_sec: 60
      tcp_buffer_size: 524288

El archivo FORWARDER_NAME_auth.conf

output:
  identity:
    secret_key: |
      {
        "type": "service_account",
        "project_id": "PROJECT_ID" \,
        "private_key_id": "PRIVATE_KEY_ID" \,
        "private_key": "-----BEGIN PRIVATE KEY-----\\"PRIVATE_KEY" \n-----END PRIVATE KEY-----\n",
        "client_email": "CLIENT_EMAIL" \,
        "client_id": "CLIENT_ID" \,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-account-1%40example-account.iam.gserviceaccount.com"
      }

collectors:
  - syslog:
  - syslog:
      certificate: "../forwarder/inputs/testdata/localhost.pem"
      certificate_key: "../forwarder/inputs/testdata/localhost.key"

Este sistema de dos archivos te permite almacenar las credenciales de autenticación en un para mejorar la seguridad. Puedes almacenar el archivo FORWARDER_NAME.conf en un archivo repositorio de control de versión o cualquier sistema abierto de administración de configuraciones. Puedes almacenar el FORWARDER_NAME_auth.conf directamente en la máquina física o virtual que ejecuta el servidor de reenvío.

Configuración de ejemplo (archivo único)

output:
  url: malachiteingestion-pa.googleapis.com:443
  identity:
    identity:
    collector_id: "COLLECTOR_ID" \
    customer_id: "CUSTOMER_ID" \
    secret_key: |
      {
        "type": "service_account",
        "project_id": "PROJECT_ID" \,
        "private_key_id": "PRIVATE_KEY_ID" \,
        "private_key": "-----BEGIN PRIVATE KEY-----\ "PRIVATE_KEY" \n-----END PRIVATE KEY-----\n",
        "client_email": "CLIENT_EMAIL" \,
        "client_id": "CLIENT_ID" \,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/malachite-test-1%40malachite-test.iam.gserviceaccount.com"
      }

collectors:
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DHCP"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10514
      udp_address: 0.0.0.0:10514
      connection_timeout_sec: 60
      tcp_buffer_size: 524288
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DNS"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10515
      connection_timeout_sec: 60
      certificate: "../forwarder/inputs/testdata/localhost.pem"
      certificate_key: "../forwarder/inputs/testdata/localhost.key"
      tcp_buffer_size: 524288

Si usas el archivo de configuración único y quieres pasar al archivo dos de la aplicación, haz lo siguiente:

  1. Crea una copia de tu configuración existente.
  2. Guarda un archivo como el archivo FORWARDER_NAME.conf y borra las credenciales de autorización del archivo.
  3. Guarda el otro archivo como FORWARDER_NAME_auth.conf y borra todos los datos de no autorización del archivo. Usa los archivos de configuración de muestra que se proporcionan en esta guía como referencia.
  4. Asegúrate de seguir la convención de nomenclatura y otros lineamientos que se mencionan en la sección Cómo personalizar los archivos de configuración.

Instala Docker

La instalación de Docker depende del entorno del host. Puedes instalar Docker en diferentes sistemas operativos de host. Google Cloud ofrece documentación limitada para ayudarte a instalar Docker en varias de las distribuciones de Linux más populares. Sin embargo, Docker es de código abierto y toda la documentación necesaria ya está disponible. Para obtener instrucciones sobre la instalación de Docker, consulta la documentación de Docker.

Una vez que Docker está instalado en tu sistema, el proceso de instalación del servidor de reenvío de Google Security Operations es similar a cualquier tipo de distribución de Linux.

Para comprobar si Docker está instalado correctamente en tu sistema, ejecuta el siguiente comando (privilegios elevados):

   docker ps
  

La siguiente respuesta indica que Docker se instaló correctamente:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Comandos útiles de Docker

  • Puedes recopilar información adicional sobre la instalación de Docker con el siguiente comando:

    docker info
    
  • El servicio de Docker se puede inhabilitar de forma predeterminada. Para comprobar si está inhabilitada, Ejecuta el siguiente comando:

    systemctl is-enabled docker
    
  • Para habilitar el servicio de Docker e iniciarlo de inmediato, ejecuta una de las siguientes acciones: comandos:

    sudo systemctl enable --now docker
    
    sudo systemctl enable /usr/lib/systemd/system/docker.service
    

    Resultado:

    Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service
    
  • Cuando inicies un servidor de reenvío, ejecuta el siguiente comando para configurarlo para reiniciar automáticamente:

    sudo docker run --restart=always `IMAGE_NAME`
    

    IMAGE_NAME es el nombre de la imagen de reenvío.

  • Para verificar el estado y los detalles del servicio de Docker, ejecuta el siguiente comando:

    sudo systemctl status docker
    

    Resultado:

    ● docker.service - Docker Application Container Engine
        Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
        Active: active (running) since Sat 2020-07-18 11:14:05 UTC; 15s ago
    TriggeredBy: ● docker.socket
          Docs: https://docs.docker.com
      Main PID: 263 (dockerd)
          Tasks: 20
        Memory: 100.4M
        CGroup: /system.slice/docker.service
                └─263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    Jul 18 11:14:05 swarm-kraken dockerd[263]: time="2020-07-18T11:14:05.713787002Z" level=info msg="API listen on /run/docker.sock"
    Jul 18 11:14:05 swarm-kraken systemd[1]: Started Docker Application Container Engine
    

    Si tienes algún problema con Docker, el equipo de asistencia al cliente de Google Security Operations puede solicitar la resultado de este comando para ayudar y depurar el problema.

Cómo instalar el reenviador en Linux

En esta sección, se describe cómo instalar Google Security Operations Forwarder con un contenedor de Docker en un sistema Linux.

Paso 1: Descarga, transfiere e instala los archivos de configuración de reenvío

Google Security Operations proporciona archivos de configuración de reenvío específicos para tu sistema operativo (Linux o Windows). Puedes descargar el archivo de configuración según tus requisitos. Después de completar los siguientes pasos, transfiere los archivos de configuración de tu laptop al directorio de reenvío /opt/chronicle/config dentro del directorio principal del usuario.

  1. Conéctate al host del servidor de reenvío de Linux a través de la terminal.

  2. Crea un usuario nuevo en el host del servidor de reenvío de Linux.

      adduser USERNAME
      passwd USERNAME
      usermod -aG wheel USERNAME
    

  3. Cambia el directorio al directorio principal del usuario nuevo que ejecuta Docker. Contenedor.

  4. Crea un directorio para almacenar los archivos de configuración del servidor de configuración de Google Security Operations:

      mkdir /opt/chronicle/config
    

  5. Cambia el directorio.

      cd /opt/chronicle/config
    

  6. Una vez que se hayan transferido los archivos, asegúrate de que los archivos de configuración se encuentren en el directorio /opt/chronicle/config:

      ls -l
    

Paso 2: Ejecuta el objeto Forwarder dentro del contenedor de Docker

Puedes usar los siguientes procedimientos para iniciar el servidor de reenvío de Google Security Operations por primera vez, así como actualizarlos a la última versión del Contenedor de Google Security Operations:

Las opciones --log-opt han estado disponibles desde Docker 1.13. Estas opciones limitan el tamaño de los archivos de registro del contenedor y deben usarse siempre y cuando sean compatibles con su versión de Docker.

  1. Si vas a realizar la actualización, primero borra todas las ejecuciones anteriores de Docker. En la siguiente, el nombre del contenedor de Docker es cfps. Obtener la última imagen de Docker de Google Cloud con el docker pull, como se muestra a continuación.

    docker stop cfps
    
    docker rm cfps
    
  2. Obtén la imagen de Docker más reciente de Google Cloud:

    docker pull gcr.io/chronicle-container/cf_production_stable
    
  3. Inicia el servidor de reenvío de Google Security Operations desde el contenedor de Docker:

    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
    

Ver registros de reenviadores

Para ver los registros del servidor de reenvío de Google Security Operations, ejecuta el siguiente comando:

  sudo 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 de ejecución en vivo, ejecuta el siguiente comando:

  sudo docker logs cfps -f

Para almacenar los registros en un archivo, ejecuta el siguiente comando:

  sudo docker logs cfps &> logs.txt

Cómo desinstalar el servidor de reenvío

Los siguientes comandos de Docker te ayudan a detener, desinstalar o quitar el servidor de reenvío de Google Security Operations.

Para detener o desinstalar el contenedor de reenvío, haz lo siguiente:

    docker stop cfps
  

Para quitar el contenedor de reenvío, haz lo siguiente:

    docker rm cfps
  

Actualiza el servidor de reenvío

El servidor de reenvío de Google Security Operations consta de dos partes y se actualiza de la siguiente manera:

  • Paquete de reenvío: Se actualiza automáticamente y no es necesario reiniciar.

  • Imagen de Docker de Forwarder: se actualiza de forma manual después de detener el servidor de reenvío existente y, luego, iniciar una instancia nueva como que se indican en el Paso 2.

Recopilar datos

Las siguientes secciones te ayudarán a configurar el servidor de reenvío de Google Security Operations para transferir diferentes tipos de datos, que se a la instancia de Google Security Operations.

Recopila datos de Splunk

Puedes configurar el servidor de reenvío de Google Security Operations para que reenvíe tus datos de Splunk a Google Security Operations. Google Cloud configura el servidor de reenvío de Google Security Operations con la siguiente información para reenviar tus datos desde Splunk:

  • URL de la API de REST de Splunk (por ejemplo, https://10.0.113.15:8089).

  • Consultas de Splunk a fin de generar datos para cada uno de los tipos de datos obligatorios (por ejemplo, index=dns).

FORWARDER_NAME.conf
output:
collectors:
  - splunk:
      common:
        enabled: true
        data_type: WINDOWS_DNS
        data_hint: "#fields ts      uid     id.orig_h       id.orig_p       id.resp_h         id.resp_p       proto   trans_id        query   qclass  qclass_name"
        batch_n_seconds: 10
        batch_n_bytes: 819200
      url: https://127.0.0.1:8089
      is_ignore_cert: true
      minimum_window_size: 10s
      maximum_window_size: 30s
      query_string: search index=* sourcetype=dns
      query_mode: realtime
  • Permite que las credenciales de tu cuenta de Splunk estén disponibles para el equipo de Google Security Operations reenviador. Para ello, crea un archivo creds.txt.

Para usar un archivo creds.txt, haz lo siguiente:

  1. Crea un archivo local para tus credenciales de Splunk y asígnale el nombre creds.txt.

  2. Coloca tu nombre de usuario en la primera línea y la contraseña en la segunda línea:

    cat creds.txt
    
    myusername
    mypassword
    
  3. Usar el servidor de reenvío de Google Security Operations para acceder a un recurso de Splunk copia el archivo creds.txt en el directorio de configuración (el mismo en el que se encuentran los archivos de configuración). Por ejemplo:

    cp creds.txt /opt/chronicle/config/creds.txt
    
  4. Verifica que el archivo creds.txt esté en la ubicación correcta:

    ls /opt/chronicle/config
    

Recopilar datos de syslog

El servidor de reenvío de Google Security Operations puede funcionar como un servidor Syslog. Puedes configurar cualquier dispositivo o servidor que admita el envío de datos de syslog a través de TCP o UDP para reenviar los datos al servidor de reenvío de Google Security Operations. Puedes controlar los datos exactos que el dispositivo o el servidor envían a la Servidor de reenvío de Google Security Operations. El servidor de reenvío de Google Security Operations puede reenviar los datos a Google Security Operations.

El archivo de configuración FORWARDER_NAME.conf (proporcionado por Google Cloud) especifica qué puertos se deben supervisar para cada tipo de y reenviarlos (por ejemplo, el puerto 10514). De forma predeterminada, el rol de pero el redireccionamiento acepta conexiones TCP y UDP.

Cómo configurar rsyslog

Si deseas configurar rsyslog, debes especificar un destino para cada puerto (por ejemplo, cada tipo de datos). Consulta la documentación del sistema para conocer la sintaxis correcta. El Los siguientes ejemplos ilustran la configuración de destino rsyslog:

  • Tráfico de registro de TCP: dns.* @@192.168.0.12:10514

  • Tráfico de registros UDP: dns.* @192.168.0.12:10514

Habilitar TLS para configuraciones de syslog

Puedes habilitar TLS para la conexión Syslog a Google Security Operations reenviador. En el archivo de configuración del servidor de reenvío de Google Security Operations (FORWARDER_NAME.conf), especifica tu ubicación certificado generado y clave de certificado, como se muestra en el siguiente ejemplo:

certificado "/opt/chronicle/external/certs/client_generated_cert.pem"
certificate_key "/opt/chronicle/external/certs/client_generated_cert.key"

Según el ejemplo que se muestra, modificar el servidor de reenvío de Google Security Operations de configuración de Terraform (FORWARDER_NAME.conf) de la siguiente manera:

  collectors:
- syslog:
    common:
      enabled: true
      data_type: WINDOWS_DNS
      data_hint:
      batch_n_seconds: 10
      batch_n_bytes: 1048576
    tcp_address: 0.0.0.0:10515
    tcp_buffer_size: 65536
    connection_timeout_sec: 60
    certificate: "/opt/chronicle/external/certs/client_generated_cert.pem"
    certificate_key: "/opt/chronicle/external/certs/client_generated_cert.key"
    minimum_tls_version: "TLSv1_3"

Algunos puntos importantes para tener en cuenta:

  • Puedes configurar el tamaño del búfer TCP. El tamaño predeterminado del búfer TCP es de 64 KB.

  • El valor predeterminado y recomendado de connection_timeout es de 60 segundos. La conexión TCP finaliza si la conexión está inactiva durante un tiempo específico.

  • La versión mínima de TLS se compara con la versión TLS del solicitud de entrada. La versión TLS de la solicitud de entrada debe ser mayor que la versión mínima de TLS. La versión mínima de TLS debe ser una de las los siguientes valores: TLSv1_0, TLSv1_1, TLSv1_2 y TLSv1_3.

Puedes crear un directorio certs en el directorio de configuración y almacenar los archivos de certificados allí.

Recopilar datos de archivos

Un recopilador de archivos está diseñado para recuperar los registros de un archivo. El archivo debe tener vinculados al contenedor de Docker.

Usa esta opción si quieres subir los registros de forma manual desde un solo archivo de registro. Esto puede usarse para reabastecer los registros de un archivo de registro en particular.

Inicia el servidor de reenvío de Google Security Operations desde el contenedor de Docker:

  docker run \
    --detach \
    --name cfps \
    --log-opt max-size=100m \
    --log-opt max-file=10 \
    --net=host \
    -v /opt/chronicle/config:/opt/chronicle/external \
    -v /var/log/crowdstrike/falconhostclient:/opt/chronicle/edr \
     gcr.io/chronicle-container/cf_production_stable

Este comando docker run es crítico para asignar el volumen de carga al contenedor.

En función de este ejemplo, deberías modificar el servidor de reenvío de Google Security Operations (archivo FORWARDER_NAME.conf) de la siguiente manera. El archivo sample.txt debe estar presente en el /var/log/crowdstrike/falconhostclient carpeta.

 collectors:
  - file:
       common:
         enabled: true
         data_type: CS_EDR
         data_hint:
         batch_n_seconds: 10
         batch_n_bytes: 1048576
       file_path: /opt/chronicle/edr/sample.txt
       filter:

Parámetros de configuración de marcas

skip_seek_to_end (bool): Esta marca se establece en false de forma predeterminada, y el archivo input solo envía nuevas líneas de registro como entrada. Establecer esto en true provoca que todas las líneas de registro anteriores se vuelvan a enviar durante los reinicios de reenvío. Esto genera registros la duplicación. Establecer esta marca en true es útil para ciertas (por ejemplo, durante interrupciones), porque reiniciar el reenviador envía líneas de registro faltantes nuevamente.

poll (bool): El recopilador de archivos usa la biblioteca de Tail para comprobar si hay cambios en el sistema de archivos. Cuando estableces esta marca en true, la biblioteca de Tail usa el sondeo en lugar del predeterminado.

Recopilar datos de paquetes

El servidor de reenvío de Google Security Operations puede capturar paquetes directamente de una red con libcap en Linux. Para obtener más información sobre libcap, consulta libcap - Página del manual de Linux

Los paquetes se capturan y se envían a Google Security Operations en lugar de entradas de registro. La captura de paquetes se controla desde una red local interfaz únicamente. Para habilitar la captura de paquetes en tu sistema, comunícate Asistencia de Google Security Operations.

Google Cloud configura el servidor de reenvío de Google Security Operations con el servidor Es la expresión del filtro de paquetes (BPF) que se usa cuando se capturan paquetes (por ejemplo, el puerto 53). y no localhost). Para obtener más información, consulta Filtros de paquetes de Berkeley.

Recopila datos del tema de Kafka

Puedes transferir datos de los temas de Kafka del mismo modo que desde syslog. El se aprovechan para permitirte implementar hasta 3 Forwarders y extraen datos del mismo tema de Kafka. Para obtener más información, consulta Kafka.

Para obtener más información sobre los grupos de consumidores de Kafka, consulta lo siguiente: https://docs.confluent.io/platform/current/clients/consumer.html

Configuración de ejemplo: entrada de Kafka

La siguiente configuración de reenviador muestra cómo configurar el reenviador para transferir datos de los temas de Kafka.

El archivo FORWARDER_NAME.conf

collectors:
- kafka:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: NIX_SYSTEM
        enabled: true
      topic: example-topic
      group_id: chronicle-forwarder
      timeout: 60s
      brokers: ["broker-1:9092", "broker-2:9093"]
      tls:
        insecureSkipVerify: true
        certificate: "/path/to/cert.pem"
        certificate_key: "/path/to/cert.key"
- syslog:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: WINEVTLOG
        enabled: true
      tcp_address: 0.0.0.0:30001
      connection_timeout_sec: 60

El archivo FORWARDER_NAME_auth.conf

collectors:
- kafka:
      username: user
      password: password
- syslog:

Recopilar datos de WebProxy

El servidor de reenvío de Google Security Operations puede capturar datos de WebProxy directamente de una red con libcap en Linux. Para obtener más información sobre libcap, consulta libcap - Página del manual de Linux Para habilitar la captura de datos de WebProxy para tu sistema, comunícate con Asistencia de Google Security Operations.

Modifica la configuración del servidor de reenvío de Google Security Operations (archivo FORWARDER_NAME.conf) de la siguiente manera:

- webproxy:
      common:
        enabled : true
        data_type: <Your LogType>
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      interface: any
      bpf: tcp and dst port 80

Personaliza los parámetros de configuración

En la siguiente tabla, se enumeran los parámetros importantes que se usan en el archivo de configuración del servidor de reenvío.

Parámetro Descripción
data_type El tipo de datos de registro que el recopilador puede recopilar y procesar.
metadatos Metadatos, que anulan los metadatos globales.
max_file_buffer_bytes Cantidad máxima de bytes que se pueden acumular en el búfer de disco o archivo. El valor predeterminado es 1073741824, que es 1 GB.
max_memory_buffer_bytes Cantidad máxima de bytes que se pueden acumular en el búfer de memoria. El el valor predeterminado es 1073741824, que es 1 GB.
write_to_disk_dir_path La ruta de acceso que se usará para el búfer de archivo o disco.
write_to_disk_buffer_enabled Si es true, se usa el búfer de disco en lugar del búfer de memoria. El valor predeterminado es false.
batch_n_bytes Cantidad máxima de bytes que puede acumular el recopilador después de en la que los datos se agrupan en lotes. El valor predeterminado es 1048576, que 1 MB.
batch_n_seconds La cantidad de segundos después de los cuales los datos que recopila el recopilador se agrupan en lotes. El valor predeterminado es 11 segundos.
data_hint Formato de datos que puede recibir el recopilador (por lo general, el encabezado del archivo de registro que describe el formato).

Para obtener una lista exhaustiva de los parámetros utilizados en el archivo de configuración, consulta Campos de configuración de reenvío y Campos de configuración del colector.

Activar o desactivar la compresión de datos

La compresión de registros reduce el consumo de ancho de banda de la red cuando se transfieren registros a Google Security Operations. Sin embargo, la compresión puede causar un aumento en el uso de la CPU. La compensación entre el uso de la CPU y el ancho de banda depende de muchos factores, incluidos los siguientes: el tipo de datos de registro, la compresibilidad, la disponibilidad de de red en el host que ejecuta el servidor de reenvío y la necesidad de reducir el consumo de ancho de banda.

Por ejemplo, los registros basados en texto se comprimen bien y pueden proporcionar un ancho de banda considerable de ahorros con poco uso de CPU. Sin embargo, las cargas útiles encriptadas de paquetes sin procesar se comprimen bien y se usa más CPU.

De forma predeterminada, la compresión de registros está inhabilitada. Es posible que, si habilitas la reducir el consumo de ancho de banda. Sin embargo, habilitar la compresión de registros también podría aumentar el uso de la CPU. Ten en cuenta las compensaciones.

Para habilitar la compresión de registros, establece el campo compression en true en el archivo de configuración del servidor de reenvío de Google Security Operations, como se muestra en el siguiente ejemplo:

El archivo FORWARDER_NAME.conf

output:
  compression: true
    url: malachiteingestion-pa.googleapis.com:443
    identity:
      identity:
      collector_id: 10479925-878c-11e7-9421-10604b7cb5c1
      customer_id: ebdc4bb9-878b-11e7-8455-10604b7cb5c1
...

El archivo FORWARDER_NAME_auth.conf

output:
  identity:
    secret_key: |
    {
     "type": "service_account",
...
    }

Configura el almacenamiento en búfer del disco

El almacenamiento en búfer del disco permite almacenar en búfer los mensajes pendientes en el disco, memoria. Los mensajes pendientes se pueden almacenar en caso de que falle el servidor de reenvío o falla el host subyacente. Ten en cuenta que habilitar el almacenamiento en búfer del disco puede afectar rendimiento.

Si el almacenamiento en búfer del disco está inhabilitado, el servidor de reenvío usa 1 GB de memoria (RAM) para cada tipo de registro (por ejemplo, por conector). Especifica el campo max_memory_buffer_bytes de configuración de Terraform. La memoria máxima permitida es de 4 GB.

Puedes configurar el almacenamiento en búfer de la memoria para usar un búfer compartido recopilatorios, que trabaja mejor con los aumentos repentinos de tráfico. Para habilitar la administración dinámica búfer compartido, agrega lo siguiente a tu configuración de reenvío:

auto_buffer:
  enabled: true
  target_memory_utilization: 80

Si el almacenamiento en búfer automático del disco está habilitado, No se definió target_memory_utilization, ya que usa un valor predeterminado de 70.

Si ejecutas el servidor de reenvío con Docker, Google recomienda activar un independiente del volumen de configuración por motivos de aislamiento. Además, cada entrada debe aislarse con su propio directorio o volumen para evitar conflictos.

Configuración de ejemplo: almacenamiento en búfer del disco

La siguiente configuración incluye la sintaxis para habilitar el almacenamiento en búfer del disco:

collectors:
- syslog:
    common:
      write_to_disk_buffer_enabled: true
      # /buffers/NIX_SYSTEM is part of the external mounted volume for the
forwarder
      write_to_disk_dir_path: /buffers/NIX_SYSTEM
      max_file_buffer_bytes: 1073741824
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Configura filtros de expresiones regulares

Los filtros de expresiones regulares te permiten filtrar los registros en función de las expresiones regulares con registros sin procesar.

Los filtros emplean la sintaxis RE2 que se describe a continuación: https://github.com/google/re2/wiki/Syntax

Los filtros deben incluir una expresión regular y, de forma opcional, definir un comportamiento. cuando hay una coincidencia. El comportamiento predeterminado de una coincidencia es bloquear (puedes configurarlo de forma explícita como bloque).

Como alternativa, puedes especificar filtros con el comportamiento allow. Si especificas cualquier filtro allow, el reenviador bloquea los registros que no coinciden con al menos uno allow.

Es posible definir un número arbitrario de filtros. Los filtros de bloqueo toman prioridad sobre allow filtros.

Cuando se definen filtros, se les debe asignar un nombre. Los nombres de los activos los filtros se informarán a Google Security Operations a través de las métricas de estado de Forwarder. Filtros definidos en la raíz de la configuración se combinan con filtros definidos en el a nivel de recopilador. Los filtros a nivel del recopilador tienen prioridad en los casos de nombres contradictorios. Si no se definen filtros en la raíz ni en el colector el comportamiento es permitir todo.

Configuración de ejemplo: filtros de expresiones regulares

En la siguiente configuración de Forwarder, los registros WINEVTLOG que no coinciden con el filtro raíz (allow_filter). Dado el valor regular expresión, el filtro solo permite registros con prioridades entre 0 y 99. Sin embargo, cualquier registro de NIX_SYSTEM que contenga “foo” o 'bar' están bloqueadas, a pesar del allow_filter. Esto se debe a que los filtros usan un operador lógico OR. Todo hasta que se activa un filtro.

regex_filters:
  allow_filter:
    regexp: ^<[1-9][0-9]?$>.*$
    behavior_on_match: allow
collectors:
- syslog:
    common:
      regex_filters:
        block_filter_1:
          regexp: ^.*foo.*$
          behavior_on_match: block
        block_filter_2:
          regexp: ^.*bar.*$
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Configurar etiquetas arbitrarias

Las etiquetas se usan para adjuntar metadatos arbitrarios a los registros mediante pares clave-valor. Las etiquetas se pueden configurar para todo un servidor de reenvío o dentro de un recopilador específico de un reenviador. Si se proporcionan ambos, las etiquetas se combinan con la del colector tienen prioridad sobre las del servidor de reenvío si las claves se superponen.

Configuración de ejemplo: etiquetas arbitrarias

En la siguiente configuración de Forwarder, el parámetro 'foo=bar' y “meow=mix” clave y se adjuntan a registros WINEVTLOG y a “foo=baz” y "meow=mix" Los pares clave-valor se vinculan a los registros NIX_SYSTEM.

metadata:
  labels:
    foo: bar
    meow: mix
collectors:
syslog:
    common:
      metadata:
        labels:
          foo: baz
          meow: mix
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Configurar espacios de nombres

Usar etiquetas de espacio de nombres para identificar registros de distintos segmentos de red y de conflictos de direcciones IP superpuestas. Puedes configurar una etiqueta de espacio de nombres en todo el servidor de reenvío o dentro de un recopilador específico de ese servidor de reenvío. Si ambos son incluido, tiene prioridad el espacio de nombres del colector específico.

Cualquier espacio de nombres configurado para el reenviador aparece con los recursos asociados en la interfaz de usuario de Google Security Operations. También puedes buscar espacios de nombres con el Función de búsqueda de Google Security Operations.

Si necesitas información para ver espacios de nombres en la interfaz de usuario de Google Security Operations, consulta aquí.

Configuración de ejemplo: espacios de nombres

En la siguiente configuración de reenvío, los registros WINEVTLOG se al espacio de nombres FORWARDER y a los registros NIX_SYSTEM se adjunta al espacio de nombres CORPORATE.

metadata:
  namespace: FORWARDER
collectors:
- syslog:
      common:
        metadata:
          namespace: CORPORATE
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: NIX_SYSTEM
        enabled: true
      tcp_address: 0.0.0.0:30000
      connection_timeout_sec: 60
- syslog:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: WINEVTLOG
        enabled: true
      tcp_address: 0.0.0.0:30001
      connection_timeout_sec: 60

Configura las opciones de balanceo de cargas y alta disponibilidad

El servidor de reenvío de Google Security Operations para Linux se puede implementar en un entorno en el que se instala un balanceador de cargas de capa 4 entre la fuente de datos y el servidor de reenvío individuales. Esto permite que un cliente distribuya la recopilación de registros entre o enviar registros a un servidor de reenvío diferente si uno falla. Esta Esta función solo es compatible con el tipo de colección syslog.

El servidor de reenvío de Linux incluye un servidor HTTP integrado que responde al estado de HTTP del balanceador de cargas. El servidor HTTP también ayuda a garantizar que los registros se que no se pierde durante el inicio o el apagado de un servidor de reenvío.

Configura el servidor HTTP, el balanceo de cargas y las opciones de alta disponibilidad en la sección server del archivo de configuración del servidor de reenvío. Estas opciones Admite la configuración de las duraciones de los tiempos de espera y los códigos de estado que se devuelven en respuesta a verificaciones de estado recibidas en el programador de contenedores y basadas en la organización y de balanceadores de cargas tradicionales.

Usa las siguientes rutas de URL para las verificaciones de estado, preparación y funcionamiento. Los valores de <host:port> se definen en la configuración del servidor de reenvío.

  • http://<host:port>/meta/available: verificaciones de actividad para el contenedor programadores u organizadores.
  • http://<host:port>/meta/ready: Verificaciones de disponibilidad y carga tradicional del balanceador de cargas y las verificaciones de estado del balanceador.

La siguiente configuración de reenvío es un ejemplo para el balanceo de cargas y la disponibilidad:

collectors:
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60
server:
  graceful_timeout: 15s
  drain_timeout: 10s
  http:
    port: 8080
    host: 0.0.0.0
    read_timeout: 3s
    read_header_timeout: 3s
    write_timeout: 3s
    idle_timeout: 3s
    routes:
    - meta:
        available_status: 204
        ready_status: 204
        unready_status: 503
Ruta de configuración Descripción
servidor : graciaful_timeout La cantidad de tiempo que el servidor de reenvío devuelve una verificación de preparación o estado incorrecta aún acepta nuevas conexiones. Este también es el tiempo de espera entre una señal para detenerse y comenzar realmente el apagado de la del servidor. Esto le da tiempo al balanceador de cargas para quitar el servidor de reenvío. del grupo.
servidor : desvío_timeout La cantidad de tiempo que el servidor de reenvío espera a que las conexiones activas cerrarse correctamente por sí solos antes de que el servidor los cierre.
servidor : HTTP : puerto El número de puerto que escucha el servidor HTTP para las verificaciones de estado del balanceador de cargas HTTP(S) global externo. Debe estar comprendido entre 1024 y 65535.
servidor : http : host La dirección IP, o el nombre de host que se puede resolver en direcciones IP, a las que servidor debe escuchar. Si está vacío, el valor predeterminado es el sistema local (0.0.0.0).
servidor : http : read_timeout Se usa para ajustar el servidor HTTP. Por lo general, no es necesario cambiar el parámetro de configuración predeterminado. La cantidad máxima de tiempo permitida para leer todo el contenido el encabezado y el cuerpo. Puedes establecer read_timeout y read_header_timeout.
servidor : http : read_header_timeout Se usa para ajustar el servidor HTTP. Por lo general, no es necesario cambiar el parámetro de configuración predeterminado. El tiempo máximo permitido para leer una solicitud encabezados. La conexión lee, y el plazo se restablece después de leer el encabezado.
servidor : http : write_timeout Se usa para ajustar el servidor HTTP. Por lo general, no es necesario cambiar el parámetro de configuración predeterminado. La cantidad máxima de tiempo permitida para enviar una respuesta. Se restablece cuando se lee un nuevo encabezado de la solicitud.
servidor : http : inactivos_timeout Se usa para ajustar el servidor HTTP. Por lo general, no es necesario cambiar el parámetro de configuración predeterminado. La cantidad máxima de tiempo que se debe esperar al próximo cuando se habilitan las conexiones inactivas. Si inactivos_timeout es cero, el valor se usa el valor de read_timeout. Si ambos son cero, el valor de read_header_timeout que se usan.
rutas : meta : ready_status El código de estado que devuelve el servidor de reenvío cuando está listo para aceptar el tráfico en cualquiera de las siguientes situaciones:
  • La verificación de preparación se recibe de un programador de contenedores o organizador.
  • La verificación de estado se recibe de un balanceador de cargas tradicional.
rutas : meta : unready_status El código de estado que devuelve el servidor de reenvío cuando no está listo para aceptar tráfico.
rutas : meta : available_status El código de estado que devuelve el servidor de reenvío cuando se recibe una verificación de funcionamiento y el servidor de reenvío está disponible. Los organizadores o programadores de contenedores suelen enviar y verificaciones de actividad.

Preguntas frecuentes

¿Cómo actualizo el servidor de reenvío?

El servidor de reenvío de Linux se actualiza constantemente a través de una secuencia de comandos de shell en Docker imagen. Para actualizar la imagen de Docker, ejecuta el objeto de reenvío.

¿Qué es un contenedor de Docker?

  • Los contenedores de Docker son como máquinas virtuales que proporcionan funciones seguridad, aislamiento y administración de recursos.

  • Las máquinas virtuales, tienen un espacio con privilegios (kernel de Linux) y un espacio del usuario (todo con lo que interactúas: libc, Python, ls, tcpdump, etc.).

  • Contenedores: Solo tienen un espacio de usuario (todo lo con lo que interactúas: libc, python, ls, tcpdump, etc.) y depender del espacio de privilegios del host.

¿Por qué distribuir el servicio de reenvío de Google Security Operations con un contenedor?

  • Mejor seguridad a través del aislamiento:
    • Los requisitos y el entorno del cliente no afectan a Google Security Operations. reenviador.
    • El entorno y los requisitos del servidor de reenvío de Google Security Operations no afectan al cliente.
    • El mecanismo de distribución de contenedores ya existe y puede ser privado y independiente para Google Cloud y los clientes. https://cloud.google.com/container-registry/

¿Necesitas aprender comandos avanzados de Docker?

  • El servidor de reenvío de Google Security Operations usa un solo contenedor, por lo que no es necesario aprenderás sobre Swarm, organización u otras herramientas conceptos o comandos.