Coletar registros de auditoria do Linux e de sistemas AIX

Compatível com:

Esse analisador processa registros de auditoria do Linux no formato SYSLOG, transformando-os em UDM. Ele processa mensagens de registro em texto simples e formatadas em JSON, extraindo campos usando técnicas de análise grok, XML e JSON, e os mapeia para os campos apropriados da UDM com base no tipo de evento. O analisador também processa formatos específicos registro de auditoria de sistemas AIX e enriquece o UDM com outros campos, como security_result e detalhes intermediários.

Antes de começar

  • Verifique se você tem uma instância do Google Security Operations.
  • Confira se você tem acesso root ao host do Auditd.
  • Verifique se você instalou o rsyslog no host do Auditd.
  • Verifique se você tem um host Windows 2012 SP2 ou mais recente ou Linux com systemd.
  • Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.

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.

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

  1. Para instalação no Windows, execute o seguinte script:
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. Para instalação no Linux, execute o seguinte script:
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. Outras opções de instalação estão disponíveis neste guia de instalação.

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

  1. Acesse a máquina em que o Bindplane está instalado.
  2. Edite o arquivo config.yaml da seguinte forma:

    receivers:
      tcplog:
        # Replace the below port <54525> and IP <0.0.0.0> with your specific values
        listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: auditd
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Reinicie o agente do Bindplane para aplicar as mudanças usando o seguinte comando: sudo systemctl bindplane restart

Como exportar o Syslog do Auditd

  1. Acesse a máquina de onde você quer exportar os registros de auditoria.
  2. Abra o arquivo de configuração do Auditd (normalmente localizado em /etc/audit/auditd.conf).

    sudo vi /etc/audit/auditd.conf
    
  3. Encontre ou adicione as seguintes linhas para configurar o auditd:

    active = yes
    output = syslog
    log_format = ENRICHED
    dispatcher = /sbin/audispd
    

Opcional: especifique a facilidade do Syslog. Adicione ou modifique a seguinte linha em auditd.conf:

