基于广播电视信息安全等级保护要求的Oracle数据库用户及权限加固方法探索

2016-09-11 18:45波国家新闻出版广电总局监管中心北京市100045
数字传媒研究 2016年7期
关键词:配置文件口令账户

杨 波国家新闻出版广电总局监管中心 北京市 100045

基于广播电视信息安全等级保护要求的Oracle数据库用户及权限加固方法探索

杨波
国家新闻出版广电总局监管中心北京市100045

本文根据国家和行业信息安全等级保护基本要求并结合广电行业业务特点,通过对基本要求项的研究,探索Oracle数据库用户及权限的安全基本加固方法。

Oracle 11g广播电视等级保护安全加固

引言

近年来,党中央、国务院高度重视我国信息安全工作。为提高我国信息安全保障能力,维护国家安全、社会稳定和公共利益,我国已将信息安全等级保护制度作为一项重要工作在各个行业开展。广播电视行业作为党和政府的喉舌,其重要性不言而喻,自2011年全面开展信息安全等级保护工作以来,越来越多的播出单位意识到信息安全的重要性,积极开展信息安全建设工作。

在信息系统安全建设中,数据库作为信息的核心部件其作用至关重要,保障数据库安全已经成为信息系统安全建设的重要组成部分。本文将以Oracle11g数据库为例,结合广播电视安全播出特点,依据国家和广电行业信息安全等级保护基本要求,探索相应的安全加固方法。

在信息安全等级保护基本要求中对数据库的身份鉴别、访问控制、安全审计、资源控制等多个方面做出了要求,本文将从Oracle数据库的身份鉴别及访问控制两个方面研究用户及权限管理的加固方法。

1 身份鉴别方面的加固措施

1.1启用身份鉴别措施

广电行业信息安全等级保护基本要求中对身份鉴别的要求是:“应对登录操作系统和数据库系统的用户进行身份标识和鉴别,应为不同用户分配不同的用户名,不能多人使用同一用户名”。

Oracle Database 11g数据库为用户提供了多种身份验证方法,其中包括:口令验证、外部验证、全局验证等多种认证方式。口令身份验证是最常用到的身份验证方式,Oracle数据库将账户名与口令存储在数据库中,用户登录时必须输入账户名和口令,Oracle数据库对其进行认证、授权;外部身份认证是指Oracle数据库本身不存储账户的口令,用户身份认证依赖于数据库外部构件,如Oracle数据库运行于Windows平台时使用Windows本地身份认证服务或使用Kerberos协议认证服务器、RADIUS服务器进行认证,用户登录时只要通过了这些构件的身份认证,即拿到了登录令牌可直接登录Oracle数据库;全局验证需要在Oracle Advance Security选项中使用基于LDAP(轻量级目录访问协议)的目录服务中进行身份认证。

按照基本要求中的规定,在连接数据库时应同时提交用户名和口令,特别注意的是基于Windows的本地认证服务认证实际上只要是操作系统的用户就能够直接登录数据库,不能满足基本要求中的规定。在确认是否存在操作系统本地验证用户时,首先应检查操作系统认证前缀字段,即“OS_AUTHENT_PREFIX”,该字段的赋值会作为Oracle操作系统验证用户名的前缀,默认情况下该字段是“OPS”,然后再查找是否用使用了该前缀的账户,Unix及Linux操作系统下的用户名格式为“OPS username”,Windows操作系统下的用户名格式为“OPSMACHINE_NAMEUSERNAME”(计算机名用户名),最后通过修改“IDENTIFEID”参数将该账户改为其他验证方式或删除该账户(折中的办法是将“OS_AUTHENT_PREFIX”的前缀值改为与系统当前具有操作系统认证的账户名前缀不匹配,不过不推荐使用此方法)。另外,Oracle11g中默认不允许用户通过Oracle Net方式使用操作系统认证,相关资料表明这种方式存在诸如黑客远程登录攻击等严重的安全隐患,建议检查“REMORE_OS_AUTHENT”参数,如果已经被修改为“TRUE”则将其设置为“FALSE”。

而对于其他外部身份认证方式的安全性,则需要综合评估Oracle数据库外部身份鉴别构件本身的安全设置、所在操作系统的安全性等外围因素,并不在本文研究范围之内。

