2.2 外围应用配置
SQL Server 2008具有许多特性,其中许多是以关闭状态安装的。例如,CLR集成、数据库镜像、调试、Service Broker 和邮件功能都安装了,但是没有运行也不可用,除非你明确地将它们打开或是配置它们。这个设计与SQL server所默认的安全中的外围应用范例的缩减是一致的,它导致降低了攻击外围应用。如果一个特性不可用或没有开启,那么一个攻击者是不能利用它的。
要权衡的是,要跟踪所有开启特性的Transact-SQL语句是很耗时的。甚至当你发现sp_configure system存储过程做了许多你所需要的,但仍然需要编写非原有的代码,如下所示:
以下是引用片段: sp_configure ''show advanced options'', 1 reconfigure with override sp_configure ''clr enabled'', 1 |
有许多配置选项要花费时间来编写这种代码——特别是当你在企业中部署了多个SQL server实例的时候。SQL Server 2008包含一个基于政策的管理技术,叫做声明式管理框架(Declarative Management Framework,DMF)。DMF提供了一些配置分面,其中每一个都定义了一组相关的配置设置或属性。你可以使用这些分面来创建指定想要的配置选项的设置的条件,并将这些条件作为政策实施到企业中的SQL Server实例上。
在SQL Server 2008中所包含的分面的其中之一是Surface Area 分面,你可以使用这个分面来定义一个控制许多SQL Server 2008特性的状态的政策。通过创建一个定义你想要的用于你的服务器的surface area设置的政策,你可以很容易地在你公司里的所有SQL Server实例上实施最小限度的surface area,并且可以降低恶意攻击的可能性。
3. 验证
Microsoft部署SQL Server 2000时是当数据和服务器要求保护但不需要抵挡如今在网络上所看到的攻击的时候。基本的验证问题仍然相同,“你是谁、你怎样证明?”但是SQL Server 2008提供更多强大的验证特性,它们提供了更好的支持,在服务器的安全防卫上让好人通过,把坏人阻挡在外。
SQL Server 验证提供了对不是基于Windows的客户端或应用程序的验证,它使用一个简单的连接字符串,其中包含用户ID和密码。尽管这个登陆易于使用并在应用程序开发人员中很流行,但是它不像Windows 验证一样安全,是不建议使用的验证机制。
SQL Server 2008改进了SQL Server验证的选项。首先,它支持默认情况下通过使用SQL产生的证书进行路线加密。管理员不需要获得和安装一个有效的SSL证书来确保SQL证书流程的路线是安全的。有了SQL Server 2008 自动生成这些证书,当传送登陆包时它在默认情况下自动加密路线。这发生在客户端是SQL Server 2005级别或以上的情况下。
注意 当攻击者在网络上搜寻时,SQL Server产生的本地证书防止被动的中间人攻击。为了更有效地保护你的系统免受中间人攻击,你应该部署和使用客户端信任的证书。
SQL Server 2008进一步地加强了SQL Server验证,因为默认情况下,在与Windows 2003 server或以上版本结合使用时,数据库引擎目前采用Windows Group Policy用于密码复杂度、密码期限和在SQL登陆中的账户锁定。这意味着你可以对你的SQL Server帐户实施Windows密码政策。
3.1 实施密码政策
对于SQL Server 2008,密码政策的实施是内嵌到服务器中的。使用NetValidatePasswordPolicy()API,它是Windows Server 2003上的NetAPI32 库的一部分,SQL Server 在验证期