首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否必须将Oracle配置为记录ORA-01017无效用户名/密码错误

是否必须将Oracle配置为记录ORA-01017无效用户名/密码错误
EN

Stack Overflow用户
提问于 2020-07-27 21:58:43
回答 2查看 1.2K关注 0票数 0

我正在查找失败的Oracle登录- ORA-01017无效用户名/密码错误-但在alert_SID.log文件中找不到它们。我确实看到了其他ORA-*错误。默认情况下不记录ORA-01017错误吗?我正在阅读有关配置审计的内容,但我认为不成功的登录会自动记录下来。这适用于Oracle 11.2g数据库和Oracle 19.0c数据库。

EN

回答 2

Stack Overflow用户

发布于 2020-07-27 22:08:36

我也遇到过类似的问题。如此多的人使用相同的数据库用户,有时有人输入错误的密码太多次,以至于锁定用户。默认情况下,ORA-1017不会审核,也不会记录。您可以启用审计,也可以为此创建自己的登录触发器,这就是我所做的

为了审计这个操作,我设计了这个触发器

代码语言:javascript
复制
CREATE OR REPLACE TRIGGER SYS.logon_denied_audit AFTER SERVERERROR ON DATABASE
DECLARE
 l_message varchar2(2000) := 'ORA-1017: Invalid username/password: logon denied';
BEGIN
 -- ORA-1017: invalid username/password; logon denied
 IF (IS_SERVERERROR(1017)) THEN
    insert into my_audit_table
    (
    RAC_INSTANCE       ,
    SERVICE_NAME       ,
    SESSION_ID         ,
    ORACLE_USER        ,
    OS_USER            ,
    TERMINAL           ,
    PROGRAM            ,
    ACTION_TIME        ,
    ACTION             ,
    IP_ADDRESS         ,
    CLIENT_IDENTIFIER  ,
    ERROR              ,
    IS_LIMITED
    )
    values
    (
    SYS_CONTEXT ('USERENV', 'INSTANCE'),
    nvl(UPPER(SYS_CONTEXT ('USERENV', 'SERVICE_NAME')),'Service Unknown') ,
    9999 ,
    SYS_CONTEXT('USERENV', 'AUTHENTICATED_IDENTITY'),
    UPPER(SYS_CONTEXT('USERENV', 'OS_USER')),
    nvl(SYS_CONTEXT ('USERENV', 'HOST'),'Unknown Host'),
    nvl(SYS_CONTEXT('USERENV','MODULE'),'Module unknown'),
    systimestamp,
    'LOGON',
    nvl(sys_context ('USERENV', 'IP_ADDRESS'),'Unknown IP'),
    null,
    l_message ,
    'N'
    );
    end if;
end;
/

因此,我可以在数据库中记录不成功的登录尝试。顺便说一句,它在11g中的工作方式与在19c中相同。

票数 0
EN

Stack Overflow用户

发布于 2020-07-27 22:38:54

通常,配置审计是实现这一点的首选方法。您可以创建自定义触发器,但我认为与Oracle内置的跟踪方法相比,它们的可靠性较低,也更有可能受到损害。此外,自定义安全对象应始终放在专用架构中。Never 在SYS模式中创建自定义对象。

我最近写了一篇关于基本审计配置的博客,题目是"Auditing By The Numbers“。你也可以在这里找到参考资料:https://oracle-base.com/articles/8i/auditing。为登录启用审计(假设您使用的是Oracle 12c或更高版本)的最简单方法是以具有DBA或SYSDBA权限的用户身份执行:

代码语言:javascript
复制
-- audit all user logon and logoff attempts:
create audit policy stig_user_logon_actions actions logon, logoff;
audit policy stig_user_logon_actions;

对于Oracle 11g:

代码语言:javascript
复制
alter system set audit_trail=DB scope=spfile;
[restart database]
audit create session;

然后在DBA_AUDIT_TRAIL视图或DBA_AUDIT_SESSION (11g)中查看您的审计跟踪。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63116926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档