1. 文档信息及版本 一般信息 细节 名称 Oracle 安全管理 状态 已完成 版本 1.1 作者 Eric 贡献者 Eric 版本 时间 姓名 注解 1.0 2005-9-15 Eric 1.1 2005-10-18 Eric 2. 采用满足需求的最小安装 随着版本的不断升级,Oracle 的功能也越来越多,因此安全威胁也越 来越大。因此最好根据需求只安装所需内容。如:不需要 web 功能,就不要安装相应组件。 3. 安装时的安全 Oracle 的安装目录要和系统盘分开。在Windows下,Oracle 服务不用SYStem 权限运行,Unix下,Oracle的帐号和组的权限也要作相应设置。创建数据库管理员组(DBA)分配 root 和 Oracle 软件拥有者的用户 ID给这个组。DBA 能执行的程序只有 710 权限。在安装过程中 SQL*DBA 系统权限命令被自动分配给 DBA 组。 4. 删除或修改默认的用户名和密码 Oracle 的默认安装会建立很多缺省的用户名和密码,而大部分的数据库管理员都不清楚到底有多少数据库用户,从而留下了很大的安全隐患。下面是 Oracle 的常用的用户名和密码。 Windows 下的常见用户名和密码: 用户名 密码 权限 ADAMS WOOD AQDEMO AQDEMO AQUSER AQUSER AURORA$ORB$UN AUTHENTICATED INVALID
BLAKE PAPER CATALOG CATALOG CDEMO82 CDEMO82 CDEMOCOR CDEMOCOR CDEMOUCB CDEMOUCB CLARK CLOTH COMPANY COMPANY 所有权限 CTXSYS CTXSYS DBA DBSNMP DBSNMP DEMO DEMO DEMO8 DEMO8 EMP EMP EVENT EVENT DBA FINANCE FINANCE 所有权限 FND FND GPFD GPFD GPLD GPLD JONES STEEL MDSYS MDSYS 所有权限 MFG MFG 所有权限 MILLER MILLER MMO2 MMO2 MTSSYS MTSSYS OCITEST OCITEST ORDPLUGINS ORDPLUGINS ORDSYS ORDSYS OUTLN OUTLN PO PO DBA POWERCARTUSER POWERCARTUSER PRIMARY PRIMARY PUBSUB PUBSUB DBA RE RE RMAIL RMAIL SAMPLE SAMPLE DBA SCOTT TIGER SECDEMO SECDEMO SYS CHANGE_ON_INSTALL 超级用户 DBA SYSTEM MANAGER DBA TRACESVR TRACE TSDEV TSDEV TSUSER TSUSER USER0 USER0 USER1 USER1 USER2 USER2 USER3 USER3 USER4 USER4 USER5 USER5 USER6 USER6 USER7 USER7 USER8 USER8 USER9 USER9 VRR1 VRR1 DBA AURORA$JIS$UTLLITY$ 随机密码 Oracle 9I 中存在 AURORA$ORB$UNAUTHENTICATED 随机密码 Oracle 9I 中存在 OSE$HTTP$ADMIN 随机密码 Oracle 9I 中存在 Unix 下的常见用户名和密码: 用户名 密码 权限 ADAMS EOOF AQDEMO AQDEMO AQUSER AQUSER AURORA$RB$UN AUTHENTICATED INVALID BLAKE PAPER CDEMO82 CDEMO82 CDEMOCOR CDEMOCOR CDEMORID CDEMORID CLARK CLOTH COMPANY COMPANY 所有权限 CTXSYS CTXSYS DBA DBSNMP DBSNMP EMP EMP EVENT EVENT DBA FINANCE FINANCE 所有权限 FND FND GPFD GPFD GPLD GPLD JONES STEEL MDSYS MDSYS 所有权限 MFG MFG 所有权限 MILLER MILLER MODTEST YES DBA MMO2 MMO2 MOREAU MOREAU NAMES NAMES OCITEST OCITEST ORDPLUGINS ORDPLUGINS ORDSYS ORDSYS OULN OUTLN PO PO DBA POWERCARTUSER POWERCARTUSER PRIMARY PUBSUB PUBSUB DBA SCOTT TIGER SECDEMO SECDEMO SYS CHANGE_ON_INSTALL 超级用户 DBA SYSTEM MANAGER DBA TSDEV TSDEV TSUSER TSUSER USER0 USER0 USER1 USER1 USER2 USER2 USER3 USER3 USER4 USER4 USER5 USER5 USER6 USER6 USER7 USER7 USER8 USER8 USER9 USER9 VRR1 VRR1 DBA AURORA$JIS$UTILITY$ 随机密码 Oracel 9I 中存在 AURORA$ORB$UN 随机密码 Oracel 9I 中存在 AUTHENTICATED OSE$HTTP$ADMIN 随机密码 Oracel 9I 中存在 可以通过下面语句查看系统用户: SQL> select username from all_users; USERNAME ------------------------------------------------------------ SYS SYSTEM HEHUA OUTLN DBSNMP SCOTT LZHTEST ADAMS JONES CLARK BLAKE 已选择11行
可以通过下面的语句查看系统中 DBA 用户: select username from dba_users; USERNAME ------------------------------------------------------------ SYS SYSTEM HEHUA OUTLN DBSNMP SCOTT LZHTEST ADAMS JONES CLARK BLAKE 5. 安装最新的安全补丁 Oracle 虽然称为“Unbreakable”,但是安全漏洞还是非常多的,一个 比较安全的办法是时刻关注 oracle 的安全公告,并及时安装安全补 丁。安全公告和补丁位置如下:http://otn.oracle.com/deploy/security/alerts.htm 6. 密码策略设置 在 Oracle,我们可以通过修改用户概要文件来设置密码的安全策略,可以自定义密码的复杂度。在概要文件中有以下参数是和密码安全有关系的: FAILED_LOGIN_ATTEMPTS:最大错误登录次数 PASSWORD_GRACE_TIME:口令失效后锁定时间 PASSWORD_LIFE_TIME:口令有效时间 PASSWORD_LOCK_TIME:登录超过有效次数锁定时间 PASSWORD_REUSE_MAX:口令历史记录保留次数 PASSWORD_REUSE_TIME:口令历史记录保留时间 PASSWORD_VERIFY_FUNCTION:口令复杂度审计函数。 缺省这个安全策略是没有启用的。如下图:
也可以用下列语句达到目的: ALTER PROFILE "DEFAULT" LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1 PASSWORD_GRACE_TIME 5 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME30 PASSWORD_VERIFY_FUNCTION DEFAULT 其中口令复杂性检查函数 PASSWORD_VERIFY_FUNCTION 是 Oracle 中 自带的,作为复杂性函数中的 default 检查函数,但是缺省这个函数没 有创建,需要运行在 oracle 软件的主目录下的 rdbms/admin 下的 utlpwdmg.sql 才可以使用: SQL> connect sys/passwd@oratest as sysdba SQL> @?/rdbms/admin/utlpwdmg.sql 函数已创建。 配置文件已更改 这样就可以使用这个函数来检查密码的复杂度,启用口令复杂性函 数,选择 defalut。默认的这个函数可以检查密码是否与用户名相同, 是否小于 4 个字符,是否是一组特定的词,密码中是否包含 1 个字符、 一个数字和一个标点符号,然后再和旧口令进行检查。当然你也可以 修改或者创建你自己的口令复杂度函数,然后启用。 需要值得注意的是如果用 alter user 来修改口令,并不能完全用密码复杂度检查,最好用 password 函数进行密码修改。 7. 数据库使用的注意事项 不要使用 SQLPLUS username/password 进入 SQL*Plus。 不要使用带有Ø USERID 参数的 EXP80 或者 IMP80,而要使用参数文件,指定 PARFILE的参数。 不要使用带有 USERID 参数的Ø SQLLDR。 因为在 UNIX 系统中,以上命令可能会被通过 PS –ef 查到 Oracle 的用户名和密码。 8. 权限设置 采用最小授权原则,给用户尽量少的权限。Ø 撤销 Public组的一些不必要权限,严格限制以下程序包的权限:Ø ü UTL_FILE:该程序包允许 oralce 用户读取服务器上的文件,如果设置 错误的话,可能可以得到任何文件。 UTL_HTTP:该程序包允许ü oracle 用户通过 HTTP 访问外部资源包括恶意的 web 代码和文件。 UTL_TCP: 该程序包允许 oracle 通过 TCPü 建立连接,从而从网络上得到可执行文件。 UTL_SMTP: 该程序包允许 oracle 通过 SMTPü 方式进行通信,从而转发关键文件。 9. 登录认证方式设置 由于 Oracle 默认采用得是密码方式认证,由于密码容易被窃取,所以 Oracle8i 支持以下认证方式: CyberSafe Kerberos SecurID Identix Biometric RADIUS SSL 比较安全的做法是采用以上的认证方式。 1、 在服务器和客户端中 sqlnet.ora 中设置:SQLNET.AUTHENTICATION_SERVICES=(oracle 提供的认证方法) 2、 在数据库初始化文件 init_实例.ora 文件中设置: REMOTE_OS_AUTHENT=FALSE 10. 传输加密 Oracle 采用的是 TNS 协议传输数据,在传输过程中不能保证其中的 数据被窃听乃至修改,因此最好对传输进行加密。 由于美国加密算法的出口限制,Oracle 在国际版中提供以下加密算法: DES DES40 RC4_40 RC4_56 启用 NET8 Assistant 进行加密配置或者直接修改 sqlnet.ora 文件,如下图: 11. 连接IP限制 由于 Oracle 的 TNS 监听器有许多安全漏洞,其中的一些漏洞甚至能让入侵者得到操作系统的超级用户权限或者修改数据库中的数据,因此在打好补丁的同时,对连接 IP 的限制也能做到防患于未然。 在$ORACLE_HOME/network/admin 目录下修改SQLNET.ORA文件,增加如下内容: tcp.validnode_checking = YES tcp.invited_nodes = (192.168.0.1, test) 另外一个比较可行的办法就是使用防火墙进行限制。 12. 关掉Extproc功能 由于 extproc 存在安全问题允许用户不进行身份认证就可以调用系统函数,因此如果不需要该功能必须关闭。修改 TNSNAMES.ORA 和 LISTENER.ORA 文件,删除以下条目: icache_extproc, PLSExtproc, Extproc 13. 审计 ORACLE 数据库具有对其内部所有发生的活动的审计能力,审计日志一般放在 sys.aud$表中,也可以写入操作系统的审计跟踪文件中。 可审计的活动有三种类型:登录尝试、数据库活动和对象存取,缺省 情况下,数据库不启动审计,要求管理员配置数据库后才能启动审计。 要开启审计,需要修改数据库的初始化文件 init_实例.ora 文件,增加AUDIT_TRAIL,它的值有: NONE 禁止审计 DB 启用审计写入 SYS.AUD$ OS 启用审计,写入操作系统 要进行登录审计: audit session; 如果只记录失败或者成功的登录: audit session whenever not successful; audit session whenever successful; 要进行操作审计: audit 操作动作 要进行对象审计 audit 操作 on 对象 14. 备份 通过对数据库进行备份以便在需要的时候进行恢复。Oracle提供了逻辑备份(Export)和物理备份(脱机备份和联机备份) |