温馨提示×

如何利用Linux提升Oracle数据库安全性

小樊
42
2025-12-20 12:01:25
栏目: 云计算

Linux层面加固

  • 强化身份与账号治理:仅创建用于安装与运维的oracle操作系统账号,加入oinstall、dba组;清理不必要的系统账号与测试账号;通过sudo精细化授权,仅允许特定命令(如启停监听、备份脚本)以提升权限,避免直接赋予root。
  • 最小权限与文件保护:对**$ORACLE_HOME/bin**等关键目录设置严格的属主与权限,仅允许oracle用户与必要的管理员访问;限制SUID/SGID与可写可执行位,防止提权与篡改。
  • 服务与端口治理:仅开启数据库必需的服务与端口,禁用或移除不需要的包与后台服务;将监听端口从1521调整为非默认端口,降低暴露面。
  • 防火墙与网络隔离:启用firewalld/iptables,仅放行应用服务器与堡垒机网段对数据库端口的访问;与数据库无关的主机与端口一律阻断。
  • 日志与完整性:集中采集与保护系统审计日志(如auditd)、登录日志与数据库告警日志;对关键目录启用完整性监控(如AIDE),及时发现篡改。

Oracle数据库加固

  • 关闭远程操作系统认证:将REMOTE_OS_AUTHENT = FALSE,避免以操作系统身份直接登录数据库。
  • 限制SYSDBA远程登录:将REMOTE_LOGIN_PASSWORDFILE = NONE(不使用口令文件),或在确有需求时改为EXCLUSIVE并严格管控口令文件权限与备份。
  • 数据字典保护:设置O7_DICTIONARY_ACCESSIBILITY = FALSE,防止普通用户通过数据字典基表直接访问敏感元数据。
  • 口令策略与锁定:在profile中配置PASSWORD_LIFE_TIME ≤ 90天FAILED_LOGIN_ATTEMPTS(如5次)、PASSWORD_LOCK_TIME(如1小时)、PASSWORD_REUSE_MAX/PASSWORD_REUSE_TIME与复杂度校验函数,强制定期更换与复杂度合规。
  • 监听器安全:为LISTENER设置强密码并保存配置;必要时限制管理操作来源;仅开放必要协议与端口。
  • 网络访问控制:在sqlnet.ora启用tcp.validnode_checking = yes,通过tcp.invited_nodes(白名单)或tcp.excluded_nodes(黑名单)限制可连IP;在listener.ora中可叠加使用以实现更细粒度控制。
  • 传输加密:在sqlnet.ora启用SQLNET.ENCRYPTION = required(或更高强度),确保客户端/中间件与数据库之间的网络传输加密。
  • 空闲连接治理:设置SQLNET.EXPIRE_TIME = 10(单位:分钟),自动断开长时间空闲会话,降低会话劫持与资源占用风险。
  • 连接数控制:结合硬件与业务评估设置processes(如200),防止连接风暴与资源枯竭。
  • 审计策略:启用audit_trail = DB(或OS),对登录、关键DDL/DML、权限变更与敏感表访问进行审计,并定期归档与分析审计数据。

网络与监听加固

  • 端口与协议最小化:修改默认监听端口1521为非默认值,仅启用必要协议(如TCP);禁用不需要的外部程序入口。
  • 关闭危险/非必要组件:如无外部调用需求,关闭Extproc;如不使用XML DB HTTP服务,关闭XDB服务以降低攻击面。
  • 来源限制与分段:在操作系统防火墙与数据库侧(sqlnet.ora/listener.ora)双重实施白名单;数据库与业务网段通过VLAN/ACL进行隔离,仅允许跳板机/应用层访问数据库端口。

备份恢复与补丁管理

  • 备份与恢复:建立覆盖RMAN物理备份Data Pump逻辑备份的定期策略,保留多份副本并异地/离线存放;定期演练恢复流程,验证备份可用性与RPO/RTO。
  • 高可用与容灾:部署Data Guard(物理/逻辑)提升可用性与灾难恢复能力,结合业务选择最大性能/最大可用等模式并定期切换演练。
  • 补丁与漏洞治理:及时应用LinuxOracle安全补丁,建立变更评审与回退预案;对已知漏洞进行验证修复,避免带病运行。

快速检查清单

检查项 期望状态/示例
系统账号与sudo 仅保留必要账号;oracle加入oinstall/dba;sudo仅授权必需命令
关键目录权限 $ORACLE_HOME/bin 等仅oracle与必要管理员可访问
防火墙 firewalld/iptables启用,仅放行应用/堡垒机网段到数据库端口
REMOTE_OS_AUTHENT FALSE
REMOTE_LOGIN_PASSWORDFILE NONE(或EXCLUSIVE且严格管控口令文件)
O7_DICTIONARY_ACCESSIBILITY FALSE
口令策略 LIFE_TIME≤90天;FAILED_LOGIN_ATTEMPTS=5;LOCK_TIME=1小时;复杂度校验启用
监听器 设置强密码并保存配置;必要时限制管理来源
访问白名单 sqlnet.ora: tcp.validnode_checking=yes;tcp.invited_nodes=白名单
传输加密 sqlnet.ora: SQLNET.ENCRYPTION=required
空闲超时 sqlnet.ora: SQLNET.EXPIRE_TIME=10
连接数 processes=200(按环境评估)
审计 audit_trail=DB/OS;关键操作审计已开启
监听端口 非默认端口(非1521)
危险组件 Extproc关闭;XDB按需关闭
备份恢复 RMAN与Data Pump定期执行;异地/离线副本;演练通过
补丁 Linux与Oracle安全补丁及时更新

0