Recopila registros de Red Hat del sistema Nix

Compatible con:

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

  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 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.
    • 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/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]
          ```
    
  1. Reemplaza <customer_id> por el ID de cliente real.
  2. 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

  3. Inicia el agente de Bindplane:

    sudo systemctl start bindplane-agent
    
  4. Habilita el servicio de recopilador de observIQ otel:

    systemctl enable --now bindplane-agent
    
  5. 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 en GENERIC_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 como Unix System.
  • event.idm.read_only_udm.extensions.auth.type: Se establece en MACHINE para ciertos tipos de eventos.
  • event.idm.read_only_udm.target.asset.attribute.cloud.environment: Se establece en GOOGLE_CLOUD_PLATFORM para los registros de auditoría de Google Cloud .
  • event.idm.read_only_udm.target.resource.resource_type: Se establece en VIRTUAL_MACHINE para los registros de auditoría de Google Cloud .
  • event.idm.read_only_udm.extensions.auth.mechanism: Se establece en USERNAME_PASSWORD para los eventos de acceso.
  • has_target_resource: Se establece en true si resource.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.