欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

SQL Server安全问题案例研究

程序员文章站 2022-03-31 09:32:15
编者按:本系列关于SQL Server安全的文章共分四部分,本文是第一部分。     数据库备份被盗了,病毒攻击了服务器,数据库有未经授权的更改——如果S...
编者按:本系列关于SQL Server安全的文章共分四部分,本文是第一部分。

 

  数据库备份被盗了,病毒攻击了服务器,数据库有未经授权的更改——如果SQL Server安全保护设置宽松的话,这些事情都会发生。

 

  数据库技术本质上就是许多信息系统的组件,这是由于它们用来存储大量敏感企业数据而决定的,比如客户信息和其它机密商业数据。正因如此,把像SQL Server这样的数据库称为任何组织最有价值的资产并不为过,这也正是数据库在内部和外部攻击面前必须确保安全的原因。

 

  不幸的是,事实并非如此,许多组织仍然发现数据库安全是一个不太受人关注的话题。结果,他们没有全面的数据库安全策略来保护他们的数据库基础设施不受内部和外部攻击。许多数据库甚至不能满足常规法规需求,比如Gramm-Leach-Bliley法案(简称GLBA)、欧洲数据保护联盟(简称EUDPD)、健康保险流通与责任法案(简称HIPAA)、支付卡行业数据安全标准(简称PCI DSS)以及塞班斯法案(简称SOX)。

 

  公司缺乏SQL Server安全策略

 

  XYZ公司是一家大型制药公司,在全球范围内针对小型制药公司销售各种医药产品。因为SQL Server有良好的往绩记录,漏洞和弱点比较少,所以XYZ公司使用SQL Server作为主数据库技术,存储公司的保密数据,比如客户信息、卡信息和员工信息。这些数据是从原始Excel电子表格中移植过来的。近几年来,XYZ公司已经在其所有业务领域获得了显著增长。然而,在过去一年里,该公司却面临巨大舆论压力——泄露客户数据,未经授权访问以及其它造成SQL Server基础设施不安全的原因。

 

  下面是XYZ公司SQL Server基础设施安全漏洞列表:

 

未经授权的更改。

  在过去的一年中,未经授权的数据库变更是其SQL Server基础设施故障的主要因素。这是因为XYZ公司目前没有变更管理流程。未经授权对数据库变更意味着更大的外部威胁,比如来自外部黑客或恶意代码的攻击。

 

  对于XYZ公司SQL Server数据库代码部署,很需要一套文档化而且健全的变更管理流程,因为它可以确保授权变更应用到生产数据库并避免不必要的风险。

 

未授权用户。

  在少数情况下,会有未经授权的用户连续访问XYZ公司的SQL Server数据库。这主要发生在SQL Server实例配置为混合授权模式的情况下,或者“BUILTIN\Administrators”是“系统管理员”角色也有可能发生。经调查,大部分SQL登录(包括用sysadmin(sa)权限的登录)存在漏洞或者空密码,而且用户没有被强制要求定期修改密码。

 

  微软SQL Server安全最佳实践建议你在混合认证模式使用Windows认证,因为SQL Server存储的SQL登录密码是纯文本形式。如果混合模式是为了向后兼容的缘故,那么要确保给sysadmin和所有其它SQL登录账号使用复杂密码。这一点可以通过对sysadmin和所有其它SQL登录用户启用“强制密码过期”和“强制实施密码策略”选项实现。

 

  SQL Server安全最佳实践还推荐对这些账号重命名,因为sysadmin是超级用户,许多黑客都知道这个账号,修改用户名会使得黑客控制攻击更困难。最佳实践还建议不要使用sysadmin管理SQL Server。同时,确保“BUILTIN\Administrators”不是sysadmin角色成员;而要授予sysadmin权限给本地管理员组中的任何账号。

 

SQL注入攻击。

  SQL注入是未经授权访问数据库的另一种方式。那是因为应用程序中的SQL代码允许直接更新表,而且大部分SQL代码参数没有做验证。推荐验证代码参数并用SQL Server存储过程执行所有数据库更新。

 

来宾用户。

  使用与数据库内部用户没有关联的用户登录仍然有可能访问到敏感数据。这是因为这些数据库启用了来宾账户。所以我们要禁用来宾账号。这将确保公共服务器角色不能访问到SQL Server中的用户数据库,除非你明确地赋予了对数据库的访问权限。

 

计算机病毒攻击。

  XYZ公司的SQL Server在前几年已经被计算机病毒攻击了几次。大部分SQL Server安全补丁、修复包以及更新包还没有应用到这些受影响的SQL Server上。微软公司持续发布的安全更新和补丁应该升级上去,这样能保护避免前述问题。

 

使用惯用的TCP/IP端口。

  人们已经注意到大部分服务器攻击情况,黑客使用的是惯用的TCP/IP端口,比如1433和1432。如果条件允许的话,应该修改这些标准端口,可以确保SQL Server安全。

 

数据库备份被盗。

  在过去几个月里,人们已经注意到由于网络安全性不足导致的数据库备份被盗情况。而且,数据已经被盗,从表复制到操作系统文件。XYZ公司接到建议,加强数据库备份安全性,启用透明数据加密。另外,要确保SQL Server实例上的“xp_cmdshell ”和“OPENROWSET ”保持禁用,只有系统管理员能访问这些SQL Server功能特性。

 

缺乏监视。

  目前,XYZ公司SQL Server数据库的SQL Server用户活动并没有被监视起来。很明显,这就为黑客打开了大门,他们可以访问该公司服务器而没有任何后顾之忧。SQL Server提供了各种功能,比如登录审计或者登录触发器,通用遵守准则,ddl触发器,甚至还有专门跟踪SQL Server恶意活动的通知和审计