重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 466|回复: 0
打印 上一主题 下一主题

[Oracle] Oracle数据库安全参数优化

[复制链接]
跳转到指定楼层
楼主
发表于 2025-10-19 22:22:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注意:所有参数的修改都应在测试环境充分验证后再应用于生产环境,避免因分配不当导致数据库性能问题或实例无法启动。

重要提示:不同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        最大错误登录次数        10        5        3
PASSWORD_LIFE_TIME        口令有效时间        180天        90天        60天
PASSWORD_REUSE_TIME        口令重用时间间隔        UNLIMITED        90天        365天
PASSWORD_REUSE_MAX        口令重用前需更改次数        UNLIMITED        5        5
PASSWORD_VERIFY_FUNCTION        口令复杂度验证函数        NULL        VERIFY_FUNCTION_11G        ora12c_strong_verify_function
PASSWORD_LOCK_TIME        账户锁定时间        1天        1天        1天
PASSWORD_GRACE_TIME        口令过期宽限期        7天        7天        7天
配置示例:

-- 创建自定义密码策略profile
CREATE PROFILE secure_profile LIMIT
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LIFE_TIME 90
  PASSWORD_REUSE_TIME 90
  PASSWORD_REUSE_MAX 5
  PASSWORD_VERIFY_FUNCTION ora12c_strong_verify_function
  PASSWORD_LOCK_TIME 1
  PASSWORD_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%';

-- 批量重置密码以确保使用最新算法
BEGIN
  FOR r IN (SELECT username FROM dba_users WHERE account_status='OPEN') LOOP
    EXECUTE 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;
密码生命周期阶段:

阶段1a:新旧密码同时有效(PASSWORD_ROLLOVER_TIME设定时间)
阶段1b:仅新密码有效,直到PASSWORD_LIFE_TIME结束
阶段2:密码过期前的正常使用期
阶段3:宽限期(PASSWORD_GRACE_TIME)
阶段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 10
  CONNECT_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进行数据库安全加固的参考手册。

关键最佳实践:

定期审查和更新密码策略
启用适当的审计级别并定期检查审计日志
及时应用安全补丁和版本更新
遵循最小权限原则分配用户权限
建立定期安全评估和监控机制
通过综合应用这些安全配置措施,可以显著提高Oracle数据库的安全性,保护敏感数据免受未授权访问和恶意攻击。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-4-17 21:21 , Processed in 0.215219 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表