Picture of Roberto Sobrinho
Roberto Sobrinho

23/08/2024

Como Habilitar a Auditoria para Tentativas de Logon Malsucedidas no Oracle Database


A segurança de um banco de dados é essencial para qualquer organização, especialmente quando se trata de proteger informações sensíveis contra acessos não autorizados. Recentemente, em um dos nossos clientes, enfrentamos um problema crítico: após a troca de senha de um usuário de aplicação, o mesmo começou a ser bloqueado constantemente devido a falhas frequentes de login. Isso indicava que algum ponto da aplicação ainda estava utilizando a senha antiga, causando as tentativas malsucedidas. No entanto, sem informações detalhadas sobre a origem dessas tentativas, a investigação ficou limitada. Foi então que decidimos habilitar a auditoria para tentativas de logon malsucedidas no Oracle Database. Essa auditoria nos permitiu rastrear as origens exatas dessas falhas, identificando os componentes da aplicação que ainda estavam configurados com a senha antiga.

Neste post, vou explicar como você pode habilitar a auditoria de tentativas de logon malsucedidas no Oracle Database para monitorar e solucionar problemas semelhantes no seu ambiente.


Por que Auditar Tentativas de Logon Malsucedidas?

Detecção de Ataques:
Tentativas repetidas de logon com senha incorreta podem indicar um ataque de força bruta.

Monitoramento de Acesso:
Mesmo usuários legítimos podem estar utilizando credenciais incorretas, e é importante rastrear esses eventos.

Compliance:
Em muitas organizações, a auditoria de tentativas de logon malsucedidas é uma exigência para conformidade com normas de segurança.

Cagada:
Alguem fez 💩

Habilitando a Auditoria para Tentativas de Logon Malsucedidas

Para auditar especificamente as tentativas de logon malsucedidas de um usuário no Oracle Database, você deve utilizar o comando AUDIT com a cláusula WHENEVER NOT SUCCESSFUL. Isso garantirá que apenas as tentativas de logon que falharem sejam registradas.

AUDIT SESSION BY <NOME_USUARIO> WHENEVER NOT SUCCESSFUL;
  • AUDIT SESSION:
    O termo AUDIT inicia a configuração de auditoria. No contexto deste comando, SESSION refere-se à auditoria de todas as tentativas de estabelecer uma sessão de usuário, ou seja, de login no banco de dados.
  • BY <NOME_USUARIO>:
    A cláusula BY especifica que a auditoria deve ser aplicada a um usuário específico.
  • WHENEVER NOT SUCCESSFUL:
    Esta cláusula especifica que apenas as tentativas de logon malsucedidas devem ser registradas na auditoria.

Consultando os Resultados da Auditoria

Uma vez habilitada a auditoria, você pode consultar as tentativas de logon malsucedidas na tabela SYS.DBA_AUDIT_SESSION. Para visualizar essas tentativas de forma organizada, utilize o seguinte comando SQL:

SET LINESIZE 200
SET PAGESIZE 100
SET WRAP OFF
SET TERMOUT OFF
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
SET TERMOUT ON
COLUMN USERNAME FORMAT A20
COLUMN USERHOST FORMAT A20
COLUMN TERMINAL FORMAT A20
COLUMN TIMESTAMP FORMAT A30
COLUMN ACTION_NAME FORMAT A20
COLUMN RETURNCODE FORMAT 99999
COLUMN SESSIONID FORMAT 99999999999999

SELECT USERNAME, USERHOST, TERMINAL, TIMESTAMP, ACTION_NAME, RETURNCODE, SESSIONID
FROM SYS.DBA_AUDIT_SESSION
WHERE USERNAME = USERNAME 
ORDER BY TIMESTAMP DESC
/

Este comando ajusta a formatação da saída e define o formato da data para facilitar a leitura dos resultados. Ele retornará todas as tentativas de logon malsucedidas para o usuário especificado, mostrando detalhes como a data e hora da tentativa, o terminal de origem e o código de retorno, que indica a razão da falha.

Após executar o comando SQL acima, a saída pode ser semelhante a esta:

