Coletar registros do Nix System Red Hat

Compatível com:

Este documento explica como ingerir registros do RHEL Server (sistema Unix) no Google Security Operations usando o Bindplane. O analisador ingere registros formatados em syslog e JSON, inicializa uma ampla variedade de campos da UDM como strings vazias, realiza várias substituições de string no campo message e tenta analisar a mensagem como JSON. Se a análise JSON falhar, ela usará padrões grok para extrair campos com base no conteúdo de message e event_details.original, mapeando os campos extraídos para a UDM com base no tipo de evento e em várias verificações condicionais, processando diferentes formatos e estruturas de registros de vários processos e serviços do sistema Unix.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Instância do Google SecOps
  • Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
  • Acesso privilegiado a um servidor RHEL

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura no sistema em que o Bindplane será instalado.

Receber o ID do cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instalação do Linux

  1. Abra um terminal com privilégios de root ou sudo.
  2. Execute este comando:

    sudo sh -c `$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)` install_unix.sh
    

Outros recursos de instalação

Para mais opções de instalação, consulte o guia de instalação.

Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:
    • Localize o arquivo config.yaml. Normalmente, ele fica no diretório /etc/bindplane-agent/ no Linux.
    • Abra o arquivo usando um editor de texto, por exemplo, nano ou vi.
  2. Edite o arquivo config.yaml da seguinte forma:

          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. Substitua <customer_id> pelo ID do cliente real.
  2. Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber arquivo de autenticação de ingestão do Google SecOps.

    Iniciar o agente do Bindplane e aplicar mudanças

  3. Inicie o agente do Bindplane:

    sudo systemctl start bindplane-agent
    
  4. Ative o serviço do coletor otel da observIQ:

    systemctl enable --now bindplane-agent
    
  5. Reinicie o agente do Bindplane, se necessário:

    sudo systemctl restart bindplane-agent
    

Tabela de mapeamento da UDM

