CentOS 上 Oracle 数据库安全管理实践
一 系统加固与网络边界
- 最小化暴露面与端口收敛:仅开放数据库端口(默认 1521/TCP),禁用不必要的服务与端口;将数据库置于独立的 VLAN/安全域,与办公网、管理网隔离。
- 主机防火墙策略:使用 firewalld/iptables 仅允许应用服务器与堡垒机网段访问 1521,并限制管理口(如 22/3389)来源;变更前后留存规则快照与回滚方案。
- 监听与连接加固:
- 在 $ORACLE_HOME/network/admin/sqlnet.ora 启用白名单与空闲探测:
- tcp.validnode_checking=yes
- tcp.invited_nodes=(应用网段/堡垒机IP)
- SQLNET.EXPIRE_TIME=15(单位:分钟,检测半开连接)
修改后执行:lsnrctl reload。
- 如需进一步限制 OS 层访问,可配合 /etc/hosts.allow|deny 控制 SSH 来源(注意:该机制不影响 Oracle Net 直连)。
- 监听口令与本地 OS 认证:在 listener.ora 中将 LOCAL_OS_AUTHENTICATION_LISTENER=OFF,并使用 lsnrctl 设置监听密码,防止未授权停止监听。
- 远程特权登录策略:仅在确需远程 DBA 应急时启用 remote_login_passwordfile,并优先采用 EXCLUSIVE 配合强口令与专用管理网;日常以本地 OS 认证或堡垒机跳板为主。
二 身份与权限治理
- 原则先行:坚持 最小权限原则 与 职责分离,仅授予完成工作所需的最小系统/对象权限;减少可直连 SYS 的人员数量。
- 角色化授权:按业务职责自定义角色,避免直接授予 CONNECT/RESOURCE 等宽泛角色;Oracle 已将 CONNECT 收缩为仅 CREATE SESSION,避免误用。
- 清理 PUBLIC:定期审计并撤销 PUBLIC 的不必要权限/角色(如 Java 对象默认授权),降低“横向提权”面。
- 安全应用角色:通过 CREATE ROLE … IDENTIFIED USING <包名> 实现“条件化启用角色”,在包内以 AUTHID CURRENT_USER 编写策略(如校验源 IP、时间窗、应用上下文),避免在代码中硬编码口令。
- 典型授权范式:
- 创建角色与授权:CREATE ROLE app_ro; GRANT SELECT ON hr.emp TO app_ro;
- 授予用户:GRANT app_ro TO alice;
- 回收过度授权:REVOKE CREATE ANY TABLE FROM PUBLIC; REVOKE UNLIMITED TABLESPACE FROM app_user;
三 口令与登录安全
- 密码复杂度与生命周期:执行 @?/rdbms/admin/utlpwdmg.sql 生成 VERIFY_FUNCTION_11G,并在 DEFAULT Profile 中设置:
- FAILED_LOGIN_ATTEMPTS=6、PASSWORD_LIFE_TIME=90、PASSWORD_REUSE_MAX=5、PASSWORD_LOCK_TIME=1、PASSWORD_GRACE_TIME=7
- 可按需创建专属 Profile 并绑定到高风险账号。
- 登录审计与告警基线:建立登录审计表与触发器,留存 SESSION_USER、CREATE_TIME,用于异常登录排查与取证(生产环境建议结合统一审计/审计仓库)。
- 空闲超时与半开连接治理:启用 SQLNET.EXPIRE_TIME=15 检测死连接;对外网/不可信网络建议缩短应用侧连接超时。
- 远程 SYSDBA 管控:优先本地 OS 认证或堡垒机跳板;若必须远程,启用 remote_login_passwordfile=EXCLUSIVE 并严格限制来源与账号。
四 审计与合规
- 标准审计起步:
- 将 audit_trail 设为 DB,EXTENDED(静态参数需重启),开启 audit_sys_operations=TRUE 记录 SYS/SYSDBA 关键操作;审计文件默认位于 audit_file_dest 指定目录。
- 授予审计管理账号只读访问审计表的权限(如 AUDIT SYSTEM),用于集中采集与脱敏归档。
- 统一审计(12c 及以上):
- 检查:SELECT VALUE FROM V$OPTION WHERE PARAMETER=‘Unified Auditing’;
- 启用(需重启):STARTUP UPGRADE → ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE; → STARTUP
- 创建策略并验证:CREATE AUDIT POLICY hr_emp_select ACTIONS SELECT ON hr.employees; AUDIT POLICY hr_emp_select; 查询 DBA_AUDIT_TRAIL。
- 审计仓库与告警:对多库/多环境,部署 Oracle Audit Vault & Database Firewall,集中管理 SQL 语句/对象/权限/细粒度审计 策略,配置 告警 与 保留策略,实现合规与持续监控。
五 备份恢复与变更管控
- 备份策略:建立覆盖 全库/归档日志/控制文件/参数文件 的定期备份(如 RMAN 每周全备 + 每日归档备份),保留周期与恢复点目标(RPO)对齐;定期异机/异地演练恢复。
- 安全基线:
- 加固 $ORACLE_HOME/bin 与 listener.ora/sqlnet.ora 文件权限(仅 oracle:oinstall 可写);
- 限制 TNS_ADMIN 与 ORACLE_HOME 环境变量泄漏;
- 启用 OS 审计 记录关键文件变更与 root/oracle 登录;
- 定期核查 DBA_USERS/DBA_SYS_PRIVS/DBA_ROLE_PRIVS/DBA_TAB_PRIVS,清理过期账号与异常授权。
- 变更与应急:所有账号、权限、监听、防火墙、审计策略变更走 变更单+双人复核+回滚预案;保留 SQL 脚本与工单 关联证据,便于内外部审计。