Ubuntu 上 Oracle 安全配置清单
一 系统层安全加固
- 保持系统与安全补丁为最新:执行 sudo apt update && sudo apt upgrade,减少已知漏洞利用面。
- 强密码策略:安装 libpam-pwquality,在 /etc/security/pwquality.conf 设置如 minlen=12、minclass=3,并在 PAM 中启用 pam_pwquality.so retry=3,强制复杂度与重试次数。
- 最小化服务与端口:用 systemctl list-units --type=service --state=running 梳理运行服务,禁用不需要的服务,降低攻击面。
- 主机防火墙:启用 UFW,仅放行必要流量(如 OpenSSH 与数据库监听端口),示例:
- sudo ufw enable
- sudo ufw allow OpenSSH
- sudo ufw allow <db_port>/tcp
- SSH 安全:更改默认端口、禁用 root 登录、使用 SSH 密钥 替代口令,仅允许受控来源 IP 访问。
- 日志与审计:持续关注 /var/log/syslog 等系统日志,及时发现异常登录与暴力尝试。
二 Oracle 运行账户与文件权限
- 专用账户与组:创建 oracle 用户与 oinstall、dba 组,遵循最小权限原则;软件与数据目录由 oracle:oinstall 拥有,权限 775。
- 资源与内核参数:在 /etc/security/limits.conf 为 oracle 设置 nofile、nproc、stack 等上限;在 /etc/sysctl.d/60-oracle.conf 配置 fs.file-max、kernel.sem、kernel.shmmax、net.core.rmem_default/wmem_default、fs.aio-max-nr 等内核参数,并执行 sysctl -p 使生效。
- 目录与安装:规划 ORACLE_BASE、ORACLE_HOME(如 /u01/app/oracle),安装与数据分离,严格控制目录属主与权限,避免其他系统账户访问 Oracle 家目录与工具链。
三 数据库层安全配置
- 账户与权限最小化:避免使用 DBA 作为日常账号;按业务授予 CONNECT、RESOURCE 等必要权限,按需细化到表/视图/存储过程;谨慎使用 PUBLIC 授权。
- 口令与账户策略:启用口令复杂度与有效期(通过 Profile 设置如 FAILED_LOGIN_ATTEMPTS、PASSWORD_LOCK_TIME、PASSWORD_LIFE_TIME),对高权限账户设置不同复杂度与轮换周期。
- 监听器安全:限制 lsnrctl 的可执行与运维权限,仅允许 oracle 组执行;必要时通过 sudoers 精细化授权,避免其他用户直接控制监听。
- 网络访问控制:数据库监听仅绑定内网或受控网段;在云环境同步收紧 安全组/防火墙 规则,仅开放必要来源 IP 与端口。
四 备份恢复与持续运维
- 备份策略:制定包含 RMAN 全备/增量与归档日志的备份方案,定期做 恢复演练 验证可用性与完整性。
- 日志与告警:定期检查 alert.log 与系统日志,对失败登录、权限变更、监听异常等设定监控与告警。
- 自动启动与自检:在 /etc/oratab 正确标记实例自启,配置 systemd 服务单元确保节点重启后数据库与监听按序拉起,并做启动自检。
五 云上实例 Oracle Cloud 的额外要点
- 安全组与系统防火墙需同时放行:在 VNIC 子网 → 安全组 仅放行业务所需端口(如 22/1521/8080),避免放行 0.0.0.0/0 所有端口;在 Ubuntu 上使用 UFW 或 iptables 仅开放必要端口。
- 持久化防火墙规则:使用 iptables-persistent 保存与恢复规则,避免重启后丢失:
- sudo apt-get install iptables-persistent -y
- sudo netfilter-persistent save
- sudo netfilter-persistent reload
- 不建议直接关闭防火墙或安全组,优先采用“最小暴露面”的白名单策略。