如何在centos上配置oracle安全
导读:CentOS 上 Oracle 安全配置清单 一 系统层安全基线 加固操作系统与网络边界 保持 firewalld 开启,仅放行数据库端口(默认 1521/TCP)及必要的管理端口;避免使用“关闭防火墙”的做法。示例:firewall-...
CentOS 上 Oracle 安全配置清单
一 系统层安全基线
- 加固操作系统与网络边界
- 保持 firewalld 开启,仅放行数据库端口(默认 1521/TCP)及必要的管理端口;避免使用“关闭防火墙”的做法。示例:
firewall-cmd --add-port=1521/tcp --permanent & & firewall-cmd --reload。 - 将 SELinux 设为 enforcing,仅对 Oracle 相关路径做最小范围的布尔或类型放宽(如
setsebool -P oracle_can_network 1),避免直接SELINUX=disabled。
- 保持 firewalld 开启,仅放行数据库端口(默认 1521/TCP)及必要的管理端口;避免使用“关闭防火墙”的做法。示例:
- 运行账户与权限隔离
- 创建专用账户与组:
groupadd oinstall、groupadd dba、useradd -g oinstall -G dba oracle,并为 oracle 设置强口令。 - 限制 DBA 组 的操作系统账户数量,仅保留必要的 DBA 账户,减少高权限 OS 入口。
- 创建专用账户与组:
- 资源与内核参数
- 在
/etc/security/limits.conf为 oracle 设置:nproc 2047/16384、nofile 1024/65536、stack 10240;在/etc/pam.d/login加入session required pam_limits.so;在/etc/profile为 oracle 用户设置ulimit -u 16384 -n 65536。 - 在
/etc/sysctl.conf设置关键内核参数(示例值,按内存与负载调优):fs.file-max = 6815744、fs.aio-max-nr = 1048576kernel.shmall = 2097152、kernel.shmmax = 2147483648、kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144、net.core.rmem_max = 4194304net.core.wmem_default = 262144、net.core.wmem_max = 1048576
执行sysctl -p使配置生效。
- 在
二 数据库层安全配置
- 账户与权限最小化
- 遵循 最小权限原则:仅授予完成职责所需的系统/对象权限;优先通过自定义角色分配权限,谨慎授予含 ANY 的系统权限(如
CREATE ANY TABLE、DROP ANY TABLE);减少可直连 SYS 的人员数量。 - 使用 Secure Application Role(安全应用角色)将角色启用与业务条件绑定(如来源 IP、时间窗、应用上下文),避免通过直接赋权滥用高权限角色。
- 在 CDB/PDB 场景中区分常规与本地权限/角色,按需授予,避免跨容器过度授权。
- 遵循 最小权限原则:仅授予完成职责所需的系统/对象权限;优先通过自定义角色分配权限,谨慎授予含 ANY 的系统权限(如
- 口令与账户策略
- 启用口令复杂度校验(如
verify_function或自定义口令校验包),并设置合理策略:PASSWORD_LIFE_TIME = 90、FAILED_LOGIN_ATTEMPTS = 5、PASSWORD_LOCK_TIME = 1/24(锁定 1 小时)、PASSWORD_REUSE_TIME = 0、PASSWORD_GRACE_TIME = 10。
- 启用口令复杂度校验(如
- 数据字典与元数据保护
- 设置
O7_DICTIONARY_ACCESSIBILITY = FALSE,禁止非 SYSDBA 直接访问数据字典基表,降低信息泄露与提权风险。
- 设置
- 网络访问控制
- 在
$ORACLE_HOME/network/admin/sqlnet.ora启用白名单:tcp.validnode_checking = yestcp.invited_nodes = (192.168.1.0, 192.168.1.1)(按需替换为可信网段/主机)
- 在
- 传输加密
- 启用 SQL*Net 加密(需要 Oracle Advanced Security 选项或等效配置):
sqlnet.encryption = required,防止明文传输。
- 启用 SQL*Net 加密(需要 Oracle Advanced Security 选项或等效配置):
- 会话与资源控制
- 根据硬件与业务设置合理上限:
processes = 200(示例),并配合sessions、transactions等参数避免资源被滥用。
- 根据硬件与业务设置合理上限:
三 审计与监控
- 启用数据库审计
- 开启审计并落库或落 OS:
ALTER SYSTEM SET audit_trail='DB,EXTENDED' SCOPE=SPFILE;(或'OS,EXTENDED'),重启后生效;按需审计关键对象与关键操作(如CREATE USER、DROP TABLE、ALTER SYSTEM)。
- 开启审计并落库或落 OS:
- 持续权限审视
- 使用 Privilege Analysis(权限分析)识别过度授权与未使用权限,基于策略收集使用数据并生成报告,定期回收不必要权限。
- 日志与告警
- 集中收集并长期保存审计日志与监听日志(如
listener.log、alert.log),结合 SIEM 或日志平台进行异常检测与告警。
- 集中收集并长期保存审计日志与监听日志(如
四 快速检查清单与常用命令
- 系统与服务
- 防火墙:
firewall-cmd --list-ports | grep 1521(确保仅放行必要端口) - SELinux:
getenforce(应为 Enforcing) - 资源限制:
ulimit -u、ulimit -n(oracle 会话下应达到 limits.conf 配置) - 内核参数:
sysctl -p生效后检查关键项(如fs.file-max、kernel.sem)
- 防火墙:
- Oracle 关键配置
- 白名单:
grep -E "tcp.validnode_checking|tcp.invited_nodes" $ORACLE_HOME/network/admin/sqlnet.ora - 传输加密:
grep "sqlnet.encryption" $ORACLE_HOME/network/admin/sqlnet.ora - 审计:
SHOW PARAMETER AUDIT_TRAIL - 数据字典保护:
SHOW PARAMETER O7_DICTIONARY_ACCESSIBILITY - 口令与锁定策略:查询
DBA_PROFILES中PASSWORD_VERIFY_FUNCTION、FAILED_LOGIN_ATTEMPTS、PASSWORD_LOCK_TIME等
- 白名单:
- 权限与角色
- 过度授权排查:查询含 ANY 的系统权限、授予给
PUBLIC的对象权限 - 安全应用角色:检查通过 PL/SQL 包控制角色启用的实现与调用链
- 过度授权排查:查询含 ANY 的系统权限、授予给
五 安全加固注意事项
- 避免在生产环境直接关闭 firewalld/SELinux;如必须临时关闭,应限定时间窗并完成替代加固后再恢复。
- 谨慎授予 DBA 角色与含 ANY 的系统权限;优先通过自定义角色与职责分离实现最小权限。
- 白名单与传输加密应同时启用;白名单变更需纳入变更管理流程,避免误封合法来源。
- 审计策略需评估性能影响,先小范围试点再全量启用,并建立日志保留与保护机制。
- 定期执行补丁与漏洞修复(OS 与 Oracle),并保留变更记录与回退方案。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在centos上配置oracle安全
本文地址: https://pptw.com/jishu/750332.html
