ANSIBLE_AWX

Compatible con:

En este documento, se explica cómo transferir registros de Ansible AWX a Google Security Operations con Bindplane. El analizador extrae campos de los registros de Ansible AWX con formato JSON. Utiliza el análisis de JSON para extraer los campos de registro y, luego, asigna estos valores al Modelo de datos unificado (UDM). También establece valores de metadatos predeterminados para la fuente y el tipo de evento.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Es una instancia de Google SecOps.
  • Un host de Windows 2016 o posterior, o un host de Linux con systemd.
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos de firewall estén abiertos según los requisitos del agente de Bindplane.
  • Acceso con privilegios a la consola de administración o al dispositivo de Ansible AWX con permisos de administrador

Obtén el archivo de autenticación de transferencia de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración del SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.

Obtén el ID de cliente de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a SIEM Settings > Profile.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instala el agente de BindPlane

Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.

Instalación en Windows

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación en Linux

  1. Abre una terminal con privilegios de raíz o sudo.
  2. Ejecuta el siguiente comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalación adicionales

Para obtener más opciones de instalación, consulta la guía de instalación.

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:
    • Ubica el archivo config.yaml. Por lo general, se encuentra en el directorio /opt/observiq-otel-collector/ en Linux o en el directorio C:Program FilesobservIQ OpenTelemetry Collector en Windows.
    • Abre el archivo con un editor de texto (por ejemplo, nano, vi o Bloc de notas).
  2. Edita el archivo config.yaml de la siguiente manera:

    receivers:
    udplog:
        # Using high port to avoid requiring root privileges
        listen_address: "0.0.0.0:514"
    
    exporters:
    chronicle/awx:
        endpoint: malachiteingestion-pa.googleapis.com
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        customer_id: YOUR_CUSTOMER_ID
        log_type: 'ANSIBLE_AWX'
        raw_log_field: body
    
    service:
    pipelines:
        logs/awx:
        receivers:
            - udplog
        exporters:
            - chronicle/awx
    
    • Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
    • Reemplaza YOUR_CUSTOMER_ID por el ID de cliente real.
    • Actualiza /path/to/ingestion-authentication-file.json a la ruta de acceso en la que se guardó el archivo de autenticación en el paso 1.

Reinicia el agente de Bindplane para aplicar los cambios

  • Para reiniciar el agente de BindPlane en Linux, ejecuta el siguiente comando:

    sudo systemctl restart observiq-otel-collector
    
  • Para reiniciar el agente de Bindplane en Windows, puedes usar la consola de Servicios o ingresar el siguiente comando:

    sc stop observiq-otel-collector && sc start observiq-otel-collector
    

Configura el registro externo en Ansible AWX

  1. Accede a la consola de administración de Ansible AWX.
  2. Ve a Configuración en la barra de navegación.
  3. Selecciona Configuración de registro en las opciones de Sistema.
  4. Proporciona los siguientes detalles de configuración:
    • Logging Aggregator: Ingresa la dirección IP del agente de BindPlane.
    • Puerto del agregador de registros: Ingresa el número de puerto del agente de BindPlane (por ejemplo, 514).
    • Tipo de agregador de registros: Selecciona Otro en la lista.
    • Nombre de usuario del agregador de registros: Déjalo en blanco (no es necesario para syslog).
    • Contraseña o token del agregador de registros: Déjalo en blanco (no es necesario para syslog).
    • Protocolo del agregador de registros: Selecciona UDP (recomendado para syslog).
    • Logging Aggregator Level Threshold: Selecciona Info o tu nivel de registro preferido.
    • Habilita el registro externo: Haz clic en el botón de activación para ACTIVAR.
    • Registradores para enviar datos al agregador de registros: Selecciona los tipos de registros pertinentes:
      • awx: Registros genéricos del servidor
      • activity_stream: Registro de cambios en objetos de AWX
      • job_events: Datos del módulo de devolución de llamada de Ansible
      • system_tracking: Datos de configuración y hechos del sistema
    • Log System Tracking Facts Individually: Desactiva la opción OFF (predeterminada).
  5. Haz clic en Guardar para aplicar la configuración.
  6. Opcional: Haz clic en Probar para verificar la conexión con el agente de BindPlane.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
