博威---云架构决胜云计算

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4050|回复: 6

保证数据库服务器的安全

[复制链接]
发表于 2007-10-9 11:58:43 | 显示全部楼层 |阅读模式
保证数据库服务器的安全更新日期: 2004年04月12日

本页内容
本模块内容
目标
适用范围
如何使用本模块
威胁与对策
保证服务器安全的方法
SQL Server 安装需考虑的事项
SQL Server 安装建议
保证数据库服务器安全的步骤
步骤 1:修补程序和更新程序
步骤 2:服务
步骤 3:协议
步骤 4:帐户
步骤 5:文件和目录
步骤 6:共享
步骤 7:端口
步骤 8:注册表
步骤 9:审核和日志
步骤 10:SQL Server 安全机制
步骤 11:SQL Server 登录、用户及角色
步骤 12:SQL Server 数据库对象
安全数据库服务器快照
其他考虑事项
保持安全状态
远程管理
小结
其他资源
本模块内容数据库通常包含最为敏感、机密的数据(例如:人力资源部门的个人详细资料、客户详细资料、订单或信用卡详细资料)。必须安全地存储这类数据,并防止其在未经授权的情况下被披露、篡改或恶意使用。即便数据库服务器并未直接与 Internet 相连,仍需防止其遭受利用配置弱点、现有缓冲器溢出或不良开发惯例而实施的攻击。
这些攻击的执行者可以是:
•为利用数据库而使用的不安全的 Web 应用程序。
•具有网络访问权限的不道德的管理员。
•受骗而运行恶意代码的数据库用户。
本模块先介绍了影响数据库服务器运行的一些最常见的威胁,然后基于这种理解来找出防护办法。接下来用实例来说明防护方法,以循序渐进的方式介绍提高数据库服务器安全性的方法。
返回页首
目标使用本模块可以实现:
•学习业已证实了的数据库服务器安全保障方法。
•了解 SQL Server 的安装内容。
•以安全方式安装 SQL Server。
•通过以安全方式配置操作系统来锁定数据库服务器。这包括对服务、修补程序和更新程序、协议、帐户、文件和目录、共享、端口、注册表信息及审核的配置。模块中包含 SQL Server 方案的示例。
•通过记录身份验证请求及以安全方式管理 SQL Server 的内部安全设置(包括登录、数据库用户、角色及数据库对象权限)来锁定 SQL Server 应用程序。
•使用权限最低的帐户运行 SQL Server,仅限管理员使用具有危险性的存储过程。
•部署后保持安全状态。
•了解可应用哪些对策来解除对数据库服务器的常见威胁,包括 SQL 注入、网络窃听、未经授权的服务器访问及密码破解。
返回页首
适用范围本模块适用于下列产品和技术:
•Microsoft Windows Server 2000
•Microsoft .NET Framework 1.1 和 ASP.NET 1.1
•Microsoft SQL Server 2000
返回页首
如何使用本模块为了充分理解本模块内容,请:
•视具体情况对介绍的方法做出相应调整。
•阅读模块 2 威胁与对策。本模块对 Web 应用程序和下游数据库服务器所面临的潜在威胁进行了说明。
•使用快照。本模块后面的安全数据库服务器快照一节列出了安全的数据库服务器所具备的特性。它所反映的是从各种信息来源提炼出的精华,来源中包括客户、行业专家及 Microsoft 的内部开发和支持团队。配置数据库服务器时请以快照表作为参考。
•使用检查表。本指南“检查表”一节中的检查表:保护您的数据库服务器提供了快速参考。使用检查表可以快速评估需要哪些步骤并帮助您逐步完成各个步骤。
•使用“如何”一节。本指南的“如何”一节中包含以下指导性文章,可帮助您按照本模块中的指导进行操作:
•如何:使用 Microsoft 基准安全分析器
•如何:使用 IPSec
•如何:实施修补程序管理
返回页首
威胁与对策攻击者可充分利用各种配置和应用程序级漏洞,以多种方式将数据库服务器作为目标来实施危害。
数据库服务器所面临的主要威胁是:
•SQL 注入
•网络窃听
•未经授权的服务器访问
•密码破解
图 18.1 显示的是一些主要的威胁和漏洞,它们可导致数据库服务器的安全受到威胁并可能使敏感数据被毁或被窃取。
图 18.1
数据库服务器的最大威胁和漏洞
接下来的几节对这些威胁和漏洞做逐一说明。
SQL 注入实施 SQL 注入攻击时,攻击者会充分利用应用程序的输入验证和数据访问代码中的漏洞,使用 Web 应用程序的安全上下文在数据库中随意运行命令。
漏洞
SQL 注入所利用的漏洞包括:
•安全性差的 Web 应用程序输入验证
•不安全、以动态方式构建的 SQL 命令
•应用程序登录数据库所使用的权限过高
•权限脆弱,无法对应用程序登录数据库施加限制
对策
要防范 SQL 注入攻击,请:
•应用程序在于 SQL 查询中使用输入数据前,应先对其进行限制和净化处理。
•使用类型安全的 SQL 参数进行数据访问。这些参数可与存储过程或以动态方式构建的 SQL 命令字符串连用。使用 SQL 参数可确保对输入数据进行类型和长度检查,同时确保在数据库中将注入的代码作为原意数据,而不是可执行语句来对待。
•使用具有限制性数据库访问权限的 SQL Server 登录。理想的做法是:只为数据库中的选定存储过程授予执行权限,不提供直接表访问。
有关防范 SQL 注入攻击的应用程序级对策的详细信息,请参阅模块 14 构建安全的数据访问。
网络窃听大多数应用程序的部署体系结构都包括从数据库服务器中物理分离出数据访问代码。因此,必须防止网络窃听者窃取诸如应用程序特定数据或数据库登录凭据等敏感数据。
漏洞
可加大网络窃听可能性的漏洞包括:
•不安全的通信渠道
•例如,以明文方式向数据库传送凭据:
•使用 SQL 而非 Windows 身份验证
•使用不带服务器证书的 SQL 身份验证
对策
要防范网络窃听,请:
•使用 Windows 身份验证连接到数据库服务器,以避免在网络上发送凭据。
•在数据库服务器上安装服务器证书。这样做可对在网络上传输的 SQL 凭据进行自动加密。
•在 Web 服务器和数据库服务器间使用 SSL 连接,以保护敏感的应用程序数据。这需要数据库服务器证书。
•在 Web 和数据库服务器之间使用通过 IPSec 加密的通道。
未经授权的服务器访问应仅限特定客户端计算机可以直接访问数据库服务器,以防止未经授权的服务器访问。
漏洞
使数据库服务器易遭未经授权的服务器访问的漏洞包括:
•未在外围防火墙封锁 SQL Server 端口
•缺少 IPSec 或 TCP/IP 筛选策略
攻击
经过身份验证的用户和无用户名及密码的用户都可遭受直接连接攻击。例如:
•使用查询分析器 (Isqlw.exe) 或等效的命令行程序 (Osql.exe) 等工具建立到 SQL Server 的直接连接并发出命令。
•如果攻击者向侦听端口发送精心构建的数据包,诸如软件版本等服务器信息便会泄漏。
对策
要防范这些攻击,请:
•确保 SQL Server 端口在外围网络以外不可见。
•在外围网络内,限制未经授权的主机进行直接访问,例如,通过使用 IPSec 或 TCP/IP 筛选器。
密码破解常见的第一种攻击方式是尝试破解众所周知的帐户名称,如 sa(SQL Server 管理员帐户)。
漏洞
导致密码破解的常见漏洞为:
•弱密码或空密码
•包含日常用语的密码
攻击
常见的密码破解攻击包括:
•字典攻击
•手动猜测密码
对策
要防范这些攻击,请:
•为 SQL Server 登录帐户创建符合复杂性要求的密码。
•避免使用包含字典中的常见词的密码。
注意 如果使用 Windows 身份验证,可利用 Windows 的安全策略来强制执行密码复杂性要求。
返回页首
保证服务器安全的方法保证 SQL Server 和 Windows 2000 的安全涉及许多配置更改。最好的方法是将必须进行的更改分为具体的配置类别。使用类别可以系统的方式逐步完成实施安全保证的所有步骤,也可只拣选某一类别,执行特定步骤。
配置类别已将安全保证方法系统化为图 18.2 中所示的类别。
图 18.2
数据库服务器安全类别
图 18.2 中所示的配置类别基于从现场经验、客户验证及对安全部署的研究得出的最佳做法。这些类别的幕后理论基础如下:
•修补程序和更新程序
之所以会有许多的安全威胁,是因为操作系统、服务及应用程序中存在着一些广为公开并为人所熟知的漏洞。如果发现了新漏洞,攻击者往往会在实施首次成功攻击后数小时内,将攻击代码张贴在 Internet 电子布告栏上。要保证数据库服务器的安全,首先要做的便是为服务器的软件安装修补程序和更新程序。可能会存在这样的情况:有漏洞,却没有相应的修补程序。如果是这样,就要了解漏洞的详细情况,以评估攻击风险及采取相应的防范措施。
•服务
服务是攻击者首选的弱点,他们可以充分利用服务的特权和功能来访问服务器,并可能访问其他计算机。某些服务被设计为通过特权帐户来运行。如果这些服务受到危害,攻击者便可执行特权操作。默认情况下,数据库服务器通常不需要启用所有服务。通过禁用不必要及不使用的服务,便可轻松、快捷地减少受攻击面。
•协议
限制客户端计算机连接到数据库服务器所能够使用的协议的范围,并确保可以保证这些协议的安全。
•帐户
限制能够从数据库服务器实施访问的 Windows 服务和用户帐户的数量,使其保持在必要的数量上。使用权限最低的帐户,并在任何情况下均为其设置强密码。用于运行 SQL Server 的最低权限帐户可限制危害 SQL Server 并设法执行操作系统命令的攻击者的危害能力。
•文件和目录
使用 NTFS 文件系统权限来防止程序、数据库和日志文件遭到未经授权的访问。如果结合 Windows 审核功能使用访问控制列表 (ACL),便可在可疑或未经授权的活动发生时检测到它的存在。
•共享
取消所有不必要的文件共享,包括默认的管理共享(如果并非必需)。利用受限的 NTFS 权限保证其余共享的安全。尽管共享可能不会直接暴露于 Internet,但执行有限和安全共享的深层防御策略可降低在服务器遭受危害时的风险。
•端口
不使用的端口在防火墙一级处于关闭状态,但防火墙背后的服务器同样须根据其端口的使用情况对端口实施封锁或限制。对于专用 SQL Server,须封锁除必要的 SQL Server 端口和身份验证所需端口外的所有其他端口。
•注册表
SQL Server 在注册表中保存有许多安全相关设置,包括配置身份验证模式。限制并控制对注册表的访问,以防止有人出于不良动机(例如,为降低数据库服务器的安全性)在未经授权的情况下更新配置设置。
•审核和日志
审核是辨别入侵者和进行中的攻击行为及诊断攻击痕迹的必不可少的工具。综合利用 Windows 和 SQL Server 的审核功能为数据库服务器配置最低级别的审核。
•SQL Server 安全性
许多 SQL Server 安全性设置均可通过“企业管理器”进行控制。这些设置包括身份验证模式、审核级别及用来运行 SQL Server 服务的帐户。为提高安全性,应使用 Windows 身份验证。还应启用 SQL Server 登录审核,并确保通过最低权限帐户来运行 SQL Server 服务。
•SQL Server 登录、用户及角色
SQL Server 2000 通过登录、数据库、用户及角色来管理访问控制。用户(及应用程序)通过 SQL Server 登录获得对 SQL Server 的访问。登录与数据库用户关联,而数据库用户被置于一个或更多个角色中。授予角色的权限决定登录可访问的表及可执行的操作类型。此方法用于创建最低权限数据库帐户,这些帐户只具有执行典型功能所必备的一组权限。
•SQL Server 数据库对象
应复审对 SQL Server 数据库对象(如内置存储过程、扩展存储过程及 cmdExec 作业)的访问能力,并应删除所有示例数据库。
返回页首
SQL Server 安装需考虑的事项采取措施保证数据库服务器的安全前,应了解安装 SQL Server 后 Windows 2000 Server 上存在的其他组件。
SQL Server 的安装内容安装 SQL Server 时,除程序和数据文件外,还会安装多个 Windows 服务。默认情况下,程序及数据文件位于 \Program Files\Microsoft SQL Server\ 目录下。表 18.1 显示了安装时创建的服务和文件夹。
表 18.1:SQL Server 默认安装内容
项目详细资料
服务
MSSQLSERVER
MSSQLServerADHelper
Microsoft Search
SQLSERVERAGENT
文件夹
\program files\Microsoft SQL Server\mssql\binn(程序文件)
\program files\Microsoft SQL Server\mssql\data(数据文件,包括 .mdf、.log 和 .ndf)
\program files\Microsoft SQL Server\80\tools(共享工具/联机丛书)
\program files\Microsoft SQL Server\mssql\logs(错误日志)
\program files\Microsoft SQL Server\mssql\backup(备份文件)
\program files\Microsoft SQL Server\mssql\jobs(临时作业输出文件)

