在各个项目进行等保的过程中,甲方单位通常会出具等保测评结果建议书,我们可根据测评对象、检测结果、风险等级、整改建议等进行逐项的配置和修改。本文将一些在实际项目中出现频率较高的达梦数据库等保测评项进行列举。
1.审计
不符合项:未开启审计日志
整改要求:需开启审计日志,对重要用户和重要操作进行审计。
调整ENABLE_AUDIT参数:
ENABLE_AUDIT=0 —关闭审计
ENABLE_AUDIT=1 —打开普通审计
ENABLE_AUDIT=2 —打开普通审计和实时审计
SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT'
打开审计:SP_SET_ENABLE_AUDIT(1);
查询审计是否打开: SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT'
设置审计日志存放目录并创建该目录
在 dm.ini 文件中添加参数:AUD_PATH=/data/log/auto_log_5236
mkdir -p /data/log/auto_log_5236
chown -R dmdba:dinstall /data/log/auto_log_5236
为所有用户配置登陆审计 :
SP_AUDIT_STMT(‘CONNECT’,’NULL’,’ALL’);
为管理员设置结构变更日志审计:
如各种 DDL 语句等
SP_AUDIT_STMT(‘ALL’,’SYSDBA’,’ALL’);
审计日志清理
使用操作系统 crond 配置定时任务,清理 180 天之前的日志;
(1)新建清除脚本
vi /home/aud_log_del_180.sh
#!/bin/sh
find /data/log/auto_log_5236 -mtime +180 -name "*.log" -exec rm -rf {} \
(2)开启定时任务crontab
crontab -e
36 9 * * * /home/aud_log_del_180.sh
:wq
(3)重启定时任务生效
systemctl restart crond.service
(4)重启数据库服务
2.口令复杂度
不符合项:口令未满足复杂度要求
整改要求:提升新用户口令复杂度,并更改旧用户简单口令
整改方案:设置 PWD_POLICY 参数为 31
(1:禁止与用户名相同;2:口令长度不小于 9;4:至少包含一个大写字母;8:至少包含一个数字;16:至少包含一个标点符号);
实际操作: sp_set_para_value(1,'PWD_POLICY', 31); //设置密码策略
3.口令有效期
---例如修改口令有效期为180天:
alter user SYSDBA limit PASSWORD_LIFE_TIME 180;
4.登录失败处理
---例如设置SYSDBA用户的登录失败尝试次数为5次:
alter user SYSDBA limit FAILED_LOGIN_ATTEMPS 5;
---例如设置SYSDBA用户登录失败后被锁定的时间为5分钟:
alter user SYSDBA limit PASSWORD_LOCK_TIME 5;
5.访问控制(必须加127.0.0.1)
---例如添加允许192.168.222.123登录:
alter user "SYSDBA" allow_ip "127.0.0.1","192.168.222.123";
---例如设置不允许192.168.222.145登录:
alter user "SYSDBA" not_allow_ip "192.168.222.145";
6.自动备份
--查看数据库备份作业信息
SELECT
SJ."NAME" "作业名称" ,
(CASE SJS."TYPE" WHEN 0 THEN '执行SQL语句' WHEN 1 THEN '数据库备份' WHEN 5 THEN '数据库备份' WHEN 6 THEN '数据库备份' ELSE '其他步骤' END)"步骤类型" ,
SJ."DESCRIBE" "作业描述信息" ,
(CASE SJC."TYPE" WHEN 0 THEN '只执行一次' WHEN '1' THEN '每天执行' WHEN '2' THEN '每周执行' WHEN '3' THEN '每天执行' ELSE '其他类型' END)"调度类型" ,
(CASE SJC."FREQ_MINUTE_INTERVAL" WHEN 0 THEN '只执行一次' END)"调度执行间隔(分钟)",
SJC."STARTTIME" "调度起始时间" ,
SJC."DURING_START_DATE" "调度起始日期" ,
SJS."DBNAME" "所属数据库"
FROM
"SYSJOB"."SYSJOBSCHEDULES" SJC,
"SYSJOB"."SYSJOBS" SJ ,
"SYSJOB"."SYSJOBSTEPS" SJS
WHERE
SJC."ENABLE" =1
AND SJC."VALID" ='Y'
AND SJ."ENABLE" =1
AND SJ."VALID" ='Y'
AND SJS."JOBID" =SJ."ID"
AND SJC."JOBID" =SJ."ID";
--例如设置自动备份到/data/dmbak目录:
(每周六全备,其余时间增备)
SP_INIT_JOB_SYS(1);
call SP_CREATE_JOB('bakup_ql',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('bakup_ql');
call SP_ADD_JOB_STEP('bakup_ql', 'bak_ql', 6, '01000000/data/dmbak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakup_ql', 'diaoduql', 1, 2, 1, 64, 0, '01:00:00', NULL, '2020-06-25 22:43:59', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakup_ql');
call SP_CREATE_JOB('bakup_zl',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('bakup_zl');
call SP_ADD_JOB_STEP('bakup_zl', 'bak_zl', 6, '11000000/data/dmbak|/data/dmbak', 1, 0, 2, 6, NULL, 0);
call SP_ADD_JOB_STEP('bakup_zl', 'switch_quanbei', 6, '01000000/data/dmbak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakup_zl', 'diaodu_zl', 1, 2, 1, 63, 0, '22:30:00', NULL, '2020-06-21 11:15:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakup_zl');
call SP_CREATE_JOB('bak_clear',1,0,'',0,0,'',0,'每天删除15天前的备份');
call SP_JOB_CONFIG_START('bak_clear');
call SP_ADD_JOB_STEP('bak_clear', 'del_bak', 0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/data/dmbak'');
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-15);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bak_clear', 'diaodu_del', 1, 1, 1, 0, 0, '01:00:00', NULL, '2020-06-25 22:54:03', NULL, '');
call SP_JOB_CONFIG_COMMIT('bak_clear');
7.传输安全(SSL)
查询 COMM_ENCRYPT_NAME 的当前值:
SELECT * FROM V$PARAMETER WHERE NAME='COMM_ENCRYPT_NAME';
设置COMM_ENCRYPT_NAME 的值:
SP_SET_PARA_STRING_VALUE(2,'COMM_ENCRYPT_NAME','DES_OFB');
8.资源限制项
例如设置口令有效期为15天:
alter user SYSDBA limit PASSWORD_LIFE_TIME 15;
SESSION_PER_USER:最大会话数。
CONNECT_IDLE_TIME:会话空闲期,分钟。
CONNECT_TIME:会话持续期,分钟
FAILED_LOGIN_ATTEMPS:登录失败次数。
PASSWORD_LIFE_TIME:口令有效期,天。
PASSWORD_REUSE_TIME:口令等待期,天
PASSWORD_REUSE_MAX:口令变更次数
PASSWORD_LOCK_TIME:口令锁定时间,分钟。
PASSWORD_GRACE_TIME:口令宽限期。天
CPU_PER_SESSION:会话使用CPU时间,秒
CPU_PER_CALL:请求使用CPU时间,秒。
READ_PER_SESSION:会话读取页数。
READ_PER_CALL :请求读取页数。
MEM_SPACE : 会话私有内存,M
查询所有用户的资源限制项:
select
b.name "用户名" ,
a.SESS_PER_USER "最大会话数" ,
a.CONN_IDLE_TIME "最大空闲时间(分钟)",a.FAILED_NUM "登录失败次数" ,
a.LIFE_TIME "口令有效期(天)" ,
a.REUSE_TIME "口令等待期(天)" ,
a.REUSE_MAX "口令变更次数" ,
a.LOCK_TIME "口令锁定期(分钟)" ,
a.GRACE_TIME "口令宽限期(天)" ,
CASE WHEN a.LOCKED_STATUS='1' THEN 'LOCKED' ELSE THEN 'OPEN' END
"用户状态",
a.LASTEST_LOCKED "最后一次的锁定时间" ,
a.PWD_POLICY "口令策略" ,
--a.RN_FLAG "是否只读" ,
a.ALLOW_ADDR "允许的 IP 地址" ,
a.NOT_ALLOW_ADDR "不允许的 IP 地址",
a.ALLOW_DT "允许登录的时间段" ,
a.NOT_ALLOW_DT "不允许登录的时间段" ,
a.LAST_LOGIN_DTID "上次登录时间" ,
a.LAST_LOGIN_IP "上次登录 IP 地址" ,
a.FAILED_ATTEMPS "即将被锁定的连续登录失败的次数"
from
SYSUSERS a,
SYS.SYSOBJECTS b
where
a.id=b.id;
文章
阅读量
获赞