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 formatadas em JSON e em texto simples, 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 de 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 | Lógica |
---|---|---|
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 . |
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 |
principal.process.file.full_path , target.process.file.full_path |
O caminho executável (exe ) é mapeado para principal.process.file.full_path ou target.process.file.full_path , dependendo do contexto. |
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 . |
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. |
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. |
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.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, PERMITIR, BLOQUEAR). |
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 chamada de sistema é 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. |
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 |
principal.user.userid , target.user.userid |
O ID do usuário (uid ) é mapeado para principal.user.userid ou target.user.userid , dependendo do contexto. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.