对于命名实例,文件路径中使用了实例名:
\program files\Microsoft SQL Server\MSSQL$InstanceName\binn
\program files\Microsoft SQL Server\MSSQL$InstanceName\data

返回页首
SQL Server 安装建议如果是从头构建新数据库服务器,开始安装 SQL Server 前便有许多事项需要考虑。此外,自定义安装 SQL Server 是个好的做法,因为这样可以选择最安全的安装选项。
运行 SQL Server 安装程序前的准备工作运行 SQL Server 安装程序前,请检查下列各项:
•创建一个具有最低权限的本地帐户,须通过它来运行 SQL Server 服务。安装过程中提示进行服务设置时,请使用此帐户。请不要使用本地系统帐户或管理员帐户。
•确保不要在域控制器上安装 SQL Server。
•确保在 NTFS 格式的分区上安装 SQL Server。
•在非系统卷(操作系统所在卷以外的其他卷)上安装 SQL Server 程序及数据库文件。
安装 SQL Server在生产服务器上安装 SQL Server 时,请选择自定义安装选项。如果执行了该操作,便可有选择性地选择要安装的项目。不应在生产数据库服务器上安装表 18.2 中所列的项目。
表 18.2:自定义安装过程中不安装的项目
工具用途
升级工具
用于升级 SQL Server 6.5 数据库
复制支持
用于复制的脚本及二进制文件。(如果不需要进行复制,请不要安装。)
全文搜索
全文搜索引擎(Microsoft Search 服务)。如果不需要进行全文搜索,请不要安装。
联机丛书
SQL Server 文档
开发工具
C 开发人员所使用的标头和库文件、Microsoft 数据访问 (MDAC)、XML 软件开发工具包 (SDK) 及用于存储过程调试的接口。
代码示例
代码示例用于为开发人员提供指导。

同样,如果不是非要 SQL Server 身份验证不可,请选择 Windows 身份验证模式。Windows 身份验证有下列优点:
•可利用现有域及本地安全策略强制使用强密码和帐户管理最佳做法。
•凭据不在网络上传送。
•应用程序数据库连接不要求提供凭据。
如果选择“混合模式”,请为 sa 帐户创建一个强密码。Sa 帐户是密码猜测和字典攻击的首选目标。
返回页首
保证数据库服务器安全的步骤本节利用在前文中介绍的配置类别,引导您逐步完成保证数据库服务器安全的步骤。这些步骤涵盖 Windows 2000 和 SQL Server 2000,其中的每个步骤均可能包含旨在保证特定区域或功能安全的一项或多项操作。
步骤 1
修补程序和更新程序
步骤 7
端口
步骤 2
服务
步骤 8
注册表
步骤 3
协议
步骤 9
审核和日志
步骤 4
帐户
步骤 10
SQL Server 安全性
步骤 5
文件和目录
步骤 11
SQL Server 登录、用户及角色
步骤 6
共享
步骤 12
SQL Server 数据库对象

