保护数据库服务器要加强数据库安全数据应用
数据库是电子商务、金融以及ERP系统的基础,通常都保存着重要的商业伙伴和客户信息。不管
数据完整性以及关系到系统安全这些在数据库中非常重要,但是数据库通常没有象操作系统和网络这样在安全性上受到重视。数据完整性和合法存取会受到很多方面的安全威胁,包括密码策略、系统后门、数据库操作以及本身的安全方案。
为什么数据库安全很重要?
1、保护敏感信息和数据资产
大多数企业、组织以及政府部门的电子数据都保存在各种数据库中。他们用这些数据库保存一些
个人资料,比如员工薪水、医疗记录、员工个人资料等等。数据库服务器还掌握着敏感的金融数据。
包括交易记录、商业事务和帐号数据,战略上的或者专业的信息,比如专利和工程数据,甚至市场计划等等应该保护起来防止竞争者和其他非法者获取的资料。数据库服务器还保存着一些有关员工详细资料的东西比如银行帐号、信用卡号码,以及一些商业伙伴的资料。
2、数据库同系统紧密相关并且更难正确地配置和保护
数据库应用程序通常都同操作系统的最高管理员密切相关。比如Oracle,Sybase,MS SQL Server数
据库系统都有下面这些特点:用户帐号和密码,认证系统,授权模块和数据对象的许可控制,内置命令(存储过程),特定的脚本和程序语言(通常派生自SQL),中间件,网络协议,补丁和服务包,数据库管理和开发工具。许多DBA都全日工作来管理这些复杂的系统。但是,安全漏洞和不当的配置通常会造成严重的后果,而且都难以发现。而且一些安全公司也忽略数据库安全,数据专家又不把安全作为主要职责。“网络安全适应性”哲学——把安全当作持续过程而不是一次性的检查,还没有被数据库管理员认可。
3、网络和操作系统的安全被认为非常重要,但是却不这样对待数据库服务器
安全专家认为这是的一种普遍现象,他们都认为只要把网络和操作系统的安全搞好了,那么所有
的应用程序也就安全了。现在的数据库系统都有很多方面被误用或者漏洞影响到安全。而且这些关系数据库都是“端口”型的,这就表示任何人都能够用分析工具试图连接到数据库上,而绕过操作系统的安全机制。比如:Oracle7.3和Oracle8使用的端口是1521和1526。多数数据库系统也有公开的默认帐号和默认密码。这两个特性大大地危害着数据库的安全。
4、少数数据库安全漏洞不光威胁数据库的安全,也威胁到操作系统和其他可信任的系统。
这也是为什么数据库安全很重要的原因:有些数据库提供机制威胁着网络安全低层。比如,某公司的数据库里面保存着所有技术文档、手册和白皮书,不认为数据库的安全非常重要。即使运行在一个非常安全的操作系统上,入侵者可能通过数据库获得操作系统权限,只需要执行一些内置在数据库中的扩展存储过程。这些存储过程能提供一些执行操作系统命令的接口,而且能访问所有的系统资源,如果这个数据库服务器还同其他服务器建立着信任关系,那么,入侵者就能够对整个域机器的安全产生严重威胁。
5、数据库是电子商务、ERP系统和其他重要的商业系统的基础。
许多电子交易和电子商务的焦点都放在WEB服务、JAVA和其他技术上,那么对于以关系数据库为基础的客户系统和B2B系统,数据库就显得更加重要。安全将直接关系到系统可靠性、数据事务完整性,和保密性。系统如果出现问题,将不仅仅对交易产生影响,同时也影响着公司的形象。这些系统需要对所有
合作伙伴和客户信息保密性负责,但是它们又同时是对入侵者开放的。另外,ERP和想SAP R/3这样的管理系统都是建立在一些基本数据库系统上的。安全问题将直接同维护时间、系统完整性和客户信任密切相关联。
需要注意那些安全漏洞?
传统数据库安全主要集中在用户帐号、规则和操作许可(比如对表和存储过程的访问权)上。而实际上,一个完全的数据库安全分析包含的范围宽得多,包括所有可能范围内的漏洞评定。下面是一些类别:
软件风险。软件本身漏洞,错过操作系统补丁,脆弱的服务和不安全的默认配置等。
管理风险。提供的安全选项不正确操作,默认设置,不正确地给其他用户提供权限,以及没有得到许可的系统配置改变等。
用户行为风险。密码不够长,不确当的数据访问和恶意操作(偷窃数据结构)等。
这些风险类别也同样适用与网络服务、操作系统。当加强数据库安全的时候,所有的因素都应该考虑。
数据库安全——弱点和例子
下面列出一些常用数据库服务器安全漏洞和配置缺陷。
安全特性缺陷。
大多数关系数据库已经存在上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,其他数据库系统一样需要。
操作系统后门。
多数数据库系统都有一些特性,来满足数据库管理员,这些也成为数据库主机操作系统的后门。
对于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"的密码。