CentOS Oracle安全策略如何实施
小樊
33
2025-12-27 06:12:27
CentOS 上 Oracle 安全策略实施清单
一 基线加固与系统层安全
- 身份与账户
- 创建专用账户与组:groupadd oinstall;groupadd dba;useradd -m -g oinstall -G dba oracle;设置强口令。
- 清理或禁用不必要的系统账户,避免共享账户,实行最小权限与职责分离。
- 文件与目录
- 安装目录(如 /u01/app/oracle)与数据目录(如 /u01/app/oracle/oradata)归属 oracle:oinstall,权限建议 775;监听器配置目录(如 $ORACLE_HOME/network/admin)限制为 oracle 访问(如 775)。
- 如启用 SELinux,为 Oracle 目录设置正确上下文(可参考 Oracle 官方文档或使用同类目录做上下文参考)。
- 内核与资源限制
- 在 /etc/sysctl.conf 设置关键参数并生效(sysctl -p):
- fs.file-max = 6815744
- kernel.sem = 250 32000 100 128
- net.ipv4.ip_local_port_range = 9000 65500
- net.core.rmem_default/wmem_default = 262144;rmem_max/wmem_max = 4194304/1048576
- fs.aio-max-nr = 1048576
- kernel.shmall = 2097152;kernel.shmmax = 1073741824;kernel.shmmni = 4096
- 在 /etc/security/limits.conf 配置 Oracle 用户资源:
- oracle soft nproc 2047;oracle hard nproc 16384
- oracle soft nofile 1024;oracle hard nofile 65536
- oracle soft stack 10240
- 服务与防火墙
- 仅开放必要端口(如 Oracle 监听 1521、OEM 1158):firewall-cmd --permanent --add-port=1521/tcp;firewall-cmd --permanent --add-port=1158/tcp;firewall-cmd --reload。
- 关闭不必要服务(如 FTP/Telnet),减少攻击面。
二 数据库层身份鉴别与访问控制
- 密码策略与复杂度
- 运行 @?/rdbms/admin/utlpwdmg.sql 生成密码校验函数,在 DEFAULT profile 启用复杂度校验。
- 设置密码策略示例:
- ALTER PROFILE DEFAULT LIMIT
- PASSWORD_LIFE_TIME 90
- FAILED_LOGIN_ATTEMPTS 5
- PASSWORD_LOCK_TIME 1/24
- PASSWORD_GRACE_TIME 10
- PASSWORD_VERIFY_FUNCTION verify_function;
- 权限最小化与账户治理
- 避免使用 SYSDBA 执行日常操作;限制 DBA 组成员数量,仅保留必要的 DBA 账户。
- 重命名或禁用默认/过期账户,禁止共享账户。
- 远程登录安全
- 如业务允许,将 REMOTE_LOGIN_PASSWORDFILE 设为 NONE 并重启实例,禁止远程 SYSDBA 口令文件登录(需评估对运维与高可用的影响)。
- 数据字典保护
- 设置 O7_DICTIONARY_ACCESSIBILITY = FALSE,防止非授权用户通过数据字典基表直接访问敏感元数据。
三 网络安全与监听器加固
- 可信网络访问控制
- 在 $ORACLE_HOME/network/admin/sqlnet.ora 启用白名单:
- tcp.validnode_checking = YES
- tcp.invited_nodes = (192.168.1.100, 10.0.0.5)
- 修改后执行 lsnrctl reload 使监听器生效。
- 传输加密
- 在 sqlnet.ora 启用 SSL/TLS 或网络加密(需 Oracle Advanced Security 选项):
- sqlnet.encryption = REQUIRED
- sqlnet.crypto_checksums = REQUIRED
- 空闲连接探测
- 在 sqlnet.ora 设置 SQLNET.EXPIRE_TIME=15(单位:分钟),自动断开长时间空闲会话,降低会话劫持风险。
- 监听器安全
- 提升日志级别便于审计:lsnrctl set log_level 10;限制监听器文件权限(如 640),仅 oracle 用户可写。
四 审计监控与补丁备份
- 审计策略
- 启用数据库审计:ALTER SYSTEM SET audit_trail=‘DB’ SCOPE=SPFILE; 开启 audit_sys_operations=TRUE;重启实例。
- 按需审计敏感操作:AUDIT SELECT TABLE BY ACCESS; 定期审查 DBA_AUDIT_TRAIL 等视图。
- 登录审计与追踪
- 可创建登录触发器记录登录时间、用户等,用于合规与取证(示例脚本见参考实践)。
- 补丁与更新
- 定期应用 Oracle PSU/CPU 与 CentOS 安全更新,及时修复已知漏洞。
- 备份与恢复
- 建立 RMAN 全备+增量备策略,定期做恢复演练,验证备份可用性与 RPO/RTO 达标。
- 监控与响应
- 监控 CPU/内存/磁盘 I/O、告警日志与 alert.log,制定应急预案(入侵处置、数据恢复流程)。
五 合规落地与实施顺序
- 合规参考
- 面向等保 2.0(三级) 要求,建议:口令有效期不超过 90 天、复杂度校验、登录失败锁定与超时退出、仅 SSH 远程管理、关闭 Telnet、权限分离(系统/审计/安全管理员)、防火墙开启并最小化放通、日志与审计留存与保护。
- 实施顺序与回退
- 准备:评估业务影响、梳理白名单与账户、备份配置与数据库、搭建测试环境。
- 加固:系统基线 → 网络与监听器 → 数据库身份与权限 → 审计与加密 → 监控与备份。
- 验证:连通性与性能回归、白名单与加密有效性、审计记录完整性、备份恢复演练。
- 回退:关键变更(如 REMOTE_LOGIN_PASSWORDFILE、sqlnet.ora 白名单、audit_trail)务必准备回退脚本与窗口期,变更失败可快速恢复。