Observação:

Audite o Oracle Linux com Auditoria

Introdução

Auditd é um daemon de sistema de espaço do usuário executado em segundo plano que gera logs sobre diferentes atividades executadas no Oracle Linux.

Este tutorial guia você pelas etapas de instalação, configuração e uso de auditd.

Objetivos

Neste laboratório, você aprenderá a:

Pré-requisitos

Instalar o Pacote de Auditoria

Observação: ao usar o ambiente de laboratório gratuito, consulte Conceitos Básicos do Oracle Linux Lab para obter conexão e outras instruções de uso.

O Oracle Linux instala o pacote de auditoria por padrão.

Se ainda não estiver conectado, abra um terminal e conecte-se via ssh ao sistema ol8-server.

ssh oracle@<ip_address_of_ol8-server>

Verifique se o sistema pré-instalou o pacote audit.

sudo dnf list installed "audit"

Se não estiver no sistema, instale-o.

sudo dnf install -y audit

O arquivo de configuração padrão para o daemon auditd está localizado em /etc/audit/auditd.conf.

Gerenciar o Serviço de Auditoria

Depois que o pacote de auditoria for instalado, inicie o serviço auditd. Primeiro, verifique o status atual.

sudo systemctl status auditd

Exemplo de Saída:

[oracle@ol8-server ~]$ sudo systemctl status auditd
* auditd.service - Security Auditing Service
   Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor pres>
   Active: active (running) since Fri 2022-04-01 23:59:52 GMT; 2min 38s ago
     Docs: man:auditd(8)
           https://github.com/linux-audit/audit-documentation
 Main PID: 1385 (auditd)
    Tasks: 2 (limit: 100140)
   Memory: 2.5M
   CGroup: /system.slice/auditd.service
           `-1385 /sbin/auditd

Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog_wait_time 60000
Apr 01 23:59:52 localhost.localdomain augenrules[1388]: enabled 1
Apr 01 23:59:52 localhost.localdomain augenrules[1388]: failure 1
Apr 01 23:59:52 localhost.localdomain augenrules[1388]: pid 1385
Apr 01 23:59:52 localhost.localdomain augenrules[1388]: rate_limit 0
Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog_limit 8192
Apr 01 23:59:52 localhost.localdomain augenrules[1388]: lost 0
Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog 0
Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog_wait_time 60000
Apr 01 23:59:52 localhost.localdomain systemd[1]: Started Security Auditing Ser>
lines 1-21/21 (END)

A saída mostra que o serviço é (running) e enabled.

O status enabled indica que configuramos o serviço para iniciar no momento da inicialização. Se esse não for o caso, inicie o serviço como o usuário raiz para coletar informações de Auditoria e gravá-las nos logs.

Inicie o serviço.

sudo service auditd start

Configure auditd para iniciar no momento da inicialização.

sudo systemctl enable auditd

Observação: A única maneira de interagir adequadamente com o daemon auditd usa o comando service.

O comando service garante a gravação do valor auid. Use o comando systemctl somente com as ações enable e status.

Ativar e Desativar Auditoria Temporariamente

O Utilitário de controle de Auditoria, auditctl, interage com o componente de Auditoria do kernel para gerenciar regras e controlar muitas configurações e parâmetros do processo de geração de eventos.

Verifique o status do subsistema de Auditoria do kernel.

sudo auditctl -s

Exemplo de Saída:

[oracle@ol8-server ~]$ sudo auditctl -s
enabled 1
failure 1
pid 1399
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000
loginuid_immutable 0 unlocked

Desativar temporariamente o auditd.

sudo auditctl -e 0

Reative auditd.

sudo auditctl -e 1

Observação: O pid mostra o id do processo de serviço auditd. Um valor pid de 0 indica que o serviço não está em execução.

O flag de ativação auditctl -e também aceita o valor 2, que bloqueia a configuração de auditoria.

Se a configuração de auditoria estiver bloqueada dessa maneira, será necessária uma reinicialização para desbloqueá-la. Mais detalhes estão disponíveis em man auditctl.

Localizar Regras e Logs de Auditoria

Por padrão, o Oracle Linux armazena os logs de auditoria em /var/log/audit/audit.log.

As regras de auditoria estão localizadas em /ect/audit/audit.rules. O Oracle Linux gera o conjunto de regras padrão do arquivo /etc/audit/rules.d/audit.rules.

sudo cat /etc/audit/audit.rules
sudo cat /etc/audit/rules.d/audit.rules

Exemplo de Saída:

## First rule - delete all
-D

## Increase the buffers to survive stress events.
## Make this bigger for busy systems
-b 8192

## This determine how long to wait in burst of events
--backlog_wait_time 60000

## Set failure mode to syslog
-f 1

Regras com o Utilitário de Controle de Auditoria

Use o programa auditctl para controlar o comportamento, obter status e adicionar ou excluir regras.

Adicione uma regra de auditoria que registre qualquer tentativa de ler ou modificar o arquivo /etc/ssh/sshd_config.

sudo auditctl -w /etc/ssh/sshd_config -p rwxa -k sshd_config

Em que:

Mostre a regra.

sudo auditctl -l

Novas regras são adicionadas à parte inferior da lista, mas também é possível adicioná-las à parte superior.

Verifique se a nova regra foi adicionada ao arquivo /etc/audit/audit.rules.

sudo cat /etc/audit/audit.rules

Exemplo de Saída:

[oracle@ol8-server ~]$ sudo cat /etc/audit/audit.rules
## This file is automatically generated from /etc/audit/rules.d
-D
-b 8192
-f 1
--backlog_wait_time 60000

A regra não aparece no arquivo. Por que não?

As regras criadas por auditctl não são adicionadas ao arquivo audit.rules. Portanto, essas alterações são transitórias e não sobrevivem a uma reinicialização do sistema.

Torne a regra permanente adicionando-a a um arquivo de conjunto de regras personalizado em /etc/audit/rules.d/my.rules. O formato da regra adicionada corresponde à sintaxe do comando auditctl sem usar auditctl. As regras devem ser gravadas por linha e combinadas para otimizar o desempenho.

sudo tee /etc/audit/rules.d/my.rules > /dev/null <<'EOF'
-w /etc/ssh/sshd_config -p rwxa -k sshd_config
EOF

Mostre a regra.

sudo cat /etc/audit/rules.d/my.rules

Teste a regra.

cat /etc/ssh/sshd_config

O comando retorna, cat: /etc/ssh/sshd_config: Permission denied, e gera o evento abaixo no audit.log.

sudo cat /var/log/audit/audit.log | grep sshd_config

Exemplo de Saída:

type=CONFIG_CHANGE msg=audit(1648918923.746:266810): auid=1001 ses=15792 
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=add_rule key="sshd_config" list=4 res=1AUID="oracle"
type=SYSCALL msg=audit(1648923583.793:268315): arch=c000003e syscall=257 success=no exit=-13 a0=ffffff9c a1=7ffd08b6c575 > a2=0 a3=0 items=1 ppid=3406680 pid=3428336 auid=1001 uid=1001 gid=1001 euid=1001 suid=1001 fsuid=1001 egid=1001 
sgid=1001 fsgid=1001 tty=pts0 ses=15792 comm="cat" exe="/usr/bin/cat" 
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="sshd_config"ARCH=x86_64 SYSCALL=openat AUID="oracle" 
UID="oracle" GID="oracle" EUID="oracle" SUID="oracle" FSUID="oracle" EGID="oracle" SGID="oracle" FSGID="oracle"
type=PATH msg=audit(1648923583.793:268315): item=0 name="/etc/ssh/sshd_config" inode=67688941 dev=fc:00 mode=0100600 
ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 
cap_frootid=0OUID="root" OGID="root"

Buscar logs de auditoria

Outra forma de pesquisar os logs é usar o comando ausearch.

Obtenha as mesmas informações usando este comando.

sudo ausearch --key sshd_config

Exemplo de Saída:

Email option is specified but /usr/lib/sendmail doesn't seem executable.
----
time->Sat Apr  2 17:02:03 2022
type=CONFIG_CHANGE msg=audit(1648918923.746:266810): auid=1001 ses=15792 
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=add_rule key="sshd_config" list=4 res=1
----
time->Sat Apr  2 18:19:43 2022
type=PROCTITLE msg=audit(1648923583.793:268315): proctitle=636174002F6574632F7373682F737368645F636F6E666967
type=PATH msg=audit(1648923583.793:268315): item=0 name="/etc/ssh/sshd_config" inode=67688941 dev=fc:00 mode=0100600 
ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 
cap_frootid=0
type=CWD msg=audit(1648923583.793:268315): cwd="/home/oracle"
type=SYSCALL msg=audit(1648923583.793:268315): arch=c000003e syscall=257 success=no exit=-13 a0=ffffff9c a1=7ffd08b6c575 > a2=0 a3=0 items=1 ppid=3406680 pid=3428336 auid=1001 uid=1001 gid=1001 euid=1001 suid=1001 fsuid=1001 egid=1001 
sgid=1001 fsgid=1001 tty=pts0 ses=15792 comm="cat" exe="/usr/bin/cat" 
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="sshd_config"

A saída de ausearch é mais fácil de usar e ler com base no formato de saída. Podemos adicionar a facilidade de leitura do log adicionando a opção -i ou --interpret. Essa opção interpreta entidades numéricas em texto, como converter um uid em um nome de conta.

sudo ausearch -i -k sshd_config

Exemplo de Saída:

Email option is specified but /usr/lib/sendmail doesn't seem executable.
----
type=CONFIG_CHANGE msg=audit(04/02/2022 17:02:03.746:266810) : auid=oracle ses=15792 
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=add_rule key=sshd_config list=exit res=yes 
----
type=PROCTITLE msg=audit(04/02/2022 18:19:43.793:268315) : proctitle=cat /etc/ssh/sshd_config 
type=PATH msg=audit(04/02/2022 18:19:43.793:268315) : item=0 name=/etc/ssh/sshd_config inode=67688941 dev=fc:00 
mode=file,600 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=NORMAL cap_fp=none cap_fi=none 
cap_fe=0 cap_fver=0 cap_frootid=0 
type=CWD msg=audit(04/02/2022 18:19:43.793:268315) : cwd=/home/oracle 
type=SYSCALL msg=audit(04/02/2022 18:19:43.793:268315) : arch=x86_64 syscall=openat success=no exit=EACCES(Permission 
denied) a0=0xffffff9c a1=0x7ffd08b6c575 a2=O_RDONLY a3=0x0 items=1 ppid=3406680 pid=3428336 auid=oracle uid=oracle 
gid=oracle euid=oracle suid=oracle fsuid=oracle egid=oracle sgid=oracle fsgid=oracle tty=pts0 ses=15792 comm=cat exe=/
usr/bin/cat subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=sshd_config 

Para obter mais opções de formatação e maneiras de pesquisar o audit.log, consulte man ausearch.

Carregar Regras Pré-Configuradas

O Oracle Linux fornece um script que mescla todos os arquivos de regras de auditoria de componentes encontrados em /etc/audit/rules.d. Após a mesclagem, o novo arquivo substitui o /etc/audit/audit.rules existente. Esse script é incorporado ao arquivo de serviço auditd e é executado quando o serviço é iniciado.

Verifique se há alterações de regra a serem carregadas.

sudo augenrules --check

A saída declara, Rules have changed and should be updated. Essa alteração se deve ao nosso arquivo my.rules criado anteriormente localizado em/etc/audit/rules.d.

Exclua a regra personalizada sshd_config adicionada anteriormente para rastrear as novas adições de regra facilmente.

sudo auditctl -D -k sshd_config

Mescle o arquivo de regra personalizado my.rules.

sudo augenrules --load

Exemplo de Saída:

[oracle@ol8-server ~]$ sudo augenrules --load
No rules
enabled 1
failure 1
pid 1395
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000
enabled 1
failure 1
pid 1395
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000
enabled 1
failure 1
pid 1395
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000

Verifique as regras de auditoria ativas.

sudo auditctl -l

Exemplo de Saída:

[oracle@ol-lab-2022-03-23-182415-0 ~]$ sudo auditctl -l
-w /etc/ssh/sshd_config -p rwxa -k sshd_config

Adicione regras adicionais a um novo arquivo, new.rules.

Observação: Somente os arquivos que terminam em .rules são lidos por augenrules e carregados.

sudo tee /etc/audit/rules.d/new.rules > /dev/null <<'EOF'
-w /etc/passwd -p wa -k passwd_changes
-w /etc/selinux/ -p wa -k selinux_changes
EOF

Carregue as novas regras.

sudo augenrules --load

Verifique novamente as regras ativas.

sudo auditctl -l

As novas regras são carregadas e mescladas no arquivo audit.rules.

sudo cat /etc/audit/audit.rules

O sistema criou um arquivo de backup /etc/audit/audit.rules.prev como parte da mesclagem.

sudo ls -l /etc/audit

As informações fornecidas pelo Oracle Linux Auditing System ajudam com a detecção de invasão.

Verifique as páginas man dos utilitários mostrados. Em seguida, use o que você aprendeu para adicionar regras de auditoria personalizadas ao sistema para determinados eventos de log.

Para Obter Mais Informações

Consulte outros recursos relacionados:

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.