返回页首
步骤 1:修补程序和更新程序不及时安装最新的修补程序和更新程序为攻击者提供了充分利用已知漏洞实施攻击的机会。应确认是否使用最新的 Windows 2000 和 SQL Server Service Pack 及更新程序对数据库服务器进行了更新。
要点确保在生产服务器上安装修补程序和更新程序前,先在尽可能模拟生产服务器环境的测试系统上对它们进行测试。
检测缺少的 Service Pack 和更新程序使用 Microsoft 基准安全分析器 (MBSA) 来检测可能缺少的、必要的 Windows 及 SQL Server 更新程序。MBSA 使用一个 XML 文件作为现有更新程序的参考。可在扫描运行时由 MBSA 下载此 XML 文件;也可在本地服务器或从网络服务器下载该文件。
•检测和安装修补程序和更新程序
1.
下载和安装 MBSA。
可从 Microsoft 基准安全分析器上的 MBSA 主页下载和安装。
如果运行 MBSA 时未连接 Internet,MBSA 将无法检索包含 Microsoft 提供的最新安全设置的 XML 文件。如果出现这种情况,请手动下载该 XML 文件,然后将其置于 MBSA 程序目录中。
可从 http://download.microsoft.com/download/xml/security/1.0/nt5/en-us/mssecure.cab 下载该 XML 文件。
2.
双击桌面图标或从“程序”菜单中选择 MBSA 来运行它。
3.
单击“Scan a computer”(扫描计算机)。MBSA 默认扫描本地计算机。
4.
清除“Check for security updates”(检查安全更新)以外的所有复选框。此选项检测缺少的修补程序和更新程序。
5.
单击“Start scan”(开始扫描)。此时将对服务器进行分析。扫描完成时,MBSA 显示一个安全性报告,同时将该报告写入到 %userprofile%\SecurityScans 目录。
6.
下载并安装缺少的更新。
单击每个失败的检查旁的“Result details”(结果详细信息)链接可查看缺少的安全更新的列表。单击后出现的对话框显示 Microsoft 安全公告参考号。单击该参考可了解公告的详细信息及下载更新。
有关使用 MBSA 的详细信息,请参阅本指南“如何”一节中的如何:使用 Microsoft 基准安全分析器。
有关应用 Service Pack、热修补程序和安全修补程序的详细信息,请参阅应用 Service Pack、修补程序和安全修补程序的最佳做法
为 MSDE 安装修补程序必须采用不同于为 SQL Server 完整版安装修补程序的方法来为其 Microsoft Desktop Edition (MSDE) 安装修补程序。有关为 MSDE 安装修补程序的详细信息,请参阅本指南“如何”一节中的如何:保证开发人员工作站的安全。
返回页首
步骤 2:服务要减少受攻击面并确保不受未发现的服务漏洞的影响,请禁用任何非必需的服务。运行那些仍使用最低权限帐户的服务。
本步骤的任务:
•禁用不使用的 SQL Server 服务
•禁用 Microsoft DTC(如并非必需)
注意 要禁用服务,请使用“计算机管理”工具中的“服务 MMC”管理单元将其启动类型设置为“禁用”。
禁用不使用的 SQL Server 服务SQL 服务安装程序运行期间将安装以下四个 Windows 服务:
•MSSQLSERVER(对于命名实例,则为 MSSQL$InstanceName)。此为 SQL Server 数据库引擎,是唯一的强制安装服务。
•SQLSERVERAGENT(对于命名实例,则为 SQLAgent$InstanceName)。可借助此支持服务制定命令执行计划及在出错时通知操作人员。
•MSSQLServerADHelper。它可提供 Active Directory 集成服务,包括数据库实例注册。
•Microsoft Search。它可提供全文搜索能力。在任何情况下均须通过本地系统帐户来运行此服务。
只有 MSSQLSERVER 数据库引擎是必备的。其余服务提供了附加功能,只在特定情况下才需要使用。如并非必需,请禁用这些服务。
注意 不应将 SQL Server 配置为以本地系统帐户或本地 Administrators 组的任何成员帐户运行。有关配置用于运行 MSSQLSERVER 的服务帐户,请参阅步骤 4:帐户
禁用 Microsoft DTC(如并非必需)如果不通过 Microsoft DTC 使用分布式事务,请禁用该服务。
返回页首
步骤 3:协议防止使用不必要的协议可减少受攻击面。配置 SQL Server,使其只支持以 TCP/IP 协议连接的客户端。如果其他协议并非必需,请将它们全部禁用。
本步骤的任务:
•限制 SQL Server 只采用 TCP/IP
•强化 TCP/IP 堆栈
限制 SQL Server 只采用 TCP/IP通过强制使用 TCP/IP,可以利用 IPSec 策略或 TCP/IP 筛选来控制谁可以通过特定端口连接到服务器。要支持 IPSec 或 TCP/IP 筛选,SQL Server 应只支持通过 TCP/IP 进行客户端连接。
•配置 SQL Server 网络协议支持
1.
在 Microsoft SQL Server 程序组中,启动“Server 网络实用工具”。
2.
确保 TCP/IP 是唯一启用的 SQL Server 协议,如图 18.3 中所示。禁用所有其他协议。

图 18.3
禁用“SQL Server 网络实用工具”中除 TCP/IP 外的所有协议
强化 TCP/IP 堆栈Windows 2000 允许对许多参数进行控制,以配置其 TCP/IP 实现。考虑到服务器可用性和特定功能的需要,对其中一些默认值进行了调整。
有关如何强化 TCP/IP 堆栈的信息,请参阅本指南“如何”一节中的如何:强化 TCP/IP 堆栈。
其他考虑事项要进一步提高数据库服务器的安全性,请禁用 NetBIOS 和 SMB。这两种协议均可用于清除主机配置信息,因此应在可能的情况下将它们删除。有关删除 NetBIOS 和 SMB 的详细信息,请参阅模块 16 保护 Web 服务器中的“协议”。
还要考虑使用 IPSec 来限制数据库服务器用来接受传入连接的端口。有关操作方法的详细信息,请参阅本指南“如何”一节中的如何:将 IPSec 用于筛选端口和身份验证。
返回页首
步骤 4:帐户请为用于运行和连接到 SQL Server 的帐户设置最低权限,以限制设法在数据库服务器上执行 SQL 命令的攻击者的危害能力。同时应用强密码策略来防范字典攻击的威胁。
本步骤的任务:
•保证 SQL Server 服务帐户的安全
•删除或禁用不使用的帐户
•禁用 Windows 来宾帐户
•重命名管理员帐户
•强制执行强密码策略
•限制远程登录
•禁用空会话(匿名登录)
保证 SQL Server 服务帐户的安全使用最低权限帐户运行 SQL Server 服务可将设法从 SQL Server 执行操作系统命令的攻击者所造成的危害降至最低水平。不应为 SQL Server 服务帐户授予诸如 Administrators 组成员身份等较高特权。
•创建新帐户来运行 SQL Server 服务
1.
启动“计算机管理”工具,然后展开“本地用户和组”。
2.
右键单击“用户”文件夹,然后单击“新建用户”。
3.
创建新用户可确保使用强密码。
在“新建用户”对话框中,清除“用户下次登录时须更改密码”复选框,然后选择“用户不能更改密码”及“密码永不过期”复选框。
4.
从“用户”组中删除新帐户,因为该组被授予了对计算机的自由访问权限。
此时便可对 SQL Server 进行配置,使其通过这一新帐户运行。有关详细信息,请参阅步骤 10:SQL Server 安全机制
从 SQL Server 访问网络如果出于某些目的(例如,执行网络备份、进行复制或日志传送)需要从 SQL Server 访问网络资源,SQL Server 服务帐户必须能够在网络内通过身份验证。有两种方法可以使用。一种方法是在远程服务器上创建一个具有相同名称和密码的备用本地帐户;另一种是使用最低权限域帐户。
删除或禁用不使用的帐户不使用的帐户及其特权可能成为已获得服务器访问的攻击者的庇护所。对服务器上的本地帐户进行审核,删除那些不使用的帐户。建议在删除帐户前先将其禁用,以观察这样做是否会产生任何问题,因为帐户一经删除便无法恢复。请注意:无法删除管理员帐户和来宾帐户。
注意 在 SQL Server 2000 SP3 安装过程中,Sqldbreg2.exe 将创建“调试程序”帐户。Visual Studio .NET 将在调试所管理的 .NET 代码中的存储过程时使用该帐户。由于该帐户的唯一用途就是为调试提供支持,因此可以从生产数据库服务器中将其删除。
禁用 Windows 来宾帐户Windows 来宾帐户是匿名连接计算机时所使用的帐户。要限制到数据库服务器的匿名连接,请使该帐户保持在禁用状态。默认情况下,Windows 2000 中的来宾帐户已禁用。要查看是否启用了该帐户,请显示“计算机管理”工具中的“用户”文件夹。系统以十字图标来表示它。如果它未被禁用,请显示其“属性”对话框,然后选择“帐户已停用”复选框。
重命名管理员帐户默认的本地管理员帐户因其在计算机上享有的较高特权而成为恶意使用的目标。要提高安全性,请重命名默认的管理员帐户,并为其指定一个强密码。
强制执行强密码策略为防范密码猜测和强力字典攻击,应通过配置安全策略来应用强密码策略。强帐户和强密码的关键所在:
•设置密码长度和复杂性。强制执行强密码降低了密码猜测或字典攻击的成功几率。
•设置密码过期。定期使密码失效可降低旧密码被用来进行未经授权访问的几率。有效期的确定通常以公司的安全策略作为指导。
表 18.3 显示了默认和建议的密码策略设置。
表 18.3:密码策略的默认和建议设置
密码策略默认设置建议的最低设置
强制密码历史
记忆 1 个密码
记忆 24 个密码
密码最长期限
42 天
42 天
最短密码期限
0 天
2 天
最短密码长度
0 个字符
8 个字符
密码必须符合复杂性要求
禁用
启用
为域中所有用户均设置使用可逆加密的强密码
禁用
禁用

