当前位置: 首页 > news >正文

达梦数据库常见漏洞及处理方案

目录

  • 达梦数据库常见漏洞及处理方案
    • 一、登录失败口令锁定时间过短
    • 二、口令使用期限过大
    • 三、审计功能未开启
    • 四、通信未加密
      • 1. 基于传输层的SSL协议加密(暂不推荐)
      • 2. 基于应用层的消息包加密
    • 五、未检查存储过程中EXECUTE IMMEDIATE语句的权限
    • 六、口令可重用前的变更次数过小
    • 七、口令可重用前的等待天数过小
    • 八、DBA用户权限未限制
    • 九、SP_MAC_LABEL_FROM_CHAR过程权限未限制
    • 总结

达梦数据库常见漏洞及处理方案

在数据库运维工作中,安全始终是核心议题之一。达梦数据库作为国产数据库的代表,其安全加固尤为重要。本文将结合实际运维经验,详细介绍达梦数据库中常见漏洞的检测与修复方法,帮助数据库管理员构建更安全的运行环境。

一、登录失败口令锁定时间过短

风险描述:当登录失败次数过多时,若锁定时间过短,容易遭受暴力破解攻击,导致账号安全风险升高。

检查方法:通过以下SQL查询当前用户的失败登录次数限制和锁定时间:

select FAILED_NUM, LOCK_TIME, SF_GET_USERNAME_BY_ID(ID), u.* from SYSUSERS u;

修复方案:设置登录失败5次后锁定30分钟(排除系统内置的SYSSSO和SYSAUDITOR用户):

select 'ALTER USER '||SF_GET_USERNAME_BY_ID(ID)||' LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 30;' from SYSUSERS u where SF_GET_USERNAME_BY_ID(ID) not in ('SYSSSO','SYSAUDITOR');

执行上述查询生成的SQL语句,即可生效。

二、口令使用期限过大

风险描述:口令长期不更换会增加泄露后被滥用的风险,合理设置有效期可强制用户定期更新口令。

检查方法:查询当前口令有效期和过期宽限时间:

select LIFE_TIME, GRACE_TIME, SF_GET_USERNAME_BY_ID(ID), u.* from SYSUSERS u;

注意:当宽限时间为UNLIMITED时,无法设置有效期,需先调整宽限时间。

修复方案

  1. 设置口令过期宽限时间为10天:
select 'ALTER USER '||SF_GET_USERNAME_BY_ID(ID)||' LIMIT PASSWORD_GRACE_TIME 10;' from SYSUSERS u where SF_GET_USERNAME_BY_ID(ID) not in ('SYSSSO','SYSAUDITOR');
  1. 设置口令有效期为30天:
select 'ALTER USER '||SF_GET_USERNAME_BY_ID(ID)||' LIMIT PASSWORD_LIFE_TIME 30;'from SYSUSERS u where SF_GET_USERNAME_BY_ID(ID) not in ('SYSSSO','SYSAUDITOR');

三、审计功能未开启

风险描述:未开启审计功能时,无法记录数据库操作行为,难以追溯安全事件。

检查方法:查询审计开关状态:

SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';
  • 0:关闭审计;1:打开普通审计;2:打开普通审计和实时审计。

修复方案:由SYSAUDITOR用户登录后开启普通审计:

SP_SET_ENABLE_AUDIT (1);

四、通信未加密

风险描述:数据库通信未加密可能导致数据在传输过程中被窃取或篡改。

达梦提供两种加密方式(无需同时开启,避免资源消耗):

1. 基于传输层的SSL协议加密(暂不推荐)

检查方法

SELECT * FROM V$PARAMETER WHERE NAME='ENABLE_ENCRYPT';
  • 0:不开启;1:开启加密和认证;2:仅认证;4:仅加密。

修复方案(需重启数据库生效):

SP_SET_PARA_VALUE (2,'ENABLE_ENCRYPT',1); -- 暂不建议使用

2. 基于应用层的消息包加密

检查方法

SELECT * FROM V$PARAMETER WHERE NAME='COMM_ENCRYPT_NAME';
  • 空串:不加密;算法名:启用对应加密算法。

修复方案(需重启数据库生效):

SP_SET_PARA_STRING_VALUE(2,'COMM_ENCRYPT_NAME','DES_OFB');

取消加密:

SP_SET_PARA_STRING_VALUE(2,'COMM_ENCRYPT_NAME',null);

五、未检查存储过程中EXECUTE IMMEDIATE语句的权限

风险描述:若不限制存储过程中动态SQL的执行权限,可能导致越权操作风险。

检查方法:查询参数状态:

SELECT * FROM V$PARAMETER WHERE NAME='ENABLE_STRICT_CHECK';
  • 0:不检查;1:开启检查。

修复方案(需重启数据库生效):

SP_SET_PARA_VALUE(2,'ENABLE_STRICT_CHECK',1);

六、口令可重用前的变更次数过小

