centos上oracle安全设置步骤
小樊
43
2025-12-23 09:04:57
CentOS 上 Oracle 安全设置步骤
一 系统加固
- 保持系统与安全补丁为最新:执行 yum update -y 并定期重启;仅启用必要的服务,减少攻击面。
- 配置防火墙放行必要流量:建议保持 firewalld 开启,仅开放 SSH(22/TCP) 与 Oracle 监听端口(默认 1521/TCP)。示例:firewall-cmd --permanent --add-service=ssh;firewall-cmd --permanent --add-port=1521/tcp;firewall-cmd --reload。
- 强化 SSH 访问:禁用 root 远程登录、改用 SSH 密钥、可更改默认端口;仅允许堡垒机或跳板机访问数据库服务器。
- 登录安全基线:设置 TMOUT=600(10 分钟无操作自动退出);配置 PAM 失败锁定(如 deny=3)与复杂度校验(pam_pwquality)。
- 文件与目录权限:敏感配置文件权限不高于 640;可执行文件不高于 755;日志文件除 root 与审计账户外不可读写。
- 账户与权限分离:仅保留 root 为 UID 0;sudoers 中避免授予 ALL=(ALL) ALL;按职责划分 系统管理员/审计管理员/安全管理员 等角色。
二 Oracle 基础安全配置
- 运行账户与权限最小化:使用专用 oracle 操作系统账户,仅加入必要组(如 oinstall、dba);禁止共享 OS 账户;限制 DBA 组 人数,仅保留必要的安装/维护账户。
- 口令复杂度与策略:以 SYS 执行 @?/rdbms/admin/utlpwdmg.sql 生成校验函数;在 DEFAULT 或自定义 PROFILE 中设置:
- FAILED_LOGIN_ATTEMPTS=5;PASSWORD_LOCK_TIME=1/24(锁定 1 小时);PASSWORD_LIFE_TIME=90 天;
- PASSWORD_REUSE_TIME=UNLIMITED;PASSWORD_REUSE_MAX=UNLIMITED;
- PASSWORD_VERIFY_FUNCTION=verify_function(或自定义函数)。
- 数据字典保护:设置 O7_DICTIONARY_ACCESSIBILITY=FALSE,禁止非 SYSDBA 直接访问数据字典基表。
- 远程登录口令文件:如无 Data Guard/高级复制 需求,建议 REMOTE_LOGIN_PASSWORDFILE=NONE 并重启实例,降低共享口令文件带来的风险。
- 监听与网络访问控制:在 $ORACLE_HOME/network/admin/sqlnet.ora 中启用白名单:
- tcp.validnode_checking=yes;tcp.invited_nodes=(192.168.1.0/24, 10.0.0.10);执行 lsnrctl reload 使配置生效。
- 空闲连接检测:在 sqlnet.ora 中设置 SQLNET.EXPIRE_TIME=15(单位:分钟),自动断开长时间空闲会话。
- 传输加密:在 sqlnet.ora 中启用 SQLNET.ENCRYPTION=REQUIRED(需客户端支持),对客户端/中间件与数据库之间的通信进行加密。
- 资源与连接控制:根据硬件与业务设置 processes(如 200)、sessions、open_cursors 等,避免资源被滥用。
三 审计与监控
- 开启数据库审计:设置 AUDIT_TRAIL=DB(或 OS),审计登录/关键操作;定期导出与归档审计数据,防止被循环覆盖。
- 登录审计示例:创建登录审计表与触发器,记录 SESSION_USER 与登录时间,便于追踪。
- 权限使用分析:使用 Privilege Analysis 识别过度授权与未使用权限,基于策略生成结果并据此收敛权限。
- 安全审计基线:审计 SYS/SYSTEM 操作、对象权限变更、DDL、管理员登录与权限授予/回收等关键事件。
四 权限最小化与角色管理
- 坚持最小权限原则:仅授予完成工作所需的最小 系统权限 与 对象权限;减少 SYS 直连人数;定期审计并回收不必要权限。
- 角色化授权:按岗位创建自定义角色(如 APP_READONLY、APP_WRITE),将所需权限打包授予角色,再授予用户;避免直接授予 CONNECT 等宽泛角色(新版仅含 CREATE SESSION)。
- 安全应用角色:通过 IDENTIFIED USING 将角色与 PL/SQL 包 绑定,在登录或业务入口按 IP、时间、应用上下文等条件动态启用角色,避免在代码中硬编码口令。
- 多租户环境(如 19c CDB/PDB):区分 常规用户(C##) 与 本地用户,在 CDB$ROOT/CONTAINER=ALL 或指定 PDB 内授予权限,遵循最小权限与职责分离。
五 合规与维护
- 等保 2.0 参考要点:身份鉴别(复杂度、有效期、失败锁定、会话超时)、访问控制(账户与权限分离、最小权限、默认账户处理)、网络与通信安全(仅堡垒机/SSH、传输加密)、日志与审计(登录与关键操作审计、审计数据保护)。
- 持续维护:定期更新 Linux 与 Oracle 补丁;复核 PROFILE/角色/权限;验证 firewalld 与 sqlnet.ora 白名单;定期演练审计数据归档与审计查询。