此外,还应记录失败的登录尝试,以检测和跟踪恶意行为。有关详细信息,请参阅步骤 9:审核和日志
有关密码策略的详细信息,请参阅 Microsoft TechNet 网站上的“Best Practices”,其网址为 http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/windowsserver2003/proddocs/entserver/windows_password_protect.asp(英文)。
限制远程登录使用“本地安全策略”工具从 Everyone 组中删除“从网络访问此计算机”用户权限,以对可远程登录服务器者施加限制。
禁用空会话(匿名登录)为了防止匿名访问,请禁用空会话。空会话是未经身份验证或匿名的用户在两台计算机间建立的会话。如果不禁用空会话,攻击者便可匿名(即,不需要进行身份验证)连接到服务器。
攻击者建立空会话后即可开始实施各种攻击,包括用于从目标计算机获取系统相关信息的枚举。可通过空会话返回的信息类型包括:域和信任的详细信息、共享、用户信息(包括组和用户权限)、注册表项及其他。请禁用它们,因为它们代表着重大的安全威胁。
在注册表中的以下位置设置 RestrictAnonymous=1,便可禁止空会话。
HKLM\System\CurrentControlSet\Control\LSA\RestrictAnonymous=1有关详细信息,请参阅 Microsoft 知识库文章 246261 How to:Use the RestrictAnonymous Registry Value in Windows 2000(英文)。
其他考虑事项考虑执行以下步骤来提高数据库服务器的安全性:
•要求帐户委派批准。无特别批准,请不要在 Active Directory 中将域帐户标记为信任委派。
•不要使用共享帐户。请不要创建供多人使用的共享帐户。为经授权的个人提供其专用帐户。可对各人的活动分别进行审核,并相应分配组成员身份和特权。
•限制本地 Administrators 组成员身份。理想的情况是,管理帐户不超过两个。这有助于提供可说明性。同时,请不要共享密码,这也是为了提供可说明性。
•限制管理员帐户进行交互式登录。如果只执行本地管理,则取消“从网络访问此计算机”以拒绝授予网络登录权限,便可限制管理员帐户进行交互式登录。这样做可以防止用户(无论出于善意还是其他动机)利用管理员帐户远程登录到服务器。如果本地管理策略灵活性太差,可实施安全远程管理。
有关远程管理的详细信息,请参阅本模块后文中的远程管理
•启用 NTLMv2 身份验证
如果客户端计算机利用 Windows 身份验证连接到数据库服务器,则应当对数据库服务器进行配置,让其使用安全性最高的 Windows 身份验证版本,即 NTLMv2。
注意 要支持 NTLMV2,客户端必须运行 Windows 2000、Windows Server 2003 或 Windows NT® 4.0 操作系统,并安装 Service Pack 4。
•在“本地安全策略工具”中启用 NTLMv2 身份验证
1.
展开“本地策略”,选择“安全措施选项”,然后双击“LAN Manager 身份验证级别”。
2.
选择“仅发送 NTLMv2 响应\拒绝 LM 和 NTLM”。
这是最安全的设置。
注意 这与将
HKLM\System\CurrentControlSet\Control\Lsa\LMCompatibilityLevel DWORD 值设置为 5 的效果相同。
返回页首
步骤 5:文件和目录除利用 ACL 保证操作系统文件的安全外,还要强化 NTFS 权限来限制对 SQL Server 程序文件、数据文件、日志文件以及系统级工具的访问。此外,还应只允许 SQL Server 服务帐户访问其所需的内容。
本步骤的任务:
•验证对 SQL Server 安装目录的权限
•验证 Everyone 组是否不具有对 SQL Server 文件的访问权限
•保证安装日志文件的安全
•保证工具、实用程序及 SDK 的安全或将它们删除
验证对 SQL Server 安装目录的访问权限根据表 18.4 中所列的权限对 SQL Server 服务所赖以运行的帐户进行验证。括号中指定的位置为默认安装位置,可能会视安装的具体情况而不同。
表 18.4:SQL Server 服务帐户的 NTFS 访问权限
位置SQL 服务帐户的权限
安装位置
(\Program Files\Microsoft SQL Server\MSSQL\)
读取并执行
列出文件夹内容
读取
数据库文件目录(.mdf、.ndf、.ldf 文件)
(\Program Files\Microsoft SQL Server\MSSQL\Data)
完全控制
错误日志文件目录
(\Program Files\Microsoft SQL Server\MSSQL\LOG)
完全控制
备份文件目录
(\Program Files\Microsoft SQL Server\MSSQL\Backup)
完全控制
作业临时文件输出目录
(\Program Files\Microsoft SQL Server\MSSQL\Jobs)
完全控制

