数据库服务器实际上是每一个电子交易、金融和企业资源规划(ERP)系统的基础,它还经常包括来自商业伙伴和客户的敏感信息。尽管这些系统的数据完整性和安全性是相当重要的,但对数据库采取的安全检查措施的级别还比不上操作系统和网络的安全检查措施的级别。许多因素都可能破坏数据的完整性并导致非法访问,这些因素包括复杂程度、密码安全性较差、误配置、未被察觉的系统后门以及自适应数据库安全方法的强制性常规使用等。
数据库安全问题为什么非常重要?
保护系统敏感信息和数字资产不受非法访问。
任何公司的主要电子数字资产都存贮在现代的关系数据产品中。商业机构和政府组织都是利用这些数据库服务器得到人事信息,如员工的工资表,医疗记录等。因此他们有责任保护别人的隐私,并为他们保密。数据库服务器还存有以前的和将来的敏感的金融数据,包括贸易记录、商业合同及帐务数据等。象技术的所有权、工程数据,甚至市场企划等决策性的机密信息,必须对竟争者保密,并阻止非法访问,数据库服务器还包括详细的顾客信息,如财务帐目,信用卡号及商业伙伴的信用信息等。
数据库是个极为复杂的系统,因此很难进行正确的配置和安全维护
数据库服务器的应用相当复杂,掌握起来非常困难-当然竟争者使用的操作系统也是一样的复杂。诸如Oracle、sybase、Microsoft SQL服务器都具有以下特征:用户帐号及密码、校验系统、优先级模型和控制数据库目标的特别许可、内置式命令(存储的步骤或包)、唯一的脚本和编程语言(通常为SQL的特殊衍生语)、middleware、网络协议、补丁和服务包⑶坑辛Φ氖?菘夤芾硎涤贸绦蚝涂?⒐ぞ摺P矶郉BA都忙于管理复杂的系统,所以很可能没有检查出严重的安全隐患和不当的配置,甚至根本没有进行检测。所以,正是由于传统的安全体系在很大程度上忽略了数据库安全这一主题,使数据库专业人员也通常没有把安全问题当作他们的首要任务。“自适应网络安全”的理念-将安全问题看作持续不断的“工作进程”,而不是一次性的检查-并未被大多数数据库管理者所接受。
保障数据库服务器上的网络和操作系统数据安全是至关重要的,但这些措施对于保护数据库服务器的安全还很不够。
在许多资深安全专家中普遍存在着一个错误概念,他们认为:一旦访问并锁定了关键的网络服务和操作系统的漏洞,服务器上的所有应用程序就得到了安全保障。现代数据库系统具有多种特征和性能配置方式,在使用时可能会误用,或危及数据的保密性、有效性和完整性。首先,所有现代关系型数据库系统都是“可从端口寻址的”,这意味着任何人只要有合适的查询工具,就都可与数据库直接相连,并能躲开操作系统的安全机制。例如:可以用TCP/IP协议从1521和1526端口访问Oracle 7.3和8数据库。多数数据库系统还有众所周知的默认帐号和密码,可支持对数据库资源的各级访问。从这两个简单的数据相结合,很多重要的数据库系统很可能受到威协。不幸的是,高水平的入侵者还没有停止对数据库的攻击。
拙劣的数据库安全保障设施不仅会危及数据库的安全,还会影响到服务器的操作系统和其它信用系统。
还有一个不很明显的原因说明了保证数据库安全的重要性-数据库系统自身可能会提供危及整个网络体系的机制。例如,某个公司可能会用数据库服务器保存所有的技术手册、文档和白皮书的库存清单。数据库里的这些信息并不是特别重要的,所以它的安全优先级别不高。即使运行在安全状况良好的操作系统中,入侵者也可通过“扩展入驻程序”等强有力的内置数据库特征,利用对数据库的访问,获取对本地操作系统的访问权限。这些程序可以发出管理员级的命令,访问基本的操作系统及其全部的资源。如果这个特定的数据库系统与其它服务器有信用关系,那么入侵者就会危及整个网络域的安全。
数据库是新型电子交易、企业资源规划(ERP)和其它重要商业系统的基础。
在电子商务、电子贸易的着眼点集中于WEB服务器、Java和其它新技术的同时,应该记住这些以用户为导向和企业对企业的系统都是以Web服务器后的关系数据库为基础的。它们的安全直接关系到系统的有效性、数据和交易的完整性、保密性。系统拖延效率欠佳,不仅影响商业活动,还会影响公司的信誉。不可避免地,这些系统受到入侵的可能性更大,但是并未对商业伙伴和客户敏感信息的保密性加以更有效的防范。此外,ERP和管理系统,如ASPR/3和PeopleSoft等,都是建立在相同标准的数据库系统中。无人管理的安全漏洞与时间拖延、系统完整性问题和客户信任等有直接的关系。
我需要寻找哪此类型的安全漏洞呢?
传统的数据库安全系统只侧重于以下几项:用户帐户、作用和对特定数据库目标的操作许可。例如,对表单和存储步骤的访问。必须对数据库系统做范围更广的彻底安全分析,找出所有可能领域内的潜在漏洞,包括以下提到的各项内容。
与销售商提供的软件相关的风险-软件的BUG、缺少操作系统补丁、脆弱的服务和选择不安全的默认配置。
与管理有关的风险 -可用的但并未正确使用的安全选项、危险的默认设置、给用户更多的不适当的权限,对系统配置的未经授权的改动。
与用户活动有关的风险-密码长度不够、对重要数据的非法访问以及窃取数据库内容等恶意行动。
以上各类危险都可能发生在网络设备、操作系统或数据库自身当中。对数据库服务器进行安全保护时,都应将这些因素考虑在内。
数据库安全-漏洞区域及示例
在重要数据库服务器中,还存在着多种数据库服务器的漏洞和错误配置。下面列出了几个实例。
安全特征不够成熟-绝大多数常用的关系数据库系统已经存在了十多年之久,并且具有强大的特性,产品非常成熟。但不幸的是,IT及安全专业人士认为理所当然应该具有的许多特征,在操作系统和现在普遍使用的数据库系统中,并没有提供。
非内建式数据库标准安全性能
MS SQL Server Sybase Oracle 7 Oracle 8
帐户锁定设备 no no no yes
重命名管理帐户 no no no no
要求严密的口令 no no no yes
陈旧的帐户 no no no no
密码失效 no yes no yes
登录时间限制 no no no no
例如,上表列出了大多数IT专业人士期望或要求操作系统所应具备的特性,但在数据库服务器的标准安全设施中并未出现。由于这些数据库都可进行端口寻址的,操作系统的核心安全机制并未应用到与网络直接联接的数据库中。一些产品,例如Microsoft SQL Server, 都可利用功能更加强大的Windows NT安全机制去发现上面提到的安全漏洞。但是,考虑到兼容性问题(运行环境并不全是Windows NT),所以大多数依然执行MS SQL Server的安全标准。而实施则是另外一回事了。如果公司实用的是Oracle 8,管理员如何能知道是否真地实施了安全特性?是否一直在全公司中得到实施?
这几项特性相结合,使得与之相关的问题更加严峻。由于系统管理员的帐号是不能重命名的(SQL和Sybase是“sa”,对于Oracle是“System”和“sys”),如果没有密码封锁可用或已配置完毕,入侵者就可以对数据库服务器发动强大字典式登录进攻,最终能破解密码,有什么能够挡住他们对服务器耐心,持久的高水平攻击呢?
数据库密码的管理-在多数数据库系统提供的安全标准中,没有任何机制能够保证某个用户正在选择有力的-或任意的-密码。这一基本的安全问题需要细心的监督。此外还需要对全部密码列表进行管理和安全检查。例如,Oracle数据库系统具有十个以上地特定地默认用户帐号和密码,此外还有用于管理重要数据库操作的唯一密码,如对Oracle数据库开机程序的管理、访问网络的听众过程以及远程访问数据库的权限等。如果安全出现了问题,这些系统的许多密码都可让入侵者对数据库进行完全访问,这些密码甚至还被存储在操作系统的普通文本文件里。下面有几个示例:
Oracle Internal 密码-Oracle内部密码存放在文件名为“strXXX.cmd”的文本文件中,XXX是Oracle系统的ID或SID,默认值为“ORCL”。用在Oracle数据库的启动过程中,要用到Oracle Internet密码,具有随意访问数据库资源的权力。这个文件应妥善保管,以用于基于Windows NT的ORACLE程序。
Oracle监听程序过程密码-用于起动并停止Oracle监听程序过程的密码,该过程可将所有的新业务路由到系统上合适的Oracle例子中,需选择一个保密性强的密码替换系统的默认值,使用许可必须在“listener.ora”文件中得到保护,该文件存贮了Oracle所有的使用密码。对密码的不当访问可能会使入侵者对基于Oracle的电子交易站点进行拒绝服务攻击。
Oracle内部密码 -“orapw”文件许可控制-Oracle内部密码和由SYSDBA授权的帐号密码存贮在“Orapw”文本文件中。尽管文件已被加密,但在ORACLE的UNIX和Windows NT的程序中,还是要限制该文件的使用权限。如果该文件被访问,那么遭解密的文件很容易遭到强有力的攻击。
这些例子说明了管理员、系统密码和帐号是何等的重要,它们都可能会遭到意想不到的攻击方法的攻击。注意密码管理问题决不仅限于Oracle数据库,几乎所有主要数据库提供商的产品都有这种问题。
操作系统的后门-许多数据库系统的特征参数尽管方便了DBA,但也为数据库服务器主机操作系统留下了后门。
如上所述,对Sybase或SQL服务器的“sa”密码造成危害的入侵者有可能利用“扩展入驻程序”,得到基本操作系统的使用权限。以“sa”的身份登录,入侵者使用扩展入驻程序xp–cmdshell,该程序允许Sybase或SQL服务器的用户运行系统指令,就象该用户在服务器控制台上运行指令一样。例如,可实用下列SQL指令添加一个Windows NT帐号,帐号名为“hacker1”,密码为“nopassoword”,并把“hacker1”添加到“Administrators”组:
xp-cmdshell ‘net user hacker1 nopassword/ADD’
go
xp-comdshell ’net localgroup/ADD Administrators hacker1’
go
现在这个非法入侵者就成了Windows NT的管理员了(我们只能祈祷这个SQL服务器不是域控制器)。这个简单的攻击之所以成功,是因为命令被提交给实用Windows NT帐号的操作系统,而MSSQLServer的服务就运行在这个帐号下。在默认情况下,这个帐号就是“LocalSystem”帐号---本地Windows NT系统中最有效力的帐号。另一个途径是黑客可能使用SQL服务器,利用入驻程序xp-regread从注册表中读出加密的Windows NT SAM密码,对操作系统的安全造成威胁。由于有几种免费的Windows NT密码攻击器软件,因此保管好加密的Windows NT密码的安全变得格外重要。以下例子说明了入侵者是怎样得到信息的:
xp-regread’HKEY–LOCAL–MACHINE’,’SECURITYSAMDomainsAccount’,’F’
注意,从注册表中读出加密密码是一件本地Windows NT管理员帐号都无法做到的事。SQL服务器之所以能够做到,是因为默认方式运行的SQL服务使用的恰恰就是“LocalSystem”帐号。
Oracle数据库系统还具有很多有用的特征,可用于对操作系统自带文件系统的直接访问。例如在合法访问时,UTL_FILE软件包允许用户向主机操作系统进行读写文件的操作。UTL_FILE_DIR简档变量很容易配置错误,或被故意设置为允许Oracle用户用UTL_FILE软件包在文件系统的任何地方进行写入操作,这样也对主机操作系统构成了潜在的威胁。
校验-关系数据库系统的校验系统可以记录下信息和事件,从基本情况到任一细节,无一遗漏。但是校验系统只在合理使用和配置的前提下,才能提供有用的安全防范和警告信息。当入侵者正在试图侵入特定的数据库服务器时,这些特征可及早给出警告信息,为检测和弥补损失提供了宝贵的线索。
特洛伊木马程序-尽管人们知道操作系统中的特洛伊木马程序已经有好几年了,但是数据库管理员还需注意到木马程序带给系统入驻程序的威胁。一个著名的特洛伊木马程序修改了入驻程序的密码,并且当更新密码时,入侵者能得到新的密码。例如,某个个人可以在sp–password系统入驻程序中添加几行命令,就可在表单中增加新的密码,用e-mail传递密码或将密码写入外部文件以备日后使用。这一办法可连续获取密码,直到入侵者得到的“sa”密码被更换-使得更深层的入侵未被察觉。一个入侵者或心怀不满的雇员只需进入系统一次,放置好特洛伊木马后就可得到以后的一系列密码。
总结
安全专业人士、校验员、DBA和电子商务的规划人员在部署重要商业系统时,都需注意到数据库的安全问题。要想了解的系统的安全状态和发展方向,您就得部署系统,以对数据库服务器做出最彻底的评估,并进行常规的安全评估。所有系统都应该采用信息风险管理原则,以进行监督、检测,对安全漏洞做出响应。