Oracle 安全加固操作步骤


www.isleader.net 12 ORACLE 安全加固操作步骤 一、 安装 ORACLE NET8 二、 配置 DB SCANNER 扫描数据库 0. 安装 DB SCANNER 软件 0. 配置 DB SCANNER (0) 在 DB SCANNER菜单 scanner->configure connection->oracle中选 择 Add Server,出现如图信息: Server Name:连接符 Protocol:选择 TCP/IP Sockets SID:ORACLE 数据库 SID Hostname or IP address:为 ORACLE 数据库 IP 地址 Port Oracle listens on:默认为 1521 (0) 选 择 scan database->network neighborhood->oracle 中 oracle.world 连接符 (0) 点击 Add Database www.isleader.net 12 (0) 填写 DBA 帐户和密码,选择所制订的策略,Host Account 与 Host Password 为空 操作系统处于安全状态 在进行 ORACLE 数据库的安全配置之前,首先必须对操作系统进行安全配 置,保证操作系统处于安全状态 防止破坏者构造恶意的 SQL 语句 对要使用的操作数据库软件(程序)进行必要的安全审核,很多基于数据库的 WEB 应用常出现的安全隐患,如 ASP、PHP 等脚本。对于脚本主要是一个过滤问 题,需要过滤一些类似 , ‘ ; @ / 等字符,防止破坏者构造恶意的 SQL 语句。 加载 ORACLE 最新补丁 检查当前所有已安装的数据库产品的版本信息 Oracle7 至 8.0: cd $ORACLE_HOME/orainst ./inspdver Oracle 8i 或更高: cd $ORACLE_HOME/install cat unix.rgs ORACLE 最新补丁下载地址是: http://metalink.oracle.com 删除或锁定不需要的缺省安装用户 Oracle 在建立数据库的时候会创建一系列用户帐号。这些用户有系统管理员 用户(SYSTEM, SYS),某些管理工具的帐号(如 DBSNMP 等),以及示例用户 (如 SCOTT)。这些帐号往往具有众所周知的缺省口令。 www.isleader.net 12 删除不需要的帐号,比如 SCOTT 等示例用户;对于不明确是否能删除的用 户可以暂时锁定该用户,或赋予非常复杂的口令。 修改用户口令的命令: ALTER USER 用户名 IDENTIFIED BY 新口令 锁定用户的命令: ALTER USER 用户名 ACCOUNT LOCK 解锁用户的命令: ALTER USER 用户名 ACCOUNT UNLOCK 删除用户的命令: DROP USER 用户名 默认用户名与默认口令包括: SCOTT/TIGER (测试) DBSNMP/DBSNMP (oracle intelligent agent,无需 SNMP,建议删除或改口令) SYSTEM/MANAGER (DBA 管理员) SYS/CHANGE_ON_INSTALL (DBA 管理员) TRACESVR/TRACE (used for oracle trace) CTXSYS/CTXSYS (intermedia text owner) MDSYS/MDSYS (spatial(part of intermedia) owner) DEMO/DEMO (演示) CTXDEMO/CTXDEMO APPLSYS/FND (ERP) PO8/PO8 (如用户使用,建议更改口令;否则锁定) NAMES/NAMES (如用户使用,建议更改口令;否则锁定) SYSADM/SYSADM (如用户使用,建议更改口令;否则锁定) APPS/APPS (ERP) ORDPLUGINS/ORDPLUGINS (same as mdsys.part of intermedia) OUTLN/OUTLN (for the query plan stability feature,不能删除,建议 改口令) ADAMS/WOOD (建议删除,DEMO 帐户) www.isleader.net 12 BLAKE/PAPER (建议删除,DEMO 帐户) JONES/STEEL (建议删除,DEMO 帐户) CLARK/CLOTH (建议删除,DEMO 帐户) AURORA$ORB$UNAUTHENTICATED/INVALID (is an internal account used by java beans) 设定 PROFILE 中的口令策略 在 USER PROFILE 中设定这几个参数: 参 数 名 解 释 缺 省 值 PASSWORD_LIFE_TIME 口令的生命期。 UNLIMITED PASSWORD_GRACE_TIME 从口令过期后的第一次成功登 录算起,经过 PASSWORD_GRACE_TIME 天后,再不修改口令,该用户 将被锁定。 UNLIMITED PASSWORD_LOCK_TIME 口令过期后帐号被锁定的时 间。 UNLIMITED (必须由管理 员手工解锁) PASSWORD_REUSE_MAX 目前的口令只有被修改 PASSWORD_REUSE_MAX 次 后才能被重用。 UNLIMITED PASSWORD_REUSE_TIME 在 PASSWORD_REUSE_TIME 天内,目前的口令不能被重用。 UNLIMITED FAILED_LOGIN_ATTEMPTS 失败登录次数上限,达到该上 限后,帐号将被锁定。 UNLIMITED 参考命令: www.isleader.net 12 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 30 --口令生命期 30 天 PASSWORD_GRACE_TIME 3 --口令过期后的缓冲期 3 天 PASSWORD_LOCK_TIME 15 --口令过期后锁定 15 天 PASSWORD_REUSE_TIME 90 --口令 90 天内不得重用 PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 3 --失败登录次数上限 3 次 创建口令验证函数,参考《Oracle 8i Administrator’s Guide》P21-15。并为 USER PROFILE 设定口令验证参数。 参考命令: ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION 修改弱口令 在设定口令策略后通知所有用户新的口令策略,并通知用户修改口令。数据 库管理员应修改 SYSTEM、SYS 等特权用户的口令,和其它一些应用系统内部 使用的(比如由中间件、通讯程序、维护程序等使用的)用户的口令。 DBA 默认口令,建议更改 Sys /change_on_install Internal/ oracle 在系统命令行方式下,运行 orapwd file= password= entries= where file - name of password file (mand), password - password for SYS and INTERNAL (mand), entries - maximum number of distinct DBA and OPERs (opt), There are no spaces around the equal-to (=) character. System /manager : www.isleader.net 12 用 SQLPLUS 连接数据库,运行 Alter user system indentified by newpasswd; 修改与 UTL_FILE 包有关的授权和安全设置 与应用系统开发商确认是否有用户需要使用 UTL_FILE、UTL_HTTP 等程序 包。如果没有用户使用,应收回普通用户对该包的执行权限,执行如下命令(由 SYS 用户执行): REVOKE EXECUTE ON SYS.UTL_FILE FROM PUBLIC 并从 INIT.ORA 文件中删除这一行:“UTL_FILE_DIR=*” 如果确实有用户需要使用 UTL_FILE 包,应确保只有确实需要的用户才拥有 UTL_FILE 的执行权。同时在 init.ora 中设定参数“UTL_FILE_DIR”使用 UTL_FILE 包的程序确实需要访问的目录。 修改 DB_LINK 口令信息的存放方式和发送方式 与应用系统开发商商议,是否可以改变 DB_LINK 的创建方式,在创建 DB_LINK 时不指定用户名和口令。查看 DB_LINK: SELECT NAME,USERID,PASSWORD FROM LINK$; 如果 DB_LINK 连接的数据库没有 Oracle 7.2 或以前版本的,在 INIT.ORA 文件中增加:DBLINK_ENCRYPT_LOGIN=TRUE。 检查 RESOURCE 角色的授予情况 与应用程序开发商共同检查那些用户被授予了 RESOURCE 角色,是否必须, 如果不是必须,应收回,重新分配合适的系统权限。建议不把该角色授予非开发 用户,回收权限的命令为 revoke resource from username; 用以下命令查看哪些用户被授予了 RESOURCE 角色: SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE = 'RESOURCE' www.isleader.net 12 RESOURCE 角色包括了以下系统权限: (select * from role_sys_privs where role='RESOURCE';) CREATE CLUSTER CREATE INDEXTYPE CREATE OPERATOR CREATE PROCEDURE CREATE SEQUENCE CREATE TABLE CREATE TRIGGER CREATE TYPE 检查 CONNECT 角色的授予情况 与应用程序开发商共同检查哪些用户被授予了 CONNECT 角色,是否必须, 如果不是必须,应收回,重新分配合适的系统权限。建议更好的管理方式是用户 建立与应用相关的角色并对角色进行相应的授权。 用以下命令查看哪些用户被授予了 CONNECT 角色: SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE = 'CONNECT' CONNECT 角色包括如下系统权限: (select * from role_sys_privs where role='CONNECT';) ALTER SESSION CREATE CLUSTER CREATE DATABASE LINK CREATE SEQUENCE CREATE SESSION CREATE SYNONYM CREATE TABLE CREATE VIEW 如果授予 CONNECT 的目的只是为了让用户能登录,那可代之以“CREATE www.isleader.net 12 SESSION”的权限。 Revoke connect from username; Grant create session to username; 检查把权限授给 PUBLIC 的情况 与应用系统开发商共同检查,是否把应用系统对象(表、视图等)的权限授 予了 PUBLIC,这种授权是否必须。建议更好的管理方式是用户建立与应用相关 的角色并对角色进行相应的授权。 参考命令: SELECT TABLE_NAME,PRIVILIGEG FROM DBA_TAB_PRIVS WHERE GRANTEE = ‘PUBLIC’ AND OWNER = ‘…’ 在“OWNER=’…’”中填入应用系统对象的拥有者。 回收权限 Revoke privilege on schema.tablename from public; 检查 DBA 角色的授予情况 检查是否把 DBA 角色授予了其他用户。 用以下命令列出所有被授予了 DBA 角色的用户: SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE = 'DBA'; 如果有的用户不需要具有 DBA 的权限,建议回收 DBA 权限或建立相应的角色并对该 角色授予合适的权限,能后把该角色授予相应需要改权限的用户 Revoke dba from username; 检查授予角色时是否使用了 WITH ADMIN 选项 检查授予角色时是否使用了 WITH ADMIN 选项,确认这一选项是否必须, 如果不是,收回角色重新分配。 www.isleader.net 12 用这条命令列出在授予角色时使用了 WITH_ADMIN 选项的用户和角色: SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE ADMIN_OPTION = ‘YES’ AND GRANTEE NOT IN (‘SYS’, ‘SYSTEM’, ‘DBA’) 收回角色: REVOKE FROM 重新授予角色: GRANT TO 检查授予系统权限时是否使用了WITH ADMIN 选项 检查授予系统权限时是否使用了 WITH ADMIN 选项,确认这一选项是否必 须,如果不是,收回权限重新分配。 用这条命令列出在授予系统权限时使用了 WITH_ADMIN 选项的用户(或角 色)和权限: SELECT GRANTEE, PRIVILEGE FROM DBA_SYS_PRIVS WHERE ADMIN_OPTION = 'YES' AND GRANTEE NOT IN (‘SYS’, ‘SYSTEM’, ‘MDSYS’, ‘DBA’) 收回权限: REVOKE FROM 重新授权: GRANT TO 检查授予对象权限时是否使用了WITH GRANT 选项 如果在授予一个用户某个数据库对象的权限时使用了 WITH GRANT OPTION 字句,那么该用户可以把该权限继续授予别的用户。与应用开发商一同 检查是否有这样的情况,如果有,这样的授权是否是必须的。 使用如下的语句查询: www.isleader.net 12 SELECT GRANTEE, OWNER || ‘.’ || TABLE_NAME, PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTABLE = 'YES' AND OWNER <> 'SYS'’; 收回权限: REVOKE ON FROM 重新授权: GRANT ON TO 设定 REMOTE_OS_AUTHENT 参数 在 INIT.ORA 中加入(或修改): REMOTE_OS_AUTHENT=FALSE REMOTE_OS_ROLES=FALSE ADMIN_RESTRICTIONS 参数 注意:该条只针对 Oralce 8.1.7 及以后版本。 在 LISTENER.ORA 中加入: ADMIN_RESTRICTIONS_=ON 修改后必须重启 TNSListener 或在 lsnrctl 中执行 reload 命令才能起作用。 设定 Listener 的口令 设置 listener 口令 0. LSNRCTL> change_password 0. LSNRCTL> set password LSNRCTL> save_config 这样可防止未被授权的用户随意关闭数据库侦听器。 把 listener.ora 文件设为只有数据库管理员可以读。 www.isleader.net 12 SQL92_SECURITY 参数 在 INIT.ORA 中加入: SQL92_SECURITY=TRUE 加入此句后,用户必须具有一个表的 SELECT 权限才能对该表执行 UPDATE 和 DELETE 操作。 O7_DICTIONARY_ACCESSBILITY 参数 在 INIT.ORA 中加入: O7_DICTIONARY_ACCESSBILITY=TRUE 检查是否有用户以 SYSTEM 为缺省表空间 一般用户不应该以 SYSTEM 作为缺省表空间。 用以下命令查看哪些用户以 SYSTEM 作为缺省表空间: SELECT USERNAME FROM DBA_USERS WHERE DEFAULT_TABLESPACE = ‘SYSTEM’; 对于不是必须以 SYSTEM 作为缺省表空间的用户,用以下命令修改缺省表 空间: ALTER USER DEFAULT TABLESPACE 建立良好的备份策略 能确保当数据库系统 DownTime 时,当数据库数据存储媒体被破坏时以及当数据 库用户误操作时,数据库数据信息不至于丢失 www.isleader.net 12 建立良好的日志管理策略 方便迅速查找数据库出错原因,及时的解决数据库问题
还剩11页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

newstu

贡献于2012-05-24

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!