agent.ephemeral_id observer.labels.value Es el valor de agent.ephemeral_id del registro sin procesar.
agent.hostname observer.hostname Es el valor de agent.hostname del registro sin procesar.
agent.id observer.asset_id Es la concatenación de "filebeat:" y el valor de agent.id del registro sin procesar.
agent.name observer.user.userid Es el valor de agent.name del registro sin procesar.
agent.type observer.application Es el valor de agent.type del registro sin procesar.
agent.version observer.platform_version Es el valor de agent.version del registro sin procesar.
cloud.availability_zone principal.resource.attribute.labels.value Es el valor de cloud.availability_zone del registro sin procesar.
cloud.instance.id principal.resource.product_object_id Es el valor de cloud.instance.id del registro sin procesar.
cloud.instance.name principal.resource.name Es el valor de cloud.instance.name del registro sin procesar.
cloud.machine.type principal.resource.attribute.labels.value Es el valor de cloud.machine.type del registro sin procesar.
cloud.provider principal.resource.attribute.labels.value Es el valor de cloud.provider del registro sin procesar.
event1 metadata.description Es el valor de event1 del registro sin procesar. Si event1 no está presente, se usa el valor de message.
event1_data.host principal.hostname Es el valor de event1_data.host del registro sin procesar.
event1_data.remote_addr principal.ip Es la dirección IP que se extrajo de event1_data.remote_addr con un patrón de Grok.
event1_data.task security_result.detection_fields.value Es el valor de event1_data.task del registro sin procesar.
event1_data.task_path principal.process.file.full_path Es el valor de event1_data.task_path del registro sin procesar.
event1_data.task_uuid security_result.detection_fields.value Es el valor de event1_data.task_uuid del registro sin procesar.
event1_data.uuid metadata.product_log_id Es el valor de event1_data.uuid del registro sin procesar.
event1_display security_result.description Es el valor de event1_display del registro sin procesar.
host principal.hostname Es el valor de host del registro sin procesar, que se usa si no están presentes event1_data.host y host_name.
host.architecture target.asset.hardware.cpu_platform Es el valor de host.architecture del registro sin procesar.
host.fqdn target.administrative_domain Es el valor de host.fqdn del registro sin procesar.
host.hostname target.hostname Es el valor de host.hostname del registro sin procesar.
host.id target.asset.asset_id Es la concatenación de "Host Id: " y el valor de host.id del registro sin procesar.
host.ip target.asset.ip Son los valores de host.ip del registro sin procesar.
host.mac target.mac Son los valores de host.mac del registro sin procesar.
host.os.codename target.asset.attribute.labels.value Es el valor de host.os.codename del registro sin procesar.
host.os.kernel target.platform_patch_level Es el valor de host.os.kernel del registro sin procesar.
host.os.name target.asset.attribute.labels.value Es el valor de host.os.name del registro sin procesar.
host.os.platform target.platform Se establece en "LINUX" si host.os.platform es "debian".
host.os.version target.platform_version Es el valor de host.os.version del registro sin procesar.
host_name principal.hostname Es el valor de host_name del registro sin procesar, que se usa si no está presente event1_data.host.
input.type network.ip_protocol Se establece en "TCP" si input.type es "tcp".
level security_result.severity Se asigna según el valor de level: "DEBUG", "INFO" y "AUDIT" se asignan a "INFORMATIONAL"; "ERROR" se asigna a "ERROR"; "WARNING" se asigna a "MEDIUM".
level security_result.severity_details Es el valor de level del registro sin procesar.
log.source.address principal.ip Es la dirección IP que se extrajo de log.source.address con un patrón de Grok.
log.source.address principal.port Es el puerto que se extrae de log.source.address con un patrón de Grok.
logger_name intermediary.application Es el valor de logger_name del registro sin procesar.
message metadata.description Es el valor de message del registro sin procesar, que se usa como resguardo si no está presente event1.
parent_uuid security_result.detection_fields.value Es el valor de parent_uuid del registro sin procesar.
timestamp metadata.event_timestamp Es el valor de timestamp del registro sin procesar, analizado con el filtro de fecha. Se determina según la lógica: "NETWORK_CONNECTION" si existen log.source.address y host.ip en el JSON; "STATUS_UPDATE" si existen principal_hostname o event1_data.remote_addr; "GENERIC_EVENT" en cualquier otro caso. Está codificado como "ANSIBLE_AWX". Está codificado como "ANSIBLE_AWX". Está codificado como "ANSIBLE_AWX". Se codificó de forma rígida como "ephemeral_id". Se codifica de forma rígida como "machine_type", "provider" o "availability_zone" según el campo que se asigne. Está codificado como "VIRTUAL_MACHINE". Se codifica de forma rígida como "parent_uuid", "task" o "task_uuid", según el campo que se esté asignando. Se codifica de forma rígida como "codename" o "os_name" según el campo que se asigne.

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