此外,经常被忽略的是为监听器设置密码,任何有权限进入操作系统的用户都可以通过在命令提示符下输入“LSNRCTL STOP”命令来轻易的停止监听器工作。可以通过运行LSNRCTL程序,使用SET PASSWORD命令为其设置密码。需要注意的是,监听器密码的哈希值存储在操作系统中listerner.ora中,所以应在操作系统层面对该文件的读取权限进行限制,并在设置密码时注意不要与数据库账号密码相同,以防具有操作系统读取权限的非数据库管理员对其进行破解,从而以数据库账号进行登录。

在数据库日常管理中,应做到数据库管理员、操作员、安全员分别使用各自的账户,为每一位登录用户创建独立的账户,以便按照其应用的最小权限对数据库进行操作以及准确界定责任。

1.2口令复杂度设置

1.2.1账户名设置

Oracle Database 11g中内置了多个默认账户,如:SCOTT等,具有不同的默认权限。如图1所示:

图1 Oracle Database 11g内置默认账户

由于部分Oracle数据库默认账户名和口令处于公开状态,已被内置于数据库登录账号猜测及口令暴力破解工具上,所以建议用户在建立账户时重新创建账户,尽量避免使用(锁定或删除)非必要的默认账户。为了避免黑客个人或组织有针对性对应用系统实施APT(Advanced Persistent Threat高级持续性威胁)攻击,采用“社会工程”等手段获取数据库登录账户,建议数据库管理员和开发人员在建立数据库账户名时应避免使用单位名称、业务应用名称、数据库管理员姓名、生日等个人信息的全拼、缩写及组合作为账户名及口令。

1.2.2口令设置

在设置口令时应注意使口令具备一定的复杂度,建议由至少8位的大写字母、小写字母、数字、符号等多种字符类型组成,并最少6个月更换一次口令。在Oracle Database 11g中可以通过配置文件(profile)对口令安全策略进行强制控制。可以使用“create profile”命令建立配置文件或使用默认的配置文件,命令如下:

create user user_name identified by pass_word

profile profile_name

如果未在建立账户时指定由管理员手动创建配置文件,则由Oracle数据库指定使用名为default的配置文件作为默认配置文件。配置文件(profile)中包括以下参数:

(1)密码过期时间

password_life_time口令过期前的天数,口令在过期后仍可使用,具体取决于password_grace_time。

password_grace_time口令过期(将生成更改口令的提示)后第一次成功登陆后的天数,在此期间,旧口令仍然可用。

在默认default profile中,password_life_time为180天,password_grace_time为7天。

(2)密码历史

password_reuse_time可以重新使用口令前的天数。

password_reuse_max可以重新使用口令的次数。

(3)密码复杂度

password_verify_funciton更改口令时运行的函数名。此函数本用于检查新口令所需的复杂程度。

可以通过运行Oracle提供的脚本来限制用户口令的复杂度要求。

在Linux或Unix上:

ORACLE_HOME/rdbms/admin/utlpwdmg.sql。在Windows上:

%ORACLE_HOME dbmsadminutlpwdmg.sql。

该脚本运行后将建立名为verify_funciton和verify_funciton_11g两个函数。在此函数中将对密码复杂度进行定义,如果不符合以下条件将放弃口令更改:

新的口令的字符长度至少是8位(将脚本中“Check for the minimum length of the password if length(password)<”参数值设置为8)。

新的口令不能是用户名(正向拼写或反向拼写),也不能是大写或小写的数据库名。

将拒绝一些常用的简单口令(如“oracle”等)。

新口令至少有一个字符和一个数字。

新口令与旧口令至少必须有三个字符是不同的。

1.3登录失败处理措施

采用登录失败处理功能,可以防止非授权用户尝试登录数据库的次数以及在管理员长时间离开操作台有没有退出登录界面时的非授权访问。可以在用户配置文件(profile)中定义以下参数来实现登录失败处理功能:

(1)failed_login_attempts指在锁定账户前,口令上的连续错误数,如果在达到极限之前更改了口令,则将此计数器归0。

(2)password_lock_time在到达failed_login_attempts次数后,账户锁定的天数。