```none
syslog_facility = LOG_AUTHPRIV
```
  1. Abra o arquivo de configuração do audispd (normalmente localizado em /etc/audisp/plugins.d/syslog.conf):

    sudo vi /etc/audisp/plugins.d/syslog.conf
    
  2. Encontre ou adicione as seguintes linhas para configurar o audispd:

    active = yes
    direction = out
    path = builtin_syslog
    type = builtin
    args = LOG_INFO
    format = string
    
  3. Reinicie o serviço Auditd para aplicar as mudanças:

    sudo systemctl restart auditd
    
  4. Use uma ferramenta como tail para monitorar o syslog e verificar se os registros do Auditd estão sendo enviados:

    tail -f /var/log/syslog | grep auditd # Follow syslog and filter for auditd messages (path may vary depending on your system)
    
  5. Edite o rsyslog.conf ou crie uma configuração personalizada:

    sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
    
  6. Adicione uma regra para encaminhar registros:

    • if $programname == 'auditd' then @@<Bindplane_Agent>:<Bindplane_Port>
    • Use @ para UDP ou @@ para TCP
    • Substitua <BindPlane_Agent> pelo IP/nome do host do servidor.
    • Substitua <BindPlane_Port> pela porta do seu servidor.
  7. Reinicie o serviço rsyslog para aplicar as mudanças:

    sudo systemctl restart rsyslog
    

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Observação
acct target.user.user_display_name O valor de acct do registro bruto é mapeado para o campo target.user.user_display_name no UDM. Representa a conta associada ao evento.
addr principal.ip O valor de addr do registro bruto é mapeado para o campo principal.ip no UDM. Representa o endereço IP do principal envolvido no evento.
additional.fields additional.fields Outros campos de pares de chave-valor ou rótulos analisados são adicionados à matriz additional.fields na UDM.
agent.googleapis.com/log_file_path (Não mapeado) Esse rótulo está presente em alguns registros brutos, mas não é mapeado para o objeto IDM na UDM.
algo (Não usado neste exemplo) Embora esteja presente no analisador e em alguns registros brutos, esse campo não é usado no exemplo fornecido e não aparece na UDM final.
application principal.application Derivado do campo terminal no registro bruto ou de outros campos, como exe, dependendo do tipo de registro. Representa o aplicativo envolvido.
arch security_result.about.platform_version A arquitetura do campo arch do registro bruto é mapeada para security_result.about.platform_version.
auid about.user.userid, security_result.detection_fields.auid O ID do usuário de auditoria (auid) é mapeado para about.user.userid e adicionado como um campo de detecção em security_result.
cmd target.process.command_line O comando do campo cmd do registro bruto é mapeado para target.process.command_line.
collection_time (Não mapeado) Esse campo é o horário de coleta de registros e não é mapeado para o objeto IDM na UDM.
comm principal.application O nome do comando (comm) é mapeado para principal.application.
COMMAND target.process.command_line
compute.googleapis.com/resource_name principal.hostname O nome do recurso desse rótulo é mapeado para principal.hostname.
create_time (Não mapeado) Esse campo não é mapeado para o objeto IDM na UDM.
cwd security_result.detection_fields.cwd O diretório de trabalho atual (cwd) é adicionado como um campo de detecção em security_result.
data (Processado) O campo data contém a mensagem de registro principal e é processado pelo analisador para extrair vários campos. Ele não é mapeado diretamente para um único campo do UDM.
exe target.process.file.full_path O caminho executável (exe) é mapeado para target.process.file.full_path.
extensions.auth.type extensions.auth.type O tipo de autenticação é definido pela lógica do analisador com base no tipo de evento. Geralmente definido como MACHINE ou AUTHTYPE_UNSPECIFIED.
fp network.tls.client.certificate.sha256 A impressão digital (fp) é analisada para extrair o hash SHA256 e mapeada para network.tls.client.certificate.sha256.
_Item_Id metadata.product_log_id
insertId (Não mapeado) Esse campo não é mapeado para o objeto IDM na UDM.
jsonPayload.message (Processado) Esse campo contém a mensagem de registro principal no formato JSON e é processado pelo analisador.
key security_result.about.registry.registry_key O campo de chave é mapeado para security_result.about.registry.registry_key.
labels (Processado) Os rótulos do registro bruto são processados e mapeados para vários campos do UDM ou adicionados a additional.fields.
logName (Não mapeado) Esse campo não é mapeado para o objeto IDM na UDM.
metadata.product_event_type SECCOMP A curva de troca de chaves é extraída do registro bruto e mapeada para esse campo.
msg security_result.summary A mensagem (msg) costuma ser usada para preencher o campo security_result.summary.
network.application_protocol network.application_protocol Definido pela lógica do analisador com base no tipo de evento (por exemplo, SSH, HTTP).
network.direction network.direction Definido pela lógica do analisador com base no tipo de evento (por exemplo, INBOUND, OUTBOUND).
network.ip_protocol network.ip_protocol Definido pela lógica do analisador, geralmente como TCP para eventos SSH.
network.session_id network.session_id Mapeado do campo ses ou derivado de outros campos.
network.tls.cipher network.tls.cipher As informações de criptografia são extraídas do registro bruto e mapeadas para esse campo.
network.tls.curve network.tls.curve A curva de troca de chaves é extraída do registro bruto e mapeada para esse campo.
pid principal.process.pid, target.process.pid O ID do processo (pid) é mapeado para principal.process.pid ou target.process.pid, dependendo do contexto.
ppid principal.process.parent_process.pid, target.process.parent_process.pid O ID do processo pai (ppid) é mapeado para principal.process.parent_process.pid ou target.process.parent_process.pid, dependendo do contexto.
principal.asset.hostname principal.asset.hostname Copiado de principal.hostname.
principal.asset.ip principal.asset.ip Copiado de principal.ip.
principal.platform principal.platform Definido pela lógica do analisador com base no sistema operacional (por exemplo, LINUX).
principal.port principal.port O número da porta associado ao principal.
principal.user.group_identifiers principal.user.group_identifiers IDs de grupo associados ao usuário principal.
process.name target.process.file.full_path
receiveTimestamp (Não mapeado) Esse campo é o carimbo de data/hora de recebimento do registro e não é mapeado para o objeto IDM na UDM.
res security_result.action_details O resultado (res) é mapeado para security_result.action_details.
_Resource_Id target.resource.product_object_id
resource.labels (Não mapeado) Esses rótulos estão presentes em alguns registros brutos, mas não são mapeados para o objeto IDM na UDM.
resource.type (Não mapeado) Esse campo está presente em alguns registros brutos, mas não é mapeado para o objeto IDM na UDM.
security_result.action security_result.action Definido pela lógica do analisador com base no campo res (por exemplo, ALLOW, BLOCK).
security_result.detection_fields security_result.detection_fields Vários campos do registro bruto são adicionados como pares de chave-valor a essa matriz para contexto.
security_result.rule_id security_result.rule_id Definido pela lógica do analisador, geralmente como type_name para eventos de syscall.
security_result.severity security_result.severity Definido pela lógica do analisador com base no nível de gravidade no registro bruto.
security_result.summary security_result.summary Um resumo do evento, geralmente derivado do campo msg ou de outros campos relevantes.
ses network.session_id O ID da sessão (ses) é mapeado para network.session_id.
source (Não mapeado) Esse campo contém metadados sobre a origem do registro e não é mapeado para o objeto IDM na UDM.
subj (Processado) O campo de assunto (subj) é processado para extrair informações de contexto do usuário e de segurança.
syscall security_result.about.labels.Syscall O número da syscall é adicionado como um rótulo em security_result.about.
target.administrative_domain target.administrative_domain O domínio do usuário de destino.
target.group.group_display_name target.group.group_display_name O nome do grupo de destino.
target.ip target.ip O endereço IP do destino.
target.port target.port O número da porta associado ao destino.
target.process.command_line target.process.command_line A linha de comando do processo de destino.
target.resource.type target.resource.type O tipo do recurso de destino, definido pela lógica do analisador (por exemplo, CREDENTIAL, SETTING).
target.user.attribute.permissions target.user.attribute.permissions Permissões relacionadas ao usuário de destino.
target.user.group_identifiers target.user.group_identifiers IDs de grupo associados ao usuário de destino.
target.user.userid target.user.userid O ID do usuário do destino.
TenantId metadata.product_deployment_id
textPayload (Processado) O payload de texto do registro, processado pelo analisador para extrair vários campos.
timestamp metadata.event_timestamp O carimbo de data/hora do evento.
tty security_result.about.labels.tty O tty é adicionado como um rótulo em security_result.about.
type metadata.product_event_type O tipo de evento (type) é mapeado para metadata.product_event_type.
uid target.user.userid O ID do usuário (uid) é mapeado para target.user.userid.

