16.3. Configuração de Auditoria

O suporte para auditoria de eventos no espaço do usuário é instalado como parte do sistema operacional básico do FreeBSD. O suporte a kernel está disponível no kernel GENERIC por padrão, e auditd(8) pode ser ativado adicionando a seguinte linha no /etc/rc.conf:

auditd_enable="YES"

Em seguida, inicie o daemon de auditoria:

# service auditd start

Usuários que preferem compilar um kernel personalizado devem incluir a seguinte linha em seu arquivo de configuração de kernel personalizado:

options	AUDIT

16.3.1. Expressões de Seleção de Eventos

Expressões de seleção são usadas em vários lugares na configuração de auditoria para determinar quais eventos devem ser auditados. Expressões contêm uma lista de classes de eventos para correspondência. As expressões de seleção são avaliadas da esquerda para a direita e duas expressões são combinadas, acrescentando uma à outra.

Tabela 16.1, “Classes de Eventos de Auditoria Padrão” resume as classes de eventos de auditoria padrão:

Tabela 16.1. Classes de Eventos de Auditoria Padrão
Nome da classeDescriçãoAção
allallCorresponde todas as classes de eventos.
aaautenticação e autorização 
adadministrativoAções administrativas executadas no sistema como um todo.
apaplicaçãoAção definida pela aplicação.
clfile closeAuditar chamadas para a chamada de sistema close.
exexecExecução do programa de auditoria. Auditoria de argumentos de linha de comando e variáveis ​​de ambiente são controladas via audit_control(5) usando os parâmetros argv e envv para a configuração da política.
faacesso ao atributo de arquivoAudite o acesso de atributos de objetos como stat(1) e pathconf(2).
fcfile createEventos de auditoria em que um arquivo é criado.
fdfile deleteEventos de auditoria onde ocorre a exclusão de arquivos.
fmfile attribute modifyEventos de auditoria onde ocorre a modificação do atributo do arquivo, como chown(8), chflags(1), e flock(2).
frfile readEventos de auditoria nos quais dados são lidos ou arquivos são abertos para leitura.
fwfile writeEventos de auditoria nos quais os dados são gravados ou os arquivos são gravados ou modificados.
ioioctlAuditar o uso da chamada de sistema ioctl.
ipipcAuditar várias formas de comunicação entre processos, incluindo pipes POSIX e operações IPC do System V.
lologin_logoutAudite os eventos login(1) e logout(1).
nanão atribuívelAuditar eventos não atribuíveis.
noclasse inválidaNão coincidir com eventos de auditoria.
ntrede (network)Eventos de auditoria relacionados a ações de rede, como connect(2) e accept(2).
otoutrosAuditoria de eventos diversos.
pcprocessoAuditar operações de processos, como exec(3) e exit(3).

Essas classes de eventos de auditoria podem ser personalizadas modificando os arquivos de configuração audit_class e audit_event.

Cada classe de eventos de auditoria pode ser combinada com um prefixo indicando se as operações com êxito/falha são correspondidas e se a entrada está adicionando ou removendo a correspondência para a classe e o tipo. Tabela 16.2, “Prefixos para Classes de Eventos de Auditoria” resume os prefixos disponíveis:

Tabela 16.2. Prefixos para Classes de Eventos de Auditoria
PrefixoAção
+Auditoria de eventos bem sucedidos nesta classe.
-Auditoria de eventos com falha nesta classe.
^Auditoria de eventos nem com sucesso e nem com falha nesta classe.
^+Não faça auditoria de eventos bem-sucedidos nesta classe.
^-Não audite eventos com falha nesta classe.

Se nenhum prefixo estiver presente, as instâncias com êxito e com falha do evento serão auditadas.

O seguinte exemplo de sequência de seleção seleciona eventos de login/logout bem-sucedidos e com falha, mas apenas eventos de execução bem-sucedidos:

lo,+ex

16.3.2. Arquivos de Configuração

