Introdução ao AuditD
Introdução
O auditd
é o daemon responsável pelo subsistema de auditoria no Linux, monitorando e registrando atividades específicas conforme regras definidas pelo administrador. Esse sistema é crucial para rastrear ações no sistema, apoiando a segurança, conformidade regulatória e a investigação de incidentes.
O auditd
grava eventos de auditoria em /var/log/audit/audit.log
, como acesso a arquivos, execução de comandos e chamadas de sistema. Ferramentas como ausearch
e aureport
permitem consulta e análise desses logs:
- ausearch: Busca e filtra eventos específicos.
- aureport: Gera relatórios consolidados de atividades monitoradas.
Configuração de Regras com auditctl e augenrules
Para configurar o sistema de auditoria, o administrador pode utilizar a ferramenta de linha de comando auditctl
. Esta ferramenta aplica regras temporárias de auditoria que se mantêm apenas até o próximo reinício do sistema. Para regras permanentes, é necessário definir as configurações em arquivos de regras:
/etc/audit/audit.rules
Armazena regras de auditoria que serão carregadas no sistema durante a inicialização./etc/audit/rules.d/
Contém arquivos individuais com conjuntos de regras organizados por tipos (como regras para monitoramento de arquivos e syscalls). Esse método modular facilita a organização das regras.
O programa augenrules
compila todos os arquivos de regras do diretório /etc/audit/rules.d/
em um único arquivo /etc/audit/audit.rules
, garantindo que todas as configurações sejam aplicadas na inicialização do sistema.
Configuração do Daemon auditd
As configurações do daemon auditd
estão no arquivo /etc/audit/auditd.conf
, onde o administrador pode definir opções como:
- Tamanho máximo dos arquivos de log.
- Rotação automática dos logs.
- Ações a serem tomadas caso o disco esteja cheio e não seja possível registrar novos eventos.
Esses parâmetros garantem que o sistema de auditoria opere de forma eficiente e segura, mesmo sob condições de uso intenso.
Regras de Auditoria
As regras de auditoria do auditd
permitem o controle e monitoramento detalhado das atividades no sistema Linux. Elas são organizadas em três categorias principais: regras de controle, regras de sistema de arquivos e regras de chamadas de sistema (syscall). Abaixo, detalhamos cada uma dessas categorias.
Control Rules (Regras de Controle)
As regras de controle ajustam o comportamento do sistema de auditoria, definindo parâmetros essenciais para o funcionamento do auditd
. Essas configurações são aplicadas no arquivo de regras (audit.rules
) e garantem que o sistema de auditoria opere de acordo com as políticas de segurança e desempenho desejadas.
# Limpa todas as regras de auditoria previamente configuradas.
-D
# Define o tamanho do buffer que armazena temporariamente eventos antes de gravá-los no disco. Aqui, a capacidade é definida para 8192 eventos.
-b 8192
# Controla o estado do subsistema de auditoria com três níveis de configuração:
# - `-e 0`: Desativa o sistema de auditoria.
# - `-e 1`: Ativa o sistema de auditoria.
# - `-e 2`: Torna o sistema **imutável** (as regras definidas não podem ser alteradas até o próximo reinício).
-e 2
# Configura o sistema para entrar em **pânico** e desligar ao detectar falha na auditoria, evitando operações não auditadas.
-f 2
# Define o limite máximo de mensagens de auditoria geradas por segundo (neste exemplo, 100), prevenindo sobrecarga do sistema por excesso de eventos.
-r 100
Essas configurações controlam aspectos importantes da auditoria, como o uso de memória e a resposta a falhas, garantindo que o sistema seja auditado de forma eficiente e segura.
File System Rules (Regras de Sistema de Arquivos)
Essas regras permitem o monitoramento de acessos a arquivos ou diretórios específicos, registrando operações como leitura, escrita, execução ou alterações de atributos.
Sintaxe básica:
auditctl -w <caminho_do_arquivo> -p <permissões> -k <chave>
Onde:
-w: Especifica o caminho do arquivo ou diretório a ser monitorado.
-p: Define as permissões a serem monitoradas (r: leitura, w: escrita, x: execução, a: alteração de atributos).
-k: Define uma chave que será usada para categorizar os eventos no log.
As permissões (usadas com o parâmetro-p
) listadas abaixo indicam os tipos de acesso que são registrados no sistema de auditoria:r: acesso de leitura a um arquivo ou diretório.
w: acesso de escrita a um arquivo ou diretório.
x: acesso de execução a um arquivo ou diretório.
a: modificação de atributos de um arquivo ou diretório.
Exemplo prático:
Para monitorar modificações no arquivo/etc/passwd
:auditctl -w /etc/passwd -p wa -k passwd_changes
Nesse caso, a regra monitora operações de escrita (
w
) e alteração de atributos (a
) no arquivo/etc/passwd
.
System Call Rules (Regras de Chamadas de Sistema - Syscall)
As regras de chamadas de sistema monitoram syscalls específicas feitas por processos ou usuários, possibilitando uma auditoria detalhada de interações críticas com o kernel. Uma syscall (ou "system call", chamada de sistema) é uma interface que permite que programas no espaço do usuário (como aplicativos e processos) se comuniquem com o kernel do sistema operacional, pedindo que ele execute tarefas específicas em nome desses programas. O kernel, sendo a camada central do sistema operacional, controla recursos essenciais como a memória, o processador e o acesso ao hardware.
Sintaxe básica:
auditctl -a always,exit -S <syscall> -F <filtro> -k <chave>
Onde:
-a always,exit
: A regra se aplica sempre que o processo sair de uma syscall.-S
: Especifica a chamada de sistema a ser monitorada.-F
: Adiciona filtros como UID, GID, PIDs, etc.-k
: Chave de identificação do evento nos logs.
Exemplo prático:
Para monitorar todas as chamadas de sistemaopen
feitas por qualquer usuário:auditctl -a always,exit -S open -k open_calls
Outro exemplo é monitorar o uso do comando
chmod
:auditctl -a always,exit -S chmod -k chmod_use
Arquitetura do Sistema de Auditoria
O sistema de auditoria no Linux possui uma arquitetura em duas partes principais:
Espaço do Kernel
É onde chamadas de sistema feitas por aplicações no espaço do usuário são processadas. Esse espaço usa filtros (user
,task
,fstype
, ouexit
) para selecionar eventos que devem ser auditados e encaminhá-los para o daemonauditd
.Espaço do Usuário
É o daemonauditd
coleta eventos enviados pelo kernel, criando entradas no log para auditoria. Vários utilitários interagem com o daemon e os arquivos de log para fornecer relatórios ou análises detalhadas dos eventos:audisp
Um despachador que encaminha eventos para outras aplicações, permitindo processamento em tempo real ou integração com outras ferramentas.auditctl
Utilitário de controle que gerencia as regras e os parâmetros de auditoria diretamente no kernel.aureport
Gera relatórios dos eventos registrados, consolidando dados conforme as necessidades de análise.
Essa divisão facilita a administração da auditoria e a análise detalhada de eventos, mantendo a integridade e segurança do sistema.
Instalação
No Debian e suas variantes (como Ubuntu), a instalação do auditd
inclui dois pacotes principais:
auditd
Contém o daemon de auditoria e as ferramentas essenciais para gerenciar a auditoria no sistema. Oauditd
é o serviço principal, rodando em segundo plano para registrar eventos de acordo com as regras configuradas.audispd-plugins
Inclui os plugins do audispd (Audit Dispatcher), permitindo a extensão da auditoria para integração com outros serviços e sistemas. Esses plugins possibilitam o envio de eventos de auditoria para destinos como logs remotos, sistemas de monitoramento ou scripts personalizados.
Para uma configuração básica, você pode começar instalando o auditd
sem plugins adicionais:
apt install -y auditd
Ativando a Auditoria Desde o Boot
Para que todos os processos sejam auditados desde a inicialização do sistema, adicione o parâmetro audit=1
às opções de inicialização do kernel:
# Edite o arquivo de configuração do GRUB:
$ sudo vim /etc/default/grub
# Adicione o parâmetro `audit=1` à linha `GRUB_CMDLINE_LINUX`:
GRUB_CMDLINE_LINUX="audit=1"
# Atualize o GRUB para aplicar as mudanças:
$ sudo update-grub
Após reiniciar, o sistema iniciará com a auditoria ativada, garantindo que todos os eventos sejam registrados desde o boot.
Regras Existentes
O diretório /usr/share/doc/auditd/examples/rules/
contém exemplos de arquivos de configuração de regras de auditoria que servem como base para configurar o auditd
. Esses arquivos facilitam a implementação de políticas de auditoria padrão, adaptáveis a diferentes requisitos de segurança e conformidade.
Esses exemplos incluem configurações para:
- Conformidade com padrões de segurança: Por exemplo, STIG, CIS e PCI-DSS.
- Monitoramento de atividades críticas: Para garantir que ações importantes sejam registradas.
- Políticas de auditoria gerais: Regras recomendadas para monitoramento básico em sistemas Linux.
Utilizando os Arquivos de Regras de Exemplo
Para aplicar uma dessas configurações padrão:
# Mude o nome do arquivo original:
$ sudo cp /etc/audit/audit.rules /etc/audit/audit.rules_backup
# Copie o arquivo stig.rules para ser o principal:
$ sudo cp /usr/share/doc/auditd/examples/rules/stig.rules /etc/audit/audit.rules
# Depois de substituir o arquivo de regras, reinicie o serviço:
$ sudo systemctl restart auditd
Exemplos de Arquivos de Regras Disponíveis
Aqui estão alguns dos arquivos de configuração de regras mais comuns e suas finalidades:
nispom.rules
Atende aos requisitos do National Industrial Security Program Operating Manual (NISPOM), Capítulo 8, focado na proteção de informações classificadas em sistemas industriais.capp.rules
Baseado no Controlled Access Protection Profile (CAPP) do Common Criteria, focado em controle de acesso e monitoramento de atividades de usuários.lspp.rules
Segue o Labeled Security Protection Profile (LSPP) do Common Criteria, para ambientes que requerem rótulos de segurança para proteger dados sensíveis.stig.rules
Alinha-se aos Security Technical Implementation Guides (STIG), que estabelecem diretrizes de segurança do Departamento de Defesa dos EUA (DoD) para uma configuração de segurança rigorosa.
Esses arquivos são uma base robusta para configurar o sistema de auditoria em diferentes cenários de segurança, permitindo um início rápido e alinhado a práticas reconhecidas.
augenrules
O augenrules
é um comando que compila todas as regras de auditoria localizadas no diretório /etc/audit/rules.d/
em um único arquivo chamado audit.rules
. Esse processo é útil para organizar e gerenciar regras de auditoria de maneira modular, permitindo que as configurações sejam aplicadas conforme as necessidades do ambiente.
Estrutura Modular de Regras
Ao compilar as regras, o augenrules
processa arquivos em /etc/audit/rules.d/
, geralmente com uma estrutura de numeração para facilitar a organização e aplicação em ordem específica. Aqui está uma convenção comum:
- 10-: Configurações de kernel e parâmetros gerais de
auditctl
. - 20-: Regras complementares às principais, que incluem condições adicionais.
- 30-: Regras principais de auditoria.
- 40-: Regras opcionais, aplicáveis a situações específicas.
- 50-: Regras voltadas para servidores com configurações específicas.
- 70-: Regras locais, que são particulares ao sistema ou ambiente.
- 90-: Configurações finais, como tornar regras imutáveis após carregadas.
Essa estrutura modular permite configurar um conjunto de regras que se ajusta ao perfil do sistema. Por exemplo, para um perfil baseado em STIG, pode-se copiar os arquivos 10-base-config
, 30-stig
, 31-privileged
e 99-finalize
para /etc/audit/rules.d/
.
Carregando as Regras com augenrules
Para compilar e carregar todas as regras configuradas no diretório /etc/audit/rules.d/
, execute o comando:
sudo augenrules --load
Esse comando compilará as regras em um único arquivo audit.rules
, aplicando-as em ordem alfabética. A execução bem-sucedida exibirá o status da auditoria, informando configurações como:
- enabled: Indica se a auditoria está ativa (1 significa ativo).
- failure: Define o comportamento do sistema em caso de falha no registro de eventos.
- rate_limit: Limita o número de eventos por segundo.
- backlog_limit: Define o limite de eventos que podem se acumular antes de serem registrados.
Essa modularidade e flexibilidade do augenrules
facilitam a adaptação da auditoria para atender a diferentes requisitos de segurança.