Referência delta do mapeamento da UDM

Em 23 de setembro de 2025, o Google SecOps lançou uma nova versão do analisador do Okta, que inclui mudanças significativas no mapeamento de campos de registro do Okta para campos do UDM e no mapeamento de tipos de eventos.

Delta de mapeamento de campo de registro

A tabela a seguir lista o delta de mapeamento para campos de registro do Okta para UDM expostos antes de 23 de setembro de 2025 e depois (listados nas colunas Mapeamento antigo e Mapeamento atual, respectivamente).

Campo de registro Mapeamento antigo Mapeamento atual Exemplo de registro de referência
1.1.1.1 (endereço IP) src.ip principal.ip "<163>10 de abril 09:00:05 hostname.com sshd[3318513]: Accepted password for abc from 1.1.1.1 port 33988 ssh2"
1.1.1.1 (endereço IP) principal.ip target.ip "<29>Oct 5 08:37:16 abc ProxySG: E0000 Access Log HTTP (main): Connecting to server 1.1.1.1 on port 4433.(0) NORMAL_EVENT alog_stream_http.cpp 261"
abc (usuário) principal.user.userid target.user.userid "<85>Feb 27 08:26:55 offozcav login: FAILED LOGIN 1 FROM ::ffff:1.1.1.1 FOR abc, Authentication failure\r\n\r\n"
abc.abc (usuário) principal.user.userid target.user.userid "<86>27 de fevereiro, 08:29:19 offozcav login: LOGIN ON pts/43 BY abc.abc FROM\r\n\r\n::ffff:1.1.1.1"
COMMAND principal.process.command_line target.process.command_line "<85>24 de setembro 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number"
exe target.process.file.full_path principal.process.file.full_path
_ItemId additional.fields metadata.product_log_id
metadata.product_event_type PATH SECCOMP
process.name principal.process.file.full_path target.process.file.full_path
_ResourceId additional.fields target.resource.product_object_id
TenantId additional.fields metadata.product_deployment_id
uid principal.user.userid target.user.userid
USER principal.user.user_display_name target.user.userid "<85>24 de setembro 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number"
user principal.user.userid target.user.userid "29>Jan 16 11:28:00 san-auth-1-irl2 tac_plus[17329]: login failure: user 1.1.1.1 (1.1.1.1) vty0"
user principal.user.userid target.user.userid "<87>15 de julho 10:27:01 xpgjrconfdb01 crond[1045]: pam_unix(crond:account): senha expirada para o usuário root (senha antiga)"

