上,一个完全的数据库安全分析包含的范围宽得多,包括所有可能范围内的漏洞评定。下面是一些类别:
软件风险。软件本身漏洞,错过操作系统补丁,脆弱的服务和不安全的默认配置等。
管理风险。提供的安全选项不正确操作,默认设置,不正确地给其他用户提供权限,以及没有得到许
可的系统配置改变等。
用户行为风险。密码不够长,不确当的数据访问和恶意操作(偷窃数据结构)等。
这些风险类别也同样适用与网络服务、操作系统。当加强数据库安全的时候,所有的因素都应该考虑。
数据库安全——弱点和例子
下面列出一些常用数据库服务器安全漏洞和配置缺陷。
安全特性缺陷。
大多数关系数据库已经存在上 10 年了,都是成熟的产品。不幸的是,IT 和安全专家对网络和操作系统
要求的许多特性在多数关系数据库上还没有被使用。
没有内置一些基本安全策略。
MS SQL Server Sybase Oracle7 Oracle8
帐号锁定 N N N Y
管理员帐号重命名 N N N N
帐号健壮性要求 N N N Y
帐号失效 N N N N
密码失效 N Y Y Y
登陆时间限制 N N N N
由于这些数据库都是“端口性”的,操作系统核心安全机制不提供给数据库的网络连接,
比如 MS SQL Server,可以使用 WINDOWS NT 的安全机制来弥补上面的缺陷,但是,多数运行
MS SQL Server 的环境并不一定都是 100%的 Windows NT。执行又是另一个问题。如果在运行 Oracle 8,
管理员怎么知道这些安全特性正在被使用?
上面列举这些特性连起来,将更加严重。由于系统管理员帐号不能改变(SQL Server 和 Sybase
是“sa”,Oracle 是“system”和“sys”),如果没有设置密码,入侵者就能直接登陆并攻击数据
库服务器,没有任何东西能够阻止他们获得更高权限的系统帐号。
数据库帐号管理。
多数数据库提供的基本安全特性,都没有机制来限制用户必须选择健壮的密码。这就需要更加谨
慎的控制和管理。也有一些额外的功能来管理和保护整个密码表。比如,Oracle 系统有超过 10 个特殊
的默认用户帐号和密码,并且有特定的密码来管理一些数据库操作,比如数据库的启动,控制网络监
听进程和远程数据库登陆特权。许多系统密码都能给入侵者完全访问数据库的机会,更甚的是,有些
就储存在操作系统中的普通文本文件中。比如:
Oracle 内部密码,储存在 strXXX.cmd 文件中,其中 XXX 是 Oracle 系统 ID 和 SID,默认是“ORCL”。
这个密码用于数据库启动进程,提供完全访问数据库资源。这个文件在 Windows NT 中需要设置权限。
Oracle 监听进程密码,保存在文件“listener.ora”(保存着所有的 Oracle 执行密码)中,用于启
动和停止 Oracle 的监听进程。这需要设置一个健壮的密码来代替默认的,并且必须对访问设置权限。入
侵者可以通过这个弱点进行 DOS 攻击。
Oracle 内部密码——“orapw”文件权限控制,Oracle 内部密码和帐号密码允许 SYSDBA 角色保存在
“orapw”文本文件中,该文件的访问权限应该被限制。即使加密,也能被入侵者暴力破解。
这些只是一些例子。密码保护不仅只针对 Oracle,其他数据库系统一样需要。
操作系统后门。
多数数据库系统都有一些特性,来满足数据库管理员,这些也成为数据库主机操作系统的后门。
3.
对于 Sybase 和SQl Server 的帐号“sa”,入侵者可以执行“扩展存储过程”来获得系统权限。只要
登陆作为“sa”,就可以使用扩展存储过程 xp_cmdshell ,这允许 Sybase 和 SQL Server 用户执行操作系
统命令,就好象在运行操作系统的命令行模式。比如,下面可以添加一个系统帐号“refdom”,
密码是"nopassword",并且添加到 administrators 组中:
xp_cmdshell 'net user refdom nopassword /add'
go
xp_cmdshell 'net localgroup /add administrators refdom'
go
这就是因为 SQL Server 用 Windows NT 的本地帐号“localsystem”来运行的命令。黑客还可以使用
xp_regread 来读取加密的 SAM 密码。然后再暴力破解。
xp_regread
'HKEY_LOCAL_MACHINE','SECURITYSAMDomainsAccount','F'
;
注意,能读出加密的密码是 NT 的"administrator"帐号也不能做的。SQL Server 能读出来同样是使用
的“LocalSystem”帐号。
Oracle 有这样的特性,可以获得操作系统的文件访问权限。比如,UTL_FILE 允许用户读和写文件,
UTL_FILE_DIR 可以用来设置用户使用 UTL_FILE 还写文件。
审核。
主要信息和时间能被关系数据库的认证系统很详细地记录下来,但是,这只能在正确地使用和配置
下才能起到安全和报警作用。这些功能能提前报警入侵者正在威胁数据库服务器,并且能探测和修复破坏。
木马的威胁。
数据库管理员需要特别小心,一个著名的木马能够密码改变存储过程修改密码,而且能通知入侵者。
比如,可以添加几行到 sp_password 中,记录新帐号到库表中,通过 EMAIL 发送这个密码,或者写到文件中
以后使用。这个存储过程不断地获得密码,直到弄到"sa"的密码。
总之,安全专家,DBA 等等都需要注意数据库安全就象他们配置系统一样。