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
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:
Nome da classe | Descrição | Ação |
---|---|---|
all | all | Corresponde todas as classes de eventos. |
aa | autenticação e autorização | |
ad | administrativo | Ações administrativas executadas no sistema como um todo. |
ap | aplicação | Ação definida pela aplicação. |
cl | file close | Auditar chamadas para a chamada de sistema close . |
ex | exec | Execuçã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 . |
fa | acesso ao atributo de arquivo | Audite o acesso de atributos de objetos como stat(1) e pathconf(2). |
fc | file create | Eventos de auditoria em que um arquivo é criado. |
fd | file delete | Eventos de auditoria onde ocorre a exclusão de arquivos. |
fm | file attribute modify | Eventos de auditoria onde ocorre a modificação do atributo do arquivo, como chown(8), chflags(1), e flock(2). |
fr | file read | Eventos de auditoria nos quais dados são lidos ou arquivos são abertos para leitura. |
fw | file write | Eventos de auditoria nos quais os dados são gravados ou os arquivos são gravados ou modificados. |
io | ioctl | Auditar o uso da chamada de sistema ioctl . |
ip | ipc | Auditar várias formas de comunicação entre processos, incluindo pipes POSIX e operações IPC do System V. |
lo | login_logout | Audite os eventos login(1) e logout(1). |
na | não atribuível | Auditar eventos não atribuíveis. |
no | classe inválida | Não coincidir com eventos de auditoria. |
nt | rede (network) | Eventos de auditoria relacionados a ações de rede, como connect(2) e accept(2). |
ot | outros | Auditoria de eventos diversos. |
pc | processo | Auditar 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:
Prefixo | Açã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
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.
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.
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.
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>.