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

Oracle数据库安全参数优化

上一期发布了关于oracle数据库安装后的参数优化文档,此文档只给出了参考指引,没有给出对应的设置规则,接下来几期文档将详细的写写配置规则相关的给大家参考,这里列举依然是常规设置,实际项目中还是需要根据实际情况灵活调整。

前几期也分享了一些参数相关的优化,本期继续分享数据库安全参数相关部分,主要是密码策略,审计,权限相关的部分。

注意:所有参数的修改都应在测试环境充分验证后再应用于生产环境,避免因分配不当导致数据库性能问题或实例无法启动

重要提示:不同Oracle版本可能存在差异,生产环境调整前请务必查阅对应版本的官方文档并进行测试。所有修改操作前请做好参数文件备份

-- 创建PFILE备份
CREATE PFILE='/backup/initORCL_20231201.ora' FROM SPFILE;
-- 直接复制SPFILE(需要数据库关闭)
-- 在操作系统层面复制
-- cp $ORACLE_HOME/dbs/spfileORCL.ora /backup/
`

Oracle数据库安全参数优化

1 密码策略安全配置

1.1 密码复杂度策略

参数说明与配置:

Oracle数据库通过profile管理密码策略,以下为关键参数说明:

参数名称说明Oracle默认值推荐值国防安全要求
FAILED_LOGIN_ATTEMPTS最大错误登录次数1053
PASSWORD_LIFE_TIME口令有效时间180天90天60天
PASSWORD_REUSE_TIME口令重用时间间隔UNLIMITED90天365天
PASSWORD_REUSE_MAX口令重用前需更改次数UNLIMITED55
PASSWORD_VERIFY_FUNCTION口令复杂度验证函数NULLVERIFY_FUNCTION_11Gora12c_strong_verify_function
PASSWORD_LOCK_TIME账户锁定时间1天1天1天
PASSWORD_GRACE_TIME口令过期宽限期7天7天7天

配置示例:

-- 创建自定义密码策略profile
CREATE PROFILE secure_profile LIMITFAILED_LOGIN_ATTEMPTS 5PASSWORD_LIFE_TIME 90PASSWORD_REUSE_TIME 90PASSWORD_REUSE_MAX 5PASSWORD_VERIFY_FUNCTION ora12c_strong_verify_functionPASSWORD_LOCK_TIME 1PASSWORD_GRACE_TIME 7;-- 将profile分配给用户
ALTER USER scott PROFILE secure_profile;

密码复杂度验证函数:

Oracle 12c引入了新的密码验证函数:

  • ora12c_verify_function - 基本复杂度要求
  • ora12c_strong_verify_function - 更强的复杂度要求
  • ora12c_stig_verify_function - 符合安全技术实施指南要求

STIG(安全技术实施指南)要求包括:

  • 密码至少9个字符
  • 至少2个大写字母
  • 至少2个小写字母
  • 至少2个数字
  • 至少2个特殊字符
  • 新密码必须与旧密码至少4个字符不同

1.2 密码大小写敏感性

版本差异说明:

版本默认行为参数可用性说明
Oracle 11g大小写敏感SEC_CASE_SENSITIVE_LOGON=TRUE可禁用大小写敏感性
Oracle 12cR2大小写敏感已弃用密码大小写敏感性始终强制启用
Oracle 19c大小写敏感已弃用密码大小写敏感性始终强制启用
Oracle 21c大小写敏感已移除参数完全移除,无法禁用

配置示例:

-- 检查当前设置
SHOW PARAMETER SEC_CASE_SENSITIVE_LOGON;-- 在11g中禁用大小写敏感性(不推荐)
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;-- 检查用户密码版本
SELECT username FROM dba_users WHERE password_versions NOT LIKE '%12%';-- 批量重置密码以确保使用最新算法
BEGINFOR r IN (SELECT username FROM dba_users WHERE account_status='OPEN') LOOPEXECUTE IMMEDIATE 'ALTER USER '||r.username||' IDENTIFIED BY "TempPass123!"';END LOOP;
END;
/

1.3 渐进式密码轮转(19c/21c新特性)

Oracle 19.12及21c引入了渐进式密码轮转特性,允许在密码更改期间新旧密码同时有效。

配置参数:

  • PASSWORD_ROLLOVER_TIME:密码轮转时间,默认0(禁用)

配置示例:

-- 启用渐进式密码轮转(7天)
ALTER PROFILE secure_profile LIMIT PASSWORD_ROLLOVER_TIME 7;-- 手动提前结束轮转期
ALTER USER scott EXPIRE PASSWORD ROLLOVER PERIOD;

密码生命周期阶段:

  1. 阶段1a:新旧密码同时有效(PASSWORD_ROLLOVER_TIME设定时间)
  2. 阶段1b:仅新密码有效,直到PASSWORD_LIFE_TIME结束
  3. 阶段2:密码过期前的正常使用期
  4. 阶段3:宽限期(PASSWORD_GRACE_TIME
  5. 阶段4:密码完全过期,必须更改

2 数据库审计配置

2.1 审计基础配置

审计参数说明:

-- 启用数据库审计
ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE;-- 审计SYSDBA操作
ALTER SYSTEM SET AUDIT_SYS_OPERATIONS=TRUE SCOPE=SPFILE;-- 重启数据库使审计生效
SHUTDOWN IMMEDIATE;
STARTUP;

审计级别类型:

  • AUDIT_TRAIL=NONE:禁用审计
  • AUDIT_TRAIL=OS:审计记录写入操作系统文件
  • AUDIT_TRAIL=DB:审计记录写入数据库表SYS.AUD$
  • AUDIT_TRAIL=DB,EXTENDED:包含SQL语句和绑定变量
  • AUDIT_TRAIL=XML:审计记录写入XML格式操作系统文件

2.2 登录审计配置

监控失败登录尝试:

-- 查看登录失败的审计记录
SELECT os_username, userhost, terminal, username, COUNT(*)
FROM dba_audit_trail
WHERE returncode = 1017
GROUP BY os_username, userhost, username, terminal;

returncode 1017表示无效的用户名/密码,这对于检测暴力破解攻击非常有用。

2.3 细粒度审计策略

配置关键操作审计:

-- 审计所有DDL操作
AUDIT CREATE TABLE, ALTER TABLE, DROP TABLE BY ACCESS;-- 审计数据查询操作
AUDIT SELECT TABLE BY ACCESS;-- 审计用户管理操作
AUDIT CREATE USER, ALTER USER, DROP USER BY ACCESS;-- 审计权限管理操作
AUDIT GRANT, REVOKE BY ACCESS;-- 查看当前审计设置
SELECT * FROM DBA_STMT_AUDIT_OPTS;

3 用户和权限安全

3.1 账户锁定策略

配置示例:

-- 查询所有开放状态的用户
SELECT username, profile FROM dba_users WHERE account_status='OPEN';-- 查询所有profile的密码设置
SELECT * FROM dBA_profiles WHERE resource_type='PASSWORD';-- 设置失败登录尝试
ALTER PROFILE secure_profile LIMIT FAILED_LOGIN_ATTEMPTS 5;

防范用户被锁定的监控:

-- 监控接近锁定阈值的用户
SELECT username, account_status, lock_date 
FROM dba_users 
WHERE account_status <> 'OPEN';-- 监控失败登录计数
SELECT username, count(*)
FROM dba_audit_trail
WHERE returncode = 1017
AND timestamp > SYSDATE - 1/24  -- 最近1小时
GROUP BY username;

3.2 会话超时控制

配置示例:

-- 设置空闲超时和连接时间限制
ALTER PROFILE secure_profile LIMIT IDLE_TIME 10CONNECT_TIME 60;

参数说明:

  • IDLE_TIME:最大空闲时间(分钟)
  • CONNECT_TIME:最大连接时间(分钟)

4 版本特定安全特性

4.1 Oracle 12c 密码增强

密码哈希算法改进:

12c使用基于PBKDF2的SHA512哈希算法替代简单的SHA1哈希,更安全抵御暴力破解。

密码文件存储到ASM:

-- 在ASM上创建密码文件
orapwd file='+DATA/ORCL/orapworcl' asm=y force=y format=12 password='NewPass123!'

前提条件: COMPATIBLE.ASM >= 12.1

Data Guard密码自动同步:

12cR2中,主备库的密码文件会自动同步,无需手动维护。

4.2 Oracle 19c/21c 安全增强

认证协议控制:

-- 设置允许的认证协议版本
ALTER SYSTEM SET sqlnet.allowed_logon_version_server=12 SCOPE=SPFILE;

可用值:

  • 12a:Oracle 12c Release 1 (12.1.0.2) 或更高版本
  • 12:Oracle 11g CPUOct2012 及更高版本认证协议(推荐)
  • 11:Oracle 11g 认证协议(默认)
  • 10:Oracle 10g 认证协议
  • 8:Oracle8i 认证协议

5 操作系统级安全配置

5.1 文件权限控制

推荐umask设置:

# 在shell配置文件中设置
umask 027  # 提供中等文件保护 (740)
# 或
umask 077  # 提供完整文件保护 (700)

5.2 密码复杂性规则(操作系统级)

配置示例:

# 设置密码复杂性策略(符合国防安全要求)
/opt/oracle.cellos/host_access_control pam-auth --passwdqc disabled,disabled,disabled,disabled,15

参数说明:

  • 确保密码至少包含四个字符分类(大写、小写、数字和特殊字符)
  • 密码长度至少为15个字符

6 监控和维护

6.1 安全状态监控

定期检查项目:

-- 检查开放账户
SELECT username, account_status, profile, expiry_date
FROM dba_users
WHERE account_status = 'OPEN';-- 检查密码即将过期的用户
SELECT username, account_status, expiry_date
FROM dba_users
WHERE expiry_date IS NOT NULL 
AND expiry_date < SYSDATE + 7;-- 检查被锁定账户
SELECT username, lock_date, account_status
FROM dba_users
WHERE account_status LIKE '%LOCKED%';-- 检查DBA权限用户
SELECT grantee, granted_role
FROM dba_role_privs
WHERE granted_role IN ('DBA', 'RESOURCE', 'CONNECT')
ORDER BY granted_role, grantee;

6.2 审计日志维护

定期清理审计日志:

-- 检查审计表大小
SELECT segment_name, bytes/1024/1024 MB
FROM dba_segments
WHERE segment_name = 'AUD$';-- 归档并清理旧审计记录
DELETE FROM sys.aud$ WHERE timestamp# < SYSDATE - 90;-- 定期执行表空间重组
ALTER TABLE sys.aud$ MOVE TABLESPACE SYSAUX;

总结

Oracle数据库安全配置是一个持续的过程,需要根据具体业务需求和安全要求进行调整。本文涵盖了从密码策略、审计配置到版本特定特性的全面安全设置指南,可作为DBA进行数据库安全加固的参考手册。

关键最佳实践:

  1. 定期审查和更新密码策略
  2. 启用适当的审计级别并定期检查审计日志
  3. 及时应用安全补丁和版本更新
  4. 遵循最小权限原则分配用户权限
  5. 建立定期安全评估和监控机制

通过综合应用这些安全配置措施,可以显著提高Oracle数据库的安全性,保护敏感数据免受未授权访问和恶意攻击。

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

相关文章:

  • 亚马逊云代理:利用亚马逊云进行大规模数据分析与处理的最佳实践
  • 生成链接的网站网站超链接用什么
  • 网站英文域名是什么django类似wordpress
  • 本地搭建EXAM-MASTER考试系统
  • 高级运维工程师面试题汇总-【DEVOPS】
  • 东莞浩智网站建设开发wordpress 中国地图
  • 【Go】C++ 转 Go 第(一)天:环境搭建 Windows + VSCode 远程连接 Linux
  • MYSQL学习笔记(个人)(第十五天)
  • 网站登录验证码不正确云端互联网站建设
  • Zotero安装+坚果云+iPad同步方法及问题整理
  • 做彩票网站的方案网站建设资金报告
  • 基于路由器,不同域的网络A和网络B之间如何通信?
  • 【小白笔记】编程概念用最直白的方式解释
  • Docker 容器化部署 Node.js 详细手册
  • 浅析cef在win和mac上的适配
  • 营销型网站一般有哪些内容珠海公司网站建设
  • PHP 空指针引用:潜藏在运行时的
  • Android 中 Padding 与 Margin 的深度解析:从概念到实战区分
  • 关于dtoj 177 谐振之石的一些反思
  • UniverSheets最新版本测试
  • JD-Eclipse 插件核心功能与安装指南
  • kafka与zero-copy
  • 上海建站模板平台做外贸网站渠道
  • QT-常用控件(多元素控件)
  • MFC + OpenCV 图像预览显示不全中断问题解决:GDI行填充详解
  • 家庭农场做网站网站排名做不上去
  • LWIP通讯之PHY芯片LAN8720引脚详解
  • YOLOv3 :目标检测的经典融合与创新
  • 数值计算-线性方程组的迭代解法
  • win设置