Campo de registro Mapeamento do UDM Lógica
AccessControlRuleAction security_result.action Se AccessControlRuleAction for Allow, defina como ALLOW. Se AccessControlRuleAction for Block, defina como BLOCK.
ACPolicy security_result.rule_labels Chave: ACPolicy, Valor: ACPolicy
AccessControlRuleName security_result.rule_name Mapeamento direto.
acct event.idm.read_only_udm.target.user.userid Mapeamento direto após remover aspas e barras invertidas.
addr event.idm.read_only_udm.target.ip, event.idm.read_only_udm.target.asset.ip Mapeamento direto se não estiver vazio, ? ou UNKNOWN.
ApplicationProtocol event.idm.read_only_udm.network.application_protocol Mapeamento direto.
auid event.idm.read_only_udm.additional.fields Chave: auid, Valor: auid
comm event.idm.read_only_udm.target.process.command_line Mapeamento direto.
command event.idm.read_only_udm.target.process.command_line Mapeamento direto após a remoção de espaços em branco à esquerda/direita.
Computer event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Mapeamento direto. Se estiver vazio, use HostName.
ConnectionID security_result.detection_fields Chave: Connection ID, Valor: ConnectionID
cwd event.idm.read_only_udm.target.process.file.full_path Mapeamento direto após a remoção de aspas.
data message Usado em padrões grok.
desc security_result.description Mapeamento direto.
description event.idm.read_only_udm.metadata.description, security_result.description Mapeamento direto.
descript security_result.description Mapeamento direto após a remoção de hashes.
DeviceUUID event.idm.read_only_udm.metadata.product_log_id Mapeamento direto.
DNSQuery event.idm.read_only_udm.additional.fields Chave: DNSQuery, Valor: DNSQuery
DNSRecordType event.idm.read_only_udm.additional.fields Chave: DNSRecordType, Valor: DNSRecordType
DNSResponseType event.idm.read_only_udm.additional.fields Chave: DNSResponseType, Valor: DNSResponseType
DNS_TTL event.idm.read_only_udm.additional.fields Chave: DNS_TTL, Valor: DNS_TTL
DstIP event.idm.read_only_udm.target.ip, event.idm.read_only_udm.target.asset.ip Mapeamento direto.
DstPort event.idm.read_only_udm.target.port Mapeamento direto, convertido para número inteiro.
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 Se for um IP válido, será mapeado para o IP principal/de destino. Se o nome do host, mapeado para o nome do host principal/de destino. Também usado para IP intermediário, se for um IP válido.
EgressInterface event.idm.read_only_udm.principal.asset.attribute.labels Chave: EgressInterface, Valor: EgressInterface
EgressVRF event.idm.read_only_udm.principal.asset.attribute.labels Chave: EgressVRF, Valor: EgressVRF
EgressZone event.idm.read_only_udm.target.location.name Mapeamento direto.
eventType event.idm.read_only_udm.metadata.product_event_type, event.idm.read_only_udm.target.application Mapeamento direto. Para SERVICE_START e SERVICE_STOP, mapeados para target.application e depois removidos.
EventTime @timestamp Analisado como carimbo de data/hora.
exe event.idm.read_only_udm.target.process.command_line Mapeamento direto após remover aspas e barras invertidas.
extended_description event.idm.read_only_udm.metadata.description Mapeamento direto após remover hifens e aspas.
Facility event.idm.read_only_udm.principal.resource.attribute.labels Chave: Facility, Valor: Facility
filepath event.idm.read_only_udm.principal.process.file.full_path Mapeamento direto.
file_path event.idm.read_only_udm.target.file.full_path Mapeamento direto.
file_path_value event.idm.read_only_udm.target.file.full_path Mapeamento direto.
FirstPacketSecond security_result.detection_fields Chave: FirstPacketSecond, Valor: FirstPacketSecond
from event.idm.read_only_udm.network.email.from Mapeamento direto após a remoção dos colchetes angulares.
generic_ip event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mapeamento direto se um IP válido e não A256:.
gid event.idm.read_only_udm.target.user.group_identifiers Mapeamento direto.
grp event.idm.read_only_udm.target.group.group_display_name Mapeamento direto após remover aspas e barras invertidas.
hashing_algo security_result.summary Mapeamento direto.
home event.idm.read_only_udm.target.file.full_path Mapeamento direto.
HostName Computer Usado se Computer estiver vazio.
HostIP event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip A parte de HostIP antes de % é extraída e mapeada 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 Mapeamento direto se não estiver vazio ou ?.
host_name event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname Mapeamento direto.
InitiatorBytes event.idm.read_only_udm.network.sent_bytes Mapeamento direto, convertido em número inteiro sem sinal.
InitiatorPackets event.idm.read_only_udm.network.sent_packets Mapeamento direto, convertido para número inteiro.
insertId event.idm.read_only_udm.metadata.product_log_id Mapeamento direto.
InstanceID security_result.detection_fields Chave: Instance ID, Valor: InstanceID
int_dvc event.idm.read_only_udm.intermediary.hostname Mapeamento direto.
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 Mapeamento direto.
ip_protocol event.idm.read_only_udm.network.ip_protocol Mapeamento direto.
laddr event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mapeamento direto se não estiver vazio ou ?.
level security_result.severity Se info. defina como INFORMATIONAL.
log.syslog.facility.name event.idm.read_only_udm.target.application Mapeamento direto.
log.syslog.severity.name security_result.severity Se Emergency. defina como HIGH.
logName logname Mapeamento direto.
log_description security_result.description Mapeamento direto.
log_level security_result.severity Se error. defina como ERROR.
log_summary security_result.summary Mapeamento direto.
logger_name event.idm.read_only_udm.principal.resource.attribute.labels Chave: logger_name, Valor: logger_name
log_type event.idm.read_only_udm.metadata.log_type Fixado no código como NIX_SYSTEM.
lport event.idm.read_only_udm.principal.port Mapeamento direto, convertido para número inteiro.
MG event.idm.read_only_udm.principal.resource.attribute.labels Chave: MG, Valor: MG
method event.idm.read_only_udm.network.http.method Mapeamento direto, convertido em letras maiúsculas.
msg1 event.idm.read_only_udm.metadata.description, event.idm.read_only_udm.additional.fields, security_result.description Analisado usando padrões grok. Se event_type for GENERIC_EVENT, mapeado para description.
msg2 event.idm.read_only_udm.network.received_bytes, security_result.summary Se contiver dígitos, será convertido em um número inteiro sem sinal e mapeado para received_bytes. Caso contrário, será mapeado para summary.
NAPPolicy security_result.rule_labels Chave: NAPPolicy, Valor: NAPPolicy
name event.idm.read_only_udm.target.process.file.full_path Mapeamento direto após a remoção de aspas.
outcome security_result.action Se Succeeded ou contiver success, defina como ALLOW.
p_id event.idm.read_only_udm.target.process.pid Mapeamento direto.
pid event.idm.read_only_udm.target.process.pid, event.idm.read_only_udm.principal.process.pid Mapeamento direto.
principal_hostname event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Mapeamento direto.
principal_ip event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mapeamento direto.
principal_present event.idm.read_only_udm.metadata.event_type Se true e has_target forem true, defina event_type como NETWORK_UNCATEGORIZED. Se true ou user_present for true, defina event_type como USER_UNCATEGORIZED.
process event.idm.read_only_udm.target.application, event.idm.read_only_udm.metadata.product_event_type Mapeamento direto. Se eventType estiver vazio, será usado como target.application.
ProcessID event.idm.read_only_udm.principal.process.pid Mapeamento direto, convertido em string.
ProcessName event.idm.read_only_udm.principal.resource.attribute.labels Chave: ProcessName, Valor: ProcessName
prod_eve_type event.idm.read_only_udm.metadata.product_event_type Mapeamento direto.
product_event_type event.idm.read_only_udm.metadata.product_event_type Mapeamento direto.
Protocol event.idm.read_only_udm.network.ip_protocol Se corresponder a icmp, udp ou tcp (sem diferenciar maiúsculas de minúsculas), será mapeado para o valor correspondente em maiúsculas.
proto event.idm.read_only_udm.network.application_protocol Se ssh ou ssh2, defina como SSH.
pwd event.idm.read_only_udm.target.file.full_path Mapeamento direto.
reason security_result.summary, security_result.description Usado em combinação com action e desc para criar security_result.description. Também mapeado para security_result.summary.
relayHostname event.idm.read_only_udm.intermediary.hostname Mapeamento direto.
relayIp event.idm.read_only_udm.intermediary.ip Mapeamento direto.
res security_result.summary Mapeamento direto.
resource.labels.instance_id event.idm.read_only_udm.target.resource.product_object_id Mapeamento direto.
resource.labels.project_id event.idm.read_only_udm.target.asset.attribute.cloud.project.id Mapeamento direto.
resource.labels.zone event.idm.read_only_udm.target.asset.attribute.cloud.availability_zone Mapeamento direto.
resource.type event.idm.read_only_udm.target.resource.resource_subtype Mapeamento direto.
response_code event.idm.read_only_udm.network.http.response_code Mapeamento direto, convertido para número inteiro.
ResponderBytes event.idm.read_only_udm.network.received_bytes Mapeamento direto, convertido em número inteiro sem sinal.
ResponderPackets event.idm.read_only_udm.network.received_packets Mapeamento direto, convertido para número inteiro.
rhost event.idm.read_only_udm.additional.fields Chave: rhost, Valor: rhost
ruser srcUser Mapeamento direto.
sec_action security_result.action Mapeado com base em action ou eventType.
sec_summary security_result.summary Mapeamento direto.
security_action security_result.action Mapeamento direto.
sent_bytes event.idm.read_only_udm.network.sent_bytes Mapeamento direto, convertido em número inteiro sem sinal.
ses event.idm.read_only_udm.network.session_id, event.idm.read_only_udm.network.session_duration Se for numérico, será analisado como um carimbo de data/hora do UNIX e mapeado para session_duration. Caso contrário, será mapeado para session_id.
SeverityLevel security_result.severity Mapeado para diferentes gravidades com base no valor (aviso/informação -> INFORMATIONAL, aviso -> HIGH, erro -> ERROR, outro -> UNKNOWN_SEVERITY).
sessionId event.idm.read_only_udm.network.session_id Mapeamento direto.
size event.idm.read_only_udm.network.received_bytes Mapeamento direto, convertido em número inteiro sem sinal.
source event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Mapeamento direto após a remoção do espaço em branco à esquerda.
SourceSystem event.idm.read_only_udm.principal.resource.attribute.labels, event.idm.read_only_udm.principal.platform Chave: SourceSystem, Valor: SourceSystem. Também mapeado para platform (Linux -> LINUX, Window -> WINDOWS, Mac/iOS -> MAC).
SrcIP event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mapeamento direto.
SrcPort event.idm.read_only_udm.principal.port Mapeamento direto, convertido para número inteiro.
srcIp event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mapeamento direto.
srcPort event.idm.read_only_udm.principal.port Mapeamento direto, convertido para número inteiro.
srcUser event.idm.read_only_udm.principal.user.userid Mapeamento direto.
src_user event.idm.read_only_udm.principal.user.userid Mapeamento direto.
src_user_display_name event.idm.read_only_udm.principal.user.user_display_name Mapeamento direto.
status security_result.action Se Deferred. defina como BLOCK. Se Sent, defina como ALLOW.
summary security_result.summary Mapeamento direto.
SyslogMessage security_result.description Mapeamento direto.
targetEmail event.idm.read_only_udm.network.email.to Mapeamento direto.
targetEmailfrom event.idm.read_only_udm.network.email.from Mapeamento direto.
targetHostname event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname Mapeamento direto.
target_hostname event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname Mapeamento direto.
target_ip event.idm.read_only_udm.target.ip, event.idm.read_only_udm.target.asset.ip Mapeamento direto.
target_mac event.idm.read_only_udm.target.mac Mapeamento direto.
target_uri event.idm.read_only_udm.target.url Mapeamento direto.
TenantId event.idm.read_only_udm.principal.user.product_object_id Mapeamento direto.
terminal event.idm.read_only_udm.additional.fields Chave: terminal, Valor: terminal se não estiver vazio ou ?.
TimeGenerated event.idm.read_only_udm.metadata.collected_timestamp Analisado como carimbo de data/hora.
timestamp @timestamp Analisado como carimbo de data/hora.
tls_cipher event.idm.read_only_udm.network.tls.cipher Mapeamento direto.
Type event.idm.read_only_udm.principal.resource.attribute.labels Chave: Type, Valor: Type
uid event.idm.read_only_udm.principal.user.userid Se 0. defina como root. Caso contrário, mapeamento direto.
uid_2 event.idm.read_only_udm.target.user.userid Mapeamento direto se uid estiver vazio.
unit event.idm.read_only_udm.target.application Mapeamento direto.
url event.idm.read_only_udm.target.url Mapeamento direto.
user username Mapeamento direto.
username event.idm.read_only_udm.target.user.userid, event.idm.read_only_udm.principal.user.userid Mapeamento direto.
user_display_name event.idm.read_only_udm.target.user.user_display_name Mapeamento direto.
user_present event.idm.read_only_udm.metadata.event_type Se true ou principal_present for true, defina 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 Chave: _Internal_WorkspaceResourceId, Valor: _Internal_WorkspaceResourceId. O ID da assinatura é extraído e mapeado para product_object_id.
_ItemId event.idm.read_only_udm.principal.resource.attribute.labels Chave: _ItemId, Valor: _ItemId
_ResourceId event.idm.read_only_udm.principal.resource.attribute.labels, event.idm.read_only_udm.principal.resource.product_object_id Chave: _ResourceId, Valor: _ResourceId. O ID da assinatura é extraído e mapeado para product_object_id.
_timestamp @timestamp Analisado como carimbo de data/hora.
_timestamp_tz @timestamp Analisado como carimbo de data/hora.
  • event.idm.read_only_udm.metadata.event_type: definido como GENERIC_EVENT inicialmente e substituído com base na lógica do analisador.
  • event.idm.read_only_udm.metadata.product_name: codificado como Unix System.
  • event.idm.read_only_udm.extensions.auth.type: definido como MACHINE para determinados tipos de eventos.
  • event.idm.read_only_udm.target.asset.attribute.cloud.environment: definido como GOOGLE_CLOUD_PLATFORM para registros de auditoria do Google Cloud .
  • event.idm.read_only_udm.target.resource.resource_type: definido como VIRTUAL_MACHINE para registros de auditoria do Google Cloud .
  • event.idm.read_only_udm.extensions.auth.mechanism: defina como USERNAME_PASSWORD para eventos de login.
  • has_target_resource: definido como true se resource.labels.instance_id ou _Internal_WorkspaceResourceId estiver presente.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.