Delta de mapeamento de tipo de evento

Vários eventos que antes eram classificados como genéricos agora são classificados corretamente com tipos de eventos significativos.

A tabela a seguir lista o delta para o processamento de tipos de eventos do Okta antes e depois de 23 de setembro de 2025 (listados nas colunas Old event_type e Current event-type, respectivamente).

eventType do registro Old event_type Current event_type
aix_event_type=CRON_Start USER_LOGIN PROCESS_LAUNCH
CRYPTO_KEY_USER NETWORK_CONNECTION USER_LOGIN
FILE_Mknod USER_LOGIN FILE_CREATION
FILE_Rename USER_LOGIN FILE_MODIFICATION
FILE_Stat USER_LOGIN FILE_OPEN
FILE_Unlink USER_LOGIN FILE_DELETION
FS_Chabc USER_LOGIN PROCESS_UNCATEGORIZED
FS_Mkdir USER_LOGIN FILE_CREATION
FS_Rmdir USER_LOGIN FILE_DELETION
PROC_Execute USER_LOGIN PROCESS_LAUNCH
type=ANOM_ABEND STATUS_UPDATE PROCESS_TERMINATION
type=ANOM_PROMISCUOUS SETTING_MODIFICATION
type=CRED_REFR USER_LOGIN USER_CHANGE_PERMISSIONS
type=PROCTILE PROCESS_UNCATEGORIZED PROCESS_LAUNCH
type=SERVICE_START USER_RESOURCE_ACCESS SERVICE_START
type=SERVICE_STOP USER_RESOURCE_ACCESS SERVICE_STOP
type=USER_ACCT USER_LOGIN/SETTING_MODIFICTION USER_LOGIN
type=USER_MGMT SETTING_MODIFICATION/GROUP_MODIFICATION GROUP_MODIFICATION
USER_ERR USER_LOGOUT USER_LOGIN

Outras mudanças

  • Remoção do mapeamento duplicado de res de security_result.description. Ele é capturado em security_result.action_details.
  • Remoção de auditd_msg_data desnecessários de campos adicionais.
  • Removemos auditd_msg_data desnecessários de security_result.summary.
  • Em type=ADD_USER, removemos o mapeamento duplicado de acct para target.user.display_name. Ele já está mapeado em target.user.userid.
  • O mapeamento duplicado de comm foi removido de principal.process.command_line e principal.process.file.names. Ele é capturado em principal.application.
  • Removemos o mapeamento duplicado de target.hostname quando o valor está em principal.
  • Removido o mapeamento codificado desnecessário de target.resource.type para SETTING.
  • Removido o mapeamento de rótulos "Sobre" porque ele foi descontinuado.
  • Mapeamento corrigido: agora os IPs são roteados para principal.ip, não para principal.hostname.
  • Corrigimos a repetição de eventos gerados.

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