如果使用“企业管理器”来设置 SQL Server 服务帐户,它将为帐户授予对 SQL Server 安装目录及所有子文件夹 (\Program Files\Microsoft SQL Server\MSSQL\*) 的“完全控制”权限。
取消对该文件夹及其所有子文件夹的写入授权,然后有选择性地授予对数据、错误日志、备份及作业文件目录的完全控制权限,便可使新帐户无法覆盖 SQL Server 二进制文件。
验证 Everyone 组是否不具有对 SQL Server 文件的访问权限不应使 Everyone 组具有对 SQL Server 文件位置(默认情况下为 \Program Files\Microsoft SQL Server\MSSQL)的访问权限,这可通过验证 Everyone 组并未经 ACL 获得访问权限和只为 SQL Service 帐户、Administrators 组及本地系统帐户提供显式完全控制来实现。
保证安装日志文件的安全安装 SQL Server 2000 Service Pack 1 或 2 后,系统管理员或服务帐户的密码可能会遗留在 SQL 安装目录中。请使用 Killpwd.exe 实用程序从日志文件中删除密码实例。
有关获得和使用此实用程序的信息,请参阅 Microsoft 知识库文章 263968 FIX:Service Pack Installation May Save Standard Security Password in File(英文)。
保证工具、实用程序及 SDK 的安全或将它们删除不应在生产数据库服务器上安装 SDK 和资源工具包。如果安装了,请将它们卸载。此外还需:
•确保禁止对强大的系统工具和实用程序(如 \Program Files 目录中所包含者)的访问。
•不应在数据库服务器上留有调试工具。如果有进行生产调试的必要,则应刻录一张包含必要的调试工具的 CD。
其他考虑事项要进一步提高数据库服务器的安全性:
•卸载服务器上可能安装了的、不使用的应用程序。如果服务器上存在不使用的应用程序,便将它们卸载。
•利用加密文件系统 (EFS) 为数据文件加密。可以使用 EFS 来保护数据文件。即便数据文件遭窃,但由于进行了加密处理,增大了读取的难度。系统支持对 SQL Server 数据文件使用 EFS。
使用 EFS 时应注意以下事项:
•应当对数据库文件 (.MDF) 而不是日志文件 (.LDF) 进行加密。如果对日志文件加密,SQL Server 便无法打开数据库。
•应在文件级而不是目录级进行加密。尽管使用 EFS 时的最佳做法往往是在目录级进行加密,以便自动加密新添加的文件,但仍应只在文件级对 SQL Server 数据文件加密,因为这样可以避免将日志文件加密。
•评估性能成本。使用 EFS 会导致性能下降。在目前环境中使用 EFS 前请对其进行测试,以确定对性能的实际影响。通常可以忽略这种性能下降,因为该过程启动时,数据文件的解密是由 SQL Server 来完成的。
要实施 EFS,请右键单击目录,单击“高级”,然后单击“加密内容以便保护数据”。有关 EFS 的详细信息,请参阅以下资源:
•Microsoft 知识库文章 230520 How To:Encrypt Data Using EFS in Windows 2000(英文)。
•TechNet 文章“Step-by-Step Guide to Encrypting File System (EFS)”,其网址为 http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/windows2000serv/deploy/walkthru/efsguide.asp(英文)。
返回页首
步骤 6:共享取消所有不使用的共享,并强化对任何必需共享的 NTFS 权限。默认情况下,所有用户对新创建的文件共享均具有完全控制权限。应强化这些默认权限,以确保只有经授权的用户才能访问共享所展露的文件。除了要对共享所展露的文件和文件夹使用显式共享权限外,还应当对它们使用 NTFS ACL。
本步骤的任务:
•取消不必要的共享
•限制对必需共享的访问
取消不必要的共享取消所有不必要的共享。要查看共享,请启动“计算机管理 MMC”管理单元,然后选择“共享文件夹”下的“共享”。
限制对必需共享的访问删除 Everyone 组,改为授予具体的权限。如果对共享访问未加限制,系统便使用 Everyone。
其他考虑事项如果不允许对计算机进行远程管理,请取消因此而不使用的管理共享,例如 C$ 和 Admin$。
注意 某些应用程序可能要求有诸如 Microsoft Management Server (SMS) 或 Microsoft Operations Manager (MOM) 等管理共享。有关详细信息,请参阅 Microsoft 知识库文章 318751 How To:Remove Administrative Shares in Windows 2000 or Windows NT 4.0(英文)。
返回页首
步骤 7:端口默认情况下,SQL Server 会侦听 TCP 端口 1433,并将 UDP 端口 1434 用于客户端与服务器间的协商。应结合使用防火墙和 IPSec 策略来限制对这些端口的访问,从而将攻击者可兹利用的攻击途径降至最低水平。
本步骤的任务:
•限制对 SQL Server 端口的访问
•配置命名实例来侦听同一端口
•配置防火墙来支持 DTC 通信(如有必要)
限制对 SQL Server 端口的访问利用外围防火墙来防止 Internet 对 SQL Server 端口(默认情况下为 TCP 端口 1433 和 UDP 端口 1434)进行直接访问,但这并不能防止服务器遭受内部攻击。对 IPSec 策略进行配置,以限制被设计为与数据库连接的 Web 或应用程序服务器通过 TCP 端口 1433 和 UDP 端口 1434 进行访问。
有关详细信息,请参阅本指南“如何”一节中的如何:使用 IPSec。
配置命名实例来侦听同一端口默认情况下,SQL Server 的命名实例会动态分配端口号,并对客户端使用 UDP 协商,以使客户端能够找到命名实例。为避免在内部防火墙开放一列端口号或不得不创建多个 IPSec 策略,应使用“Server 网络实用工具”来配置实例,使其侦听特定的端口号。
如果重新配置了服务器的端口号,则还必须重新配置所有客户端,以确保它们能够连接到正确的端口号。您或许能够使用客户端网络实用工具,但不应在 Web 服务器上安装此实用工具,而应由应用程序通过将端口号附加于 Server 或 Data Source 属性,在其连接字符串中指定该端口号,如以下代码中所示。
"Server=YourServer|YourServerIPAddress,PortNumber"配置防火墙来支持 DTC 通信(如有必要)如果应用程序使用企业服务 (COM+) 事务,并要求 DTC 的服务,则可能必须对将 Web 应用程序和数据库服务器隔离开的防火墙进行专门配置,以在不同的 DTC 实例间及 DTC 与 SQL Server 间实现 DTC 通信。
有关为 DTC 开放端口的详细信息,请参阅 Microsoft 知识库文章 250367 INFO:Configuring Microsoft Distributed Transaction Coordinator (DTC) to Work Through a Firewall(英文)。
其他考虑事项考虑如图 18.4 中所示,使用 Server 网络实用工具的“隐藏服务器”选项。如果在 SQL 网络实用工具的 TCP/IP 属性对话框中选择了此选项,系统会重新配置 SQL Server,使其侦听端口 2433。该选项还会禁止对尝试枚举 SQL Server 实例的客户端所发出的广播要求做出响应。
不能依赖这一措施来完全隐藏 SQL Server 端口。实际上这是无法实现的,因为可以采用多种方式枚举端口以发现其位置。
注意 仅当存在单一 SQL Server 实例时,才能使用此选项。有关详细信息,请参阅 Microsoft 知识库文章 308091 BUG:Hide Server Option Cannot Be Used on Multiple Instances of SQL Server 2000(英文)。
图 18.4
设置 Server 网络实用工具的隐藏服务器选项
返回页首
步骤 8:注册表安装 SQL Server 时会产生大量注册表项和子项,其中存放有重要的系统配置设置。因此,保证这些设置的安全,以防止攻击者通过更改它们来损害 SQL Server 安装的安全,就显得很重要。
安装 SQL Server 会创建以下注册表项和子项:
•对于默认实例:
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\MSSQLSERVER
•对于命名实例:
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\MICROSOFT SQL SERVER\INSTANCENAME
•对于 SQL 服务:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLSERVER
本步骤的任务:
•验证对 SQL Server 注册键的权限
•保证 SAM 的安全(限独立服务器)
验证对 SQL Server 注册键的权限使用 Regedt32.exe 来验证 Everyone 组对以上所列的 SQL Server 注册键不具有访问权限。默认情况下已有下列控制:
Administrators:完全控制SQL Server 服务帐户:完全控制注意 Microsoft 基准安全分析器可对注册表权限进行验证。将该工具用作通过 Regedt32.exe 手动进行权限验证的备用方法。
保证 SAM 的安全(限独立服务器)独立服务器在本地 SAM 数据库中存储帐户名称和单向密码哈希 (LMHash),该数据库是注册表的组成部分。通常只有 Administrators 组的成员才具有对帐户信息的访问权限。
尽管实际上密码并不存储于 SAM 中,且密码哈希不可逆,但如果攻击者获得了 SAM 数据库的副本,便可利用强力攻击密码破解技术来获得有效的凭据。
因此,应如下所示在注册表中创建键(不是值)NoLMHash,禁止在 SAM 中存储 LMHash。
HKLM\System\CurrentControlSet\Control\LSA\NoLMHash有关详细信息,请参阅 Microsoft 知识库文章 299656 How to Prevent Windows from Storing a LAN Manager Hash of Your Password in Active Directory and Local SAM Databases(英文)。
返回页首
步骤 9:审核和日志尽管在辨别入侵者和进行中的攻击行为及诊断攻击痕迹方面审核是必不可少的工具,但它并不能防止发生系统攻击。重要的是,要使所有审核机制(包括 Windows 操作系统级审核和 SQL Server 登录审核)都处于您的支配之下。SQL Server 还支持 C2 级扩展审核。在某些具有严格的审核要求的应用程序方案中,这可能是必需的。
本步骤的任务:
•记录所有失败的 Windows 登录尝试
•记录文件系统中所有失败的操作
•启用 SQL Server 登录审核
记录所有失败的 Windows 登录尝试要具备检测和跟踪恶意行为的能力,就必须记录失败的 Windows 登录尝试。
•审核失败的登录尝试
1.
启动“本地安全策略”工具。
2.
展开“本地策略”,然后选择“审核策略”。
3.
双击“审核帐户登录事件”。
4.
单击“失败”,然后单击“确定”。
系统会以事件的形式将 Windows 登录失败记录在 Windows 安全事件日志中。以下事件 ID 表示存在可疑情况:
•531。这表示尝试使用已禁用的帐户进行了登录。
•529。这表示尝试使用未知用户帐户或使用密码无效的有效用户帐户进行了登录。这些审核事件的数量意外增加可能预示着有人在尝试猜测密码。
记录文件系统中所有失败的操作对文件系统进行 NTFS 审核来检测可能存在的恶意尝试。这一过程分为两个步骤:
•启用日志记录
1.
启动“本地安全策略”工具。
2.
展开“本地策略”,然后选择“审核策略”。
3.
双击“审核对象访问”。
4.
单击“失败”,然后单击“确定”。
•审核文件系统中失败的操作
1.
启动 Windows 资源管理器,然后导航到文件系统的根目录。
2.
右键单击文件系统的根目录,然后单击“属性”。
3.
单击“安全性”选项卡。
4.
单击“高级”,然后单击“审核”选项卡。
5.
单击“添加”,然后在“要选择的对象名称”字段中输入 Everyone。
6.
单击“确定”,然后选择“失败”列中的“完全控制”复选框,以对所有失败的事件进行审核。
默认情况下,该操作的应用对象是当前文件夹及其所有子文件夹和文件。
7.
单击“确定”三次,关闭所有打开的对话框。
系统将失败的审核事件记录在 Windows 的安全事件日志中。
启用 SQL Server 登录审核默认情况下,系统不启用 SQL Server 登录审核。最低限度应当对失败的登录进行审核。审核失败的登录尝试是一种有用的检测正在尝试破解帐户密码的攻击者的方法。有关启用 SQL Server 审核的详细信息,请参见步骤 10:SQL Server 安全机制
其他考虑事项以下是进行审核和日志记录时可考虑采取的其他措施:
•如果无法记录安全审核,考虑将系统关闭。此策略选项在“本地安全设置”管理控制台的“安全措施选项”中设置。请考虑为高安全性服务器使用此设置。
•考虑 C2 级审核。SQL Server 提供了符合美国政府 C2 认证的审核功能。C2 级审核所提供的审核信息有相当大的增加,但却是以提高磁盘存储要求为代价来实现的。
有关符合 C2 标准的系统的配置的详细信息,请参阅 TechNet 文章“SQL Server 2000 C2 Administrator's and User's Security Guide”,其网址为 http://www.microsoft.com/technet/prodtechnol/sql/maintain/security/sqlc2.asp?frame=true#d(英文)。
返回页首
步骤 10:SQL Server 安全机制本节中论述的设置需使用企业管理器“SQL Server 属性”对话框的“安全性”选项卡进行配置。这些设置的应用对象是单一 SQL Server 实例中的所有数据库。图 18.5 中显示了“SQL Server 属性”对话框。
图 18.5
SQL Server 安全机制属性
本步骤的任务:
•将 SQL Server 身份验证设置为仅限 Windows
•将 SQL Server 审核级别设置为“失败”或“全部”
•使用最低权限帐户运行 SQL Server
将 SQL Server 身份验证设置为仅限 Windows应当对 SQL Server 进行配置,使其支持仅限 Windows 身份验证,因为这种验证方式有诸多优点。不必在网络上传送凭据;可避免在数据库连接字符串中嵌入用户名和密码;更易于进行安全管理,因为只需要与一个 Windows 安全模块而不是另外的 SQL Server 安全模块打交道;密码到期期间的登录安全性得到提高;最低限度的长度要求及帐户锁定策略。
•配置仅限 Windows 身份验证
1.
启动“SQL Server 企业管理器”,展开“SQL Server 组”,然后展开 SQL Server。
2.
右键单击 SQL Server,然后单击“属性”。
3.
单击“安全性”选项卡。
4.
选择“仅 Windows”,然后单击“确定”。
5.
重新启动 SQL Server,以使更改生效。
将 SQL Server 审核级别设置为“失败”或“全部”默认情况下,系统不启用 SQL Server 登录审核。最低限度,应当对失败的登录进行审核。
注意 系统会将日志项写入 SQL 日志文件。默认情况下,这些文件位于 C:\Program Files\Microsoft SQL Server\MSSQL\LOG。可使用任何一种文本阅读器(如记事本)来查看它们。
•启用 SQL Server 审核
1.
启动“SQL Server 企业管理器”,展开“SQL Server 组”,然后展开 SQL Server。
2.
右键单击 SQL Server,然后单击“属性”。
3.
单击“安全性”选项卡。
4.
将审核级别设置为“全部”或“失败”。
5.
重新启动 SQL Server,以使审核策略生效。
有关 SQL Server 审核日志的详细信息,请参阅 TechNet 文章及其在“SQL Server 2000 Auditing”文章中的“Understanding the Audit Log”一节,其网址为 http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/prodtech/dbsql/sql2kaud.asp?frame=true(英文)。
使用最低权限帐户运行 SQL Server使用最低权限帐户运行 SQL Server 服务可将设法从 SQL Server 执行操作系统命令的攻击者所造成的危害降至最低水平。不应为 SQL Server 服务帐户授予诸如 Administrators 组成员身份等较高特权。
•配置 SQL Server 的运行方式帐户
此过程使用“企业管理器”,而不是“服务 MMC”管理单元,因为“企业管理器”会自动授予 SQL Server 服务帐户所要求的用户权限。
1.
启动“SQL Server 企业管理器”,展开“SQL Server 组”,然后展开 SQL Server。
2.
右键单击 SQL Server,然后单击“属性”。
3.
单击“安全性”选项卡。
4.
单击启动服务帐户组中的“本帐户”。输入最低权限帐户的用户名和密码。
5.
重新启动 SQL Server,以使更改生效。
注意 如果使用的是 SQLSERVERAGENT 服务,则还必须更改运行方式帐户。请使用“服务 MMC”管理单元来更改此设置。
有关创建最低权限帐户来运行 SQL Server 的详细信息,请参阅步骤 4:帐户
返回页首
步骤 11:SQL Server 登录、用户及角色为能访问数据库中的对象,需要通过两层安全检查。首先需要向 SQL Server 提供一组有效的登录凭据。如果使用 Windows 身份验证,则需要使用已被授予 SQL Server 登录的 Windows 帐户进行连接。如果使用 SQL Server 身份验证,则需要提供有效的用户名和密码组合。
登录会授予您对 SQL Server 的访问权限。要访问数据库,登录必须与想连接到的数据库内的数据库用户相关联。如果登录与某数据库用户关联,则登录在数据库内的权限取决于与该用户关联的权限。如果登录未与某特定数据库用户关联,则登录的权限取决于授予数据库中的公共角色的权限。所有有效的登录均与公共角色关联,该角色存在于每一个数据库中,且无法被删除。默认情况下,所创建的任一数据库内的公共角色都不会被授予任何权限。
请利用以下建议来改进数据库中的授权设置:
•使用强 sa(系统管理员)密码
•删除 SQL 来宾用户帐户
•删除 BUILTIN\Administrators 服务器登录
•不为公共角色授予权限
使用强 sa(系统管理员)密码默认系统管理员 (sa) 帐户一直是无数攻击的目标。它是 SQL Server 管理固定服务器角色 sysadmin 的默认成员。请确保对此帐户使用强密码。
要点即便将身份验证从 SQL 改为 Windows,sa 仍然处于活动状态。
对所有帐户,尤其是特权帐户(如 sysadmin 和 db_owner 角色的成员)均使用强密码。如果使用复制,请给用于与远程分布式服务器建立连接的 distributor_admin 帐户也使用强密码。
删除 SQL 来宾用户帐户如果启用了 Windows 2000 的来宾帐户,则安装 SQL Server 时会创建一个来宾用户帐户。如果登录有对 SQL Server 的访问权限,但没有通过数据库用户帐户对数据库进行访问的权限,则登录便会具有来宾的身份。
好的做法是禁用 Windows 的来宾帐户。此外,还要从所有用户定义数据库中删除来宾帐户。请注意,无法从 master、tempdb、复制及分发数据库中删除来宾帐户。
删除 BUILTIN\Administrators 服务器登录默认情况下,系统会将 BUILTIN\Administrators 本地 Windows 组添加到 sysadmin 固定服务器角色,以对 SQL Server 进行管理。这意味着作为 BUILTIN\Administrators 成员的域管理员可以不受限制地访问 SQL Server 数据库。大多数公司会对域管理员和数据库管理员角色加以区分。如果要进行这种区分,请删除 BUILTIN\Administrators SQL Server 登录。一种好的做法是,按以下步骤中所示,专门创建这样一个 Windows 组:它的位置中包含特定数据库管理,并被作为服务器登录添加到 SQL Server 中。
•为数据库管理员添加新登录
1.
启动“企业管理器”。
2.
展开“Microsoft SQL Server”,展开“SQL Server 组”,然后展开 SQL Server。
3.
展开 Security 文件夹,选择并右键单击“登录”,然后单击“新建登录”。
4.
在“名称”字段中,输入只包含数据库管理员的自定义 Windows 组。
5.
单击“服务器角色”选项卡,然后选择“System Administrators”。
这样便将新登录添加到 sysadmin 服务器角色中。
•删除 BUILTIN\Administrators 登录
1.
启动“企业管理器”。
2.
展开“Microsoft SQL Server”,展开“SQL Server 组”,然后展开 SQL Server。
3.
展开“安全性”文件夹,然后选择“登录”。如果登录列表中有 BUILTIN\Administrators,请右键单击它,然后单击“删除”来删除登录。
有关在安装后重新配置 SQL 服务帐户的详细信息,请参阅 MSDN 文章“Changing Passwords and User Accounts”,其网址为 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/instsql/in_afterinstall_4p0z.asp(英文)。
不为公共角色授予权限所有数据库均包含一个公共数据库角色。每个其他用户、组和角色都是该公共角色的成员。您无法删除公共角色的成员,不过,可以不为授予对应用程序的数据库表、存储过程及其他对象访问权限的公共角色授予权限。否则,便无法利用用户定义的数据库角色获得所需授权,因为公共角色会为数据库中的用户授予默认权限。
其他考虑事项配置 SQL Server 登录、用户和角色时,还请考虑以下建议:
•限制 sysadmin 的成员数。为确保实现个体可说明性,请限制作为 sysadmin 角色成员的帐户的数量。理想情况下,此角色的成员用户不应超过两位。
•授予受限的数据库权限。只为帐户分配完成作业所绝对必需的权限。应避免使用诸如 db_datareader 和 db_datawriter 等内置角色。这些角色不提供任何授权粒度,并具有对所有自定义数据库对象的访问权限。
•不要更改应用于 SQL Server 对象的默认权限。在 SQL Server Service Pack 3 之前的版本中,公共角色不具有对各种默认 SQL Server 数据库对象的访问权限。在 Service Pack 3 中,对安全性设计进行了复审,并通过在非必需处删除公共角色及执行更为精确的角色检查提高了安全性。
返回页首
步骤 12:SQL Server 数据库对象SQL Server 提供了两个用于开发和训练的示例数据库以及一系列内置存储过程和扩展存储过程。不应将示例数据库安装在生产服务器上,并应保证功能强大的存储过程和扩展存储过程的安全。
本步骤的任务:
•删除示例数据库
•保证存储过程的安全
•保证扩展存储过程的安全
•限制 cmdExec 对 sysadmin 角色的访问权限
删除示例数据库使用 SQL Server 企业管理器来删除任何示例数据库。默认情况下,SQL Server 包含 Pubs 和 Northwind 示例数据库。
保证存储过程的安全限制对应用程序的存储过程的访问。请不要为公共角色或来宾用户授予对所创建的任何存储过程的访问权限。保证存储过程安全的主要防线先是要确保使用强身份验证,然后是提供精确授权,从而实现只允许必要的用户权限来运行存储过程。
建议的做法是:为应用程序创建一个 SQL Server 登录,将登录映射到数据库用户,再将用户添加到用户定义数据库角色,然后为角色授予权限。
保证扩展存储过程的安全未对删除存储过程进行测试,也不支持删除。
限制 cmdExec 对 sysadmin 角色的访问权限SQL Server 代理使用 cmdExec 函数来执行 Windows 命令行应用程序和其排定的脚本。在 SQL Server Service Pack 3 之前的版本中,默认情况下 SQL Server 代理允许非 sysadmin 角色所属用户排定可能需要特许系统访问权限的作业。应当对此设置进行更改,以只允许 sysadmin 角色的成员排定作业。
•限制 cmdExec 对 sysadmin 角色的访问
1.
启动“SQL Server 企业管理器”,展开“SQL Server 组”,然后展开 SQL Server。
2.
展开“管理”节点,右键单击“SQL Server 代理”,然后单击“属性”。
此时将显示“SQL Server 代理属性”对话框。
3.
单击“作业系统”选项卡。
4.
请选择对话框底部的“只有具有系统管理特权的用户才能执行 CmdExec 和 ActiveScripting 作业步骤”复选框。
5.
单击“确定”。
注意 进行此项更改可能需要提供用户名和密码。如果 SQL Server 服务帐户是最低权限用户(按本模块前文中的建议),系统会提示您输入具有服务修改特权的管理员帐户的用户名和密码。
返回页首
安全数据库服务器快照如果看一下显示有安全保证的 SQL Server 数据库服务器的属性的快照视图,便可轻松、快捷地将其设置与自己服务器的设置加以比较。表 18.5 中所显示的设置基于对 SQL Server 数据库服务器的分析。经证实,这些设置对攻击的适应性很高,其所示范的是可靠的安全做法。
表 18.5:安全数据库服务器快照
组成部分特性
修补程序和更新程序
对 Windows 2000 和 SQL Server 应用最新的 Service Pack 和修补程序
服务
禁用非必需的服务。
不使用时禁用 MSDTC。
非必需时禁用 MSSearch 服务。
非必需时禁用 SQLServerAgent 服务。
非必需时禁用 MSSQLServerADHelper 服务。
协议
删除或禁用不必要的协议。
服务器上未启用以下协议:NetBIOS 和 SMB。
强化了 TCP/IP 堆栈。
帐户
对 SQL Server 服务帐户实施安全保护(将其设置为最低权限帐户)。
删除或禁用不必要的 Windows 帐户。
禁用 Windows 的来宾帐户。
创建新的管理员帐户。
强制执行强密码策略。
对远程登录实施限制。
禁用空会话(匿名登录)。
要求帐户委派批准。
不使用共享帐户。
限制本地 Administrators 组的成员身份(理想的情况为不超过两名成员)。
限管理员帐户进行交互式登录(或提供安全的远程管理解决方案)。
启用并强制执行 NTLMv2 身份验证(将 LMCompatibilityLevel 设置为 5)。
文件和目录
以 NTFS 格式对卷进行格式化。
Everyone 组不具有对系统或工具目录的访问权限。从服务器中删除示例目录、帮助目录和不使用的管理员目录。
强化对 SQL Server 安装文件夹的访问权限。
从 Service Pack 1 和 Service Pack 2 安装日志文件中删除密码。
删除工具、实用程序和 SDK。
删除不使用的应用程序。
使用 EFS 对敏感的数据文件加密。(这对于数据库文件 (.mdf) 为可选操作,但对于日志文件 (.ldf) 则为必需)。
共享
从服务器中删除不必要的共享。
仅限访问必需的共享。
Everyone 只在必要时才能访问共享。
非必需时删除管理共享(C$、Admin$)。
端口
封锁除 SQL Server 侦听端口 [默认为 1433] 外的所有其他端口
配置命名实例来侦听同一端口。
将非标准 SQL Server 端口(不是 TCP 1443)用作附加防御层。
将隐藏服务器选项用作附加防御层(可选)。
配置防火墙来支持 DTC 通信(如有必要)。
使用防火墙将用户与 SQL TCP/IP 端口隔离开。
注册表
从 SQL Server 注册键中删除 Everyone 组。
保证 SAM(限独立服务器)的安全。
审核和日志
记录失败的 Windows 登录尝试。
记录文件系统中失败的操作。
启用 SQL Server 登录审核。
SQL Server 设置

