Recoger registros de McAfee Web Gateway
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
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recogida.
- 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
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- 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
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el siguiente comando:
msiexec /i `https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi` /quiet
Instalación de Linux
- Abre un terminal con privilegios de superusuario o sudo.
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
- 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).
- Busca el archivo
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
Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.
Sustituye
<customer_id>
por el ID de cliente real.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
- Inicia sesión en la interfaz de usuario web de McAfee Web Gateway.
- Ve a Política > Conjuntos de reglas.
- Haga clic en Gestor de registros, expanda el conjunto de reglas Predeterminado y seleccione el conjunto de reglas anidado Syslog de CEF.
- Habilita la regla Enviar a Syslog.
- Haz clic en Guardar cambios.
- Vaya a Configuración > Dispositivos > Gestor de archivos de registro > Ajustes.
- Selecciona Escribir registro de auditoría en syslog.
- Vaya a Configuración > Editor de archivos.
- Selecciona rsyslog.conf en el árbol de archivos.
- 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
- Busca la línea (o una similar):
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.