USERNAME       USERHOST     TERMINAL  TIMESTAMP            ACTION_NAME   RETURNCODE   SESSIONID
-------------- -----------  --------- -------------------- ------------- ----------  -----------
APPSYSTEMSPRD  SERVERSSP10  TTY1      23-AUG-2024 14:52:31  LOGON         1017         29875458
APPSYSTEMSPRD  SERVERSSP22  TTY2      23-AUG-2024 14:50:10  LOGON         28000        29875457
APPSYSTEMSPRD  SERVERSSP12  TTY1      23-AUG-2024 14:47:55  LOGON         28001        29875455
APPSYSTEMSPRD  SERVERSSP15  TTY2      23-AUG-2024 14:45:22  LOGON         28002        29875451
APPSYSTEMSPRD  SERVERSRJ11  TTY1      23-AUG-2024 14:42:10  LOGON         28003        29875447
APPSYSTEMSPRD  SERVERSSP10  TTY2      23-AUG-2024 14:40:55  LOGON         01031        29875458
APPSYSTEMSPRD  SERVERSSP10  TTY1      23-AUG-2024 14:38:44  LOGON         28007        29875457
APPSYSTEMSPRD  SERVERSRJ16  TTY2      23-AUG-2024 14:36:32  LOGON         01005        29875455
APPSYSTEMSPRD  SERVERSRJ18  TTY1      23-AUG-2024 14:34:21  LOGON         28009        29875451
APPSYSTEMSPRD  SERVERSSP16  TTY2      23-AUG-2024 14:32:10  LOGON         28273        29875447

Compreendendo os Códigos de Retorno

28273: Autenticação externa necessária. Esse erro ocorre quando a conta requer autenticação externa, mas o usuário não a forneceu.Uma vez habilitada a auditoria, você pode consultar as tentativas de logon malsucedidas na tabela SYS.DBA_AUDIT_SESSION. Para visualizar essas tentativas de forma organizada, utilize o seguinte comando SQL:

1017: Senha inválida ou nome de usuário inválido.
Esse é um dos erros mais comuns, indicando que o nome de usuário ou a senha fornecida está incorreta.

28000: Conta bloqueada.
O usuário tentou fazer login, mas a conta está bloqueada, geralmente devido a várias tentativas de login malsucedidas ou por ação administrativa.

28001: Senha expirada.
A senha do usuário expirou, e é necessário redefini-la antes que o login seja permitido.

28002: Senha está prestes a expirar.
O usuário conseguiu fazer login, mas a senha está prestes a expirar. Esse código não impede o login, mas é um aviso.

28003: Número máximo de tentativas de autenticação alcançado.
Esse erro pode ocorrer em ambientes configurados com políticas de autenticação restritivas.

01031: Privilégios insuficientes.
O usuário não tem os privilégios necessários para se conectar ao banco de dados.

28007: O usuário não está autorizado a realizar login atualmente.
Esse erro ocorre quando o usuário está bloqueado temporariamente, devido a políticas de segurança.

01005: Nenhuma senha fornecida; senha ausente ao tentar logon.
Este erro ocorre quando o usuário não fornece uma senha.

28009: Conexão recusada – somente autenticação de servidor é permitida.
O login falhou porque a política de segurança do banco de dados só permite autenticação de servidor, e o usuário tentou se conectar de outra forma.

28273: Autenticação externa necessária.
Esse erro ocorre quando a conta requer autenticação externa, mas o usuário não a forneceu.

Esses códigos são úteis para identificar rapidamente o motivo pelo qual uma tentativa de logon falhou. Eles permitem que os DBAs tomem medidas corretivas, como desbloquear contas, redefinir senhas ou ajustar privilégios, para garantir que os usuários legítimos possam acessar o sistema e que as tentativas de acesso não autorizadas sejam devidamente tratadas.


Habilitar a auditoria para tentativas de logon malsucedidas no Oracle Database é uma prática recomendada de segurança que pode ajudar a detectar acessos não autorizados e proteger seus dados. Com o comando AUDIT SESSION configurado para registrar apenas as tentativas malsucedidas, e utilizando o comando SQL fornecido para consultar esses registros, você pode monitorar potenciais ameaças de forma eficaz.


💩🥸 #20240823 #GuinaNãoTinhaDó #EsperandoAHoraH #TrânsitoNaBelmira #CagaramOAmbiente #EAgora #SangueFrio #FimarOMovimento #ToLigado #AçãoRápida #Objetivo #900AzulNovinha 🥸💩


Compartilhe

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print

Pesquisar

Roberto Sobrinho

Sou Roberto Fernandes Sobrinho, também conhecido como Sobrinho DBA , pós graduado em “Architecture and Database Administration”, entusiasta, dedicado e com 20 anos de experiência com Oracle Database e suas diversas distribuições e variações.

Oracle ACE Associate

2025

Specialist

Exadata Database Machine X9M

Professional

Oracle Database Administration

Professional

Oracle Database 19c: RAC, ASM, & Grid Infra Administrator

Professional

Oracle Autonomous Database Cloud

Professional

Oracle Cloud Database Migration and Integration

Professional

Oracle Database PL/SQL Developer

Associate

Oracle Cloud Infrastructure Architect

Associate

Oracle Cloud Infrastructure Foundations

Categorias

Categorias

Tags

Como Habilitar a Auditoria para Tentativas de Logon Malsucedidas no Oracle Database