Recoger registros de McAfee Web Gateway

Disponible en:

En este documento se explica cómo ingerir los registros de McAfee Web Gateway en Google Security Operations mediante un agente de Bindplane. El analizador extrae campos de los registros en formatos SYSLOG + KV (CEF), JSON y sin formato. Usa filtros grok y CSV para analizar diferentes estructuras de registro y normaliza los nombres de los campos. A continuación, asigna los campos extraídos al esquema del modelo de datos unificado (UDM), gestionando varios casos límite e incoherencias de datos para crear un resultado unificado.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Windows 2016 o una versión posterior, o un host Linux con systemd
  • Si se ejecuta a través de un proxy, los puertos del cortafuegos están abiertos
  • Acceso privilegiado a McAfee Web Gateway

Obtener el archivo de autenticación de ingestión de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.

Obtener el ID de cliente de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instalar el agente de Bindplane

Instalación de ventanas

  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 de Linux

  1. Abre un terminal con privilegios de superusuario 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 ver más opciones de instalación, consulta la guía de instalación.

Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:
    • Busca el archivo config.yaml. Normalmente, se encuentra en el directorio /etc/bindplane-agent/ en Linux o en el directorio de instalación 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:
            # Replace the port and IP address as required
            listen_address: `0.0.0.0:514`
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: MCAFEE_WEBPROXY
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.

  4. Sustituye <customer_id> por el ID de cliente real.

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta en la que se guardó el archivo de autenticación en la sección Obtener el archivo de autenticación de ingestión de Google SecOps.

