`

Oracle数据库安全措施

阅读更多
说明:以下措施只是加强oracle访问上的安全,防止非法用户通过oracle中的漏洞,进行非法连接,对数据库中的数据进行非法操作,造成数据库损害。

一、数据库安全原则

1.只安装oracle必须的组件;
2.锁定并终止默认用户帐号;
3.改变默认用户密码;
4.激活数据字典保护(oracle9i默认具有此功能);
5.根据实际情况给予最少的权限;
6.强制进行有效的访问控制(oracle9i默认具有此功能);
7.限制操作系统访问;
8.限制网络访问;
9.安装所有的安全补丁;

二、具体安全加强措施 1.对默认用户进行锁定

在oracle安装过程中默认安装会有很多的默认用户,造成安全潜在问题,可以将其锁定,限制对数据库进行连接。

Oracle范例用户:HR,OE,PM,SH,QS_ADM,QS,QS_WS,QS_ES,QS_OS,QS_CBADM,QS_CB,QS_CS

只是用于oracle的范例,没有实际用处;

DBSNMP:负责运行Oracle系统的智能代理(Intelligent Agent),实际中很少使用,几乎不使用;
OUTLN:用于存储Outlines,不使用时可锁定,使用时再打开;
MDSYS, ORDSYS, CTXSYS, ORDPLUGINS:用于支持oracle的Intermedia,默认锁定;
WMSYS:用于存储Oracle Workspace Manager的元数据信息,默认锁定;
ANONYMOUS:用于允许HTTP 访问Oracle XML DB;
XDB:用于存储Oracle XML DB数据和元数据;

此外还有一些系统自带的用户,不再列举,建议对除sys,system,rman,perfstat以外的系统自带用户进行锁定,减少安全隐患。

Sql:select username,account_status from dba_users;

alter user username account lock; 2.安装最新的安全补丁

安全公告和补丁位置如下:
http://otn.oracle.com/deploy/security/alerts.htm


3.密码管理机制

在Oracle,我们可以通过修改用户概要文件来设置密码的安全策略,可以自定义密码的复杂度。在概要文件中有以下参数是和密码安全有关系的:

FAILED_LOGIN_ATTEMPTS:最大错误登录次数
PASSWORD_GRACE_TIME:口令失效后锁定时间
PASSWORD_LIFE_TIME:口令有效时间
PASSWORD_LOCK_TIME:登录超过有效次数锁定时间
PASSWORD_REUSE_MAX:口令历史记录保留次数
PASSWORD_REUSE_TIME:口令历史记录保留时间
PASSWORD_VERIFY_FUNCTION:口令复杂度审计函数。

缺省这个安全策略是没有启用的。

启用安全策略:

以sys用户执行:SQL> @?/rdbms/admin/utlpwdmg.sql

设置举例:

CREATE PROFILE app_user2 LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LIFE_TIME 60
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION verify_function
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 10;

4.资源管理机制

启用资源管理:

SQL> alter system set resource_limit=true;

设置举例:

CREATE PROFILE app_user LIMIT
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL 3000
CONNECT_TIME 45
LOGICAL_READS_PER_SESSION DEFAULT
LOGICAL_READS_PER_CALL 1000
PRIVATE_SGA 15K
COMPOSITE_LIMIT 5000000;

指定profile可以使用create user 或者alter user,举例如下:

CREATE USER test
IDENTIFIED BY aZ7bC2
DEFAULT TABLESPACE data_ts
QUOTA 100M ON test_ts
QUOTA 500K ON data_ts
TEMPORARY TABLESPACE temp_ts
PROFILE profile_name;

ALTER USER test
IDENTIFIED BY A12BDD
DEFAULT TABLESPACE data_ts
TEMPORARY TABLESPACE temp_ts
QUOTA 100M ON data_ts
QUOTA 0 ON test_ts
PROFILE profile_name;

5. 权限管理

根据实际情况,细分权限,建立角色,对于系统权限慎重给予。采用最小授权原则,给用户尽量少的权限。

用户组PUBLIC,顾名思义,表示数据库中的每一位用户,因此,对PUBLIC 用户组授予权限其实也就是对数据库中的每一位用户都授予了相应的权限。这是在授予或撤销权限时非常有用的一条捷径。但也可能带来巨大的安全隐患,尤其是在试图确保以最少权限的方式运行数据库时,更是如此。

撤销Public 组的一些不必要权限,严格限制以下程序包的权限:

UTL_FILE:该程序包允许oralce 用户读取服务器上的文件,如果设置错误的话,可能可以得到任何文件。

UTL_HTTP:该程序包允许oracle 用户通过HTTP 访问外部资源包括恶意的web 代码和文件。

UTL_TCP: 该程序包允许oracle 通过TCP 建立连接,从而从网络上得到可执行文件。

UTL_SMTP: 该程序包允许oracle 通过SMTP 方式进行通信,从而转发关键文件。

撤销以上包的执行权限:

Sql:

revoke EXECUTE on UTL_FILE from public;

revoke EXECUTE on UTL_TCP from public;

revoke EXECUTE on UTL_SMTP from public;

revoke EXECUTE on UTL_HTTP from public; 6.修改认证方式

Oracle默认使用操作系统认证,只要能进入系统可直接以sys进入oracle,存在较大安全隐患,可修改为数据库认证方式。

在$ORACLE_HOME/network/admin中,打开sqlnet.ora,将SQLNET.AUTHENTICATION_SERVICES= (NTS)注释掉,在前面加#即可。 7.限制IP连接

由于Oracle 的TNS 监听器有许多安全漏洞,其中的一些漏洞甚至能让入侵者得到操作系统的超级用户权限或者修改数据库中的数据,因此在打好补丁的同时,对连接IP 的限制也能做到防患于未然。

在$ORACLE_HOME\network\admin 目录下修改SQLNET.ORA文件,

增加如下内容:

tcp.validnode_checking = YES



tcp.invited_nodes = (IP地址, hostname)

IP地址和hostname是允许连接的主机的名字和IP地址。 8.关掉Extproc 功能

由于extproc 存在安全问题允许用户不进行身份认证就可以调用系统函数,因此如果不需要该功能必须关闭。

修改TNSNAMES.ORA 和LISTENER.ORA 文件,删除含有EXTPROC的条目,使两个文件中只含有使用的有效连接信息。 9.启动审计功能

Oracle的审计机制是用来监视用户对ORACLE数据库所做的各种操作。在缺省情况下,系统的审计功能是关闭的。可以在INIT.ORA参数文件中设置参数AUDIT_TRAIL来激活。它的值有:NONE 禁止审计;DB 启用审计,写入SYS.AUD$;OS 启用审计,写入操作系统。

当AUDIT_TRAIL=OS,可设置AUDIT_FILE_DEST指定审计文件的位置,默认情况在$ORACLE_HOME/rdbms/audit下面。

AUDIT_SYS_OPERATIONS, AUDIT_TRAIL, AUDIT_FILE_DEST都是静态参数,需修改参数文件重启后生效。

设置审计水平:

Statement:指定对影响数据库对象的一个特定类型的特定SQL语句进行审计。比如对表的audit table有以下语句:CREATE TABLE, TRUNCATE TABLE, COMMENT ON TABLE, and DELETE [FROM] TABLE等;

Privilege:对由指定系统权限授权的SQL语句进行审计,比如AUDIT CREATE ANY TRIGGER是对由CREATE ANY TRIGGER系统权限授权的语句进行审计;

Object:对特定对象上的特定操作进行审计,比如ALTER TABLE on the emp。

设置审计条件:

BY SESSION/BY ACCESS:BY SESSION使oracle在同一session中的同一类型的SQL语句只写一条记录;BY ACCESS使oracle对每次访问写一条记录。

WHENEVER SUCCESSFUL/WHENEVER NOT SUCCESSFUL:WHENEVER SUCCESSFU只审计那些成功执行的SQL语句;WHENEVER NOT SUCCESSFUL只审计那些失败或结果错误的SQL语句。

审计操作举例:

审计连接:

AUDIT SESSION; AUDIT SESSION BY scott, lori;

审计指定权限:

AUDIT DELETE ANY TABLE BY ACCESS WHENEVER NOT SUCCESSFUL;

AUDIT DELETE ANY TABLE;

AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ACCESS WHENEVER NOT SUCCESSFUL;

审计指定对象:

AUDIT DELETE ON scott.emp;

AUDIT SELECT, INSERT, DELETE ON jward.dept BY ACCESS WHENEVER SUCCESSFUL;


AUDIT SELECT ON DEFAULT WHENEVER NOT SUCCESSFUL;

关闭审计操作:

关闭上面例子中的相应审计:

NOAUDIT session;

NOAUDIT session BY scott, lori;

NOAUDIT DELETE ANY TABLE;

NOAUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE,EXECUTE PROCEDURE;

关闭所有语句审计:

NOAUDIT ALL;

关闭所有权限审计:

NOAUDIT ALL PRIVILEGES;

关闭对象审计:

NOAUDIT DELETE ON emp;

NOAUDIT SELECT, INSERT, DELETE ON jward.dept;

关闭某一对象上的所有审计:

NOAUDIT ALL ON emp;

关闭所有的默认对象审计:

NOAUDIT ALL ON DEFAULT;

相关审计信息视图:

ALL_DEF_AUDIT_OPTS

USER_OBJ_AUDIT_OPTS

DBA_OBJ_AUDIT_OPTS

DBA_STMT_AUDIT_OPTS

DBA_PRIV_AUDIT_OPTS

DBA_AUDIT_TRAIL

USER_AUDIT_TRAIL

DBA_AUDIT_SESSION

USER_AUDIT_SESSION

DBA_AUDIT_STATEMENT

USER_AUDIT_STATEMENT

DBA_AUDIT_OBJECT

USER_AUDIT_OBJECT

DBA_AUDIT_EXISTS

SM$AUDIT_CONFIG

KU$_AUDIT_VIEW

KU$_AUDIT_OBJ_BASE_VIEW

KU$_AUDIT_OBJ_VIEW

DBA_AUDIT_POLICIES

ALL_AUDIT_POLICIES

USER_AUDIT_POLICIES

DBA_FGA_AUDIT_TRAIL

DBA_REPAUDIT_ATTRIBUTE

ALL_REPAUDIT_ATTRIBUTE

USER_REPAUDIT_ATTRIBUTE

DBA_REPAUDIT_COLUMN

ALL_REPAUDIT_COLUMN

USER_REPAUDIT_COLUMN

查看审计信息举例:

列出活动的语句审计操作:



SELECT * FROM DBA_STMT_AUDIT_OPTS;

列出活动的权限审计操作:

SELECT * FROM DBA_PRIV_AUDIT_OPTS;

列出对指定对象的活动对象审计操作:

SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER = 'SCOTT' AND OBJECT_NAME LIKE 'EMP%';

列出默认的对象审计操作:

SELECT * FROM ALL_DEF_AUDIT_OPTS;

列出审计记录:

SELECT * FROM DBA_AUDIT_OBJECT;

列出对于AUDIT SESSION审计操作的审计记录:

SELECT USERNAME, LOGOFF_TIME, LOGOFF_LREAD, LOGOFF_PREAD, LOGOFF_LWRITE, LOGOFF_DLOCK FROM DBA_AUDIT_SESSION;

详细信息请查看联机文档及相关资料。

原文地址:http://maclean007.spaces.live.com/blog/cns!7F9C22E657EA2F2B!267.entry
分享到:
评论

相关推荐

    Oracle数据库系统安全加固规范

    Oracle数据库系统安全加固规范 Oracle数据库系统安全基线规范是为了确保Oracle数据库系统的安全运行,防止未经授权的访问、数据泄露和破坏。以下是该规范的知识点总结: 账号管理 账号管理是Oracle数据库系统安全...

    如何备份还原oracle数据库

    因此,定期备份Oracle数据库是确保数据安全性的必要措施之一。备份不仅能够防止数据丢失,还能提高系统的整体可用性和稳定性。 ### 二、Oracle数据库备份方式概述 #### 1. 全量备份 全量备份是指备份整个数据库的...

    Oracle数据库系统应用与开发

    Oracle数据库提供了多种安全特性,如用户权限管理、审计、加密等。了解如何设置和管理这些安全机制对于保护敏感数据至关重要。 十、Oracle在Web应用中的集成 Oracle可以与各种Web应用框架(如Java EE、.NET等)无缝...

    Oracle数据库资料大全

    四、数据库安全 Oracle数据库有完善的权限和角色机制,通过用户、权限和角色管理数据访问。审计功能可以记录数据库活动,确保合规性。网络加密和SSL协议保障数据传输安全。 五、数据库性能优化 Oracle的性能优化...

    ORACLE数据库巡检模板

    【Oracle数据库巡检模板】 Oracle数据库的健康检查与评估是维护数据库高效稳定运行的重要环节。巡检过程旨在发现潜在的问题,预防故障发生,并确保数据库系统的性能和可用性。以下是巡检的一些关键点: 1. **检查...

    易语言oracle数据库连接模块源码

    在易语言中,开发Oracle数据库连接模块是为了实现对Oracle数据库的高效、便捷操作。Oracle数据库是全球广泛使用的大型关系型数据库管理系统,适用于处理大量数据和并发事务。 Oracle数据库连接模块的核心在于如何...

    建立用户组保证Oracle数据库安全性

    总的来说,建立用户组和角色映射是Unix环境下确保Oracle数据库安全的重要措施。通过精细控制用户权限,限制敏感操作的访问,以及定期更新和强化安全策略,可以显著提高数据库系统的安全性。务必注意修改具有DBA权限...

    ORACLE数据库安全规范

    【Oracle数据库安全规范】 Oracle数据库是企业级广泛应用的数据库管理系统,确保其安全性至关重要。本规范主要针对Oracle数据库的安全配置,旨在防止未经授权的访问,保护数据的完整性,以及降低潜在的安全风险。 ...

    Oracle数据库的安全性提高策略

    因此,探讨并实施有效的Oracle数据库安全性提高策略显得尤为重要。 #### 一、数据库系统的自身安全策略 数据库系统的安全性很大程度上取决于其所部署的操作系统及硬件环境的安全性。为了提高Oracle数据库的安全性...

    关于对oracle数据库安全管理的研究.pdf

    Oracle数据库安全管理研究知识点: 一、Oracle数据库概述及数据库安全管理的重要性 Oracle数据库是由甲骨文公司(Oracle Corporation)研发的关系型数据库管理系统(RDBMS),是全球范围内使用最广泛的数据库之一...

    oracle数据库安全加固方案

    ### Oracle数据库安全加固方案知识点详解 #### 一、概述 Oracle数据库因其稳定性和高效性,在企业和组织中广泛应用。然而,随着网络安全威胁日益增多,确保Oracle数据库的安全性变得尤为重要。本方案详细介绍了如何...

    Oracle数据库备份与恢复.pdf

    - **多层次的安全措施**:包括用户认证、访问控制、数据加密等。 - **跨平台兼容性**:支持多种操作系统和硬件平台,如Windows、Linux、UNIX等。 #### 二、Oracle数据库备份 备份是指将数据库的数据、结构、配置等...

    计算机Oracle数据库优化措施的相关研究.pdf

    本文主要探讨了Oracle数据库的优势、存在的问题及相应的优化措施。 1. Oracle数据库的优势: - 分布式数据库特性:Oracle数据库采用分布式数据库系统,将集中数据分散处理并存储在不同的物理位置,实现多个用户...

    ORACLE 数据库入门教程

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,尤其在企业级应用中占据重要地位。本教程旨在为初学者提供一个全面的Oracle数据库入门指南,帮助你快速掌握Oracle的基础知识和操作技能。 一、Oracle...

Global site tag (gtag.js) - Google Analytics