Ubuntu 上 Oracle 数据库安全管理清单
以下清单覆盖 Ubuntu 主机、Oracle 监听与网络、数据库账户与权限、补丁与备份四个层面,可直接对照实施。
一 系统与账户安全基线
- 保持系统与软件为最新:执行 sudo apt update && sudo apt upgrade,及时修补漏洞;仅启用必要的服务与端口,降低攻击面。
- 强化登录安全:安装并配置 libpam-pwquality,设置复杂度与长度(如 minlen=12、minclass=3),并在 /etc/security/pwquality.conf 与 PAM 中启用;禁用 root 远程登录,使用 SSH 密钥替代口令,必要时更改默认端口。
- 最小化权限与 sudo:仅授予 DBA 必要的 sudo 权限,使用 visudo 编辑,禁止直接修改 /etc/sudoers 权限为 777 等不安全做法。
- 防火墙与端口:启用 UFW,仅放行 SSH 与数据库所需端口(如 1521/TCP),默认拒绝其他入站。
- 主机加固与零停机补丁:在支持的 Ubuntu 内核上使用 Oracle Ksplice 进行零停机内核与安全更新,缩短暴露窗口。
- 审计与监控:集中收集与审计系统日志(如 /var/log/syslog),对关键操作与登录进行告警与留存。
二 Oracle 监听与网络安全
- 监听访问控制:通过 lsnrctl 配置监听的 ADMIN_RESTRICTIONS 与口令,限制远程对监听器的管理操作;仅在内网开放 1521/TCP,对外网隔离或经跳板访问。
- 精细权限控制:对 lsnrctl 等管理工具采用最小权限策略,例如使用 sudoers 精确授权、设置 ACL、或以 AppArmor/SELinux 限制可执行范围与系统调用。
- 远程 DBA 风险控制:避免远程 SYSDBA/OSDBA 直连,必要时通过 orapwd 设置强口令并限制来源;对敏感操作启用审计。
- 加密传输:启用 SQL*Net 加密(SQLNET.ENCRYPTION_SERVER/CLIENT) 与完整性校验,防止口令与数据在网络中被窃听或篡改。
三 数据库账户与权限治理
- 账户与口令:安装后立即修改 SYS/SYSTEM 等默认账户口令,设置复杂度与定期轮换策略;禁用或删除默认演示账户。
- 最小权限与角色:以 最小权限 原则分配权限,优先使用自定义角色聚合权限并定期审计回收;避免滥用 DBA 角色。
- 表空间与配额:按业务创建多 表空间,为用户授予必要的 配额(QUOTA) 与默认表空间,隔离与管控数据增长与 I/O。
- 网络与登录安全:限制 远程 SYSDBA,对管理通道设置强认证与来源白名单;对应用账户采用专用账户与受限权限。
四 补丁、备份恢复与审计
- 补丁策略:操作系统层面优先使用 Ksplice 实现零停机安全更新;数据库层面按 Oracle 关键补丁更新(CPU) 周期及时升级并回归测试。
- 备份与验证:制定并演练 RMAN 全量/增量备份与归档策略,定期执行 恢复演练 验证可用性与完整性;保留多份异地/离线副本。
- 审计与告警:启用 Oracle 审计(如登录、权限变更、敏感数据访问),结合系统日志与 SIEM 进行关联告警与取证;对 alert.log 与监听日志进行例行巡检。
五 快速实施命令示例
- 系统与登录加固
- 更新与加固:sudo apt update && sudo apt upgrade -y
- 密码策略:sudo apt install -y libpam-pwquality
编辑 /etc/security/pwquality.conf:minlen=12;minclass=3
在 /etc/pam.d/common-password 加入:password requisite pam_pwquality.so retry=3
- SSH:禁用 root 登录(/etc/ssh/sshd_config:PermitRootLogin no),启用密钥登录,必要时 Port 改非默认
- 防火墙:sudo ufw enable;sudo ufw allow OpenSSH;sudo ufw allow 1521/tcp
- Oracle 监听与权限
- 设置监听口令与限制:lsnrctl
LSNRCTL> set current_listener LISTENER
LSNRCTL> change_password
LSNRCTL> set password
LSNRCTL> save_config
LSNRCTL> set admin_restrictions on
LSNRCTL> status
- 精细控制 lsnrctl 执行权限(示例仅授权 oracle 用户):sudo visudo
oracle ALL=(ALL) NOPASSWD: /u01/app/oracle/product/**/bin/lsnrctl
- 数据库账户与表空间
- 修改默认口令:sqlplus / as sysdba
alter user sys identified by !;
alter user system identified by #;
- 创建表空间与用户并授权:
CREATE TABLESPACE app_data DATAFILE ‘/u01/app/oracle/oradata/ORCL/app01.dbf’ SIZE 100M AUTOEXTEND ON NEXT 50M;
CREATE USER app_user IDENTIFIED BY $ DEFAULT TABLESPACE app_data QUOTA UNLIMITED ON app_data;
GRANT CONNECT, RESOURCE TO app_user;
- 备份与恢复演练
- RMAN 示例:rman target /
BACKUP DATABASE PLUS ARCHIVELOG;
BACKUP VALIDATE DATABASE;
(定期在测试环境执行恢复演练,验证备份有效性)
安全提示:生产环境变更前请在测试环境验证,变更窗口内保留回退方案,关键操作双人复核并记录审计日志。