附表
user$ 视图解释
Test cases below show:
?CTIME is the date the user was created.
?LTIME is the date the user was last locked. (Note that it doesn't get NULLed when you unlock the user).
?PTIME is the date the password was last changed.
?LCOUNT is the number of failed logins.
记录用户登录失败触发器:
CREATE OR REPLACE TRIGGER logon_denied_to_alert
AFTER servererror ON DATABASE
DECLARE
message VARCHAR2(168);
ip VARCHAR2(15);
v_os_user VARCHAR2(80);
v_module VARCHAR2(50);
v_action VARCHAR2(50);
v_pid VARCHAR2(10);
v_sid NUMBER;
v_program VARCHAR2(48);
BEGIN
IF (ora_is_servererror(1017)) THEN
-- get ip FOR remote connections :
IF upper(sys_context('userenv', 'network_protocol')) = 'TCP' THEN
ip := sys_context('userenv', 'ip_address');
END IF;
SELECT sid INTO v_sid FROM sys.v_$mystat WHERE rownum < 2;
SELECT p.spid, v.program
INTO v_pid, v_program
FROM v$process p, v$session v
WHERE p.addr = v.paddr
AND v.sid = v_sid;
v_os_user := sys_context('userenv', 'os_user');
dbms_application_info.read_module(v_module, v_action);
message := to_char(SYSDATE, 'YYYYMMDD HH24MISS') ||
' logon denied from ' || nvl(ip, 'localhost') || ' ' ||
v_pid || ' ' || v_os_user || ' with ' || v_program || ' – ' ||
v_module || ' ' || v_action;
sys.dbms_system.ksdwrt(2, message);
END IF;
END;
/
特别鸣谢: 附表:
查询错误密码的登录者
select username,
os_username,
userhost,
client_id,
trunc(timestamp),
returncode,
count(*) failed_logins
from dba_audit_trail
where returncode=1017 and --1017 is invalid username/password
timestamp < sysdate
group by username,os_username,userhost, client_id,trunc(timestamp),returncode
order by trunc(timestamp) desc ;
Oracle 审计管理
富士康质检员张全蛋
于 2018-10-12 11:12:43 发布
289
收藏
分类专栏: Oracle 日常管理 文章标签: oracle
版权
Oracle 日常管理
专栏收录该内容
97 篇文章14 订阅
订阅专栏
下面是实际生产库的一个加固项,是针对于数据库审计。
检查是否记录操作日志;检查是否根据业务要求制定数据库审计策略(需要重启数据库)
注意事项及影响:
开启审计功能,对于os 级别审计需要部署清理脚本,db 级别审计也需要部署清理脚本
对于开启db 级别的审计时,需要迁移审计表到非系统表空间,迁移前truncate sys.aud$ 表
该项加固需要重启数据库
序号
操作内容
操作步骤
责任人
时间
1
登陆数据库
Sqlplus ‘/as sysdba’
2
检查数据库状态
Select open_mode from v$database;
3
修改审计级别
审计级别可以选择os 或者db ,根据需要自己决定
alter system set audit_trail='xxxx' scope=spfile; ---xxxx为DB或OS,建议DB
4
关闭数据库
Alter system switch logfile;
Alter system checkpoint;
Shutdown immediate;
5
重启数据库
Startup ;
6
查看参数
Show parameter audit ;
查看参数是否已经修改
7
清空审计表
迁移审计前清空审计表,否则迁移速度可能很慢
Truncate table sys.aud$;
8
迁移审计日志11g
将aud$所在的system 表空间迁移到非system 表空间如TBS_DTLDATA:
BEGIN DBMS_AUDIT_MGMT.set_audit_trail_location(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
--this moves table AUD$
audit_trail_location_value => 'TBS_DTLDATA'); --AUD替换为系统中TBS_DTLDATA表空间
END;
/
BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,
--this moves table FGA_LOG$
audit_trail_location_value => 'TBS_DTLDATA'); --FGA替换为系统中的TBS_DTLDATA表空间
END;
/
9
迁移审计日志9i,10g
将aud$所在的system 表空间迁移到非系统表空间如tms:
alter table AUDIT$ move tablespace TMS;
alter table AUDIT_ACTIONS move tablespace TMS;
alter table AUD$ move tablespace TMS;
alter table AUD$ move lob(SQLBIND) store as SYS_aud$_sqlbind_0000000384C00040$$ (tablespace TMS);
alter table AUD$ move lob(SQLTEXT) store as SYS_aud$_sqltext_0000000384C00041$$ (tablespace TMS);
alter index I_AUDIT rebuild online tablespace TMS;
alter index I_AUDIT_ACTIONS rebuild online tablespace TMS;
select t.tablespace_name,t.segment_name,t.column_name from dba_lobs t where t.table_name='AUD$';
10
对于db级别的审计部署清理脚本
清理脚本:
CREATE PROCEDURE P_CLEAR_AUDIT AS
LVC_SQL VARCHAR2(200);
BEGIN
LVC_SQL := 'TRUNCATE TABLE SYS.AUD$';
EXECUTE IMMEDIATE LVC_SQL;
END;
/
--记得修改执行时间,使用job来定时清理aud$表
DECLARE
JOBS INT;
BEGIN
SYS.DBMS_JOB.SUBMIT(JOB => JOBS,
WHAT => 'P_CLEAR_AUDIT;',
NEXT_DATE => TO_DATE('2018-10-21 23:59:00',
'YYYY-MM-DD HH24:MI:SS'),
INTERVAL => 'SYSDATE+1');
COMMIT;
END;
/
SYS.DBMS_JOB.SUBMIT是什么:
用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务。
一、dbms_job涉及到的知识点
1、创建job:
variable jobno number;
dbms_job.submit(:jobno, —-job号
'your_procedure;',—-执行的存储过程, ';'不能省略
next_date, —-下次执行时间
'interval' —-每次间隔时间,interval以天为单位
);
--查询job 部署情况
COL WHAT FOR A30
COL INTERVAL FOR A30
SET LINES 1000
SELECT JOB,WHAT ,INTERVAL ,T.NEXT_DATE FROM DBA_JOBS T WHERE WHAT LIKE '%AUD%';
11
应用测试
业务测试是否正常
————————————————
版权声明:本文为CSDN博主「富士康质检员张全蛋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34556414/article/details/83024034