Ubuntu上Oracle数据库安全管理要点
一 系统层安全加固
sudo gpasswd -a alice dba 将管理员加入dba组;groups oracle 可核对组成员关系。二 数据库账户与权限治理
ALTER USER xxx ACCOUNT LOCK; 或 DROP USER xxx CASCADE;),避免共享账号与默认口令。GRANT SELECT, INSERT, UPDATE ON schema.tbl TO app;),必要时使用 WITH GRANT OPTION 控制可转授权限;回收用 REVOKE 及时清理过度授权。FAILED_LOGIN_ATTEMPTS、PASSWORD_LOCK_TIME),并合理设置口令生命周期,降低暴力破解与口令复用风险。三 网络与监听器安全
tcp.validnode_checking = yestcp.invited_nodes = (10.0.1.0/24,192.168.10.0/24)
修改后重启监听:lsnrctl stop → lsnrctl start。lsnrctl change_password 设置监听管理口令并 save_config 持久化,防止未授权关停或重配置。SQLNET.AUTHENTICATION_SERVICES=NONE,并在参数文件将 REMOTE_LOGIN_PASSWORDFILE=NONE,减少远程高权限登录面。四 审计与合规
ALTER SYSTEM SET audit_sys_operations=TRUE SCOPE=SPFILE;ALTER SYSTEM SET audit_trail=DB,EXTENDED SCOPE=SPFILE;AUDIT SESSION; AUDIT TABLE; 等;SELECT ANY TABLE、CREATE ANY PROCEDURE 等开启审计;SELECT/INSERT/UPDATE/DELETE/DROP 按主体审计;BY ACCESS(每次操作记录)或 BY SESSION(会话内同类操作合并),并可结合 WHENEVER SUCCESSFUL/NOT SUCCESSFUL 精细化记录。五 快速检查清单
| 检查项 | 期望状态/做法 |
|---|---|
| 系统账户与组 | oracle运行账户仅加入必要组(如dba),sudo受控;禁止root直连数据库 |
| 文件权限 | $ORACLE_HOME/bin 为711;数据文件为0600;仅oracle属主可写 |
| 防火墙 | 仅放通1521/TCP与必要管理网段,默认拒绝 |
| 监听器 | 启用白名单(sqlnet.ora);设置监听口令;变更后重启 |
| 登录安全 | 失败登录限制(FAILED_LOGIN_ATTEMPTS);定期改密;禁用共享/默认账号 |
| 权限模型 | 最小权限与角色分离;按需授予与回收;避免PUBLIC过度授权 |
| 审计 | audit_sys_operations=TRUE;audit_trail=DB,EXTENDED;关键语句/权限/对象审计已启用 |
| 连接治理 | SQLNET.EXPIRE_TIME=10 清理空闲会话;监控异常会话与失败登录 |
以上措施在Ubuntu上同样适用,关键在于“系统层最小暴露 + 数据库层最小权限 + 网络层白名单 + 全链路审计留痕”。