Coletar registros do daemon de auditoria do Linux
Este documento explica como ingerir registros do daemon de auditoria do Linux (auditd) no Google Security Operations usando o Bindplane.
O daemon de auditoria do Linux é o componente do espaço do usuário do sistema de auditoria do Linux. Ele registra eventos relevantes para a segurança no sistema, incluindo acesso a arquivos, chamadas de sistema, eventos de autenticação e negações do SELinux. Os registros do Auditd são essenciais para o monitoramento de compliance, a detecção de intrusões e a análise forense em hosts Linux.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps.
- Windows Server 2016 ou mais recente ou host Linux com
systemd. - Se você estiver executando um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane.
- Acesso root ou sudo no host Linux que executa o auditd.
- O pacote
auditdinstalado e em execução no host Linux de origem. - O pacote
audispd-pluginsinstalado no host Linux de origem (fornece o plug-inaudisp-syslog).
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. Salve o arquivo com segurança no sistema em que o Bindplane será instalado.
Receber o ID de 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
Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.
Instalação do Windows
- Abra o prompt de comando ou o PowerShell como administrador.
Execute este comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de root ou sudo.
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 do agente do Bindplane.
Configurar o agente do Bindplane para ingerir syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Linux:
/status observiq-otel-collector/config.yaml - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
- Linux:
Edite o arquivo
config.yamlda seguinte forma:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: '<your_customer_id>' endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'AUDITD' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
- Substitua
<your_customer_id>pelo ID de cliente real. - Atualize
/path/to/ingestion-authentication-file.jsonpara o caminho do arquivo em que o arquivo de autenticação foi salvo na etapa Receber arquivo de autenticação de ingestão.
Reinicie o agente do Bindplane para aplicar as mudanças:
Para reiniciar o agente do Bindplane no Linux:
Execute este comando:
sudo systemctl restart observiq-otel-collectorVerifique se o serviço está em execução:
sudo systemctl status observiq-otel-collectorVerifique se há erros nos registros:
sudo journalctl -u observiq-otel-collector -f
Para reiniciar o agente do Bindplane em Windows:
Escolha uma das seguintes opções:
- Prompt de comando ou PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collector- Console de serviços:
- Pressione
Win+R, digiteservices.msce pressione Enter. - Localize o Coletor do OpenTelemetry da observIQ.
- Clique com o botão direito do mouse e selecione Reiniciar.
- Pressione
Verifique se o serviço está em execução:
sc query observiq-otel-collectorVerifique se há erros nos registros:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configurar o auditd para encaminhar registros usando o syslog
O plug-in audisp syslog encaminha eventos de auditoria para o syslog, que os envia ao agente do BindPlane. Esse é o método recomendado para encaminhar registros do auditd.
Instalar o plug-in syslog do audisp
- Faça login no host do Linux que executa o auditd com privilégios de raiz ou sudo.
Instale o pacote
audispd-plugins:- RHEL/CentOS/Fedora:
sudo yum install audispd-plugins- Debian/Ubuntu:
sudo apt install audispd-plugins
Configurar o plug-in syslog
Edite o arquivo de configuração do plug-in do syslog:
sudo nano /etc/audit/plugins.d/syslog.confDefina os seguintes valores no arquivo:
active = yes direction = out path = /sbin/audisp-syslog type = always args = LOG_LOCAL6 format = string- active: defina como
yespara ativar o plug-in. - path: o caminho para o binário
audisp-syslog. - type: defina como
alwayspara executar o plug-in como um programa externo. - args: a facilidade do syslog a ser usada.
LOG_LOCAL6é recomendado para separar os registros de auditoria de outras mensagens do syslog. - format: defina como
stringpara transmitir eventos em um formato de texto adequado para syslog.
- active: defina como
Configurar regras de auditoria (opcional)
Edite o arquivo de regras de auditoria para definir quais eventos capturar:
sudo nano /etc/audit/rules.d/audit.rulesAdicione regras com base nos seus requisitos de monitoramento. Exemplo:
## Delete all existing rules -D ## Set buffer size (increase for high-volume systems) -b 8192 ## Set failure mode (1 = printk, 2 = panic) -f 1 ## Monitor authentication-related files -w /etc/passwd -p wa -k identity -w /etc/group -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/sudoers -p wa -k sudoers ## Monitor login events -w /var/log/faillog -p wa -k logins -w /var/log/lastlog -p wa -k logins ## Monitor process execution -a always,exit -F arch=b64 -S execve -k exec ## Monitor network configuration changes -a always,exit -F arch=b64 -S sethostname -S setdomainname -k network ## Make the configuration immutable (must be the last rule) -e 2Carregue as novas regras de auditoria:
sudo augenrules --load
Reiniciar o auditd
Reinicie o serviço auditd para aplicar as mudanças no plug-in e nas regras:
sudo service auditd restart
Configurar o rsyslog para encaminhar registros de auditoria ao Bindplane
Crie um arquivo de configuração rsyslog para encaminhamento de registro de auditoria:
sudo nano /etc/rsyslog.d/audit-forward.confAdicione a seguinte linha para encaminhar registros via UDP ao agente do BindPlane:
local6.* @<BINDPLANE_IP>:514Reinicie o rsyslog para aplicar as mudanças:
sudo systemctl restart rsyslog
Verificar o encaminhamento de registros
No host Linux de origem, gere um evento de auditoria de teste:
sudo auditctl -w /tmp/test_audit -p wa -k test_chronicleToque no arquivo para ativar a observação:
touch /tmp/test_auditNo host do agente do Bindplane, verifique se os registros estão sendo recebidos:
sudo journalctl -u observiq-otel-collector -f
Tabela de mapeamento de UDM
| Campo de registro | Mapeamento de UDM | Lógica |
|---|---|---|
acct |
target.user.userid |
Valor extraído do campo acct. |
addr |
principal.ip |
Valor extraído do campo addr se for um endereço IP válido. |
arch |
additional.fields |
Adicionado como um par de chave-valor com a chave "arch". |
auid |
principal.user.userid |
Valor extraído do campo auid. Usado como o ID do usuário de auditoria. |
comm |
target.process.command_line |
Valor extraído do campo comm. |
cwd |
additional.fields |
Adicionado como um par de chave-valor com a chave "cwd". |
exe |
target.process.file.full_path |
Valor extraído do campo exe. |
exit |
additional.fields |
Adicionado como um par de chave-valor com a chave "exit". |
gid |
principal.user.group_identifiers |
Valor extraído do campo gid. |
hostname |
principal.hostname |
Valor extraído do campo hostname. |
key |
security_result.detection_fields |
Adicionada como um par de chave-valor com a chave "audit_key". |
msg |
metadata.description |
Analisado no campo msg. Contém a mensagem do evento de auditoria. |
name |
target.file.full_path |
Valor extraído do campo name quando aplicável. |
node |
principal.hostname |
Valor extraído do campo node se hostname não estiver presente. |
op |
metadata.product_event_type |
Valor extraído do campo op (tipo de operação). |
pid |
principal.process.pid |
Valor extraído do campo pid. |
ppid |
principal.process.parent_process.pid |
Valor extraído do campo ppid. |
res |
security_result.action |
Defina como "ALLOW" se res for "success" ou "1". Definido como "BLOCK" se res for "failed" ou "0". |
ses |
network.session_id |
Valor extraído do campo ses (ID da sessão). |
subj |
principal.process.file.full_path |
Valor extraído do campo subj (contexto do assunto SELinux). |
syscall |
additional.fields |
Adicionado como um par de chave-valor com a chave "syscall". |
terminal |
additional.fields |
Adicionado como um par de chave-valor com a chave "terminal". |
type |
metadata.product_event_type |
Valor extraído do campo type (tipo de registro de auditoria, por exemplo, SYSCALL, USER_LOGIN, EXECVE). |
uid |
principal.user.userid |
Valor extraído do campo uid. |
metadata.event_type |
Derivado do tipo de registro de auditoria. Defina como "USER_LOGIN" para eventos de login, "USER_LOGOUT" para eventos de logout, "PROCESS_LAUNCH" para eventos de execução e "FILE_MODIFICATION" para eventos de arquivo. O padrão é "GENERIC_EVENT". | |
metadata.product_name |
Defina como "auditd". | |
metadata.vendor_name |
Defina como "Linux". | |
home |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
shell |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
name |
event.idm.read_only_udm.target.user.userid |
Mapeado do registro de mudanças |
name |
event.idm.read_only_udm.target.group.group_display_name |
Mapeado do registro de mudanças |
UID |
event.idm.read_only_udm.target.user.product_object_id |
Mapeado do registro de mudanças |
GID |
event.idm.read_only_udm.target.user.group_identifiers |
Mapeado do registro de mudanças |
GID |
event.idm.read_only_udm.target.group.product_object_id |
Mapeado do registro de mudanças |
key_type |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
hash |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
key_fingerprint |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
user |
event.idm.read_only_udm.target.user.userid |
Mapeado do registro de mudanças |
error_detail1 |
event.idm.read_only_udm.security_result.summary |
Mapeado do registro de mudanças |
service_name |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
ssh_disconnect_code |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
labels.bp_csoc |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
labels.bp_env_id |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
labels.log.file.name |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
resource.labels.node_id |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
intermediary_host |
event.idm.read_only_udm.intermediary.hostname |
Mapeado do registro de mudanças |
PWD |
event.idm.read_only_udm.target.file.full_path |
Mapeado do registro de mudanças |
log_details |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
indicator.SUID |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
indicator.UID |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
indicator.AUID |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
type_crypto_props.msg |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
usr |
event.idm.read_only_udm.principal.user.userid |
Mapeado do registro de mudanças |
pi |
event.idm.read_only_udm.principal.process.pid |
Mapeado do registro de mudanças |
cmnd |
event.idm.read_only_udm.target.process.command_line |
Mapeado do registro de mudanças |
proctitle_value |
event.idm.read_only_udm.principal.process.file.full_path |
Mapeado do registro de mudanças |
filename |
event.idm.read_only_udm.principal.process.file.names |
Mapeado do registro de mudanças |
filepath |
event.idm.read_only_udm.target.file.full_path |
Mapeado do registro de mudanças |
uid |
event.idm.read_only_udm.principal.user.userid |
Mapeado do registro de mudanças |
acct |
event.idm.read_only_udm.principal.user.user_display_name |
Mapeado do registro de mudanças |
exe |
event.idm.read_only_udm.target.process.file.full_path |
Mapeado do registro de mudanças |
pid |
event.idm.read_only_udm.principal.process.pid |
Mapeado do registro de mudanças |
auid |
event.idm.read_only_udm.about.user.userid |
Mapeado do registro de mudanças |
ses |
event.idm.read_only_udm.network.session_id |
Mapeado do registro de mudanças |
addr |
event.idm.read_only_udm.principal.ip e event.idm.read_only_udm.principal.asset.ip |
Mapeado do registro de mudanças |
subj |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
res |
event.idm.read_only_udm.security_result.summary |
Mapeado do registro de mudanças |
op |
event.idm.read_only_udm.security_result.summary |
Mapeado do registro de mudanças |
msg_value |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
grantors_value |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
indicator.msg |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
indicator.grantors |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
terminal |
event.idm.read_only_udm.principal.application |
Mapeado do registro de mudanças |
sec_result |
event.idm.read_only_udm.security_result |
Mapeado do registro de mudanças |
hostname |
event.idm.read_only_udm.principal.hostname |
Mapeado do registro de mudanças |
indicator.mode |
event.idm.read_only_udm.src.user.attribute.permissions |
Mapeado do registro de mudanças |
indicator.nametype |
event.idm.read_only_udm.security_result.rule_name |
Mapeado do registro de mudanças |
indicator.cap_frootid |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
indicator.cap_fver |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
indicator.cap_fi |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
indicator.cap_fp |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
indicator.cap_fe |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
OUID |
event.idm.read_only_udm.principal.user.userid |
Mapeado do registro de mudanças |
OGID |
event.idm.read_only_udm.principal.group.group_display_name |
Mapeado do registro de mudanças |
action_data |
event.idm.read_only_udm.security_result.action_details |
Mapeado do registro de mudanças |
target_email |
event.idm.ready_only_udm.target.user.email_addresses |
Mapeado do registro de mudanças |
target_port |
event.idm.ready_only_udm.target.port |
Mapeado do registro de mudanças |
status |
event.idm.ready_only_udm.security_result.action_details |
Mapeado do registro de mudanças |
to_email |
event.idm.ready_only_udm.network.email.to |
Mapeado do registro de mudanças |
target_hostname |
event.idm.ready_only_udm.target.hostname |
Mapeado do registro de mudanças |
"relay_data" |
event.idm.ready_only_udm.additional.fields |
Mapeado do registro de mudanças |
"delays_data" |
event.idm.ready_only_udm.additional.fields |
Mapeado do registro de mudanças |
"delay_data" |
event.idm.ready_only_udm.additional.fields |
Mapeado do registro de mudanças |
and "dns_data" |
event.idm.ready_only_udm.additional.fields |
Mapeado do registro de mudanças |
bytes_sent |
event.idm.ready_only_udm.network.sent_bytes |
Mapeado do registro de mudanças |
bytes_received |
event.idm.ready_only_udm.network.received_bytes |
Mapeado do registro de mudanças |
response_code |
event.idm.ready_only_udm.network.http.response_code |
Mapeado do registro de mudanças |
principal_user_name |
principal.user.userid |
Mapeado do registro de mudanças |
remote |
principal.ip |
Mapeado do registro de mudanças |
method |
network.http.method |
Mapeado do registro de mudanças |
path |
principal.file.full_path |
Mapeado do registro de mudanças |
code |
additional.fields |
Mapeado do registro de mudanças |
size |
principal.file.size |
Mapeado do registro de mudanças |
agent |
network.http.user_agent |
Mapeado do registro de mudanças |
az |
principal.location.name |
Mapeado do registro de mudanças |
ec2_instance_id |
principal.asset.product_object_id |
Mapeado do registro de mudanças |
private_ip |
principal.ip |
Mapeado do registro de mudanças |
ProviderName |
additional.fields |
Mapeado do registro de mudanças |
Version |
additional.fields |
Mapeado do registro de mudanças |
Task |
additional.fields |
Mapeado do registro de mudanças |
EventRecordID |
additional.fields |
Mapeado do registro de mudanças |
ThreadID |
additional.fields |
Mapeado do registro de mudanças |
messageType |
target.resource.attribute.labels |
Mapeado do registro de mudanças |
owner |
principal.user.userid |
Mapeado do registro de mudanças |
logevent.id |
metadata.product_log_id |
Mapeado do registro de mudanças |
logGroup |
secu_result.about.resource.name |
Mapeado do registro de mudanças |
logStream |
secu_result.about.resource.attribute.labels |
Mapeado do registro de mudanças |
ip_addr |
principal.ip |
Mapeado do registro de mudanças |
gd |
secu_result.description |
Mapeado do registro de mudanças |
process |
target.application |
Mapeado do registro de mudanças |
pid |
target.process.pid |
Mapeado do registro de mudanças |
status_code |
network.http.response_code |
Mapeado do registro de mudanças |
url |
network.http.referral_url |
Mapeado do registro de mudanças |
useragent |
network.http.user_agent |
Mapeado do registro de mudanças |
request |
additional.fields |
Mapeado do registro de mudanças |
tls_version |
network.tls.version |
Mapeado do registro de mudanças |
hostname_is |
principal.hostname |
Mapeado do registro de mudanças |
referrer |
network.http.referral_url |
Mapeado do registro de mudanças |
metadata.event_type |
USER_LOGIN |
Mapeado do registro de mudanças |
metadata.event_type |
PROCESS_UNCATEGORIZED |
Mapeado do registro de mudanças |
srcIP |
principal.ip |
Mapeado do registro de mudanças |
username |
principal.user.user_display_name |
Mapeado do registro de mudanças |
type_syscall_props.msg |
additional.fields |
Mapeado do registro de mudanças |
sw", "sw_type", and "subj |
security_result.detection_fields |
Mapeado do registro de mudanças |
indicator.SYSCALL |
security_result.detection_fields |
Mapeado do registro de mudanças |
exe |
principal.process.file.full_path |
Mapeado do registro de mudanças |
target.user.userid |
principal.user.userid |
Mapeado do registro de mudanças |
target_user_name |
target.user.userid |
Mapeado do registro de mudanças |
field |
field33 |
Mapeado do registro de mudanças |
fp |
network.tls.client.certificate.sha256 |
Mapeado do registro de mudanças |
pid |
principal.process.pid |
Mapeado do registro de mudanças |
syslog-tag |
security_result.detection_fields |
Mapeado do registro de mudanças |
inter_ip |
intermediary.ip |
Mapeado do registro de mudanças |
inter_hostname |
intermediary.hostname |
Mapeado do registro de mudanças |
grp |
target.group.group_display_name |
Mapeado do registro de mudanças |
id |
about.user.userid |
Mapeado do registro de mudanças |
acct |
target.user.user_display_name |
Mapeado do registro de mudanças |
uid |
principal.user.userid |
Mapeado do registro de mudanças |
auid |
about.user.userid |
Mapeado do registro de mudanças |
auid |
target.user.userid |
Mapeado do registro de mudanças |
op" and "id |
security_result.summary |
Mapeado do registro de mudanças |
op" and "acct |
security_result.summary |
Mapeado do registro de mudanças |
labels.compute.googleapis.com/resource_name","jsonPayload._HOSTNAME" , "CollectorHostName", "HOSTNAME", and "Computer |
principal.hostname |
Mapeado do registro de mudanças |
HostIP |
principal.ip |
Mapeado do registro de mudanças |
ProcessID" and "jsonPayload._PID |
principal.process.pid |
Mapeado do registro de mudanças |
SyslogMessage |
metadata.description |
Mapeado do registro de mudanças |
TenantId", "_ItemId", "_Internal_WorkspaceResourceId", "_ResourceId", and "Facility |
additional.fields |
Mapeado do registro de mudanças |
SeverityLevel |
security_result.severity |
Mapeado do registro de mudanças |
SourceSystem |
principal.platform |
Mapeado do registro de mudanças |
jsonPayload._COMM |
principal.application |
Mapeado do registro de mudanças |
jsonPayload._EXE |
target.process.file.full_path |
Mapeado do registro de mudanças |
jsonPayload._AUDIT_FIELD_FILE |
target.file.full_path |
Mapeado do registro de mudanças |
jsonPayload._AUDIT_FIELD_HASH |
target.file.hash |
Mapeado do registro de mudanças |
jsonPayload._AUDIT_SESSION |
network.session_id |
Mapeado do registro de mudanças |
jsonPayload._PPID |
principal.process.parent_process.pid |
Mapeado do registro de mudanças |
jsonPayload._AUDIT_FIELD_A0", "jsonPayload._AUDIT_FIELD_A1", "jsonPayload._AUDIT_FIELD_A2", "jsonPayload._AUDIT_FIELD_A3", "jsonPayload._BOOT_ID", and "jsonPayload._AUDIT_FIELD_EXIT |
security_result.detection_fields |
Mapeado do registro de mudanças |
id |
target.user.userid |
Mapeado do registro de mudanças |
ID |
target.user.user_display_name |
Mapeado do registro de mudanças |
user_name |
principal.user.userid |
Mapeado do registro de mudanças |
principal_user_userid |
principal.user.userid |
Mapeado do registro de mudanças |
vendor_name |
Linux |
Mapeado do registro de mudanças |
product_name |
AuditD |
Mapeado do registro de mudanças |
ip |
target.ip |
Mapeado do registro de mudanças |
success |
security_result.summary |
Mapeado do registro de mudanças |
syscall", "exit", "tty", "a0", "a1", "a2", "a3 |
security_result.about.labels |
Mapeado do registro de mudanças |
Registro de alterações
Ver o registro de alterações deste analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.