Voltar ao Diminua Blog

Artigo

Desvendando o `auditd` no Linux: Rastreando Atividades Críticas no Sistema

Um guia completo para configurar e utilizar o `auditd` para auditoria de segurança e conformidade em sistemas Linux.

Desvendando o `auditd` no Linux: Rastreando Atividades Críticas no Sistema

Em um ambiente de TI onde a segurança e a conformidade são primordiais, ter a capacidade de rastrear e registrar atividades críticas no sistema é fundamental. O Linux oferece uma ferramenta robusta para isso: o auditd (audit daemon). Este artigo irá guiá-lo através da configuração, uso e interpretação dos logs gerados pelo auditd, permitindo que você monitore quem fez o quê e quando em seu sistema.

Por que usar o `auditd`?

O auditd é o daemon de auditoria do sistema Linux. Ele é responsável por coletar informações de segurança do kernel e gravá-las em disco. Diferente de logs de auditoria genéricos, o auditd é altamente configurável e permite rastrear eventos específicos com base em uma ampla gama de critérios. Isso é essencial para:

  • Detecção de Intrusão: Identificar atividades suspeitas ou não autorizadas.
  • Conformidade Regulatória: Atender a requisitos de conformidade como PCI DSS, HIPAA, GDPR, etc.
  • Análise Forense: Investigar incidentes de segurança após ocorrido.
  • Monitoramento de Mudanças: Rastrear modificações em arquivos críticos do sistema ou configurações.

Instalação do `auditd`

Na maioria das distribuições Linux modernas, o auditd já vem pré-instalado. Caso contrário, você pode instalá-lo usando o gerenciador de pacotes da sua distribuição:

# Para sistemas baseados em Debian/Ubuntu
sudo apt update && sudo apt install auditd audispd-plugins

# Para sistemas baseados em RHEL/CentOS/Fedora
sudo yum install audit audit-libs
ou
sudo dnf install audit audit-libs

Após a instalação, o serviço geralmente é iniciado automaticamente. Você pode verificar o status com:

sudo systemctl status auditd

Se não estiver ativo, inicie-o e habilite-o para iniciar no boot:

sudo systemctl start auditd
sudo systemctl enable auditd

Configuração do `auditd`

A configuração principal do auditd reside no arquivo /etc/audit/auditd.conf. Este arquivo controla o comportamento do daemon, como o local dos logs, o tamanho máximo dos arquivos de log, a rotação de logs, etc. Embora muitas vezes as configurações padrão sejam suficientes, é importante conhecer algumas opções:

  • log_file: Especifica o caminho para o arquivo de log.
  • max_log_file: Define o tamanho máximo do arquivo de log em MB.
  • num_logs: Define o número de arquivos de log a serem mantidos.
  • flush: Define a frequência com que os eventos são gravados no disco (INCREMENTAL ou DATA).

Regras de Auditoria

A parte mais poderosa do auditd são as suas regras de auditoria, que definem quais eventos devem ser monitorados. Estas regras são configuradas em /etc/audit/rules.d/. Cada arquivo .rules dentro deste diretório é carregado pelo daemon. As regras podem ser:

  • Regras de Caminho (Path Rules): Monitoram acessos a arquivos e diretórios específicos.
  • Regras de Fachada (Fmatched Rules): Monitoram chamadas de sistema (syscalls) com base em seus nomes ou números.
  • Regras de Bloqueio (Loginuid Rules): Monitoram eventos de login e logout.

Vamos criar algumas regras úteis. Edite ou crie um novo arquivo em /etc/audit/rules.d/, por exemplo, /etc/audit/rules.d/custom.rules.

Exemplo de Regras de Caminho

Para monitorar todas as tentativas de escrita no arquivo /etc/passwd:

-w /etc/passwd -p w -k passwd_changes
  • -w /etc/passwd: Especifica o caminho do arquivo a ser monitorado.
  • -p w: Define o tipo de permissão a ser auditada (w para escrita). Outras opções incluem r (leitura), x (execução) e a (auditoria/atribuição).
  • -k passwd_changes: Um identificador chave (key) para facilitar a busca nos logs.

