Skip to main content

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 sistema open 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, ou exit) para selecionar eventos que devem ser auditados e encaminhá-los para o daemon auditd.

  • Espaço do Usuário
    É o daemon auditd 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. O auditd é 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.



Fontes


Guia oficial