Recoger registros de Nix Systems Ubuntu Server (sistema Unix)
En este documento se explica cómo ingerir registros de Ubuntu Server (sistema Unix) en Google Security Operations mediante Bindplane. El analizador ingiere registros con formato syslog y JSON, inicializa una amplia gama de campos del modelo de datos unificado (UDM) en cadenas vacías, realiza varias sustituciones de cadenas en el campo message
y, a continuación, intenta analizar el mensaje como JSON. Si falla el análisis JSON, utiliza patrones grok para extraer campos en función del contenido de message
y event_details.original
, y asigna los campos extraídos al UDM en función del tipo de evento y de varias comprobaciones condicionales. Además, gestiona diferentes formatos y estructuras de registro de varios procesos y servicios del sistema Unix.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps
- Si se ejecuta a través de un proxy, los puertos del cortafuegos están abiertos
- Acceso privilegiado a un servidor RHEL
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 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/
de Linux. - Abre el archivo con un editor de texto (por ejemplo,
nano
ovi
).
- Busca el archivo
Edita el archivo
config.yaml
de la siguiente manera:receivers: filelog/unix: include: - /var/log/auth.log - /var/log/lastlog - /var/log/btmp - /var/log/wtmp - /var/log/faillog - /var/log/dpkg.log - /var/log/boot.log - /var/log/kern.log - /var/log/syslog 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]
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.
Iniciar el agente de Bindplane y aplicar los cambios
Inicia el agente de Bindplane:
sudo systemctl start bindplane-agent
Habilita el servicio del recolector otel de observIQ:
systemctl enable --now bindplane-agent
Reinicia el agente de Bindplane si es necesario:
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 , asigna el valor ALLOW . Si AccessControlRuleAction es Block , asigna el valor 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 eliminar 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 eliminar 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 eliminar las comillas. |
data |
message |
Se usa en patrones 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 eliminar 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 |
Asignación directa, convertida en un 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 la IP es válida, se asigna a la IP principal o de destino. Si es un nombre de host, se asigna al nombre de host principal o de destino. También se usa para la IP intermediaria 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 , asignado a target.application y, después, borrado. |
EventTime |
@timestamp |
Analizado como marca de tiempo. |
exe |
event.idm.read_only_udm.target.process.command_line |
Asignación directa después de eliminar 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 |
Asignación directa si es una IP válida y no 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 eliminar 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 |
Se extrae la parte de HostIP anterior a % 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 |
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 |
Asignación directa, convertida en un entero sin signo. |
InitiatorPackets |
event.idm.read_only_udm.network.sent_packets |
Asignación directa, convertida en un 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 |
Asignación directa si no está vacío o es ? . |
level |
security_result.severity |
Si info , asigna el valor INFORMATIONAL . |
log.syslog.facility.name |
event.idm.read_only_udm.target.application |
Asignación directa. |
log.syslog.severity.name |
security_result.severity |
Si Emergency , asigna el valor HIGH . |
logName |
logname |
Asignación directa. |
log_description |
security_result.description |
Asignación directa. |
log_level |
security_result.severity |
Si error , asigna el valor 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 |
Valor fijo establecido en el código fuente NIX_SYSTEM . |
lport |
event.idm.read_only_udm.principal.port |
Asignación directa, convertida en un 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 |
Asignación directa, convertida a mayúsculas. |
msg1 |
event.idm.read_only_udm.metadata.description , event.idm.read_only_udm.additional.fields , security_result.description |
Analizadas con patrones 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 eliminar las comillas. |
outcome |
security_result.action |
Si Succeeded o contiene success , asigna el valor 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 , asigna el valor NETWORK_UNCATEGORIZED a event_type . Si true o user_present es true , asigna el valor USER_UNCATEGORIZED a event_type . |
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 |
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 entre mayúsculas y minúsculas), se asigna al valor correspondiente en mayúsculas. |
proto |
event.idm.read_only_udm.network.application_protocol |
Si es ssh o ssh2 , asigna el valor 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 ha asignado 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 |
Asignación directa, convertida en un número entero. |
ResponderBytes |
event.idm.read_only_udm.network.received_bytes |
Asignación directa, convertida en un entero sin signo. |
ResponderPackets |
event.idm.read_only_udm.network.received_packets |
Asignación directa, convertida en un 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 |
Asignación basada en 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 |
Asignación directa, convertida en un 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 UNIX y se asigna a session_duration . De lo contrario, se asigna a session_id . |
SeverityLevel |
security_result.severity |
Se asignan a diferentes niveles de gravedad en función del 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 |
Asignación directa, convertida en un 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 eliminar 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, Window -> 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 |
Asignación directa, convertida en un 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 |
Asignación directa, convertida en un 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 Deferred , asigna el valor BLOCK . Si Sent , asigna el valor 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 |
Analizado como marca de tiempo. |
timestamp |
@timestamp |
Analizado 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 0 , asigna el valor root . De lo contrario, se trata de 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 , asigna el valor USER_UNCATEGORIZED a event_type . |
_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 |
Analizado como marca de tiempo. |
_timestamp_tz |
@timestamp |
Analizado como marca de tiempo. |
event.idm.read_only_udm.metadata.event_type
: se define como GENERIC_EVENT
inicialmente y, a continuación, se sobrescribe en función de la lógica del analizador.
event.idm.read_only_udm.metadata.product_name
: codificado de forma rígida como Unix System
.
event.idm.read_only_udm.extensions.auth.type
: se asigna el valor MACHINE
a determinados tipos de eventos.
event.idm.read_only_udm.target.asset.attribute.cloud.environment
: asigna el valor GOOGLE_CLOUD_PLATFORM
a los Google Cloud registros de auditoría.
event.idm.read_only_udm.target.resource.resource_type
: asigna el valor VIRTUAL_MACHINE
a los Google Cloud registros de auditoría.
event.idm.read_only_udm.extensions.auth.mechanism
: se asigna el valor USERNAME_PASSWORD
a los eventos de inicio de sesión.
has_target_resource
: se define como true
si resource.labels.instance_id
o _Internal_WorkspaceResourceId
están presentes.
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.