Ubuntu 上 Oracle 数据库安全设置清单
一 系统与服务加固
- 以专用系统账号运行 Oracle(如 oracle 用户、oinstall/dba 组),禁止 root 直连数据库;为 oracle 用户配置 sudo 白名单,仅授予必要命令。
- 仅开放必要端口(默认监听 1521/TCP),使用 UFW 或云安全组限制来源网段;数据库主机不暴露公网,优先置于 私有子网/VPC,遵循“默认拒绝、按需放行”的网络策略。
- 操作系统与补丁:及时更新 Ubuntu 安全补丁与 Oracle 季度补丁(CPU/PSU),最小化安装软件包,关闭未使用的端口与服务。
二 账户与认证安全
- 强口令策略:长度至少 12 个字符,包含大小写字母、数字与特殊字符;避免历史常见口令;定期更换(建议周期 ≤90 天)。
- 失败锁定与解锁:设置连续失败尝试上限(如 FAILED_LOGIN_ATTEMPTS=6),超过阈值自动锁定一段时间(如 PASSWORD_LOCK_TIME=1/1440 天即 1 分钟),防止暴力破解。
- 口令复用限制:设置 PASSWORD_REUSE_MAX(如 5 次)与 PASSWORD_REUSE_TIME,避免近期口令复用。
- 口令复杂度函数:执行脚本 $ORACLE_HOME/rdbms/admin/utlpwdmg.sql,启用 verify_function_11G 或等同复杂度校验,强制大小写、数字与特殊字符组合。
- 默认账户治理:安装后修改 SYS/SYSTEM/DBSNMP 等管理账户默认口令;仅授予完成职责所需的最小权限,避免共享账户与通用应用账户直连数据库。
三 网络与传输安全
- 传输加密:启用 SSL/TLS 加密客户端与数据库之间的通信,配置 sqlnet.ora / listener.ora 的加密参数与证书,防止窃听与篡改。
- 来源限制:在 sqlnet.ora 启用白名单校验,仅允许受信网段/主机访问数据库监听器,降低暴露面。
- 空闲连接治理:设置 SQLNET.EXPIRE_TIME=10(单位:分钟),自动探测并清理长时间空闲连接,减少会话劫持风险。
四 权限与访问控制
- 最小权限与职责分离:遵循 最小权限原则、职责分离 与 按需授权;为 DBA、开发、只读等角色分别创建账号与权限集合,避免将 DBA 权限泛化到业务账号。
- 应用专用账户:为应用创建仅用于连接的专用账户,禁止人员直接以应用账户登录数据库;按需授予对象权限与角色,定期审计并回收过期授权。
- 数据字典保护:将参数 O7_DICTIONARY_ACCESSIBILITY=FALSE,禁止非 SYSDBA 用户通过数据字典基表直接访问敏感元数据。
五 审计监控与备份恢复
- 登录审计与登录触发器:启用登录审计,记录账号、时间、来源 IP;必要时创建登录触发器将关键登录事件写入专用审计表,便于追踪与取证。
- 安全审计与合规:定期执行安全审计与漏洞扫描,核查异常登录、权限变更与敏感数据访问;对审计日志设置保护策略,防止篡改与删除。
- 备份与恢复演练:制定并测试 RMAN 或导出备份策略,定期执行恢复演练,确保发生事件时可快速恢复业务;备份介质与存储应安全隔离与异地保存。