Reinicia el agente de Bindplane para aplicar los cambios

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

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar Syslog en McAfee Web Gateway

  1. Inicia sesión en la interfaz de usuario web de McAfee Web Gateway.
  2. Ve a Política > Conjuntos de reglas.
  3. Haga clic en Gestor de registros, expanda el conjunto de reglas Predeterminado y seleccione el conjunto de reglas anidado Syslog de CEF.
  4. Habilita la regla Enviar a Syslog.
  5. Haz clic en Guardar cambios.
  6. Vaya a Configuración > Dispositivos > Gestor de archivos de registro > Ajustes.
  7. Selecciona Escribir registro de auditoría en syslog.
  8. Vaya a Configuración > Editor de archivos.
  9. Selecciona rsyslog.conf en el árbol de archivos.
  10. Edita el archivo de la siguiente manera:
    • Busca la línea (o una similar): *.info;mail.none;authpriv.none;cron.none /var/log/messages.
    • Añade un demonio en esta línea e inserta un guion (-) antes de la información de la ruta: *.info;daemon.!=info;mail.none;authpriv.none;cron.none -/var/log/messages
  11. Añade una línea al final del archivo para enviar los mensajes de información a la dirección IP del agente de Bindplane.

    • Para syslog a través de UDP:

      daemon.info;auth.=info @<bindplane-server-ip>:<bindplane-port>
      
    • Para syslog a través de TCP:

      daemon.info;auth.=info @@<bindplane-server-ip>:<bindplane-port>
      

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
application_name principal.application Se asigna directamente desde el campo application_name en formato de clave-valor o user_agent_product en formato JSON.
auth_user principal.user.userid Se asigna directamente desde el campo auth_user en formato de clave-valor.
block_reason security_result.summary Se asigna directamente desde el campo block_reason en los formatos JSON y CSV JSON, o _block_reason en formato sin formato, o block_reason en formato de valor-clave.
block_res security_result.action Asignado desde el campo block_res en formato de valor-clave. Si block_res es DENIED o contiene Block, la acción es BLOCK. Si block_res es 0 o contiene Allow, la acción es ALLOW. Los valores especiales como 50, 51, 52, 53, 58, 59, 81, 80, 82, 83, 84, 110 y 111 se usan para determinar security_result.category.
bytes_from_client network.sent_bytes Se asigna directamente desde el campo bytes_from_client en formato de clave-valor, sr_bytes en formato sin formato o client_to_server_bytes en formatos JSON y JSON CSV.
bytes_to_client network.received_bytes Se asigna directamente desde el campo bytes_to_client en formato de clave-valor, rs_bytes en formato sin formato o server_to_client_bytes en formatos JSON y JSON CSV.
categories security_result.category_details Se asigna directamente desde el campo categories en formato de clave-valor, _category en formato sin formato o category en formatos JSON y JSON CSV.
client_ip principal.ip, intermediary.ip Se asigna directamente desde el campo client_ip en formato JSON.
clientIP principal.ip Se asigna directamente desde el campo clientIP en formato CEF.
csmethod network.http.method Se asigna directamente desde el campo csmethod en formato sin procesar.
day metadata.event_timestamp Parte de la marca de tiempo, extraída del campo time_stamp en formato de valor-clave.
destination_ip target.ip Se asigna directamente desde el campo destination_ip en formato JSON.
destination_port target.port Se asigna directamente desde el campo destination_port en formato JSON.
domain target.hostname, target.url Se asigna directamente desde el campo domain en formato sin procesar. Se usa para crear el target.url si uri está presente.
header intermediary.hostname Se extrae del principio del mensaje de registro. Se usa para extraer intermediary.hostname.
host target.hostname Se asigna directamente desde el campo host en formato de clave-valor.
hostname principal.hostname Se asigna directamente desde el campo hostname en formato JSON.
hour metadata.event_timestamp Parte de la marca de tiempo, extraída del campo time_stamp en formato de valor-clave.
http_action network.http.method Se asigna directamente desde el campo http_action en formato JSON.
http_status_code network.http.response_code Se asigna directamente desde el campo http_status_code en los formatos JSON y CSV JSON, o status_code en los formatos sin formato y clave-valor.
kv_entry.application_name principal.application Se asigna directamente desde el campo application_name de la entrada de clave-valor.
kv_entry.auth_user principal.user.userid Se asigna directamente desde el campo auth_user de la entrada de clave-valor.
kv_entry.block_reason security_result.summary Se asigna directamente desde el campo block_reason de la entrada de clave-valor.
kv_entry.block_res security_result.action, security_result.category Se asigna desde el campo block_res de la entrada de valor-clave. La lógica para determinar la acción y la categoría es la misma que para el campo block_res de nivel superior.
kv_entry.bytes_from_client network.sent_bytes Se asigna directamente desde el campo bytes_from_client de la entrada de clave-valor.
kv_entry.bytes_to_client network.received_bytes Se asigna directamente desde el campo bytes_to_client de la entrada de clave-valor.
kv_entry.categories security_result.category_details Se asigna directamente desde el campo categories de la entrada de clave-valor.
kv_entry.host target.hostname Se asigna directamente desde el campo host de la entrada de clave-valor.
kv_entry.method network.http.method Se asigna directamente desde el campo method de la entrada de clave-valor.
kv_entry.rep_level security_result.severity_details Se asigna directamente desde el campo rep_level de la entrada de clave-valor.
kv_entry.server_ip target.ip Se asigna directamente desde el campo server_ip de la entrada de clave-valor.
kv_entry.status_code network.http.response_code Se asigna directamente desde el campo status_code de la entrada de clave-valor.
kv_entry.time_stamp metadata.event_timestamp Se asigna directamente desde el campo time_stamp de la entrada de clave-valor.
kv_entry.url target.url Se asigna directamente desde el campo url de la entrada de clave-valor.
kv_entry.url_port target.port Se asigna directamente desde el campo url_port de la entrada de clave-valor.
kv_entry.user_agent network.http.parsed_user_agent Se asigna directamente desde el campo user_agent de la entrada de clave-valor y, a continuación, se analiza en un objeto estructurado.
last_rule security_result.rule_name Se asigna directamente desde el campo last_rule en formato JSON.
loc principal.location.country_or_region Se asigna directamente desde el campo loc extraído de tgt_ip_or_location.
location principal.location.country_or_region Se asigna directamente desde el campo location en formato JSON.
log.file.path principal.process.file.full_path Se asigna directamente desde el campo log.file.path en formato JSON.
message Varias El mensaje de registro sin procesar. Se analiza de forma diferente en función de su formato (sin formato, JSON, clave-valor o CEF).
method network.http.method Se asigna directamente desde el campo method en formatos de clave-valor y sin formato, o http_action en formato JSON, o se deriva de datos CEF. Si el valor es GET, POST, HEAD, OPTIONS, PUT o CONNECT, metadata.event_type se define como NETWORK_HTTP. Si el valor es - o CERTVERIFY, metadata.event_type se define como NETWORK_CONNECTION.
mins metadata.event_timestamp Parte de la marca de tiempo, extraída del campo time_stamp en formato de valor-clave.
month metadata.event_timestamp Parte de la marca de tiempo, extraída del campo time_stamp en formato de clave-valor o del campo rt en formato CEF.
monthday metadata.event_timestamp Parte de la marca de tiempo, extraída del principio del mensaje de registro.
protocol network.application_protocol Se asigna directamente desde el campo protocol en formato sin procesar o uri_scheme en formato JSON, o se deriva del campo url en formato de clave-valor.
query target.url Se asigna directamente desde el campo query en formato sin procesar. Se añade al campo url.
rep_level security_result.severity_details Se asigna directamente desde el campo rep_level en formato de clave-valor, reputation en formato JSON o _risk en formato sin formato. Se usa para determinar security_result.severity.
request target.url Se asigna directamente desde el campo request en formato CEF.
requestClientApplication network.http.user_agent Se asigna directamente desde el campo requestClientApplication en formato CEF.
requestContext network.http.referral_url Se asigna directamente desde el campo requestContext en formato CEF.
requestMethod network.http.method Se asigna directamente desde el campo requestMethod en formato CEF.
requested_host target.url Se asigna directamente desde el campo requested_host en formato JSON. Se usa para crear el target.url si también está presente requested_path.
requested_path target.url Se asigna directamente desde el campo requested_path en formato JSON. Se ha añadido a requested_host para formar target.url.
request_timestamp metadata.event_timestamp Se asigna directamente desde el campo request_timestamp en formato JSON.
result security_result.action, security_result.category Se asigna directamente desde el campo result en los formatos JSON y CSV JSON, o block_res en el formato de clave-valor. Se usa para determinar security_result.action y security_result.category.
rt metadata.event_timestamp Se asigna directamente desde el campo rt en formato CEF.
secs metadata.event_timestamp Parte de la marca de tiempo, extraída del campo time_stamp en formato de valor-clave.
server_ip target.ip Se asigna directamente desde el campo server_ip en formato de clave-valor.
source_ip principal.ip Se asigna directamente desde el campo source_ip en los formatos JSON, JSON CSV, sin formato y KV, o src en formato CEF, o src_ip en formato sin formato.
src principal.ip Se asigna directamente desde el campo src en formato CEF.
status_code network.http.response_code Se asigna directamente desde el campo status_code en formato sin procesar.
summary security_result.summary Se asigna directamente desde el campo summary en formato CSV o block_reason en formato JSON.
system principal.platform Se asigna directamente desde el campo system en formato JSON. Se ha convertido a mayúsculas.
target_ip target.ip Se asigna directamente desde el campo target_ip en formato sin procesar o dst en formato CEF.
tgtport target.port Se asigna directamente desde el campo tgtport en formato sin procesar.
time metadata.event_timestamp Parte de la marca de tiempo, extraída del principio del mensaje de registro, del campo rt en formato CEF o del campo time_stamp en formato KV.
timestamp metadata.event_timestamp Se asigna directamente desde el campo @timestamp en formato JSON.
timezone metadata.event_timestamp Parte de la marca de tiempo, extraída del campo time_stamp en formato de valor-clave.
uri target.url Se asigna directamente desde el campo uri en formato sin procesar. Se usa para construir el target.url.
uri_scheme network.application_protocol Se asigna directamente desde el campo uri_scheme en formato JSON. Se ha convertido a mayúsculas.
url target.url Se asigna directamente desde el campo url en los formatos sin procesar, KV y JSON, o se crea a partir de domain, uri y query en formato sin procesar, o bien a partir de requested_host y requested_path en formato JSON, o de request en formato CEF.
url_port target.port Se asigna directamente desde el campo url_port en formato de clave-valor.
user principal.user.userid Se asigna directamente desde el campo user en formato JSON, username en formato JSON, auth_user en formato de clave-valor o suser en formato sin procesar.
user_agent network.http.parsed_user_agent Se asigna directamente desde el campo user_agent en los formatos sin procesar y clave-valor, o user_agent_comment en formato JSON, o requestClientApplication en formato CEF, o se construye a partir de agent.type y agent.version en formato JSON. Analizado en un objeto estructurado.
user_agent_comment network.http.parsed_user_agent Se asigna directamente desde el campo user_agent_comment en formato JSON.
user_agent_product principal.application Se asigna directamente desde el campo user_agent_product en formato JSON.
username principal.user.userid Se asigna directamente desde el campo username en formato JSON.
year metadata.event_timestamp Parte de la marca de tiempo, extraída del campo time_stamp en formato de clave-valor o del campo rt en formato CEF.
N/A metadata.event_type El analizador lo determina en función del campo method. Puede ser NETWORK_HTTP, NETWORK_CONNECTION, GENERIC_EVENT o STATUS_UPDATE.
N/A metadata.log_type Valor fijo establecido en el código fuente MCAFEE_WEBPROXY.
N/A metadata.product_name Valor fijo establecido en el código fuente MCAFEE_WEBPROXY.
N/A metadata.vendor_name Valor fijo establecido en el código fuente MCAFEE.
N/A network.direction Valor fijo establecido en el código fuente OUTBOUND.
N/A security_result.action El analizador lo determina en función de los campos block_reason o result. Puede ser ALLOW o BLOCK.
N/A security_result.category El analizador lo determina en función del campo result. Puede ser NETWORK_CATEGORIZED_CONTENT, NETWORK_DENIAL_OF_SERVICE, MAIL_SPAM, AUTH_VIOLATION, SOFTWARE_MALICIOUS, NETWORK_SUSPICIOUS o NETWORK_MALICIOUS.
N/A security_result.severity El analizador lo determina en función del campo risk. Puede ser LOW, MEDIUM o HIGH.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.