SQL Server 安全机制
可能的情况下,将 SQL Server 的身份验证设置为仅限 Windows。
将 SQL Server 审核级别设置为“失败”或“全部”。
SQL Server 启动服务帐户为最低权限帐户。
SQL Server 登录、用户及角色
Sa 帐户使用强密码。
从非系统数据库中删除 SQL Server 来宾帐户。
从 SQL Server 登录中删除 BUILTIN\Administrators 组。
Sysadmin 角色不包含 BUILTIN\Administrators 组。
不为公共角色授予权限。
Sysadmin 角色所包含的用户不超过两个。
授予受限的(精确)数据库权限(避免使用诸如 db_datareader 和 db_datawriter 等内置的非精确角色)
不更改 SQL Server 对象的默认权限。
SQL Server 数据库对象
从服务器中删除所有示例数据库。
保证存储过程的安全。
保证扩展存储过程的安全。
限制 cmdExec 只能使用 sysadmin 角色。

返回页首
其他考虑事项除本模块中所述的步骤外,还请考虑以下原则:
•在数据库服务器上安装证书。如果使用 Windows 身份验证(NTLM 或 Kerberos),系统不会通过网络向 SQL Server 传送登录凭据。如果使用 SQL 身份验证,好的做法是对凭据加密,因为它们是以未加密格式被传送给 SQL Server 的。通过在数据库服务器上安装证书来进行加密。这样做的结果是,在网络中传送的 SQL 凭据会被自动加密。确保应用程序安全地存储了数据库连接字符串也是一种好的做法。有关详细信息,请参阅模块 14 构建安全的数据访问。
•限制对敏感命令及存储过程的访问。SQL Server 提供了功能强大的与操作系统的挂接。例如,可以使用 xp_cmdshell 扩展存储过程来运行任何操作系统命令。如果攻击者设法(例如,利用 SQL 注入漏洞)做到了在数据库中随意运行命令,则只有用于运行 SQL Server 的帐户的安全凭据才能限制其执行操作系统命令的能力。这便是通过最低权限帐户来运行 SQL Server 的主要原因。
•使用专用计算机作为数据库服务器。还请将其加入群集,以作故障转移之用。
•对数据库服务器采取物理保护。将服务器置于一个安全的计算机房中。
•限制本地登录。除管理员外,不允许任何人在本地登录服务器。
返回页首
保持安全状态需要定期监控数据库服务器的安全状态并定期对其更新,以协助防止新发现的漏洞被利用。协助保证数据库服务器的安全:
•定期执行备份
•审核组成员身份
•监控审核日志
•确保安装最新的 Service Pack 和修补程序
•执行安全评估
•使用安全性通告服务
定期执行备份必须具备在数据被损害时恢复数据的能力。如果恢复系统现已就位,请在实际使用前先对其进行测试。不应在进行首次备份和恢复流程测试时执行首次实际数据恢复操作。有关备份和恢复 SQL Server 的详细信息,请参阅以下资源:
•SQL Server 2000 文档中的“Backing Up and Restoring Databases”
•Rudy Lee Martinez 所撰写的“Backup and Restore Strategies with SQL Server 2000”,其网址为 http://www1.us.dell.com/content/topics/global.aspx/power/en/ps4q00_martin(英文)
审核组成员身份跟踪用户组成员身份,尤其是像 Administrators 这样的特权组的组成员身份。执行以下命令可列出 Administrators 组的成员:
net localgroup administrators
监控审核日志通过手动查看或使用 Microsoft 知识库文章 296085 How To:Use SQL Server to Analyze Web Logs(英文)中所述的方法对审核日志进行定期监控。
确保安装最新的 Service Pack 和修补程序设立计划来对服务器的软件进行分析并订阅安全警报。定期使用 MBSA 来扫描服务器,看其是否缺少修补程序。以下链接提供了最近的更新:
•Windows 2000 Service Pack。最新 Service Pack 列表位于 http://www.microsoft.com/windows2000/downloads/servicepacks/default.asp(英文)。
•重要更新。这些更新有助于解决已知问题,并有助于防止计算机受已知安全漏洞的损害。要了解最近的重要更新,请参阅 http://www.microsoft.com/windows2000/downloads/critical/default.asp(英文)。
•高级安全更新。还请密切注意高级安全更新,其网址为 http://www.microsoft.com/windows2000/downloads/security/default.asp(英文)。
这些更新有助于防止计算机受已知安全漏洞的损害。
执行安全评估定期使用 MBSA 检查安全漏洞及确定所缺少的修补程序和更新程序。安排 MBSA 每天运行,并对结果进行分析,以便根据需要采取措施。有关自动化 MBSA 的详细信息,请参阅本指南“如何”一节中的 如何:使用 MBSA。
使用安全性通告服务利用表 18.6 中所列的 Microsoft 服务获得安全公告,其中有关于可能存在的系统漏洞的通知。
表 18.6:安全性通告服务
服务位置
TechNet security Web site
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/current.asp(英文)
在此网页中查看适用于您的系统的安全公告。
Microsoft 安全性通告服务
http://register.microsoft.com/subscription/subscribeme.asp?ID=135(英文)
使用此服务来注册定期电子邮件公告,该公告会通知您最新提供的修补程序和更新程序

