Ubuntu 上保障 Oracle 数据库安全性的实用方案
一 系统层加固
- 保持系统与软件更新:定期执行 sudo apt update && sudo apt upgrade,及时修补 Ubuntu 与 Oracle 的安全漏洞。
- 强密码与登录安全:安装并配置 libpam-pwquality,设置复杂度(如 minlen=12、minclass=3),并通过 PAM 应用;同时限制数据库账户的登录失败次数与锁定策略。
- 最小化服务与端口:仅开启必需服务,禁用不必要的 systemd 单元,减少攻击面。
- 防火墙与访问控制:使用 UFW 仅放行 SSH(22/TCP) 与数据库监听端口(如 1521/TCP),对管理网段与业务网段分别放通。
- SSH 加固:禁用 root 远程登录、使用 SSH 密钥 替代口令、可变更默认端口并限制可登录用户组。
- 网络隔离:将数据库置于独立的 VLAN/安全组,仅允许应用服务器与堡垒机访问监听器。
- 时间同步:启用 NTP/chrony,确保审计与日志时间戳一致,便于取证与合规。
二 Oracle 数据库层安全
- 身份鉴别与口令策略:为 SYS/SYSTEM 及业务用户设置高强度口令,启用口令复杂度、有效期与失败锁定(通过 PROFILE 实现)。
- 最小权限与角色管理:遵循最小权限原则,优先使用自定义 ROLE 集中授权与回收,避免直接授予 DBA 等高权角色。
- 细粒度访问控制:在 表/视图/存储过程 级别授予权限;通过 视图 实现 行级 与 列级 访问控制,隐藏敏感列。
- 审计与监控:启用 审计(AUDIT/NOAUDIT) 记录关键操作(登录、DDL、权限变更、敏感表访问),并集中采集与告警;定期核查 DBA_USERS、DBA_PROFILES、DBA_AUDIT_TRAIL 等数据字典视图。
- 加密通信:为 Oracle Net(监听/客户端) 配置 SSL/TLS,保护数据在传输过程中的机密性与完整性。
- 补丁与漏洞管理:及时安装 Oracle 季度补丁(PSU/DBRU) 与 CPU,修复已知漏洞。
- 备份与恢复演练:制定并定期测试 RMAN 备份与恢复流程,确保 RPO/RTO 达标。
三 网络与监听器安全
- 监听器加固:在 listener.ora 中仅监听必要地址,避免使用 主机名通配;设置强口令保护 LSNRCTL;限制远程管理。
- 传输加密:启用 TCPS(SSL/TLS)监听,客户端通过 SQLNET.ORA/sqlnet.ora 配置加密与校验,确保端到端加密。
- 访问控制:在 sqlnet.ora 使用 TCP.VALIDNODE_CHECKING 与 TCP.EXCLUDED_NODES/TCP.INVITED_NODES 白名单化来源 IP;在 Ubuntu 防火墙 层再次限制来源网段。
- 端口最小化:仅开放 1521/TCP(或自定义端口),变更默认端口并同步更新防火墙与应用配置。
四 运维与持续合规
- 自动化与一致性:使用 Ansible/Shell 编排用户、权限、PROFILE、监听与防火墙配置,保证多环境一致性。
- 基线核查与巡检:建立安全基线(口令策略、权限矩阵、审计开关、加密状态、补丁级别、开放端口),形成 周/月度 巡检报告。
- 日志与告警:集中收集 alert.log、listener.log、OS 安全日志,对异常登录、权限变更、失败登录激增等设定阈值告警。
- 备份与演练:定期执行 全备+增量、异机/异地恢复演练与校验,验证备份可用性与完整性。
五 快速检查清单
| 领域 |
关键动作 |
验证方式 |
| 系统更新 |
安装最新的 Ubuntu 与 Oracle 补丁 |
apt list --upgradable;opatch lsinventory |
| 口令与锁定 |
启用复杂口令、失败锁定、定期更换 |
查询 DBA_PROFILES;尝试错误口令验证锁定 |
| 最小权限 |
撤销 PUBLIC 不必要权限,按业务授权 |
查询 DBA_SYS_PRIVS/DBA_TAB_PRIVS |
| 审计 |
启用登录/权限/敏感对象审计 |
查询 DBA_AUDIT_TRAIL;查看 alert.log |
| 加密通信 |
配置 TCPS/SSL 监听与客户端 |
tnsping 使用 SSL;sqlnet.ora 配置生效 |
| 防火墙 |
仅放行 22/1521(或自定义端口) |
ufw status;ss -lntp |
| 备份恢复 |
RMAN 全备+增量与恢复演练 |
RMAN validate;恢复演练记录 |
以上措施覆盖 系统层—数据库层—网络层—运维合规 的全链路安全控制,可显著提升 Ubuntu 上 Oracle 数据库的机密性、完整性与可用性。