Para monitorar todas as tentativas de acesso (leitura, escrita, execução) a um diretório específico, como /etc/ssh/sshd_config:

-w /etc/ssh/sshd_config -p warx -k sshd_config_access
Exemplo de Regras de Fachada (Syscall)

Para monitorar todas as chamadas de sistema relacionadas à manipulação de usuários, como add_user, delete_user, etc. (isso pode variar um pouco entre as versões do kernel, mas um exemplo genérico seria):

-a always,exit -F arch=b64 -S adduser,deluser,usermod,userdel -k user_management
  • -a always,exit: Aplica a regra sempre que a chamada de sistema sair.
  • -F arch=b64: Filtra para arquitetura de 64 bits. Pode ser b32 para 32 bits.
  • -S adduser,deluser,...: Lista as chamadas de sistema a serem monitoradas.
  • -k user_management: Identificador chave.

Atenção: Monitorar chamadas de sistema pode gerar um volume muito grande de logs. Use com cautela e apenas para eventos realmente críticos.

Carregando as Regras

Após salvar suas regras em um arquivo .rules, você precisa carregá-las. A maneira mais comum é reiniciar o serviço auditd:

sudo systemctl restart auditd

Alternativamente, você pode carregar as regras sem reiniciar o serviço:

sudo augenrules --load

Para verificar as regras atualmente ativas:

sudo auditctl -l

Interpretando os Logs do `auditd`

Os logs do auditd são geralmente armazenados em /var/log/audit/audit.log. Eles são formatados em um formato específico e podem ser difíceis de ler diretamente. A ferramenta principal para consultar esses logs é o ausearch.

Usando `ausearch`

O ausearch permite filtrar os logs por diversos critérios, como data, hora, tipo de evento, usuário, chave (key), etc.

Para buscar todos os eventos relacionados à chave passwd_changes:

sudo ausearch -k passwd_changes

Para buscar eventos de um usuário específico (por exemplo, UID 1000):

sudo ausearch -ui 1000

Para buscar eventos de login/logout:

sudo ausearch -m USER_LOGIN -m USER_LOGOUT

Para buscar eventos em um intervalo de tempo:

sudo ausearch -ts today -te now

Usando `aureport`

O aureport gera relatórios resumidos a partir dos logs de auditoria, o que pode ser muito útil para obter uma visão geral das atividades.

Para gerar um relatório de resumo de todos os eventos:

sudo aureport -s

Para gerar um relatório de eventos de login/logout:

sudo aureport -l

Para gerar um relatório de eventos de manipulação de arquivos:

sudo aureport -f

Boas Práticas e Cuidados

  • Volume de Logs: O auditd pode gerar um grande volume de logs. Monitore o espaço em disco e configure a rotação de logs adequadamente em auditd.conf.
  • Regras Específicas: Comece com regras específicas para os eventos mais críticos. Evite regras genéricas que possam sobrecarregar o sistema ou os logs.
  • Performance: Regras de auditoria, especialmente as que monitoram chamadas de sistema, podem impactar a performance do sistema. Teste em um ambiente controlado antes de aplicar em produção.
  • Segurança dos Logs: Garanta que os arquivos de log estejam protegidos contra modificação ou exclusão. O auditd é projetado para ser seguro, mas a configuração do sistema de arquivos é importante.
  • Análise Regular: Não basta coletar os logs; é preciso analisá-los regularmente. Ferramentas de análise de log centralizadas podem ser úteis em ambientes maiores.
  • Integração com Ferramentas de Monitoramento: Considere integrar a saída do auditd com sistemas de monitoramento e alerta, como o Diminua, para reações mais rápidas a eventos de segurança.

Conclusão

O auditd é uma ferramenta indispensável para administradores de sistemas Linux que buscam fortalecer a segurança e garantir a conformidade. Ao entender como configurar e interpretar seus logs, você ganha uma visibilidade sem precedentes sobre as atividades em seu sistema, permitindo a detecção precoce de ameaças e a investigação eficaz de incidentes. Comece com regras simples e expanda conforme a necessidade, sempre priorizando a segurança e a performance do seu ambiente.

Foto de Tima Miroshnichenko no Pexels.