总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:Linux运维实战总结


一、身份鉴别类

1、数据库系统中全部账号(除sys账号)的密码有效期

1、查看密码有效期
SQL> SELECT T2.USERNAME,T1.LIFE_TIME FROM "SYS"."SYSUSERS" T1,"SYS"."DBA_USERS" T2 WHERE T2.USER_ID=T1.ID;
或者
SQL> select d.username, conn_idle_time as 会话空闲期分钟,failed_num as 登陆失败次数 ,life_time as 密码有效期天,lock_time as 账号锁定期分钟,allow_addr as 设定的ip登陆 from sysusers s ,dba_users d where s.id=d.user_id;

2、修改密码有效期
SQL> alter user 用户名 limit PASSWORD_GRACE_TIME 30(修改密码宽限期)
SQL> alter user 用户名 limit PASSWORD_LIFE_TIME 180(修改密码有效期)
SQL> alter user "SYSDBA" limit PASSWORD_LIFE_TIME 360 PASSWORD_GRACE_TIME 10;

2、密码复杂度

1、查询当前密码策略
SQL> select * from v$dm_ini where para_name ='PWD_POLICY';
或者
SQL> SELECT SF_GET_PARA_VALUE(1,'PWD_POLICY');

2、修改策略(如修改为31)
SP_SET_PARA_VALUE(1, 'PWD_POLICY',31);

口令策略如下所示:

0 无策略
1 禁止与用户名相同
2 口令长度不小于 9 l
4 至少包含一个大写字母(A-Z) l
8 至少包含一个数字(0-9) l
16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
若为其他数字,则表示配置值的和,如 3=1+2,表示同时启用第1项和第2项策略
当 COMPATIBLE_MODE=1 时,PWD_POLICY 的实际值均为0

3、对全部账号(除sys账号)的密码重用次数限制

SQL> SELECT T2.USERNAME,T1.REUSE_MAX FROM "SYS"."SYSUSER$" T1,"SYS"."ALL_USERS" T2 WHERE T1.ID=T2.USER_ID;
SQL> ALTER USER 用户名 LIMIT PASSWORD_REUSE_MAX 5

4、对全部账号(除sys账号)的账户失败锁定次数(FAILED_NUM)

SQL> SELECT USERNAME,FAILED_NUM FROM SYSUSERS,DBA_USERS WHERE SYSUSERS.ID=DBA_USERS.USER_ID;
SQL> ALTER USER "LOLAAGE" limit failed_login_attemps 5;

5、对全部账号(除sys账号)的失败锁定时间(LOCK_TIME)

SQL> SELECT T2.USERNAME,T1.LOCK_TIME FROM "SYS"."SYSUSER$" T1,"SYS"."ALL_USERS" T2 WHERE T1.ID=T2.USER_ID;
SQL> ALTER USER "LOLAAGE" limit  password_lock_time 5;

6、修改用户密码

ALTER USER "SYSDBA" IDENTIFIED BY "123456";
ALTER USER "TEST" IDENTIFIED BY "123456";

二、访问控制

1、对全部账号(除sys账号)的账户允许访问IP进行严格限制

SQL> SELECT T2.USERNAME,T1.ALLOW_ADDR,T1.NOT_ALLOW_ADDR FROM "SYS"."SYSUSERS" T1,"SYS"."DBA_USERS" T2 WHERE T2.USER_ID=T1.ID;
SQL> alter user "AAA" allow_ip "192.168.10.72" ,"192.168.10.73";

三、安全审计

1、对数据库系统审计功能进行配置

1、检查dm.ini文件中审计配置(SVR_LOG)是否正确设置(SVR_LOG为2)
cat dm.ini | grep SVR_LOG

2、检查返回结果中ENABLE_AUDIT值是否为2
SQL> SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';    

3、开启审计
Dm7开启:SYSDBA用户执行
sp_set_para_value(1,'ENABLE_AUDIT',1)

Dm8开启:SYSAUDITOR用户执行
[dmdba@arm ~]$ disql SYSAUDITOR/'"SYSAUDITOR"'@localhost:5236
SQL>  SP_SET_ENABLE_AUDIT(1);
0:关闭;1:打开普通审计;2:打开普通审计和实时审计     

2、审计内容

查询当前的审计状态sql:
SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';

打开全部语句审计
SP_AUDIT_STMT('ALL', 'NULL', 'ALL');

关闭全部审计
SP_NOAUDIT_STMT('ALL', 'NULL', 'ALL');

 登录登出审计
SP_AUDIT_STMT('CONNECT', 'NULL', 'ALL');

取消登录登出审计
SP_NOAUDIT_STMT('CONNECT', 'NULL', 'ALL');

打开某模式的表审计
SP_AUDIT_STMT('SELECT TABLE', 'DMHR', 'ALL');

取消某模式的表审计
SP_NOAUDIT_STMT('SELECT TABLE', 'DMHR', 'ALL');

查看审计记录
select * from V$AUDITRECORDS;

四、入侵防范

1、查询用户是否设置IP白名单

SQL> select du.username,allow_addr from dba_users du,sysusers su where du.user_id=su.id;

2、限制客户端登陆

1、可以通过sql设置用户登陆的ip地址,非设定的ip登陆时会报错提示无效的ip。
SQL> alter user "DMHR" allow_ip "127.0.0.1","223.254.7.206","223.254.7.*";

2、指定时间段内允许登陆。
alter user "DMHR" allow_datetime "2019-01-01" "00:00:00" to "2019-12-31" "23:59:59","MON" "09:00:00" to "FRI" "17:00:00";

3、还可以通过防火墙开通数据库端口访问权限,限制客户端登陆数据库。

五、数据完整性和数据保密性

1、通信加密

SQL> SP_SET_PARA_STRING_VALUE(2,'COMM_ENCRYPT_NAME','DES_CFB'); 

说明:ENABLE_ENCRYPT 取值 0、1 和 2 分别代表不加密、SSL 加密、SSL 认证,默认值为 1。COMM_ENCRYPT_NAME 参数用来指定消息通信的加密算法名,如果为空则不进行通信加密;如果给的加密算法名错误,则使用加密算法 DES_CFB。 DM 支持的加密算法名可以通过查询动态视图 V$CIPHERS 获取。


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:Linux运维实战总结

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