Os seguintes arquivos de configuração para auditoria de eventos de segurança são encontrados em /etc/security:

  • audit_class: contém as definições das classes de auditoria.

  • audit_control: controla os aspectos do subsistema de auditoria, como as classes de auditoria padrão, o espaço em disco mínimo a ser deixado no volume do log de auditoria e o tamanho máximo da trilha de auditoria.

  • audit_event: nomes e descrições textuais de eventos de auditoria do sistema e uma lista de quais classes cada evento está.

  • audit_user: requisitos de auditoria específicos do usuário a serem combinados com os padrões globais no login.

  • audit_warn: um script de shell personalizável usado pelo auditd(8) para gerar mensagens de aviso em situações excepcionais, como quando o espaço para registros de auditoria está baixo ou quando o arquivo de trilha de auditoria foi rotacionado.

Atenção:

Os arquivos de configuração de auditoria devem ser editados e mantidos com cuidado, pois erros na configuração podem resultar no registro inadequado de eventos.

Na maioria dos casos, os administradores precisarão modificar apenas audit_control e audit_user. O primeiro arquivo controla as políticas e as propriedades de auditoria de todo o sistema, e o segundo arquivo pode ser usado para ajustar a auditoria pelo usuário.

16.3.2.1. O arquivo audit_control

Vários padrões para o subsistema de auditoria são especificados em audit_control:

dir:/var/audit
dist:off
flags:lo,aa
minfree:5
naflags:lo,aa
policy:cnt,argv
filesz:2M
expire-after:10M

A entrada dir é usada para definir um ou mais diretórios onde os logs de auditoria serão armazenados. Se mais de uma entrada de diretório aparecer, elas serão usadas em ordem à medida que forem preenchidas. É comum configurar a auditoria para que os logs de auditoria sejam armazenados em um sistema de arquivos dedicado, para evitar a interferência entre o subsistema de auditoria e outros subsistemas, se o sistema de arquivos encher.

Se o campo dist estiver definido como on ou yes, os links físicos serão criados para todos os arquivos de rastreio em /var/audit/dist.

O campo flags define a máscara de pré-seleção padrão para todo o sistema para eventos atribuíveis. No exemplo acima, eventos de login/logout bem-sucedidos e com falha, bem como autenticação e autorização, são auditados para todos os usuários.

A entrada minfree define a porcentagem mínima de espaço livre para o sistema de arquivos no qual a trilha de auditoria está armazenada.

A entrada naflags especifica as classes de auditoria a serem auditadas para eventos não atribuídos, como o processo de login/logout e autenticação e autorização.

A entrada policy especifica uma lista separada por vírgula de sinalizadores de política que controla vários aspectos do comportamento de auditoria. O cnt indica que o sistema deve continuar em execução apesar de uma falha de auditoria (este sinalizador é altamente recomendado). O outro sinalizador, argv, faz com que os argumentos da linha de comando para a chamada de sistema execve(2) sejam auditados como parte de execução de comando.

A entrada filesz especifica o tamanho máximo para uma trilha de auditoria antes de finalizar e rotacionar automaticamente o arquivo de trilha. Um valor de 0 desabilita a rotação automática de log. Se o tamanho do arquivo solicitado estiver abaixo do mínimo de 512k, ele será ignorado e uma mensagem de log será gerada.

O campo expire-after especifica quando os arquivos de log de auditoria expirarão e serão removidos.

16.3.2.2. O Arquivo audit_user

O administrador pode especificar requisitos adicionais de auditoria para usuários específicos em audit_user. Cada linha configura a auditoria para um usuário através de dois campos: o campo alwaysaudit especifica um conjunto de eventos que devem sempre ser auditados para o usuário, e o campo neveraudit especifica um conjunto de eventos que nunca devem ser auditados para o usuário.

As entradas de exemplo a seguir auditam os eventos de login/logout e a execução bem-sucedida do comando para root e criação de arquivos e execução de comando bem-sucedida para www. Se usado com o audit_control, a entrada lo para root é redundante, e os eventos login/logout também serão auditados para www.

root:lo,+ex:no
www:fc,+ex:no

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>.