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 termoAUDIT
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áusulaBY
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 🥸💩