⽹络安全之数据库安全
16004488
⼀、数据库安全概述
数据库作为⾮常重要的存储⼯具,保存着重要的、敏感的、有价值的商业和公共安全中最具有战略性的资产。数据库安全通常指物理数据库的完整性、逻辑数据库的完整性、存储数据的安全性、可审计性、访问控制、⾝份验证、可⽤性等。
国家标准GB/T 20273−2006《信息安全技术数据库管理系统安全技术要求》对数据库管理系统安全定义为“数据库管理系统所存储、传输和处理的信息的保密性、完整性和可⽤性的表征”。
数据库安全的特征主要是针对数据⽽⾔的,包括数据独⽴性、数据安全性、数据完整性、并发控制、故障恢复等。
数据的独⽴性包括物理和逻辑2个⽅⾯。物理⽅⾯的独⽴性是指⽤户的应⽤程序与数据库中存储的数据是相互独⽴的;逻辑⽅⾯的独⽴性是指⽤户的应⽤程序与数据库的逻辑结构是相互独⽴的。
通常数据库对数据安全性采取以下措施:
(1)将数据库中需要保护的部分与其他部分相隔;
(2)采⽤授权规则,如账户、⼝令和权限控制等访问控制⽅法;
(3)对数据进⾏加密后存储在数据库。
判断数据是否具有完整性,主要看数据是否有效、是否正确和同⼀个数据对不同的⽤户来说是否⼀样,这3个缺⼀不可。数据是否有效主要是指数据库中的数值能不能满⾜现实应⽤中对该数值的约束;数据的正确性是指数据的输⼊值和数据表中对应的类型⼀样。
数据的并发控制是指在同⼀时刻多个⽤户同时访问⼀个数据。当这个数据需要修改或正在进⾏修改时,其他⽤户调出数据时就不正确了,要排除和避免发⽣这种错误,就需要对数据施⾏并发操作控制以保证数据的正确性。
故障恢复是为了防⽌数据遭破坏,可以由数据库管理系统提供⼀套⽅法,以便能够及时发现故障和修复故障。
⼆、数据库安全问题
在现实情况下, 数据库安全问题⼀直是被关注的焦点,引起数据库安全事件频发的原因较多,美国Verizon就“核⼼数据是如何丢失的”做过⼀次全⾯的市场调查,结果发现,75%的数据丢失情况是由于数据库漏洞造成的。另外,数据库安全配置管理措施不够、⾮结构化数据缺乏安全保护措施是造成数据库安全事件频发的主要原因。
(⼀)数据库⾃⾝安全问题
数据库⾃⾝安全漏洞主要表现为数据库设计缺陷、缺省安装配置漏洞、数据库运⾏漏洞等。
1、数据库设计缺陷
在当前的主流数据库中,数据库数据⽂件在操作系统中以明⽂形式存在,⾮法使⽤者可以通过⽹络、操作系统接触到这些⽂件,从⽽导致数据泄密风险。
2、缺省安装配置漏洞
ssl协议未开启的危害数据库安装后的缺省⽤户名、密码在主流数据库中往往存在缺省数据库⽤户、密码简单、缺省端⼝等,如Oracle端⼝1521、SQL Server端⼝1433、MySQL端⼝3306等。攻击者完全可以利⽤这些缺省⽤户、端⼝登录数据库。
3、数据库运⾏漏洞
数据库运⾏的系统软件本⾝存在的漏洞,数据库系统并未对⾃⾝漏洞加以弥补。例如,缓冲区溢出漏洞,通过HTTP或者FTP服务可以触发,假如攻击者拥有数据库合法的账户信息,即使这些服务关闭也能利⽤这些漏洞;通信协议漏洞,基于通信协议的攻击,如发送超长连接请求、破坏数据库握⼿协议;
操作系统漏洞,未对操作系统漏洞加以弥补,如系统⽤户权限;SQL注⼊攻击,通过SQL注⼊攻击,破坏数据库系统或者盗取敏感信息;拒绝服务攻击,⼤量连接、深度嵌套、频繁访问等⽅式,破坏数据库系统可⽤性。
在数据库系统维护中,如果不重视数据库系统补丁的修复漏洞或制定相应的安全策略,⼀旦遭到攻击,势必会给数据库的安全带来严重的影响。
(⼆)数据库安全管理配置问题
1、安全管理配置不够
数据库的管理组织或维护⼈员对数据库安全管理不够重视、安全管理措施不够严格、⼈员授权管理不到位、⽇常操作不规范、第三⽅维护⼈员的操作监控失效、离职员⼯的后门等问题,导致越权滥⽤、权限盗⽤、恶意操作和泄露机密信息等⾏为。
2、安全审计不⾜
随着数据库信息的价值及可访问性得到提升,内部和外部的安全风险⼤⼤增加,事后⽆法有效追溯和审计等问题⽇益明显。数据库服务器⾃⾝的⽇志审计功能不能被充分利⽤,其⾃⾝的缺陷主要体现:
(1)数据库⾃带的审计及访问控制达不到安全要求;
(2)数据库开启⾃⾝的审计及访问控制功能,会影响性能,对CPU等资源有⼀定的消耗,如果要保存的数据瞬间量级增⼤,很快占满硬盘,影响数据库的直接存储;
(3)数据库⾃⾝审计功能缺少可视化,⽇志就是⼀堆⽂件,查询困难,不能⽣成报表;
(3)数据库⾃⾝审计功能缺少可视化,⽇志就是⼀堆⽂件,查询困难,不能⽣成报表;
(4)数据库⾃⾝审计记录下来的⽇志, DBA⽤户可进⾏修改、删除,对⽇志⽆加密保护等措施,难于体现审计信息的有效性和公正性;
(5)数据库⾃带的访问控制功能,访问控制粒度粗,规则可设置,但是当发⽣违规⾏为时⽆法报警。此外,对于海量数据的挖掘和迅速定位也是任何审计系统必须⾯对和解决的核⼼问题。
(三)分布式数据库安全问题
在⼤数据应⽤环境中,其分布式数据库、⾮结构化数据存储的数据库与前⾯描述的传统关系型数据库相⽐有明显的不同,其数据状态(⾮使⽤、传输中、使⽤中)不断地发⽣变化,点对点的⾮结构化数据快速传播、难定位和识别,其管理和安全保护更加复杂。HBase是⼀个分布式的、⾯向列的开源数据库,适合于⾮结构化数据存储,其安全性依托于Hadoop提供的安全机制。虽然Hadoop 在发展过程中逐步增加了安全认证和授权机制、Kerberos ⾝份认证和基于ACL 的访问控制机制,但仍存在以下问题。
1、KDC 成为系统瓶颈
Hadoop 采⽤基于 Kerberos 的⾝份认证,每次认证都要使⽤Kerberos的密钥分配中⼼KDC。在Hadoop中,⼀个Map Reduce集有成千上万个任务,每个任务的执⾏都要使⽤ Kerberos 认证。如果这些任务在⼀个很短的时间内同时向Kerberos服务器请求票据,就会使KDC的负载急剧增⼤,使其成为整个系统的瓶颈,影响系统性能。且Client向KDC 申请TGT时发送的⾝份信息极易被截取,存在不安全因素。
2、不够健壮的中⼼控制模式
在Hadoop所采⽤的主/从服务器架构中,集唯⼀的主服务器Master功能强⼤、任务繁重。客户的⾝份验证、访问控制、⽂件块Block 到Data Node的映射、⽂件系统命名空间的操作以及Map Reduce中作业任务的调度、监控都由主服务器完成。⼀旦唯⼀的主服务器被攻击,将给整个系统带来毁灭性破坏。
3、过于简单的访问控制
Hadoop在HDFS 和Map Reduce中增加了基于ACL的访问控制策略。但是,这种传统的基于访问控制列表的⽅式在服务端易被修改,存在不安全因素。同时,这种基于⽤户的、过于简单的控制,并不能满⾜企业不断发展的安全需求,对于企业⾃⾝⽽⾔,需要改进以实现合适的基于⾓⾊的安全访问机制。
4、节点间数据明⽂传输
当前版本的Hadoop并没有在传输和存储过程中对数据进⾏加解密处理。即使有些版本采⽤运⾏在TCP/IP之上的安全套接层协议SSL,但其算法简单,并不能满⾜特定的安全需求。
5、没有存储保护
当前版本的Hadoop并没有解决数据服务器中对数据的存储保护问题。
6、没有数据的隔离
不同⽤户、不同安全级别的数据存放在同⼀介质上,没有区分。基于以上问题,当前实际使⽤中,政府机构采取隔离Hadoop数据,引⼊⾓⾊管理,预防⾮法访问。近年来,像IBM、Yahoo、Google这些⽼牌的Hadoop⼚商也逐渐意识到Hadoop安全的重要性,纷纷采取措施,积极应对。⽽⼀些对安全性要求相对保守的公司,⼲脆就放弃了Hadoop的使⽤。
(四)数据库安全风险产⽣的危害
针对前⾯描述的数据库安全问题,虽然数据库的防护能⼒在提升,但⿊客盗取数据库的技术也在不断提升,数据库⼀旦被外部⼈员、内部⼈员、社交⼯程、⾼级持续性威胁等威胁利⽤,会带来较⼤的影响或危害。
1、数据库系统出现故障,导致业务系统瘫痪,影响主要业务运⾏。
1、数据库系统出现故障,导致业务系统瘫痪,影响主要业务运⾏。
2、数据库“拖库”现象频发,导致个⼈隐私泄露、商业、⽹络犯罪,产⽣直接的经济损失、影响社会公共秩序稳定,甚⾄威胁到国家安全。
(五)数据库安全事件典型例⼦
在数据库安全事件中,最典型的是数据库“拖库”。在⿊客术语⾥⾯,“拖库”是指⿊客⼊侵有价值的数据库并把数据库全部盗⾛的⾏为。在取得⼤量的⽤户数据之后,⿊客会通过⼀系列的技术⼿段和⿊⾊产业链将有价值的⽤户数据变现,这通常也被称作“洗库”。最后,⿊客将得到的数据在其他⽹站上尝试登录以收获其他内容,叫作“撞库”。
数据库“拖库”的具体步骤:
1、攻击者锁定⽬标、搜集信息,⾸先判断⽹站是否有利益价值,从⼊侵⽬标⽹站开始,确定获得⽹站数据库中的⽤户信息进⾏社⼯欺骗或多次出售转卖等;
2、确定⽬标后,利⽤⼯具扫描、社会⼯程攻击,获得攻击过程中⼀些信息,完成攻击前的踩点和信息搜集⼯作;
3、进⼊深⼊攻击阶段,利⽤SQL注⼊“拖库”,攻击者通常会查看⽹站的配置⽂件,看是否有可以利⽤的资源,如果⽹站的数据库服务器没有做安全防护配置,就可以直接通过获取到的信息连接到数据库服务器,从⽽导出⽹站的全部数据;
4、如果是内部⼈员攻击,则不受防⽕墙及⼊侵防御系统等影响,拖库变得更容易;
5、最后提权,删除操作⽇志等⾏为。从整个“拖库”过程不难看,出前⾯描述的数据库安全问题是导致攻击者攻击成功的主要原因。
三、数据库安全技术
数据库安全要依托整个⽹络安全体系才能提⾼数据库安全防御能⼒,因此,涉及的安全技术较多,⽬前,相关的安全技术有访问控制技术、数据库安全加密技术、数据库审计技术、多级安全数据库技术、数字⽔印技术和⼤数据安全相关新技术等。只有综合考虑各环节的安全技术,才能确保⾼安全的数据库系统。
(⼀)访问控制技术
访问控制是数据库安全⾄关重要的内容,可以理解为安全的基本机制。访问控制根据规定的安全策略和安全模式对合法⽤户进⾏访问授权,并防⽌未经授权⽤户以及合法授权⽤户的⾮法访问。涉及的对象通
常包括访问主体、资源客体、访问策略、策略强制执⾏等组件。作为安全基本机制,访问控制实施对资源或操作的限制,并进⾏授权,可以直接⽀持机密性、完整性、可⽤性,常使⽤的技术包括访问控制矩阵、访问控制列表、访问标签、权限、鉴别凭证、安全标记、访问时间、访问路由。访问控制策略模型包括⾃主访问控制策略和强制访问控制策略。
1、⾃主访问控制,是⽬前数据库中使⽤最为普遍的访问控制⼿段。⽤户可以按照⾃⼰的意愿对系统的参数做适当修改以决定哪些⽤户可以访问其资源,即⽤户可以有选择地与其他⽤户共享资源。在⾃主访问控制模型中,通常⽤户最核⼼的访问权限是对资源对象的“拥有”权。⾃主访问控制模型之所以被称为是⾃主的,是因为拥有权限的⽤户可以⾃主地将其所拥有的权限授予其他任意在系统登录的⽤户。
2、强制访问控制,在⼀些⾼安全等级的应⽤中,⾃主访问控制这种权限的⾃由扩散是相当危险的,因此,强制访问控制机制被提出来以满⾜这些⾼安全等级的应⽤需求。在强制访问控制下,系统给主体和客体指派不同的安全属性,这些安全属性在系统安全策略没有改变之前是不可能被轻易改变的。系统通过检查主体和客体的安全属性匹配与否来决定是否允许访问继续进⾏。
强制安全访问控制基于安全标签的读写策略使数据库管理系统能够跟踪数据的流动,可以避免和防⽌⼤多数对数据库有意或⽆意的侵害,因⽽,可以为⽊马程序问题提供⼀定程度的保护,在数据库管理系统中有很⼤的应⽤价值。其典型代表是Bell-La Padula模型(简称 BLP模型)和 Biba 模型,也是⽬前应⽤
最为⼴泛的模型,能够达到保护数据的机密性和完整性的⽬标。与⾃主访问控制不同,⽤户⽆权将任何数据资源,哪怕是属于⽤户⾃⾝的数据库资源的访问权限赋予其他的⽤户。
(⼆)数据加密技术
数据加密是将数据库中的数据通过⾝份认证、密钥+密码、密钥管理等进⾏数据保护的技术,是防⽌数据库的数据信息篡改和泄露的有效⼿段,通过数据信息加密能够确保数据⽤户信息的安全,即使数据被⾮法导出、备份⽂件被窃取,也⽆法恢复和访问丢失的数据。
数据库服务器端的加密需要对数据库管理系统本⾝进⾏操作,属于核⼼层加密,能够对数据库的敏感列加密、对数据库的表空间加密、对数据库备份加密、对Data Pump 的Export⽂件加密等。也能够对客户端到数据库之间的通信链路传输进⾏加密,防⽌物理链路数据被窃取。客户端加密的好处是不会加重数据库服务器的负载,这种加密⽅式通常利⽤数据库外层⼯具实现。
对于⼀些重要的机密数据,如⼀些⾦融数据、商业秘密等,都必须存储在数据库中,需要防⽌对它们的未授权访问,哪怕是整个系统都被破坏了,加密仍可以保护数据的安全。对数据库安全性的威胁有时来⾃于⽹络内部,⼀些内部⽤户可能⾮法获取⽤户名和密码,或利⽤其他⽅法越权使⽤数据库,甚⾄可以直接打开数据库⽂件来窃取或篡改信息。因此,采⽤加密技术对重要数据进⾏加密处理,能够保证数据存储的安全。
(三)数据库审计技术
提⾼数据库的安全级别,还需要数据库审计技术⽀撑。在国内外数据库安全相关标准中,如TDI/TCSEC 《可信计算机系统评估标准关于可信数据库系统》、GB/T 20273−200《信息安全技术数据库管理系统安全技术要求》,都有对数据库提出安全审计的要求。数据库审计技术⽤于监视并记录对数据库服务器的各类操作⾏为,通过对⽹络数据的分析,实时、智能地解析对数据库服务器的各种操作,并记⼊审计数据库中以便⽇后进⾏查询、分析、过滤,实现对⽬标数据库系统⽤户操作的监控和审计。数据库审计技术可以监控和审计⽤户对数据库中的数据库表、视图、序列、包、存储过程、函数、库、索引、同义词、快照、触发器等的创建、修改和删除等,分析的内容可以精确到SQL操作语句⼀级;还可以根据设置的规则,智能地判断出违规操作数据库的⾏为,并对违规⾏为进⾏记录、报警。
(四)多级安全数据库技术
多级安全数据库技术是数据库安全⼗分重要的研究领域,其核⼼是通过数据库系统存储和管理不同安全等级的敏感数据,同时通过⾃主访问控制或者强制访问控制机制保持数据的安全性。该项技术在考虑设计和实现⼀个多级安全数据库系统时,依据提供多种密级粒度、确保⼀致性和完备性、实施推理控制、防⽌敏感聚合、进⾏隐蔽通道分析、⽀持多执⾏并发控制等原则,解决多级安全数据库的各种关键问题。
多级安全数据库体系结构是实现多级安全数据库管理系统的基础,在多级安全数据库管理系统体系结构领域,国内外已经进⾏了很多研究,并且提出了⼤量的多级安全数据库体系结构,主要分为三类:TCB⼦集结构(TCB Subset DBMS)、可信主体结构(Trusted Subject DBMS)和完整性锁结构。
TCB(Trusted Computing Base)⼦集结构,使⽤DBMS外的可信计算基础对数据库对象进⾏强制存取控制。该⽅法具有3个特点:
(1)多级数据库管理系统实际上是多个单级数据库管理系统的实例化;
(2)多级数据库及其数据被分解成不同等级的对象保存在操作系统对象中;
(3)多级数据库管理系统有⼀定的访问控制权,但操作系统对于数据库管理系统访问数据的操作实⾏完全访问控制。如图1所⽰。