| 目标 | |
| 适用范围 | |
| 如何使用本模块 | |
| 摘要 | |
| 准备工作 | |
| 使用具有最少权限的帐户运行 | |
| 修补程序和更新 | |
| 保护 IIS | |
| 保护 SQL Server 和 MSDE | |
| 评估您的配置类别 | |
| 保持安全 |
使用本模块可以实现:
| • | 保护开发工作站。 |
| • | 使用非管理性帐户进行开发。 |
| • | 确保应用了最新的操作系统修补程序。 |
| • | 锁定 IIS 安全性。 |
| • | 锁定 SQL Server 和 MSDE 安全性。 |
本模块适用于下列产品和技术:
| • | Microsoft® Windows® 2000 Server 和 Professional,Windows XP Professional |
| • | Internet 信息服务 (IIS) |
| • | .NET Framework 1.0 和 1.1 版 |
| • | Microsoft SQL Server 2000 和 Desktop Edition |
为了充分理解本模块内容,请:
| • | 必须具有管理 Windows、SQL Server 和 IIS 安全性的经验。 |
| • | 阅读模块如何:使用 IISLockdown.exe。本模块描述如何安装和使用 IISLockdown。 |
| • | 阅读模块如何:使用 URLScan。本模块描述如何安装和配置 URLScan。 |
| • | 阅读模块如何:使用 Microsoft 基准安全分析器。本模块描述如何安装和使用 Microsoft 基准安全分析器来评估并提高 Windows 计算机的安全性。 |
开发人员通常会让计算机运行 Internet 信息服务 (IIS)、Microsoft SQL Server 或 Microsoft SQL Server Desktop Engine (MSDE) 之类的软件。作为开发人员,即使计算机位于受保护的局域网中,也需要保护这些服务免遭攻击和盗用。
本模块提供的建议可以帮助提高开发人员工作站的安全性。本模块还帮助您避免在保护工作站过程中可能遇到的常见问题。最后,对于如何识别过于严格的安全设置所导致的问题以及如何在必要时还原这些设置,本模块还提供了建议。
在保护工作站之前,需要准备下列工具:
| • | Microsoft 基准安全分析器 (MBSA)。Microsoft 提供 MBSA 工具来帮助分析计算机的安全配置,并帮助识别缺少的修补程序和更新。可以从下面的网址下载 MBSA 工具:http://download.microsoft.com/download/e/5/7/e57f498f-2468-4905-aa5f-369252f8b15c/mbsasetup.msi(英文) . |
| • | IISLockdown。IISLockdown 工具可以减少计算机的受攻击面,方法为强化默认的 IIS 和 Windows 配置设置,并删除不必要的 IIS 扩展。IISLockown 还会安装“404.dll”ISAPI 筛选器,该筛选器用于在请求被禁用的扩展时报告“404 未找到文件”消息。 |
| • | URLScan。URLScan 是一个 ISAPI 筛选器,它可以根据一组配置好的规则拒绝或者允许 HTTP 请求。它与 IISLockdown 集成在一起,但您也可以单独下载它。它对于每个受支持的服务器角色都有对应的自定义模板。 |
应该使用非管理员帐户开发应用程序。这样做是很重要的,主要是为了防止暴露已登录的用户,并帮助设计更安全的软件。例如,如果您作为管理员以交互方式登录,然后设计、开发和测试应用程序,则很可能最后会得到需要管理特权才能运行的软件。
通常不应该使用本地管理员帐户登录。日常使用的帐户不应该是本地 Administrators 组的成员。有时您可能仍然需要使用具有管理特权的帐户(例如在安装软件或编辑注册表时)。但由于默认的本地管理员帐户是众所周知的,而且它是许多攻击的目标,因此请创建一个非标准管理员帐户,并只在需要时使用该帐户。
| • | 创建用于开发的帐户
|
要运行特权命令,可以使用下面一种技术临时更改安全上下文:
| • | 从命令行使用 Runas.exe 实用程序。下面的命令介绍如何使用 Runas.exe 实用程序来启动在自定义管理帐户下运行的命令控制台。 runas.exe /user:mymachine\mycustomadmin cmd.exe 执行 Cmd.exe 后,就启动了新的命令窗口,该窗口运行在以 /user 开关指定的用户的安全上下文之下。从该命令窗口启动的任何程序也都运行在该上下文之下。 |
| • | 在 Windows 资源管理器中使用“运行方式”。可以在 Windows 资源管理器中右键单击可执行文件,然后单击“运行方式”。要在 Windows 2000 中显示这一项,请按下 Shift 键然后右键单击可执行文件。在单击“运行方式”后,系统会提示您输入运行此可执行文件所使用的帐户的凭据。 |
| • | 使用“运行方式”快捷方式。可以创建快速启动和桌面快捷方式,以使用特权用户帐户轻松运行应用程序。下面的示例说明一个快捷方式,您可以使用它来以管理员帐户运行 Windows 资源管理器 (Explorer.exe): |
%windir%\System32\runas.exe /user:administrator explorer
注意 如果在您的环境中使用非管理员帐户不合适,请仍然以具有最少特权的用户身份运行程序,来测试应用程序或组件,以便在部署前捕获和更正问题。例如,您的应用程序可能在您没有意识到的情况下错误地需要管理员特权,这样,在生产环境中部署该应用程序时,就会使应用程序出现故障。
有关使用非管理性帐户进行开发的详细信息,请参阅下面的文章:
| • | “Essential .NET Security”,网址为 http://www.develop.com/kbrown/book/html/lifestyle.html(英文)。 |
| • | “Developing Software in Visual Studio .NET with Non-Administrative Privileges”,网址为 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/tchDevelopingSoftwareInVisualStudioNETWithNon-AdministrativePrivileges.asp(英文)。 |
确保您的工作站具有最新的 Service Pack 和修补程序。检查操作系统、IIS、SQL Server、MSDE、Microsoft 数据访问组件 (MDAC) 和 .NET Framework。Microsoft 提供了几种工具及方法来帮助您扫描和更新系统,包括 Windows Update 站点、Microsoft 基准安全分析器 (MBSA) 工具和“自动更新”功能。
可以使用 Windows Update(可以从“开始”菜单中找到)来扫描 Windows 的更新和修补程序。或者,可以直接在下面的网站上扫描更新:Windows Update。
注意 在使用 Windows Update 站点更新系统后,请使用 MBSA 检测 SQL Server、MSDE 和 MDAC 缺少的更新。
可以使用 MBSA 来评估安全性和验证修补程序。如果使用了“自动更新”或 Windows Update 来更新操作系统和组件,则 MBSA 将验证这些更新,并且会额外检查 SQL Server 和 Microsoft Exchange Server 的更新状态。MBSA 使您可以创建脚本来检查多台计算机。
| • | 检测和安装修补程序和更新
|
有关使用 MBSA 的详细信息,请参阅本指南“如何”部分中的如何:使用 Microsoft 基准安全分析器 (MBSA)。
注意 MBSA 不会指出需要的 .NET Framework 更新和修补程序。浏览 .NET Framework 下载页,网址为
http://msdn.microsoft.com/netframework/downloads/default.asp(英文)。
“自动更新”功能提供了最简单的方法来用最新的关键安全修补程序对您的操作系统进行更新。该功能内置在 Windows XP 中,并随 Windows 2000 Service Pack 3 一起安装。
要在 Windows 2000 内配置“自动更新”,请在“控制面板”中单击“自动更新”。有关“自动更新”和 Windows 2000 的详细信息,请参阅 327850 号 Microsoft 知识库文章 HOW TO:在 Windows 2000 中配置和使用自动更新。
| • | 在 Windows XP 内配置自动更新
|
有关“自动更新”和 Windows XP 的详细信息,请参阅 Microsoft 知识库文章 306525
HOW TO:在 Windows XP 中配置和使用自动更新。
“自动更新”扫描用于下列操作系统(在适当的地方还包括 .NET Framework 和 IIS)的更新并进行安装:
| • | Microsoft Windows 2000 Professional |
| • | Microsoft Windows 2000 Server |
| • | Microsoft Windows XP Professional |
除使用“自动更新”外,还可以使用 MBSA 来检测用于 SQL Server、MSDE 和 MDAC 的缺少的更新。
通常需要在本地运行 IIS 才能进行 Web 开发。如果运行了 IIS,就需要保护它。IISLockdown 和 URLScan 可以显著减少 Web 服务器的受攻击面。IISLockdown 将未使用的或禁止的脚本映射指向 404.dll,并帮助保护对系统目录和系统工具的访问。URLScan 阻止已知的危险请求。
虽然 IISLockdown 可以提高 IIS 安全性,但如果选择了错误的安装选项或者没有修改 URLScan 配置文件 URLScan.ini,则可能遇到下列问题:
| • | 无法创建新的 ASP.NET Web 应用程序。将 NTFS 文件系统权限配置为增强对 Web 位置的默认访问权。这可能禁止已登录用户创建新的 ASP.NET Web 应用程序。 |
| • | 无法调试现有的 ASP.NET Web 应用程序。URLScan 阻止 DEBUG 谓词,而您在调试 ASP.NET Web 应用程序时需要使用该谓词。 |
下列步骤说明如何提高开发工作站上的 IIS 安全性,以及如何避免上面列出的问题:
| • | 安装和运行 IISLockdown。 |
| • | 配置 URLScan |
| • | 限制对本地 Web 服务器的访问权 |
| • | 安装和运行 IISLockdown
|
如果使用 IISLockdown,请注意下列缺陷:
| • | IIS 元数据库更新可能丢失。如果通过再次运行 Iislockd.exe 来撤消 IISLockdown 的更改,则会丢失自上次运行 IISLockdown 以来对 IIS 元数据库所做的所有更改。例如,如果在运行 IISLockdown 后,将一个虚拟目录配置为应用程序根,则在再次运行 IISLockdown 后,将丢失此更改。 |
| • | 资源被 404.dll 阻止。对于以前可用的资源,如果收到 404 错误,则可能是因为该资源类型被 404.dll 阻止。要确认是否是这个原因,请在 IIS 中检查所请求资源类型的脚本映射。 |
在运行 IISLockdown 时将安装 URLScan ISAPI 筛选器。如果没有明确允许 DEBUG 谓词,URLScan 将禁止进行调试。同样,URLScan 阻止包含不安全字符(如用于目录遍历的句点 (.))的请求。
要配置 URLScan,请编辑位于 %Windir%\System32\inetsrv\urlscan\ 中的 URLScan.ini。要允许使用 URLScan 进行调试,请在 URLScan.ini 中的 [AllowVerbs] 节内添加 DEBUG,如下所示。
[AllowVerbs] GET HEAD POST DEBUG
如果安装 URLScan,请注意下列缺陷:
| • | 在使用 Visual Studio .NET 调试应用程序时,可能看到下面的错误: Microsoft 开发环境: 尝试运行工程时出错:无法启动 Web 服务器上的调试。无法启动 ASP.NET 或 ATL 服务器调试。 请验证当前在服务器上已正确安装了 ASP.NET 或 ATL 服务器。您是否要禁用试图为此工程调试 ASP.NET 页的功能? 您应该可以在 \WINNT\system32\inetsrv\urlscan 文件夹中的 URLScan<date>.log 内看到类似下面的日志条目。 [01-18-2003 - 22:25:26] Client at 127.0.0.1:Sent verb 'DEBUG', which is not specifically allowed.Request will be rejected. |
| • | 您希望生效的请求可能被阻止。 |
| • | 您可能无法在 Visual Studio .NET 中创建新的 Web 项目,原因是您在项目名中使用了 URLScan 拒绝的字符。例如,逗号 (,) 和磅符号 (#) 将被阻止。 |
如果在调试过程中遇到错误,请参阅 Microsoft 知识库文章 306172 INFO:在 Visual Studio .NET 中调试 ASP.NET 应用程序时出现的常见错误。
要更新 SQL Server 和 MSDE,您必须:
| • | 对 SQL Server 和 MSDE 的每个实例应用修补程序 |
| • | 分析 SQL Server 和 MSDE 的安全配置 |
MSDE 与 SQL Server 共享公共技术,它使开发人员、合作伙伴和 IT 专业人员能够生成数据库应用程序,而无需完整的 SQL Server 产品。MSDE 可以与需要数据库支持的应用程序一起打包。要对 MSDE 应用修补程序,必须知道在系统上安装了哪个应用程序。这一点是很重要的,因为您必须从产品供应商那里获得 MSDE 的修补程序。
有关包含 MSDE 的应用程序的详细信息,请参阅下列资源:
| • | “Microsoft Products That Include MSDE 2000”,网址为 http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/MSDEapps.asp(英文) |
| • | “SQL Server/MSDE-Based Applications”,网址为 http://www.sqlsecurity.com/forum/applicationslistgridall.aspx(英文) |
如果第三方供应商没有提供 MSDE 的修补程序,而且如果最新的修补程序很关键,则只能执行以下操作:
| • | 使用“添加/删除程序”卸载 SQL Server 实例。如果没有看到实例所对应的卸载选项,可能需要卸载该应用程序。 |
| • | 使用“计算机管理”中的“服务”MMC 管理单元停止 SQL Server 实例。还可以通过从命令行运行下面的命令来停止该实例: net stop mssqlserver(默认实例),mssql$instancename(用于其他实例) |
| • | 使用 IPSec 限制哪些主机可以连接到 SQL Server 的已放弃(未修补)实例。限制对本地主机客户端的访问权。 |
使用 MBSA 分析您的工作站上 Microsoft SQL Server 或 MSDE 的配置。
| • | 分析 SQL Server 和 MSDE 的安全配置
|
有关使用 MBSA 的详细信息,请参阅本指南“如何”部分中的如何:使用 Microsoft 基准安全分析器 (MBSA)。
要评估您的工作站配置的安全性,请检查表 1 中显示的配置类别。首先使用类别来评估基本操作系统的安全配置。然后针对相同的配置类别检查您的 IIS、SQL Server 和 .NET Framework 安装。
表 1 配置类别
| 配置类别 | 方法 |
修补程序和更新 | 设置“自动更新”。使用 MBSA 或 Windows Update 验证是否安装了最新的更新 |
服务 | 禁用未使用的服务。 |
协议 | 如果您的工作站不是某个域的成员,则检查是否删除了 SMB 和 TCP 上的 NetBIOS。 |
帐户 | 检查所有本地帐户是否都使用了强密码。 |
文件和目录 | 确保您的工作站只使用 NTFS 分区。 |
共享 | 枚举共享,删除不必要的共享,并用受限制的权限保护剩余的共享。 |
端口 | 对于未使用的端口,通过禁用已打开该端口的服务来确保关闭该端口。要验证在侦听哪些端口,请使用 netstat n a 命令。 |
注册表 | 禁用空会话。 |
审核与日志记录 | 审核失败的 Windows 登录尝试,并记录整个文件系统中的失败操作。 |
监视工作站的安全状态并定期更新,这有助于禁止新发现的安全漏洞被利用。除使用 Windows Update 外,还应订阅 Microsoft 安全性通告服务,其网址为 http://register.microsoft.com/subscription/subscribeme.asp?ID=135(英文),注册后可经常收到电子邮件公告,通知您新的修补程序和更新。
您还可以使用 TechNet 网站上的“Hotfix & Security Bulletin Service”,网址为 http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/current.asp(英文)。这允许您查看适合您的系统的安全公告。