Recolha registos do servidor Ubuntu (sistema Unix) de sistemas Nix

Compatível com:

Este documento explica como carregar registos do Ubuntu Server (sistema Unix) para o Google Security Operations através do Bindplane. O analisador ingere registos formatados em syslog e JSON, inicializa uma grande variedade de campos do modelo de dados unificado (UDM) em strings vazias, executa várias substituições de strings no campo message e, em seguida, tenta analisar a mensagem como JSON. Se a análise JSON falhar, usa padrões grok para extrair campos com base no conteúdo message e event_details.original, mapeando os campos extraídos para o UDM com base no tipo de evento e em várias verificações condicionais, processando diferentes formatos e estruturas de registos de vários processos e serviços do sistema Unix.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google SecOps
  • Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
  • Acesso privilegiado a um servidor RHEL

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.

Obtenha o ID de cliente do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. Execute o seguinte comando:

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

Recursos de instalação adicionais

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

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:
    • Localize o ficheiro config.yaml. Normalmente, encontra-se no diretório /etc/bindplane-agent/ no Linux.
    • Abra o ficheiro com um editor de texto (por exemplo, nano ou vi).
  2. Edite o ficheiro config.yaml da seguinte forma:

    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. Substitua <customer_id> pelo ID de cliente real.

  4. Atualize /path/to/ingestion-authentication-file.json para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.

Inicie o agente Bindplane e aplique as alterações

  1. Inicie o agente do Bindplane:

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

    systemctl enable --now bindplane-agent
    
  3. Se necessário, reinicie o agente do Bindplane:

    sudo systemctl restart bindplane-agent
    

Tabela de mapeamento do UDM

Campo de registo Mapeamento de 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 a remoção de 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 das 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 dos 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 em 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, é mapeado para o IP principal/de destino. Se o nome do anfitrião estiver mapeado para o nome do anfitrião principal/de destino. Também usado para o 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, mapeado para target.application e, em seguida, limpo.
EventTime @timestamp Analisado como data/hora.
exe event.idm.read_only_udm.target.process.command_line Mapeamento direto após a remoção de aspas e barras invertidas.
extended_description event.idm.read_only_udm.metadata.description Mapeamento direto após a remoção de hífenes 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 parêntesis angulares.
generic_ip event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mapeamento direto se for 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 a remoção de 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 não assinado.
InitiatorPackets event.idm.read_only_udm.network.sent_packets Mapeamento direto, convertido em 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 Codificado para NIX_SYSTEM.
lport event.idm.read_only_udm.principal.port Mapeamento direto, convertido em 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 através de 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, é convertido num número inteiro não assinado e mapeado para received_bytes. Caso contrário, é 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 das aspas.
outcome security_result.action Se Succeeded for igual a success 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 for 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, é 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 distinção entre maiúsculas e minúsculas), é mapeado para o valor em maiúsculas correspondente.
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 em número inteiro.
ResponderBytes event.idm.read_only_udm.network.received_bytes Mapeamento direto, convertido em número inteiro não assinado.
ResponderPackets event.idm.read_only_udm.network.received_packets Mapeamento direto, convertido em número inteiro.
rhost event.idm.read_only_udm.additional.fields Chave: rhost, valor: rhost
ruser srcUser Mapeamento direto.
sec_action security_result.action Mapeada 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 não assinado.
ses event.idm.read_only_udm.network.session_id, event.idm.read_only_udm.network.session_duration Se for numérico, é analisado como uma data/hora Unix e mapeado para session_duration. Caso contrário, é mapeado para session_id.
SeverityLevel security_result.severity Mapeado para diferentes gravidades com base no valor (notice/info -> INFORMATIONAL, warn -> HIGH, error -> ERROR, other -> 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 não assinado.
source event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Mapeamento direto após a remoção dos espaços 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 em 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 em 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 data/hora.
timestamp @timestamp Analisado como 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 subscrição é 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 subscrição é extraído e mapeado para product_object_id.
_timestamp @timestamp Analisado como data/hora.
_timestamp_tz @timestamp Analisado como data/hora.

event.idm.read_only_udm.metadata.event_type: inicialmente, definido como GENERIC_EVENT e, em seguida, substituído com base na lógica do analisador. event.idm.read_only_udm.metadata.product_name: codificado de forma rígida para 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 Google Cloud registos de auditoria. event.idm.read_only_udm.target.resource.resource_type: definido como VIRTUAL_MACHINE para Google Cloud registos de auditoria. event.idm.read_only_udm.extensions.auth.mechanism: definido como USERNAME_PASSWORD para eventos de início de sessão. 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 da Google SecOps.