数据库安全包含两层含义:第一层是指系统运行安全,系统运行安全通常受到的威胁如下,一些网络不法分子通过网络,局域网等途径通过入侵电脑使系统无法正常启动,或超负荷让机子运行大量算法,并关闭cpu风扇,使cpu过热烧坏等破坏性活动; 第二层是指系统信息安全,系统安全通常受到的威胁如下,黑客对数据库入侵,并盗取想要的资料。数据库系统的安全特性主要是针对数据而言的,包括数据独立性、数据安全性、数据完整性、并发控制、故障恢复等几个方面。
安全问题据Verizon2012年的数据泄露调查分析报告和对发生的信息安全事件技术分析,总结出信息泄露呈现两个趋势:
(1)黑客通过B/S应用,以Web服务器为跳板,窃取数据库中数据;传统解决方案对应用访问和数据库访问协议没有任何控制能力,比如:SQL注入就是一个典型的数据库黑客攻击手段。
(2)数据泄露常常发生在内部,大量的运维人员直接接触敏感数据,传统以防外为主的网络安全解决方案失去了用武之地。
数据库在这些泄露事件成为了主角,这与我们在传统的安全建设中忽略了数据库安全问题有关,在传统的信息安全防护体系中数据库处于被保护的核心位置,不易被外部黑客攻击,同时数据库自身已经具备强大安全措施,表面上看足够安全,但这种传统安全防御的思路,存在致命的缺陷1。
防护手段Xsecure产品系列实现对数据库的全方位防护,需要覆盖数据库的事前、事中、事后安全;覆盖数据库应用安全、维护安全、使用安全和存储安全;是最全面的数据库防泄露产品。
事前诊断数据库漏洞扫描系统Xsecure-DBScan,是一款帮助用户对当前的数据库系统进行自动化安全评估的专业软件,能有效暴露当前数据库系统的安全问题,提供对数据库的安全状况进行持续化监控,帮助用户保持数据库的安全健康状态。
发现外部黑客攻击漏洞,防止外部攻击:实现非授权的从外到内的检测;模拟黑客使用的漏洞发现技术,在没有授权的情况下,对目标数据库的安全性作深入的探测分析;收集外部人员可以利用的数据库漏洞的详细信息。
分析内部不安全配置,防止越权访问:通过只读账户,实现由内到外的检测;提供现有数据的漏洞透视图和数据库配置安全评估;避免内外部的非授权访问。
监控数据库安全状况,防止数据库安全状况恶化:对于数据库建立安全基线,对数据库进行定期扫描,对所有安全状况发生的变化进行报告和分析。
事中控制数据库保险箱Xsecure-DBCoffer,是一款基于透明加密技术的数据库防泄漏系统,该产品能够实现对数据库中的敏感数据加密存储、访问控制增强、应用访问安全、安全审计以及三权分立等功能。BCoffer基于主动防御机制,可以防止明文存储引起的数据泄密、突破边界防护的外部黑客攻击、内部高权限用户的数据窃取、逃开应用系统非法访问数据库,从根源上防止敏感数据泄漏。DBCoffer通过独创的、已获专利的三层视图技术和密文索引等核心技术,突破了传统数据库安全加固产品的技术瓶颈,真正实现了数据高度安全、应用完全透明、密文高效访问。
事后分析数据库防火墙系统Xsecure-DBFirewall,是一款基于数据库协议分析与控制技术的数据库安全防护系统。DBFirewall基于主动防御机制,实现数据库的访问行为控制、危险操作阻断、可疑行为审计;通过SQL协议分析,根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操作,形成数据库的外围防御圈,实现SQL危险操作的主动预防、实时审计;面对来自于外部的入侵行为,提供SQL注入禁止和数据库虚拟补丁包功能;通过虚拟补丁包,数据库系统不用升级、打补丁,即可完成对主要数据库漏洞的防控。
特征数据库系统的安全特性主要是针对数据而言的,包括数据独立性、数据安全性、数据完整性、并发控制、故障恢复等几个方面。下面分别对其进行介绍
数据独立性数据独立性包括物理独立性和逻辑独立性两个方面。物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的;逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。
数据安全性操作系统中的对象一般情况下是文件,而数据库支持的应用要求更为精细。通常比较完整的数据库对数据安全性采取以下措施:
(1)将数据库中需要保护的部分与其他部分相隔。
(2)采用授权规则,如账户、口令和权限控制等访问控制方法。
(3)对数据进行加密后存储于数据库。
数据完整性数据完整性包括数据的正确性、有效性和一致性。正确性是指数据的输入值与数据表对应域的类型一样;有效性是指数据库中的理论数值满足现实应用中对该数值段的约束;一致性是指不同用户使用的同一数据应该是一样的。保证数据的完整性,需要防止合法用户使用数据库时向数据库中加入不合语义的数据。
并发控制如果数据库应用要实现多用户共享数据,就可能在同一时刻多个用户要存取数据,这种事件叫做并发事件。当一个用户取出数据进行修改,在修改存入数据库之前如有其它用户再取此数据,那么读出的数据就是不正确的。这时就需要对这种并发操作施行控制,排除和避免这种错误的发生,保证数据的正确性。
故障恢复由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。
安全策略数据库的安全配置在进行安全配置之前,首先必须对操作系统进行安全配置,保证操作系统处于安全状态。然后对要使用的操作数据库软件(程序)进行必要的安全审核,比如对ASP、PHP等脚本,这是很多基于数据库的Web应用常出现的安全隐患,对于脚本主要是一个过滤问题,需要过滤一些类似“,; @ /”等字符,防止破坏者构造恶意的SQL语句。接着,安装SQL Server2000后请打上最新SQL补丁SP4。
SQL Server的安全配置
1.使用安全的密码策略
把密码策略摆在所有安全配置的第一步,请注意,很多数据库账号的密码过于简单,这跟系统密码过于简单是一个道理。对于sa更应该注意,同时不要让sa账号的密码写于应用程序或者脚本中。健壮的密码是安全的第一步,建议密码含有多种数字字母组合并9位以上。SQL Server2000安装的时候,如果是使用混合模式,那么就需要输入sa的密码,除非您确认必须使用空密码,这比以前的版本有所改进。同时养成定期修改密码的好习惯,数据库管理员应该定期查看是否有不符合密码要求的账号。
2.使用安全的账号策略
由于SQL Server不能更改sa用户名称,也不能删除这个超级用户,所以,我们必须对这个账号进行最强的保护,当然,包括使用一个非常强壮的密码,最好不要在数据库应用中使用sa账号,只有当没有其他方法登录到 SQL Server 实例(例如,当其他系统管理员不可用或忘记了密码)时才使用 sa。建议数据库管理员新建立个拥有与sa一样权限的超级用户来管理数据库。安全的账号策略还包括不要让管理员权限的账号泛滥。
SQL Server的认证模式有Windows身份认证和混合身份认证两种。如果数据库管理员不希望操作系统管理员来通过操作系统登录来接触数据库的话,可以在账号管理中把系统账号“BUILTIN\Administrators”删除。不过这样做的结果是一旦sa账号忘记密码的话,就没有办法来恢复了。很多主机使用数据库应用只是用来做查询、修改等简单功能的,请根据实际需要分配账号,并赋予仅仅能够满足应用要求和需要的权限。比如,只要查询功能的,那么就使用一个简单的public账号能够select就可以了。
3.加强数据库日志的记录
审核数据库登录事件的“失败和成功”,在实例属性中选择“安全性”,将其中的审核级别选定为全部,这样在数据库系统和操作系统日志里面,就详细记录了所有账号的登录事件。请定期查看SQL Server日志检查是否有可疑的登录事件发生,或者使用DOS命令。
4.管理扩展存储过程
对存储过程进行大手术,并且对账号调用扩展存储过程的权限要慎重。其实在多数应用中根本用不到多少系统的存储过程,而SQL Server的这么多系统存储过程只是用来适应广大用户需求的,所以请删除不必要的存储过程,因为有些系统的存储过程能很容易地被人利用起来提升权限或进行破坏。如果您不需要扩展存储过程Xp_cmdshell请把它去掉。使用这个SQL语句:
use master
sp_dropextendedproc 'Xp_cmdshell'
Xp_cmdshell是进入操作系统的最佳捷径,是数据库留给操作系统的一个大后门。如果您需要这个存储过程,请用这个语句也可以恢复过来。
sp_addextendedproc 'xp_cmdshell', 'xpSQL70.dll'
如果您不需要请丢弃OLE自动存储过程(会造成管理器中的某些特征不能使用)。
这些过程如下: Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop
去掉不需要的注册表访问的存储过程,注册表存储过程甚至能够读出操作系统管理员的密码来,命令如下:
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue
Xp_regenumvalues Xp_regread Xp_regremovemultistring
Xp_regwrite
还有一些其他的扩展存储过程,也最好检查检查。在处理存储过程的时候,请确认一下,避免造成对数据库或应用程序的伤害。
5.使用协议加密
SQL Server 2000使用的Tabular Data Stream协议来进行网络数据交换,如果不加密的话,所有的网络传输都是明文的,包括密码、数据库内容等,这是一个很大的安全威胁。能被人在网络中截获到他们需要的东西,包括数据库账号和密码。所以,在条件容许情况下,最好使用SSL来加密协议,当然,您需要一个证书来支持。
6.不要让人随便探测到您的TCP/IP端口
默认情况下,SQL Server使用1433端口监听,很多人都说SQL Server配置的时候要把这个端口改变,这样别人就不会轻易地知道使用的什么端口了。可惜,通过微软未公开的1434端口的UDP探测可以很容易知道SQL Server使用的什么TCP/IP端口。不过微软还是考虑到了这个问题,毕竟公开而且开放的端口会引起不必要的麻烦。在实例属性中选择TCP/IP协议的属性。选择隐藏 SQL Server实例。如果隐藏了SQL Server实例,则将禁止对试图枚举网络上现有的 SQL Server实例的客户端所发出的广播作出响应。这样,别人就不能用1434来探测您的TCP/IP端口了(除非用Port Scan)。
7.修改TCP/IP使用的端口
请在上一步配置的基础上,更改原默认的1433端口。在实例属性中选择网络配置中的TCP/IP协议的属性,将TCP/IP使用的默认端口变为其他端口。
8.拒绝来自1434端口的探测
由于1434端口探测没有限制,能够被别人探测到一些数据库信息,而且还可能遭到DoS攻击让数据库服务器的CPU负荷增大,所以对Windows 2000操作系统来说,在IPSec过滤拒绝掉1434端口的UDP通信,可以尽可能地隐藏您的SQL Server。
9.对网络连接进行IP限制
SQL Server 2000数据库系统本身没有提供网络连接的安全解决办法,但是Windows 2000提供了这样的安全机制。使用操作系统自己的IPSec可以实现IP数据包的安全性。请对IP连接进行限制,只保证自己的IP能够访问,也拒绝其他IP进行的端口连接,对来自网络上的安全威胁进行有效的控制。
上面主要介绍的一些SQL Server的安全配置,经过以上的配置,可以让SQL Server本身具备足够的安全防范能力。当然,更主要的还是要加强内部的安全控制和管理员的安全培训,而且安全性问题是一个长期的解决过程,还需要以后进行更多的安全维护。
控制方法安全性控制是指要尽可能地杜绝所有可能的数据库非法访问。每种数据库管理系统都会提供一些安全性控制方法供数据库管理员选用,以下是常用的几种方法。
用户标识与鉴别
授权
视图定义与查询修改
数据加密
安全审计2
安全威胁拖库现象频发,黑客盗取数据库的技术在不断提升。虽然数据库的防护能力也在提升,但相比黑客的手段来说,单纯的数据库防护还是心有余而力不足。数据库审计已经不是一种新兴的技术手段,但是却在数据库安全事件频发给我们以新的启示。数据库受到的威胁大致有这么几种:
内部人员错误
数据库安全的一个潜在风险就是“非故意的授权用户攻击”和内部人员错误。这种安全事件类型的最常见表现包括:由于不慎而造成意外删除或泄漏,非故意的规避安全策略。在授权用户无意访问敏感数据并错误地修改或删除信息时,就会发生第一种风险。在用户为了备份或“将工作带回家”而作了非授权的备份时,就会发生第二种风险。虽然这并不是一种恶意行为,但很明显,它违反了公司的安全策略,并会造成数据存放到存储设备上,在该设备遭到恶意攻击时,就会导致非故意的安全事件。例如,笔记本电脑就能造成这种风险。
社交工程
由于攻击者使用的高级钓鱼技术,在合法用户不知不觉地将安全机密提供给攻击者时,就会发生大量的严重攻击。这些新型攻击的成功,意味着此趋势在 2012年继续。在这种情况下,用户会通过一个受到损害的网站或通过一个电子邮件响应将信息提供给看似合法的请求。应当通知雇员这种非法的请求,并教育他们不要做出响应。此外,企业还可以通过适时地检测可疑活动,来减轻成功的钓鱼攻击的影响。数据库活动监视和审计可以使这种攻击的影响最小化。
内部人员攻击
很多数据库攻击源自企业内部。当前的经济环境和有关的裁员方法都有可能引起雇员的不满,从而导致内部人员攻击的增加。这些内部人员受到贪欲或报复欲的驱使,且不受防火墙及入侵防御系统等的影响,容易给企业带来风险。
错误配置
黑客可以使用数据库的错误配置控制“肉机”访问点,借以绕过认证方法并访问敏感信息。这种配置缺陷成为攻击者借助特权提升发动某些攻击的主要手段。如果没有正确的重新设置数据库的默认配置,非特权用户就有可能访问未加密的文件,未打补丁的漏洞就有可能导致非授权用户访问敏感数据。
未打补丁的漏洞
如今攻击已经从公开的漏洞利用发展到更精细的方法,并敢于挑战传统的入侵检测机制。漏洞利用的脚本在数据库补丁发布的几小时内就可以被发到网上。当即就可以使用的漏洞利用代码,再加上几十天的补丁周期(在多数企业中如此),实质上几乎把数据库的大门完全打开了。
高级持续威胁
之所以称其为高级持续性威胁,是因为实施这种威胁的是有组织的专业公司或政府机构,它们掌握了威胁数据库安全的大量技术和技巧,而且是“咬定青山不放松”“立根原在"金钱(有资金支持)"中”,“千磨万击还坚劲,任尔东西南北风”。这是一种正甚嚣尘上的风险:热衷于窃取数据的公司甚至外国政府专门窃取存储在数据库中的大量关键数据,不再满足于获得一些简单的数据。特别是一些个人的私密及金融信息,一旦失窃,这些数据记录就可以在信息黑市上销售或使用,并被其它政府机构操纵。鉴于数据库攻击涉及到成千上万甚至上百万的记录,所以其日益增长和普遍。通过锁定数据库漏洞并密切监视对关键数据存储的访问,数据库的专家们可以及时发现并阻止这些攻击。
UNIX 系统管理员指定一位系统的UNIX系统管理员。此人员的职务是管理UNIX环境,包括使用者、应用程序、档案系统及装置。使用者的管理注重在建立适当安全性的使用者帐号上,及定期去除不再使用的帐号。UNIX系统管理员通常必须负责维持根密码(root password)的安全性。UNIX系统管理员必须负责执行企业的安全政策(security policy)及5300系统上的标准3。
本词条内容贡献者为:
肖志勇 - 副教授 - 江南大学