Observação:
- Este tutorial está disponível em um ambiente de laboratório gratuito fornecido pela Oracle.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir o laboratório, substitua esses valores pelos específicos do seu ambiente de nuvem.
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:
- Instalar os pacotes de auditoria
- Gerenciar o serviço de auditoria
- Criar regras de auditoria
- Pesquisar os logs de auditoria
Pré-requisitos
- Um sistema com o Oracle Linux 8 instalado com a seguinte configuração:
- um usuário não raiz com permissões
sudo
- um usuário não raiz com permissões
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 comandoservice
garante a gravação do valorauid
. Use o comandosystemctl
somente com as açõesenable
estatus
.
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çoauditd
. Um valorpid
de0
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:
-w
: Cria um relógio no caminho fornecido.-p
: Define permissões [leitura, gravação, execução, atributo] que acionam o relógio.-k
: Define um filtro de chave que identifica de forma exclusiva os registros de auditoria produzidos por uma regra.
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 poraugenrules
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.