此外,还请订阅表 18.7 中所示的业界安全警报服务。利用它可以在尚无相应的修补程序时,对漏洞的威胁进行评估。
表 18.7:业界安全性通告服务
服务位置
CERT Advisory Mailing List
http://www.cert.org/contact_cert/certmaillist.html(英文)
有漏洞报告时发送通知性的警告。
Windows and .NET Magazine Security UPDATE
http://email.winnetmag.com/winnetmag/winnetmag_prefctr.asp(英文)
公布最新安全违反情况及确定修补程序。
NTBugtraq
http://www.ntbugtraq.com/default.asp?pid=31&sid=1#020(英文)
对 Windows 安全漏洞和攻击的公开讨论。对目前尚无修补程序的漏洞进行讨论。

返回页首
远程管理管理员往往需要具备管理多台服务器的能力。确保远程管理解决方案的要求不会损害安全。如果需要远程管理能力,采纳以下建议有助于提高安全性:
•限制管理帐户的数量。这包括限制管理帐户的数量以及限制获许进行远程登录的帐户。
•限制工具。主要选项包括“SQL 企业管理器”和“终端服务”。“SQL 企业管理器”和“终端服务”都使用 Windows 安全。因此,此处需要考虑的主要是对所使用的 Windows 帐户和端口施加限制。
•限制获许管理服务器的计算机。可利用 IPSec 来限制可连接到 SQL Server 的计算机。
保证终端服务的安全以安全方式使用 Microsoft 终端服务来对数据库服务器实施远程管理是可行的。
终端服务所基于的是 Microsoft 的称为远程桌面协议 (RDP) 的专用协议。RDP 使用 TCP 3389 端口,支持两名并发用户。以下各节介绍如何针对安全管理的需要对终端服务进行安装和配置:
•安装终端服务
•配置终端服务
安装终端服务
•要安装终端服务,请执行以下操作
1.
通过“控制面板”中的“添加/删除程序”来安装“终端服务”。使用“添加/删除 Windows 组件”选项。不需要为远程管理安装“终端服务授权”。
2.
为远程管理模式配置终端服务。
3.
从系统中删除 TsInternetUser 用户帐户,该帐户是在安装“终端服务”过程中创建的。该帐户用于支持对“终端服务”的匿名 Internet 访问,不应在服务器上启用它。
配置终端服务
•使用“管理工具”程序组中提供的终端服务配置 MMC 管理单元来配置以下内容
1.
与“终端服务”的连接有三个加密级别(“低”、“中”和“高”)。将加密设置为 128 位密钥。请注意,在服务器和客户端都应安装 Windows 的高度加密组件。
2.
将“终端服务”会话配置为在空闲连接时限过后断开连接。设置它来结束断开的会话。如果用户在关闭“终端服务”客户端应用程序后的 10 分钟内未注销,便视该会话为已经断开连接。
3.
最后要做的是,限制对“终端服务”的访问权限。请使用 RDP 对话框中的 RDP 权限选项卡。默认情况下,允许 Administrators 组的所有成员访问“终端服务”。如果不想让 Administrators 组的所有成员都能够访问“终端服务”,请删除该组,然后单独添加有访问需要的帐户。请注意,列表中必须有 SYSTEM 帐户。
在客户端与服务器间使用安全 VPN 连接或 IPSec 隧道来增强安全性。此方法提供了相互身份验证,并将 RDS 有效负载加密。
通过 RDP 复制文件“终端服务”未对文件传输提供内置支持。不过,可以安装“Windows 2000 Server Resource Kit”中的“File Copy”实用程序来为“终端服务”中的剪贴板重定向功能添加文件传输功能。有关该实用程序和安装说明的详细信息,请参阅 Microsoft 知识库文章 244732 How To:Install the File Copy Tool Included with the Windows 2000 Resource Kit(英文)。
返回页首
小结数据库服务器是攻击者的首选目标。必须保证数据库服务器的安全,防止其遭受内部、外部、网络级和应用程序级的攻击。安全的数据库服务器除了强化的 Windows 2000 安装外,还须有强化的 SQL Server 2000 安装,并与由路由器及防火墙提供的安全网络防御措施相结合。
要查看快速参考检查表,请参阅本指南“检查表”一节中的 检查表:保证数据库服务器的安全。
发表于 2009-3-20 15:48:22 | 显示全部楼层