风险描述:若口令可重用前的变更次数过少,用户可能频繁使用旧口令,增加泄露风险。

检查方法

select REUSE_MAX, SF_GET_USERNAME_BY_ID(ID), u.* from SYSUSERS u;

修复方案:设置口令需变更5次后才可重用:

select 'ALTER USER '||SF_GET_USERNAME_BY_ID(ID)||' LIMIT PASSWORD_REUSE_MAX 5;'from SYSUSERS u where SF_GET_USERNAME_BY_ID(ID) not in ('SYSSSO','SYSAUDITOR');

七、口令可重用前的等待天数过小

风险描述:若口令可重用前的等待天数不足,用户可能短期内恢复旧口令,降低安全性。

检查方法

select REUSE_TIME, SF_GET_USERNAME_BY_ID(ID), u.* from SYSUSERS u;

修复方案:设置口令需等待30天后才可重用:

select 'ALTER USER '||SF_GET_USERNAME_BY_ID(ID)||' LIMIT PASSWORD_REUSE_TIME 30;'from SYSUSERS u where SF_GET_USERNAME_BY_ID(ID) not in ('SYSSSO','SYSAUDITOR');

八、DBA用户权限未限制

风险描述:DBA用户的“ANY”权限过大,可能导致误操作或权限滥用。

检查方法:查询DBA权限限制状态:

SELECT * FROM V$PARAMETER WHERE NAME='RESTRICT_DBA';
  • 1:限制“ANY”权限;0:不限制。

修复方案

  • 非安全版本:由SYSDBA执行;
  • 安全版本:由SYSSSO执行。
SP_RESTRICT_DBA(1);

补充检查

  • 查询具有DBA角色的用户:
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE = 'DBA';
  • 查询DBA用户的系统权限:
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE IN (SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE = 'DBA');

建议实施权限分离,创建备份管理员、安全审计员等角色。

九、SP_MAC_LABEL_FROM_CHAR过程权限未限制

风险描述:若普通用户可执行SP_MAC_LABEL_FROM_CHAR过程,可能绕过MAC标签控制。

检查方法(仅安全版有效):

SELECT * FROM V$DM_INI WHERE PARA_NAME = 'MAC_LABEL_OPTION';
  • 0:仅SSO可调用;1:所有用户可调用;2:非SSO用户无法创建新LABEL。

修复方案

ALTER SYSTEM SET 'MAC_LABEL_OPTION' = 0 BOTH;

注意:SYSAUDITOR、SYSSSO用户需分别登录后修改自身策略,其他用户由SYSDBA操作。

总结

达梦数据库的安全加固需从账号策略、审计机制、通信加密、权限控制等多维度入手。上述方案中,部分参数修改后需重启数据库生效,建议在维护窗口执行。定期执行检查语句,结合业务场景调整配置,可有效降低安全风险。

http://www.dtcms.com/a/329450.html

相关文章:

  • PostgreSQL——索引
  • TensorFlow实现回归分析详解
  • npm install 的作用
  • HTTP 请求转发与重定向详解及其应用(含 Java 示例)
  • Windows平台RTSP播放器选型与低延迟全解析及技术实践
  • 迅为RK3568开发板模型推理测试实战deeplabv3语义分割
  • Java基础 8.13
  • 【Flowable】工作流网关 控制流程的流向
  • 深度学习——03 神经网络(3)-网络优化方法
  • 门店销售机器人的智能升级:具身智能模型带来的变革
  • Mac安装ant
  • Linux性能分析教程:top, htop, iotop命令使用详解 (服务器慢/卡顿排查)
  • 电脑如何安装win10专业版_电脑用u盘安装win10专业版教程
  • GO学习记录四——读取excel完成数据库建表
  • 10.反射获取静态类的属性 C#例子 WPF例子
  • 5.0.9.1 C# wpf通过WindowsFormsHost嵌入windows media player(AxInterop.WMPLib)
  • BGE向量算法
  • C++冒泡、选择、快速、桶排序超超超详细解析
  • 20. 有效的括号 - 力扣(LeetCode)
  • P1886 滑动窗口 /【模板】单调队列【题解】
  • 《Foundations and Recent Trends in Multimodal Mobile Agents: A Survey》论文精读笔记
  • [量化交易](1获取加密货币的交易数据)
  • 面试实战 问题三十 HTTP协议中TCP三次握手与四次挥手详解
  • 解决程序连不上RabbitMQ:Attempting to connect to/access to vhost虚拟主机挂了的排错与恢复
  • 循序渐进学 Spring (上):从 IoC/DI 核心原理到 XML 配置实战
  • DataOceanAI Dolphin(ffmpeg音频转化教程) 多语言(中国方言)语音识别系统部署与应用指南
  • Vue 3 源码解读与核心 API 分析
  • EN 62368消费电子、信息技术设备和办公设备安全要求标准
  • mybtias集成spring原理?--spring,mybatis源码解析
  • 后端Web实战-MySQL数据库