Coletar registros de auditoria do Linux e de sistemas AIX
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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- Baixe o arquivo de autenticação de ingestão.
Receber o ID do cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie e salve o ID do cliente na seção Detalhes da organização.
Instalar o agente do BindPlane
- 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
- 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
- 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
- Acesse a máquina em que o Bindplane está instalado.
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
Reinicie o agente do Bindplane para aplicar as mudanças usando o seguinte comando:
sudo systemctl bindplane restart
Como exportar o Syslog do Auditd
- Acesse a máquina de onde você quer exportar os registros de auditoria.
Abra o arquivo de configuração do Auditd (normalmente localizado em
/etc/audit/auditd.conf
).sudo vi /etc/audit/auditd.conf
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
```
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
Encontre ou adicione as seguintes linhas para configurar o audispd:
active = yes direction = out path = builtin_syslog type = builtin args = LOG_INFO format = string
Reinicie o serviço Auditd para aplicar as mudanças:
sudo systemctl restart auditd
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)
Edite o
rsyslog.conf
ou crie uma configuração personalizada:sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
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.
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
desecurity_result.description
. Ele é capturado emsecurity_result.action_details
. - Remoção de
auditd_msg_data
desnecessários de campos adicionais. - Removemos
auditd_msg_data
desnecessários desecurity_result.summary
. - Em
type=ADD_USER
, removemos o mapeamento duplicado deacct
paratarget.user.display_name
. Ele já está mapeado emtarget.user.userid
. - O mapeamento duplicado de
comm
foi removido deprincipal.process.command_line
eprincipal.process.file.names
. Ele é capturado emprincipal.application
. - Removemos o mapeamento duplicado de
target.hostname
quando o valor está emprincipal
. - Removido o mapeamento codificado desnecessário de
target.resource.type
paraSETTING
. - Removido o mapeamento de rótulos "Sobre" porque ele foi descontinuado.
- Mapeamento corrigido: agora os IPs são roteados para
principal.ip
, não paraprincipal.hostname
. - Corrigimos a repetição de eventos gerados.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.