你写的确实不错~~顶~e~~111~~顶

你是我的活着的理由, 你知道不
你是我生命的支柱 , 你知道不
我发错了,你知道不 你写的确实不错~~~~~~顶















_______________________________________________________________________
注册办理北京公司北京代理公司注册北京代理注册公司代理北京公司注册代理北京注册公司
libaoo858 该用户已被删除
发表于 2009-5-6 01:59:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-6-28 15:39:06 | 显示全部楼层

太有才了!

太有才了!

























                                  格式工厂下载 金山快译 MP4转换器下载 warkey  妞妞基地+H漫好片网
发表于 2009-12-18 21:24:09 | 显示全部楼层

有需要就找我 不收任何押金 快速办理证件 QQ:1173328988

不收押金网上快速办理各类证件 网上证件 QQ:1173328988  电话:15874890919
         公司长期承办以下业务: 1、代办各种证件、刻章、印刷。 2、各地防伪身份证、结婚证、户口本、记者证 3、各地学府毕业证、函授自考、中考大专、本科、学士硕士研究生档案 4、资格证、技术等级、会计、会计师、电工、厨师、未婚、出生、准生证 5、驾驶证、行驶证、车牌等汽车档案。 6、香港、澳门身份证、回乡证、护照、营业执照和公章。 7、房地产证、公证书等 做证流程: 拒绝欺诈行为 1客户先联系我们-2递交资料和照片-3按客户要求制作完成-4网上验收合格-5邮寄证书。见货付款。6、完成后删除客户资料! 不收取任何押金!远离骗局! 一般证件制作时间一天内就发货.全国快递三天内到货 !
         我们是你们最可靠的朋友,价格合理.诚信服务,质量保证。如果你现在不需要。也请保留我的联系方式,以备急用!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|boway Inc. ( 冀ICP备10011147号 )

GMT+8, 2024-11-24 10:55 , Processed in 0.121035 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表