Ubuntu上Oracle数据库如何进行安全管理
导读:Ubuntu上Oracle数据库安全管理要点 一 系统层安全加固 以专用的oracle系统用户运行实例,将其加入dba组;仅允许受控管理员通过sudo执行管理命令,避免直接使用root操作数据库软件与数据文件。示例:sudo gpassw...
Ubuntu上Oracle数据库安全管理要点
一 系统层安全加固
- 以专用的oracle系统用户运行实例,将其加入dba组;仅允许受控管理员通过sudo执行管理命令,避免直接使用root操作数据库软件与数据文件。示例:
sudo gpasswd -a alice dba将管理员加入dba组;groups oracle可核对组成员关系。 - 严格管控**$ORACLE_HOME/bin与数据文件权限:可执行程序建议711**,数据库数据文件建议0600,仅oracle属主可读写,杜绝其他用户直接访问。
- 通过UFW/iptables限制数据库端口访问,仅放通应用与跳板机网段,例如仅允许办公网段访问1521/TCP;对管理口与业务口分离,减少攻击面。
二 数据库账户与权限治理
- 清理默认与共享账户:对不再使用的账户执行锁定/删除(如
ALTER USER xxx ACCOUNT LOCK;或DROP USER xxx CASCADE;),避免共享账号与默认口令。 - 强口令与周期性轮换:对SYS/SYSTEM及高权限账户设置复杂口令并定期更换;禁止明文存储与硬编码口令,应用配置外置并使用安全凭据管理。
- 最小权限与角色分离:普通应用账户仅授予CONNECT/RESOURCE等必要权限;管理员使用专用账户并遵循“最小权限原则”,避免日常业务使用DBA角色。
- 细粒度授权与回收:按业务最小集授予对象权限(如
GRANT SELECT, INSERT, UPDATE ON schema.tbl TO app;),必要时使用WITH GRANT OPTION控制可转授权限;回收用REVOKE及时清理过度授权。 - 用户级资源与登录安全:通过PROFILE限制失败登录与锁定时间(如
FAILED_LOGIN_ATTEMPTS、PASSWORD_LOCK_TIME),并合理设置口令生命周期,降低暴力破解与口令复用风险。
三 网络与监听器安全
- 限制监听器访问:在**$ORACLE_HOME/network/admin/sqlnet.ora**启用白名单校验,仅允许可信网段访问数据库监听器。示例:
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.ora设置SQLNET.EXPIRE_TIME=10(单位:分钟),定期探测并清理半开/僵死连接,降低资源占用与会话劫持风险。
- 远程高权限限制:如无远程SYSDBA需求,可在sqlnet.ora中设置
SQLNET.AUTHENTICATION_SERVICES=NONE,并在参数文件将REMOTE_LOGIN_PASSWORDFILE=NONE,减少远程高权限登录面。
四 审计与合规
- 启用审计并覆盖关键操作:将audit_sys_operations=TRUE记录SYSDBA/SYSOPER操作;将audit_trail=DB,EXTENDED写入数据库审计表并携带SQL文本与绑定变量,便于取证与合规审计。示例:
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精细化记录。
- 语句级:
- 审计留存与清理:审计记录写入SYS.AUD$及相关视图(如DBA_AUDIT_TRAIL);制定保留周期与归档/清理策略,防止审计表膨胀影响性能。
五 快速检查清单
| 检查项 | 期望状态/做法 |
|---|---|
| 系统账户与组 | 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上同样适用,关键在于“系统层最小暴露 + 数据库层最小权限 + 网络层白名单 + 全链路审计留痕”。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上Oracle数据库如何进行安全管理
本文地址: https://pptw.com/jishu/787166.html
