数据库服务器的安全

我需要寻找哪此类型的安全漏洞呢?

传统的数据库安全系统只侧重于以下几项:用户帐户、作用和对特定数据库目标的操作许可。例如,对表单和存储步骤的访问。必须对数据库系统做范围更广的彻底安全分析,找出所有可能领域内的潜在漏洞,包括以下提到的各项内容。

与销售商提供的软件相关的风险-软件的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和电子商务的规划人员在部署重要商业系统时,都需注意到数据库的安全问题。要想了解的系统的安全状态和发展方向,您就得部署系统,以对数据库服务器做出最彻底的评估,并进行常规的安全评估。所有系统都应该采用信息风险管理原则,以进行监督、检测,对安全漏洞做出响应。