16.3. Configuração de Auditoria
Anterior | Capítulo 16. Auditoria de Evento de Segurança | Próxima

## 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 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:

Tabela 16.2. Prefixos para Classes de Eventos de Auditoria

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

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

Anterior | Acima | Próxima
16.2. Termos chave | Principal | 16.4. Trabalhando com Trilhas de Auditoria

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