Recopila registros de Red Hat del sistema Nix
En este documento, se explica cómo transferir registros de RHEL Server (sistema Unix) a Google Security Operations con Bindplane. El analizador ingiere registros con formato syslog y JSON, inicializa una amplia variedad de campos del UDM en cadenas vacías, realiza varias sustituciones de cadenas en el campo message
y, luego, intenta analizar el mensaje como JSON. Si falla el análisis de JSON, se usan patrones de Grok para extraer campos según el contenido de message
y event_details.original
, y se asignan los campos extraídos al UDM según el tipo de evento y varias verificaciones condicionales, lo que permite controlar diferentes formatos y estructuras de registros de varios procesos y servicios del sistema Unix.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- Si se ejecuta detrás de un proxy, los puertos de firewall están abiertos.
- Acceso privilegiado a un servidor de RHEL
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Collection Agents.
- 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
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Profile.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
Instalación en Linux
- Abre una terminal con privilegios de raíz 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 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
- Accede al archivo de configuración:
- Ubica el archivo
config.yaml
. Por lo general, se encuentra en el directorio/etc/bindplane-agent/
en Linux. - Abre el archivo con un editor de texto (por ejemplo,
nano
ovi
).
- Ubica el archivo
Edita el archivo
config.yaml
de la siguiente manera:receivers: filelog/linux: include: - /var/log/messages - /var/log/lastlog - /var/log/btmp - /var/log/wtmp - /var/log/secure - /var/log/cron - /var/log/maillog - /var/log/boot start_at: end poll_interval: 5s exporters: chronicle/linux: # 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 log_type: 'NIX_SYSTEM' override_log_type: false raw_log_field: body service: pipelines: logs/linux: receivers: - filelog/linux exporters: [chronicle/linux] ```
- Reemplaza
<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 la sección Cómo obtener el archivo de autenticación de la transferencia de datos de Google SecOps.Inicia el agente de Bindplane y aplica los cambios
Inicia el agente de Bindplane:
sudo systemctl start bindplane-agent
Habilita el servicio de recopilador de observIQ otel:
systemctl enable --now bindplane-agent
Si es necesario, reinicia el agente de Bindplane:
sudo systemctl restart bindplane-agent
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
AccessControlRuleAction |
security_result.action |
Si AccessControlRuleAction es Allow , configúralo como ALLOW . Si AccessControlRuleAction es Block , configúralo como BLOCK . |
ACPolicy |
security_result.rule_labels |
Clave: ACPolicy , valor: ACPolicy |
AccessControlRuleName |
security_result.rule_name |
Asignación directa |
acct |
event.idm.read_only_udm.target.user.userid |
Asignación directa después de quitar las comillas y las barras invertidas. |
addr |
event.idm.read_only_udm.target.ip , event.idm.read_only_udm.target.asset.ip |
Asignación directa si no está vacío, ? o UNKNOWN . |
ApplicationProtocol |
event.idm.read_only_udm.network.application_protocol |
Asignación directa |
auid |
event.idm.read_only_udm.additional.fields |
Clave: auid , valor: auid |
comm |
event.idm.read_only_udm.target.process.command_line |
Asignación directa |
command |
event.idm.read_only_udm.target.process.command_line |
Asignación directa después de quitar los espacios en blanco iniciales o finales. |
Computer |
event.idm.read_only_udm.principal.hostname , event.idm.read_only_udm.principal.asset.hostname |
Asignación directa Si está vacío, usa HostName . |
ConnectionID |
security_result.detection_fields |
Clave: Connection ID , valor: ConnectionID |
cwd |
event.idm.read_only_udm.target.process.file.full_path |
Asignación directa después de quitar las comillas. |
data |
message |
Se usa en patrones de Grok. |
desc |
security_result.description |
Asignación directa |
description |
event.idm.read_only_udm.metadata.description , security_result.description |
Asignación directa |
descript |
security_result.description |
Asignación directa después de quitar los hashes. |
DeviceUUID |
event.idm.read_only_udm.metadata.product_log_id |
Asignación directa |
DNSQuery |
event.idm.read_only_udm.additional.fields |
Clave: DNSQuery , valor: DNSQuery |
DNSRecordType |
event.idm.read_only_udm.additional.fields |
Clave: DNSRecordType , valor: DNSRecordType |
DNSResponseType |
event.idm.read_only_udm.additional.fields |
Clave: DNSResponseType , valor: DNSResponseType |
DNS_TTL |
event.idm.read_only_udm.additional.fields |
Clave: DNS_TTL , valor: DNS_TTL |
DstIP |
event.idm.read_only_udm.target.ip , event.idm.read_only_udm.target.asset.ip |
Asignación directa |
DstPort |
event.idm.read_only_udm.target.port |
Es el mapeo directo, convertido a número entero. |
dvc |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip , event.idm.read_only_udm.principal.hostname , event.idm.read_only_udm.principal.asset.hostname , event.idm.read_only_udm.intermediary.ip , event.idm.read_only_udm.target.ip , event.idm.read_only_udm.target.asset.ip , event.idm.read_only_udm.target.hostname , event.idm.read_only_udm.target.asset.hostname |
Si es una IP válida, se asigna a la IP principal o de destino. Es el nombre de host, asignado al nombre de host principal o de destino. También se usa para la IP intermedia si es una IP válida. |
EgressInterface |
event.idm.read_only_udm.principal.asset.attribute.labels |
Clave: EgressInterface , valor: EgressInterface |
EgressVRF |
event.idm.read_only_udm.principal.asset.attribute.labels |
Clave: EgressVRF , valor: EgressVRF |
EgressZone |
event.idm.read_only_udm.target.location.name |
Asignación directa |
eventType |
event.idm.read_only_udm.metadata.product_event_type , event.idm.read_only_udm.target.application |
Asignación directa Para SERVICE_START y SERVICE_STOP , se asigna a target.application y, luego, se borra. |
EventTime |
@timestamp |
Se analiza como marca de tiempo. |
exe |
event.idm.read_only_udm.target.process.command_line |
Asignación directa después de quitar las comillas y las barras invertidas. |
extended_description |
event.idm.read_only_udm.metadata.description |
Asignación directa después de quitar guiones y comillas. |
Facility |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clave: Facility , valor: Facility |
filepath |
event.idm.read_only_udm.principal.process.file.full_path |
Asignación directa |
file_path |
event.idm.read_only_udm.target.file.full_path |
Asignación directa |
file_path_value |
event.idm.read_only_udm.target.file.full_path |
Asignación directa |
FirstPacketSecond |
security_result.detection_fields |
Clave: FirstPacketSecond , valor: FirstPacketSecond |
from |
event.idm.read_only_udm.network.email.from |
Asignación directa después de quitar los corchetes angulares. |
generic_ip |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Se realiza un mapeo directo si hay una IP válida y no es A256: . |
gid |
event.idm.read_only_udm.target.user.group_identifiers |
Asignación directa |
grp |
event.idm.read_only_udm.target.group.group_display_name |
Asignación directa después de quitar las comillas y las barras invertidas. |
hashing_algo |
security_result.summary |
Asignación directa |
home |
event.idm.read_only_udm.target.file.full_path |
Asignación directa |
HostName |
Computer |
Se usa si Computer está vacío. |
HostIP |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
La parte de HostIP anterior a % se extrae y se asigna como validated_ip . |
hostname |
event.idm.read_only_udm.target.hostname , event.idm.read_only_udm.target.asset.hostname , event.idm.read_only_udm.principal.hostname , event.idm.read_only_udm.principal.asset.hostname |
Es la asignación directa si no está vacío o es ? . |
host_name |
event.idm.read_only_udm.target.hostname , event.idm.read_only_udm.target.asset.hostname |
Asignación directa |
InitiatorBytes |
event.idm.read_only_udm.network.sent_bytes |
Es una asignación directa, convertida en un número entero sin signo. |
InitiatorPackets |
event.idm.read_only_udm.network.sent_packets |
Es el mapeo directo, convertido a número entero. |
insertId |
event.idm.read_only_udm.metadata.product_log_id |
Asignación directa |
InstanceID |
security_result.detection_fields |
Clave: Instance ID , valor: InstanceID |
int_dvc |
event.idm.read_only_udm.intermediary.hostname |
Asignación directa |
ip |
event.idm.read_only_udm.target.ip , event.idm.read_only_udm.target.asset.ip , event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Asignación directa |
ip_protocol |
event.idm.read_only_udm.network.ip_protocol |
Asignación directa |
laddr |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Es la asignación directa si no está vacío o es ? . |
level |
security_result.severity |
Si es info , configúralo como INFORMATIONAL . |
log.syslog.facility.name |
event.idm.read_only_udm.target.application |
Asignación directa |
log.syslog.severity.name |
security_result.severity |
Si es Emergency , configúralo como HIGH . |
logName |
logname |
Asignación directa |
log_description |
security_result.description |
Asignación directa |
log_level |
security_result.severity |
Si es error , configúralo como ERROR . |
log_summary |
security_result.summary |
Asignación directa |
logger_name |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clave: logger_name , valor: logger_name |
log_type |
event.idm.read_only_udm.metadata.log_type |
Se codificó como NIX_SYSTEM . |
lport |
event.idm.read_only_udm.principal.port |
Es el mapeo directo, convertido a número entero. |
MG |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clave: MG , valor: MG |
method |
event.idm.read_only_udm.network.http.method |
Es el mapeo directo, convertido a mayúsculas. |
msg1 |
event.idm.read_only_udm.metadata.description , event.idm.read_only_udm.additional.fields , security_result.description |
Se analizan con patrones de Grok. Si event_type es GENERIC_EVENT , se asigna a description . |
msg2 |
event.idm.read_only_udm.network.received_bytes , security_result.summary |
Si contiene dígitos, se convierte en un número entero sin signo y se asigna a received_bytes . De lo contrario, se asigna a summary . |
NAPPolicy |
security_result.rule_labels |
Clave: NAPPolicy , valor: NAPPolicy |
name |
event.idm.read_only_udm.target.process.file.full_path |
Asignación directa después de quitar las comillas. |
outcome |
security_result.action |
Si es Succeeded o contiene success , configúralo como ALLOW . |
p_id |
event.idm.read_only_udm.target.process.pid |
Asignación directa |
pid |
event.idm.read_only_udm.target.process.pid , event.idm.read_only_udm.principal.process.pid |
Asignación directa |
principal_hostname |
event.idm.read_only_udm.principal.hostname , event.idm.read_only_udm.principal.asset.hostname |
Asignación directa |
principal_ip |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Asignación directa |
principal_present |
event.idm.read_only_udm.metadata.event_type |
Si true y has_target son true , establece event_type en NETWORK_UNCATEGORIZED . Si true o user_present es true , configura event_type como USER_UNCATEGORIZED . |
process |
event.idm.read_only_udm.target.application , event.idm.read_only_udm.metadata.product_event_type |
Asignación directa Si eventType está vacío, se usa como target.application . |
ProcessID |
event.idm.read_only_udm.principal.process.pid |
Es el mapeo directo, convertido en cadena. |
ProcessName |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clave: ProcessName , valor: ProcessName |
prod_eve_type |
event.idm.read_only_udm.metadata.product_event_type |
Asignación directa |
product_event_type |
event.idm.read_only_udm.metadata.product_event_type |
Asignación directa |
Protocol |
event.idm.read_only_udm.network.ip_protocol |
Si coincide con icmp , udp o tcp (sin distinguir mayúsculas de minúsculas), se asigna al valor en mayúsculas correspondiente. |
proto |
event.idm.read_only_udm.network.application_protocol |
Si es ssh o ssh2 , configúralo como SSH . |
pwd |
event.idm.read_only_udm.target.file.full_path |
Asignación directa |
reason |
security_result.summary , security_result.description |
Se usa en combinación con action y desc para crear security_result.description . También se asigna a security_result.summary . |
relayHostname |
event.idm.read_only_udm.intermediary.hostname |
Asignación directa |
relayIp |
event.idm.read_only_udm.intermediary.ip |
Asignación directa |
res |
security_result.summary |
Asignación directa |
resource.labels.instance_id |
event.idm.read_only_udm.target.resource.product_object_id |
Asignación directa |
resource.labels.project_id |
event.idm.read_only_udm.target.asset.attribute.cloud.project.id |
Asignación directa |
resource.labels.zone |
event.idm.read_only_udm.target.asset.attribute.cloud.availability_zone |
Asignación directa |
resource.type |
event.idm.read_only_udm.target.resource.resource_subtype |
Asignación directa |
response_code |
event.idm.read_only_udm.network.http.response_code |
Es el mapeo directo, convertido a número entero. |
ResponderBytes |
event.idm.read_only_udm.network.received_bytes |
Es una asignación directa, convertida en un número entero sin signo. |
ResponderPackets |
event.idm.read_only_udm.network.received_packets |
Es el mapeo directo, convertido a número entero. |
rhost |
event.idm.read_only_udm.additional.fields |
Clave: rhost , valor: rhost |
ruser |
srcUser |
Asignación directa |
sec_action |
security_result.action |
Se asigna según action o eventType . |
sec_summary |
security_result.summary |
Asignación directa |
security_action |
security_result.action |
Asignación directa |
sent_bytes |
event.idm.read_only_udm.network.sent_bytes |
Es una asignación directa, convertida en un número entero sin signo. |
ses |
event.idm.read_only_udm.network.session_id , event.idm.read_only_udm.network.session_duration |
Si es numérico, se analiza como marca de tiempo de UNIX y se asigna a session_duration . De lo contrario, se asigna a session_id . |
SeverityLevel |
security_result.severity |
Se asigna a diferentes niveles de gravedad según el valor (notice/info -> INFORMATIONAL, warn -> HIGH, error -> ERROR, other -> UNKNOWN_SEVERITY). |
sessionId |
event.idm.read_only_udm.network.session_id |
Asignación directa |
size |
event.idm.read_only_udm.network.received_bytes |
Es una asignación directa, convertida en un número entero sin signo. |
source |
event.idm.read_only_udm.principal.hostname , event.idm.read_only_udm.principal.asset.hostname |
Asignación directa después de quitar los espacios en blanco iniciales. |
SourceSystem |
event.idm.read_only_udm.principal.resource.attribute.labels , event.idm.read_only_udm.principal.platform |
Clave: SourceSystem , Valor: SourceSystem . También se asigna a platform (Linux -> LINUX, Windows -> WINDOWS, Mac/iOS -> MAC). |
SrcIP |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Asignación directa |
SrcPort |
event.idm.read_only_udm.principal.port |
Es el mapeo directo, convertido a número entero. |
srcIp |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Asignación directa |
srcPort |
event.idm.read_only_udm.principal.port |
Es el mapeo directo, convertido a número entero. |
srcUser |
event.idm.read_only_udm.principal.user.userid |
Asignación directa |
src_user |
event.idm.read_only_udm.principal.user.userid |
Asignación directa |
src_user_display_name |
event.idm.read_only_udm.principal.user.user_display_name |
Asignación directa |
status |
security_result.action |
Si es Deferred , configúralo como BLOCK . Si es Sent , configúralo como ALLOW . |
summary |
security_result.summary |
Asignación directa |
SyslogMessage |
security_result.description |
Asignación directa |
targetEmail |
event.idm.read_only_udm.network.email.to |
Asignación directa |
targetEmailfrom |
event.idm.read_only_udm.network.email.from |
Asignación directa |
targetHostname |
event.idm.read_only_udm.target.hostname , event.idm.read_only_udm.target.asset.hostname |
Asignación directa |
target_hostname |
event.idm.read_only_udm.target.hostname , event.idm.read_only_udm.target.asset.hostname |
Asignación directa |
target_ip |
event.idm.read_only_udm.target.ip , event.idm.read_only_udm.target.asset.ip |
Asignación directa |
target_mac |
event.idm.read_only_udm.target.mac |
Asignación directa |
target_uri |
event.idm.read_only_udm.target.url |
Asignación directa |
TenantId |
event.idm.read_only_udm.principal.user.product_object_id |
Asignación directa |
terminal |
event.idm.read_only_udm.additional.fields |
Clave: terminal , Valor: terminal si no está vacío o ? . |
TimeGenerated |
event.idm.read_only_udm.metadata.collected_timestamp |
Se analiza como marca de tiempo. |
timestamp |
@timestamp |
Se analiza como marca de tiempo. |
tls_cipher |
event.idm.read_only_udm.network.tls.cipher |
Asignación directa |
Type |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clave: Type , valor: Type |
uid |
event.idm.read_only_udm.principal.user.userid |
Si es 0 , configúralo como root . De lo contrario, se realiza una asignación directa. |
uid_2 |
event.idm.read_only_udm.target.user.userid |
Asignación directa si uid está vacío. |
unit |
event.idm.read_only_udm.target.application |
Asignación directa |
url |
event.idm.read_only_udm.target.url |
Asignación directa |
user |
username |
Asignación directa |
username |
event.idm.read_only_udm.target.user.userid , event.idm.read_only_udm.principal.user.userid |
Asignación directa |
user_display_name |
event.idm.read_only_udm.target.user.user_display_name |
Asignación directa |
user_present |
event.idm.read_only_udm.metadata.event_type |
Si true o principal_present es true , configura event_type como USER_UNCATEGORIZED . |
_Internal_WorkspaceResourceId |
event.idm.read_only_udm.target.resource.attribute.labels , event.idm.read_only_udm.target.resource.product_object_id |
Clave: _Internal_WorkspaceResourceId , Valor: _Internal_WorkspaceResourceId . El ID de suscripción se extrae y se asigna a product_object_id . |
_ItemId |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clave: _ItemId , valor: _ItemId |
_ResourceId |
event.idm.read_only_udm.principal.resource.attribute.labels , event.idm.read_only_udm.principal.resource.product_object_id |
Clave: _ResourceId , Valor: _ResourceId . El ID de suscripción se extrae y se asigna a product_object_id . |
_timestamp |
@timestamp |
Se analiza como marca de tiempo. |
_timestamp_tz |
@timestamp |
Se analiza como marca de tiempo. |
event.idm.read_only_udm.metadata.event_type
: Se establece enGENERIC_EVENT
de forma inicial y, luego, se reemplaza según la lógica del analizador.event.idm.read_only_udm.metadata.product_name
: Se codifica comoUnix System
.event.idm.read_only_udm.extensions.auth.type
: Se establece enMACHINE
para ciertos tipos de eventos.event.idm.read_only_udm.target.asset.attribute.cloud.environment
: Se establece enGOOGLE_CLOUD_PLATFORM
para los registros de auditoría de Google Cloud .event.idm.read_only_udm.target.resource.resource_type
: Se establece enVIRTUAL_MACHINE
para los registros de auditoría de Google Cloud .event.idm.read_only_udm.extensions.auth.mechanism
: Se establece enUSERNAME_PASSWORD
para los eventos de acceso.has_target_resource
: Se establece entrue
siresource.labels.instance_id
o_Internal_WorkspaceResourceId
están presentes.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.