如何构建和配置更加安全的Web站点[9]

[入库:2005年9月21日] [更新:2007年3月24日]

本文简介:

如上所述,我们的解决方案使用集成的 Windows 身份验证连接到数据库。这是一种值得借鉴的方法,因为它不需要开发和安全存储用于访问数据库的密码。

为了确保向后兼容,Windows 2000 和 Windows XP 支持几种类型的身份验证协议。由于只有实现 NTLMv2 身份验证的计算机才能访问我们的数据库服务器,因此强烈建议将 LAN 管理器身份验证级别更改为“仅限于 NTLMv2”。注意,使用其他配置,Windows 95、Windows 98 和带有 Service Pack 4 及更高版本的 Windows NT Server 4.0 也可以支持 NTLMv2。通过限制所支持的身份验证协议的数量,系统管理员最大限度地减少了暴露给攻击者的表面区域

"
图 4:设置 LAN 管理器身份验证级别


使用 SQL Server 与使用 Windows 一样,我们需要小心地安装、配置和运行必要的服务,以减少暴露给潜在攻击者的数据库表面区域。对于 OpenHack,我们未安装升级工具、调试符号、复制支持、联机图书或 Dev 工具组件。

该安装是在 NTFS 分区上进行的,因为它可以为 SQL Server 使用的文件文件夹提供额外的基于 ACL 的安全保护。下一步,通常也是最关键的一步,是安装 SQL Server 2000 Service Pack 2 及所有最新的修补程序

在服务帐户为 localSystem 的计算机中通常可以找到 SQL Server 安装程序。尽管在锁定良好的专用网络中,这是可以接受的,但由于它是基础计算机上的管理帐户,因此仍具有远远超过 SQL Server 服务真正所需的权限。如果要求服务帐户能够访问网络资源(如备份到网络驱动器时、使用日志传送时或使用复制支持时),则最好选择低权限的域帐户。但如果您的环境不需要这些功能,则完全可以选择低权限的本地帐户。在本次竞赛中,由于不打算使用这些功能,而且为了坚持“最低权限”原则,我们使用了本地用户帐户。

我们使用以下设置创建了一个新的 NT 本地用户帐户:

创建了一个非常强大的密码(详见密码一节的介绍)。

删除了使用户可更改其密码的功能。

删除了“终端服务”访问。

创建新用户帐户后,我们使用 SQL Server Enterprise Manager 更改了启动服务帐户信息,强制数据库服务以此用户的身份运行。


"
图 5:更改启动服务帐户信息


为了坚持只运行所需服务的思想和最佳安全方案,我们使用 Services MMC 管理单元停止 Distributed Transaction Coordinator (MSDTC) 服务,并将其设置为手动启动,这样 OpenHack 数据库就不会运行事务,服务器本身也不会运行 COM+ 应用程序。这里我们看到在专用计算机上运行数据库服务器的另一个优势:比与其他服务器和服务并行运行的服务器具有更强的减少周围表面区域的能力。

还可以通过禁用 SQL Server 代理和 Microsoft 搜索服务进一步减少表面区域,因为我们的数据库解决方案不需要此功能。

下一步,由于更多考虑的是可靠性而非安全性问题,我们设置了 Microsoft SQL Server 服务本身的属性,并将恢复操作更改为出现故障后重新启动服务。这样做是为了在出现故障时尽量减少停机时间。


"
图 6:将恢复操作更改为出现故障后重新启动服务


然后我们设置了 Server Network 实用程序,并将网络属性从“直接客户端广播”更改为“隐藏 SQL Server”。还删除了“命名管道”协议,因为我们只需要 TCP/IP。

作为此配置的一部分,我们返回到前面的配置,为 SA 帐户设置了非常强大的密码。即使在 Windows 身份验证模式下运行,也建议采用这种做法。如果以后通过企业管理器工具或直接通过注册表从身份验证模式切换到混合模式,您希望确保系统是安全的(即使系统管理员当时忘记设置 SA 密码),也可以使用这种方法。在这种方法中,最好做最坏的打算。

本文关键:如何构建和配置更加安全的Web站点
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top