Recoger registros de Nix Systems Ubuntu Server (sistema Unix)

Disponible en:

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

  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 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/ de Linux.
    • Abre el archivo con un editor de texto (por ejemplo, nano o vi).
  2. 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]
    
  3. Sustituye <customer_id> por el ID de cliente real.

  4. 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

  1. Inicia el agente de Bindplane:

    sudo systemctl start bindplane-agent
    
  2. Habilita el servicio del recolector otel de observIQ:

    systemctl enable --now bindplane-agent
    
  3. 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.