Recopila registros de McAfee Web Gateway

Compatible con:

En este documento, se explica cómo transferir los registros de McAfee Web Gateway a Google Security Operations con un agente de Bindplane. El analizador extrae campos de los registros en formatos SYSLOG + KV (CEF), JSON y sin procesar. Utiliza filtros grok y csv para analizar diferentes estructuras de registro y normaliza los nombres de los campos. Luego, asigna los campos extraídos al esquema del Modelo de datos unificado (UDM), controlando varios casos extremos y las incoherencias de los datos para crear un resultado unificado.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Host de Windows 2016 o posterior, o de Linux con systemd
  • Si se ejecuta detrás de un proxy, los puertos de firewall están abiertos.
  • Acceso con privilegios a McAfee Web Gateway

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

  1. Accede a la consola de Google SecOps.
  2. Ve a SIEM Settings > Collection Agents.
  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

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 /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. Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.

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

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Cómo obtener el archivo de autenticación de la transferencia de datos 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 de Servicios o ingresar el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configura Syslog en McAfee Web Gateway

  1. Accede a la IU web de McAfee Web Gateway.
  2. Ve a Política > Conjuntos de reglas.
  3. Haz clic en Log Handler, expande el conjunto de reglas Default y selecciona el conjunto de reglas anidado CEF Syslog.
  4. Habilita la regla Send to Syslog.
  5. Haz clic en Guardar cambios.
  6. Ve a Configuration > Appliances > Log File Manager > Settings.
  7. Selecciona Escribir registro de auditoría en syslog.
  8. Ve a Configuration > File Editor.
  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.
    • Agrega un daemon en esta línea e inserta un guion antes de la información de la ruta de acceso: *.info;daemon.!=info;mail.none;authpriv.none;cron.none -/var/log/messages
  11. Agrega una línea nueva en la parte inferior 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, haz lo siguiente:

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

      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 KV o user_agent_product en formato JSON.
auth_user principal.user.userid Se asigna directamente desde el campo auth_user en formato de KV.
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 procesar, o block_reason en formato KV.
block_res security_result.action Se asigna desde el campo block_res en formato de par clave-valor. 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 KV, o sr_bytes en formato sin procesar, o client_to_server_bytes en formatos JSON y JSON de CSV.
bytes_to_client network.received_bytes Se asigna directamente desde el campo bytes_to_client en formato de KV, o rs_bytes en formato sin procesar, o server_to_client_bytes en formatos JSON y JSON de CSV.
categories security_result.category_details Se asigna directamente desde el campo categories en formato de KV, o _category en formato sin procesar, o category en formatos JSON y JSON de 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 Es parte de la marca de tiempo, extraída del campo time_stamp en formato KV.
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 construir 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 KV.
hostname principal.hostname Se asigna directamente desde el campo hostname en formato JSON.
hour metadata.event_timestamp Es parte de la marca de tiempo, extraída del campo time_stamp en formato KV.
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 procesar y KV.
kv_entry.application_name principal.application Se asigna directamente desde el campo application_name dentro de la entrada de KV.
kv_entry.auth_user principal.user.userid Se asigna directamente desde el campo auth_user dentro de la entrada de KV.
kv_entry.block_reason security_result.summary Se asigna directamente desde el campo block_reason dentro de la entrada de KV.
kv_entry.block_res security_result.action, security_result.category Se asigna desde el campo block_res dentro de la entrada de KV. 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 dentro de la entrada de KV.
kv_entry.bytes_to_client network.received_bytes Se asigna directamente desde el campo bytes_to_client dentro de la entrada de KV.
kv_entry.categories security_result.category_details Se asigna directamente desde el campo categories dentro de la entrada de KV.
kv_entry.host target.hostname Se asigna directamente desde el campo host dentro de la entrada de KV.
kv_entry.method network.http.method Se asigna directamente desde el campo method dentro de la entrada de KV.
kv_entry.rep_level security_result.severity_details Se asigna directamente desde el campo rep_level dentro de la entrada de KV.
kv_entry.server_ip target.ip Se asigna directamente desde el campo server_ip dentro de la entrada de KV.
kv_entry.status_code network.http.response_code Se asigna directamente desde el campo status_code dentro de la entrada de KV.
kv_entry.time_stamp metadata.event_timestamp Se asigna directamente desde el campo time_stamp dentro de la entrada de KV.
kv_entry.url target.url Se asigna directamente desde el campo url dentro de la entrada de KV.
kv_entry.url_port target.port Se asigna directamente desde el campo url_port dentro de la entrada de KV.
kv_entry.user_agent network.http.parsed_user_agent Se asigna directamente desde el campo user_agent dentro de la entrada de KV y, luego, 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 Varios Es el mensaje de registro sin procesar. Se analiza de manera diferente según su formato (sin procesar, JSON, KV, CEF).
method network.http.method Se asigna directamente desde el campo method en formatos KV y sin procesar, o http_action en formato JSON, o se deriva de los datos de CEF. Si el valor es uno de GET, POST, HEAD, OPTIONS, PUT o CONNECT, metadata.event_type se establece en NETWORK_HTTP. Si el valor es - o CERTVERIFY, el metadata.event_type se establece en NETWORK_CONNECTION.
mins metadata.event_timestamp Es parte de la marca de tiempo, extraída del campo time_stamp en formato KV.
month metadata.event_timestamp Es parte de la marca de tiempo, extraída del campo time_stamp en formato KV o del campo rt en formato CEF.
monthday metadata.event_timestamp Es parte de la marca de tiempo, extraída del comienzo 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 KV.
query target.url Se asigna directamente desde el campo query en formato sin procesar. Se agrega al campo url.
rep_level security_result.severity_details Se asigna directamente desde el campo rep_level en formato KV, reputation en formato JSON o _risk en formato sin procesar. 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 construir el target.url si también está presente el requested_path.
requested_path target.url Se asigna directamente desde el campo requested_path en formato JSON. Se agrega a requested_host para formar el 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 KV. 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 Es parte de la marca de tiempo, extraída del campo time_stamp en formato KV.
server_ip target.ip Se asigna directamente desde el campo server_ip en formato de KV.
source_ip principal.ip Se asigna directamente desde el campo source_ip en formatos JSON, CSV JSON, sin procesar y KV, o src en formato CEF, o src_ip en formato sin procesar.
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 convirtió 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 Es parte de la marca de tiempo, extraída del comienzo 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 Es parte de la marca de tiempo, extraída del campo time_stamp en formato KV.
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 convirtió a mayúsculas.
url target.url Se asigna directamente desde el campo url en formatos sin procesar, KV y JSON, o se construye a partir de domain, uri y query en formato sin procesar, o requested_host y requested_path en formato JSON, o request en formato CEF.
url_port target.port Se asigna directamente desde el campo url_port en formato de KV.
user principal.user.userid Se asigna directamente desde el campo user en formato JSON, o username en formato JSON, o auth_user en formato KV, o suser en formato sin procesar.
user_agent network.http.parsed_user_agent Se asigna directamente desde el campo user_agent en formatos sin procesar y de KV, 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. Se analizó 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 Es parte de la marca de tiempo, extraída del campo time_stamp en formato KV 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 Se codificó como MCAFEE_WEBPROXY.
N/A metadata.product_name Se codificó como MCAFEE_WEBPROXY.
N/A metadata.vendor_name Se codificó como MCAFEE.
N/A network.direction Se codificó como OUTBOUND.
N/A security_result.action El analizador lo determina según 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? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.