16.4. Trabalhando com Trilhas de Auditoria

Como as trilhas de auditoria são armazenadas no formato binário BSM, várias ferramentas internas estão disponíveis para modificar ou converter essas trilhas em texto. Para converter arquivos de trilha em um formato de texto simples, use o praudit. Para reduzir o arquivo de trilha de auditoria para fins de análise, arquivamento ou impressão, use o auditreduce. Esse utilitário suporta vários parâmetros de seleção, incluindo tipo de evento, classe de evento, usuário, data ou hora do evento e o caminho ou objeto do arquivo em questão.

Por exemplo, para baixar todo o conteúdo de um log de auditoria especificado em texto simples:

# praudit /var/audit/AUDITFILE

Onde AUDITFILE é o log de auditoria a ser descarregado.

As trilhas de auditoria consistem em uma série de registros de auditoria compostos por tokens, em que o praudit imprime sequencialmente, um por linha. Cada token é de um tipo específico, como header (um cabeçalho de registro de auditoria) ou path (um caminho de arquivo de uma pesquisa de nome). O seguinte é um exemplo de um evento execve:

header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec
exec arg,finger,doug
path,/usr/bin/finger
attribute,555,root,wheel,90,24918,104944
subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100
return,success,0
trailer,133

Esta auditoria representa uma chamada execve bem-sucedida, na qual o comando finger doug foi executado. O token exec arg contém a linha de comando processada apresentada pelo shell ao kernel. O token path contém o caminho para o executável conforme procurado pelo kernel. O token attribute descreve o binário e inclui o modo de arquivo. O token subject armazena o ID do usuário de auditoria, ID do usuário e ID do grupo, ID do usuário real e ID do grupo, ID do processo, ID da sessão, ID da porta e endereço de login. Observe que o ID do usuário de auditoria e o ID do usuário real são diferentes quando o usuário robert mudou para a conta root antes de executar este comando, mas é auditado usando o usuário original autenticado. O token return indica a execução bem-sucedida e o trailer conclui o registro.

O formato de saída XML também é suportado e pode ser selecionado incluindo -x.

Como os logs de auditoria podem ser muito grandes, um subconjunto de registros pode ser selecionado usando auditreduce. Este exemplo seleciona todos os registros de auditoria produzidos para o usuário trhodes armazenados em AUDITFILE:

# auditreduce -u trhodes /var/audit/AUDITFILE | praudit

Os membros do grupo audit têm permissão para ler trilhas de auditoria em /var/audit. Por padrão, esse grupo está vazio, portanto, apenas o usuário root pode ler trilhas de auditoria. Os usuários podem ser adicionados ao grupo auditoria para delegar direitos de revisão de auditoria. Como a capacidade de rastrear o conteúdo do log de auditoria fornece informações significativas sobre o comportamento dos usuários e processos, recomenda-se que a delegação dos direitos de revisão de auditoria seja executada com cautela.

16.4.1. Monitoramento em Tempo Real Usando Pipes de Auditoria

Pipes de auditoria são pseudo-dispositivos clones que permitem que os aplicativos acessem o fluxo de registro de auditoria em tempo real. Isto é principalmente de interesse para os autores de aplicações de detecção de intrusão e monitoramento de sistemas. No entanto, o dispositivo de canal de auditoria é uma maneira conveniente para o administrador permitir o monitoramento ao vivo sem incorrer em problemas com a propriedade do arquivo de trilha de auditoria ou a rotação de log interrompendo o fluxo de eventos. Para acompanhar o fluxo de eventos de auditoria em tempo real:

# praudit /dev/auditpipe

Por padrão, os nós de dispositivo dos pipes de auditoria são acessíveis apenas para o usuário root. Para torná-los acessíveis aos membros do grupo audit, adicione uma regra devfs para /etc/devfs.rules:

add path 'auditpipe*' mode 0440 group audit

Veja devfs.rules(5) para mais informações sobre como configurar o sistema de arquivos devfs.

Atenção:

É fácil produzir ciclos de feedback de evento de auditoria, nos quais a visualização de cada evento de auditoria resulta na geração de mais eventos de auditoria. Por exemplo, se toda a rede I/O for auditada e praudit for executada a partir de uma sessão SSH, um fluxo contínuo de eventos de auditoria será gerada em uma taxa alta, pois cada evento sendo impresso gerará outro evento. Por esse motivo, é aconselhável executar praudit em um dispositivo de pipe de auditoria a partir de sessões sem auditoria de I/O de baixa granularidade.

16.4.2. Rotação e Compactação de Arquivos de Trilha de Auditoria

As trilhas de auditoria são gravadas pelo kernel e gerenciadas pelo daemon de auditoria, auditd(8). Os administradores não devem tentar usar o newsyslog.conf(5) ou outras ferramentas para rotacionar diretamente os logs de auditoria. Em vez disso, o audit deve ser usado para encerrar a auditoria, reconfigurar o sistema de auditoria e executar a rotação de log. O comando a seguir faz com que o daemon de auditoria crie um novo log de auditoria e sinalize ao kernel para alternar para o novo log. O log antigo será finalizado e renomeado, podendo então ser manipulado pelo administrador:

# audit -n

Se auditd(8) não estiver em execução no momento, este comando falhará e uma mensagem de erro será apresentada.

Adicionar a seguinte linha ao /etc/crontab agendará essa rotação a cada doze horas:

0     */12       *       *       *       root    /usr/sbin/audit -n

A alteração terá efeito quando o /etc/crontab for salvo.

A rotação automática do arquivo de trilha de auditoria com base no tamanho do arquivo é possível usando filesz em audit_control, conforme descrito em Seção 16.3.2.1, “O arquivo audit_control.

Como os arquivos de trilha de auditoria podem se tornar muito grandes, geralmente é desejável compactar ou arquivar rastros depois que eles forem fechados pelo daemon de auditoria. O script audit_warn pode ser usado para executar operações personalizadas para uma variedade de eventos relacionados à auditoria, incluindo a terminação limpa de trilhas de auditoria quando elas são rotacionadas. Por exemplo, o seguinte pode ser adicionado ao /etc/security/audit_warn para compactar as trilhas de auditoria ao serem fechados:

#
# Compress audit trail files on close.
#
if [ "$1" = closefile ]; then
        gzip -9 $2
fi

Outras atividades de arquivamento podem incluir a cópia de arquivos de trilha para um servidor centralizado, a exclusão de arquivos de trilha antigos ou a redução da trilha de auditoria para remover registros desnecessários. Este script será executado somente quando os arquivos da trilha de auditoria forem finalizados de forma limpa, portanto, não serão executados em trilhas deixadas sem serem eliminadas após um desligamento incorreto.

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.