在默认defaultprofile中,failed_login_attempts为10次,password_lock_time为1天,可以通过ALTERPROFILE语句对其进行修改。

1.4远程管理加密措施

在通过网络连接Oracle数据库时默认是不采用加密方式进行数据传输的,为了防止恶意用户通过网络监听方式获取敏感信息,应为每个监听器启用加密的方式。可以通过修改listerner.ora文件中PROTOCOL参数:LISTENER=

(DESCRIPTION_LIST=

或通过OracleNetManager程序,选择对监听器后,对其使用协议进行更改,如图2所示:

图2 Oracle Net Manager协议更改

也可以使用OracleNetConfigurationAssistant进行修改,如下图3:

图3 Oracle Net Configuration Assistan协议更改

还要特别指出的是,部分单位可能会采用网络数据库审计系统,需要数据库通信协议采用明文的方式进行监听,在已经采用该技术作为数据库审计方案的情况下,为了降低安全风险,可以在数据库上联交换机或防护墙上进行配置,设置访问控制列表,将可以访问数据库的地址限定在应用服务器或维护终端的地址或地址段及开放端口,同时,配合IP和MAC地址绑定技术,避免非授权设备监听数据库通信。

1.5“双因素”鉴别措施

“双因素鉴别”是国家及广电行业信息安全等级保护基本要求中针对三级及以上信息系统特有的技术要求。双因素鉴别的目的是当用户所持有的一种登录凭证遭到盗用后,可以凭借另一种不同属性的登录凭证拒绝非法登录。而用户所持有的两种不同属性的鉴别凭证同时遭到盗用的可能性很低,可以抵御一般意义上的盗用登录,因此,如果登录设备采用“用户名+口令”或两级以及两级以上的口令认证应认为是一种鉴别技术。

目前,笔者尚未接触到比较成熟的数据库双因素鉴别产品,但随着技术的不断发展,将会不断出现满足等保要求的产品,在进行产品选型时须注意的是这类产品应首先能够实现除了用户名和口令以外的其他鉴别技术,如动态口令卡、USB证书等,其次在选择这类产品时也应注意现有的业务应用软件可以支持这种双因素认证方式。

2 访问控制方面的加固措施

2.1用户权限设置

在等级保护标准中,针对用户权限部分进行了如下要求“应启用访问控制功能,依据安全策略控制用户对资源的访问,根据需要禁止通过USB、光驱等外设进行数据交换,关闭不必要的服务和端口”;“应根据管理用户的角色分配权限,实现管理用户的权限分离,仅授予管理用户所需的最小权限”。

在Oracle数据库中,可以通过给用户或角色授予针对于不同类型数据库对象操作的权限,从而实现对于数据对象的访问控制。表1列出了针对于不同对象可设置的权限:

表1 不同对象的设置权限

可以通过下面的语法实现对数据库对象的操作授权:

SQL>GRANTprivilegeON[schema.]object TO username[WITH GRANT OPTION]

在应用环境中,为防止业务应用账号被赋予过多的权利,应避免将数据库的创建账号作为业务应用账号使用。应该结合业务应用软件的开发情况,梳理业务账号需要操作的数据库对象以及所需权限,创建账户或定义角色,赋予其对数据库对象的最小可用权限。此外,Oracle还提供了基于标记的访问控制策略,在下文中将会做介绍。

对于Oracle用户的授权可以通过直接授权,或为了便于方便管理建立一个具有一定权限的角色并授权的方式进行。在对数据库用户进行权限分配时,应仅分配能够支持业务应用的最小权限,授予超出业务应用所需的权限。在Oracle 11g中,有超过200种的系统权限,其中部分权限对整个数据库具有全局的影响,如果被恶意使用或操作不当则有可能对数据库造成严重损害(如带有“ANY”的特权)。下面列出的部分特权在对普通用户或角色(使用Oracle默认角色时应注意默认的权限)进行授权时应特别注意:

(1)GRANT ANY PRIVILEGE/OBJECT PRIVILEGE/ROLE/JOB:用户可以为自己提升权限(相当于DBA),访问数据库内任何数据;

(2)EXECUTE/ALTER ANY PROCEDURE∶用户可以被用来在DBA模式下创建一个程序(相当于DBA),运行任意的SQL语句;

(3)INSERT/DROP/UPDATE/SELECT/ANY TABLE:可以对数据库内任何数据进行增删改查;

(4)CREATE/ALTERANYVIEW/TRIGGER/ SYNONYM∶可以在创建、修改视图、触发器、同义词的过程中内置提升账户权限代码;

(5)CREATE ANY DERECTORY:可以与UTL_FILE和DBMS_LOB等函数结合使用,实现对操作系统文件的控制。

此外,对于一些不带有“ANY”的特权,也应特别注意:

(1)SYSDBA/SYSOPER∶直接将DBA的权限赋予用户;

(2)ALTER SYSTEM:允许用户设置配置参数并执行系统管理任务;

(3)AUDIT ANY/SYSTEM∶可以对关闭审计功能,避免遗留对数据库进行攻击后的痕迹;

(4)ALTER DATABASE∶可以进行关闭数据库、使用访问操作系统文件的UTL_FILE或其他重要操作;

(5)ALTER/DROP USER:可以允许任何用户成为DBA,删除重要用户及所属对象,直接会导致数据丢失、服务停止,除了DBA以外任何用户和角色都不应得到这项特权;

(6)ALTER PROFILE∶可以更改配置文件中口令尝试次数限制,以便实现暴力破解而不被锁定;

(7)EXPORT/IMPORT FULL DATABASE∶将整个数据库导入或导出,相当于黑客的“拖库”操作,这项授权应仅授于数据库备份管理账户。

2.2特权用户的权限设置

作为数据库的DBA,其对数据库的管理也应受到审计,而审计记录保存在操作系统当中,如果DBA与操作系统管理员的身份重叠,那么DBA可以对审计记录进行任意的修改、删除操作,那么对于DBA的审计则没有意义。对操作系统和数据库DBA的权限分离可以从两个方面进行保障,首先,从技术角度讲,应避免采用操作系统本地认证(前文中“身份鉴别”已做过介绍);其次,从管理角度讲,在人员安排上数据库管理员与操作系统管理员应分别由不同的人员担任。

2.3严格限制默认帐户权限

在Oracle数据库中,每个帐户都是PUBLIC用户组中的成员,且不能将用户从该组中移除。默认情况下,PUBLIC用户组被授予很多特权,其中部分特权在Web应用存在注入等漏洞且并未有效的被安全防护产品保护的情况下容易被黑客利用,对Oracle数据库以及所在的服务器操作系统发起进一步攻击。下面列出部分重要的特权,如业务应用系统没有切实需要,应从PUBLIC用户组中取消:

UTL_FILE:为数据库访问提供对数据库所在的操作系统上的文件读和写的权利;

UTL_HTTP/UTL_SMTP/UTL_TCP:允许数据库使用标准的协议跨网络地进行通信。攻击者可以用来向自己“反弹”敏感数据,绕过已经存在的安全措施。

可以通过以下命令取消这些特权,如:

SQL>revoke execute on utl_file from pubic;

除了PUBLIC用户组默认的权限外,还应特别注意不要赋予该用户组其他特权,如果对于用户进行授权可以通过定义角色或直接授予用户权限方式进行实现。

2.4删除多余的、过期的帐户

在Oracle数据库中,内置了大量默认账户,其中大部分默认处于口令过期和锁定状态。在开发过程中如果使用了这些默认的账户作为测试账户应及时锁定,对于已经使用默认账户作为业务账户进行使用的情况,应避免使用默认口令,并按照要求及时更换。同时,应检查是否存在非默认账户的过期测试账户的存在,如果有则应及时删除。

2.5敏感标记设置

“敏感标记”同“双因素认证”一样,是国家及广电行业信息安全等级保护基本要求中针对三级及以上信息系统特有的技术要求。敏感标记是表示主体/客体安全级别和安全范畴的一组信息,通过比较标记来控制是否允许主体对客体的访问。在广播电视系统中,存储在数据库中的播出单、字幕、OSD、EPG、节目视音频参数等涉及重要业务以及直接面向受众的信息应作为敏感信息进行标记,限定特定用户进行访问。

在Oracle 11g的高级安全性中提供了Oracle Label Security组件来实现敏感标记功能,该组件可以设置一组或多组访问权限策略(Policy),然后给数据库内重要的信息资源如表或schema打上不同的标签(Label)进行标记,然后再将用户与标签相关联,以标签为纽带实现用户对不同资源访问权限的控制,

添加敏感标记并控制用户对其访问的过程大体可分为以下步骤:

(1)安装Oracle Label Security组件;

(2)创建安全策略∶首先解锁LBACSYS账户,并赋予SELECT ANY DICTIONARY系统权限;

(3)为策略定义安全级别、划分及组;(4)为安全策略创建标签;

(5)将安全策略向用户授权;(6)使能安全策略应用表;

(7)为表中的行指定适合的标签。

由于篇幅所限,本文对敏感标记具体实施方法不做过多介绍,感兴趣的读者在进行实际部署时可参考本文所列文献《Oracle.Label Security Administrator’s Guide 11g Release2(11.2)》。

总结

加强Oracle数据库安全不管是从国家和行业信息安全管理要求还是广播电视播出相关单位实际运行支撑需要而言都非常重要。本文结合信息安全等级保护基本要求,对Oracle 11g数据库用户设置、权限设置等方面基本安全加固技术进行了一些简单研究,Oracle安全还包括其他更深层次的问题,还需要开发人员、安全管理人员、数据库维护人员共同努力,探索适用于广播电视行业特点的安全技术手段和方法,才能不断的提高其信息安全防护保障能力。

[1]中华人民共和国国家标准,GB/T 22239—2008.信息安全技术信息系统安全等级保护基本要求[S],2008(6).

[2]中华人民共和国广播电影电视行业暂行技术文件,GD/J037—2011.广播电视相关信息系统安全等级保护定级指南[S],2011(5).

[3]中华人民共和国广播电影电视行业暂行技术文件,GD/J038—2011.广播电视相关信息系统安全等级保护基本要求[S],2011(5).

[4]国家广播电影电视总局令第62号,广播电视安全播出管理规定[Z],2009(12)

[5]中华人民共和国行业标准,GY/T107-1992.电视中心播控系统维护规程[S],1992(12).

[6]Oracle.OracleDatabaseAdvancedSecurityAdministrator’ sGuide11gRelease2 (11.2)[Z],http://docs.oracle.com/cd/E11882_01/ network.112/e40393/toc.htm,2014(9)

[7]Oracle.LabelSecurityAdministrator’s Guide11gRelease2(11.2) [Z],http://docs. oracle.com/cd/B28359_01/network.111/b28529/toc. htm,2007(11)

[8](美)JohnWatson等著,宁洪,吴云洁,李梦汶译.OCP/OCA认证考试指南全册:Oracle Database 11g[M].北京:清华大学出版社,2011(1).

[9](美)DavidC.Knox等著,孟祥旭,唐扬斌译.Oracle安全实战:开发完全的数据库与中间件环境[M].北京:清华大学出版社,2011(7).

[10](美)Josh Shaul等著,李桢译.Oracle安全实践:来自第三方的关系型数据库安全指南[M].北京:科学出版社,2009(1).

[11](美)Justin Clarke等著,黄晓磊,李化译.SQL注入攻击与防御[M].北京:清华大学出版社,2010(6).

[12]林树泽,卢芬著.Oracle 11g R2 DBA操作指南[M].北京:清华大学出版社,2013(10).

[13]Sam R.Alapati著,钟鸣,杨桦,杨卫军,孙登峰等译.Oracle Database 11g数据库管理艺术[M].北京:人民邮电出版社,2013(7).

[14]公安部信息安全等级保护评估中心.信息安全等级测评师培训教程(初级)[M].北京:电子工业出版社,2010.

审稿人:魏朝晖内蒙古新闻出版广电局监管中心正高级工程师

责任编辑:王学敏

TP392

A

2096-0751(2016)07-0020-07

杨波国家新闻出版广电总局监管中心工程师

猜你喜欢
配置文件口令账户
如何切换Windows 10本地账户与微软账户
互不干涉混用Chromium Edge
探索自由贸易账户体系创新应用
高矮胖瘦
外汇账户相关业务
口 令
基于Zookeeper的配置管理中心设计与实现
忘记ESXi主机root密码怎么办
父亲的股票账户
为View桌面准备父虚拟机