在此步骤中,验证您的服务器证书。
验证您的服务器证书
检查以下四项以确认 Web 服务器证书的有效性:
检查有效的起始日期和有效的截止日期是否在范围之内。 | |
检查证书是否正确使用。如果是作为服务器证书颁发的,则不应该用于电子邮件。 | |
检查证书链中的公钥是否直至可信根都有效。 | |
检查它没有被撤消。它不能在来自颁发证书的服务器的证书撤消列表 (CRL) 上。 |
本部分讨论了如何加固适用于所有应用程序的机器级设置的信息。有关特定于应用程序的加固设置,请参阅“保护 ASP.NET 应用程序的安全”单元。
machine.config 文件维护着大量机器级范围的 .NET Framework 设置,其中许多设置都会影响安全。Machine.config 位于以下目录:
%windir%\microsoft.net\framework\{version}\config
注 您可以使用任何文本编辑器或者 XML 编辑器(例如记事本)编辑 XML 配置文件。XML 标签是区分大小写的,因此一定要使用正确的大小写。
在此步骤中,应该:
将受保护的资源映射到 HttpForbiddenHandler。 | |
验证跟踪是否已经禁用。 | |
验证调试编译是否禁用。 | |
验证 ASP.NET 错误未返回到客户端。 | |
验证会话状态设置。 |
将受保护的资源映射到 HttpForbiddenHandler
http 处理程序位于 Machine.config 中,在 <httphandlers> 元素之下。HTTP 处理程序负责处理特定文件扩展名的 Web 请求。不应该在前端 Web 服务器上启用远程处理;只应该在与 Internet 隔离的中间层应用程序服务器上启用远程处理。
以下文件扩展名在 Machine.config 中映射到 HTTP处理程序: | |
.aspx 用于 ASP.NET 页 | |
.rem 和 .soap 用于远程处理。 | |
.asmx 用于 Web 服务。 | |
.asax、.ascx、.config、.cs、.csproj、.vb、.vbproj、.webinfo、.asp、.licx、.resx 和 .resources 是受保护的资源,映射到 system.web.httpforbiddenhandler。 |
对于 .NET Framework 资源,如果您不使用文件扩展名,则应该将扩展名映射到 Machine.config 中的 system.web.httpforbiddenhandler,如下例所示:
<add verb="*" path="*.vbproj" type="System.Web.HttpForbiddenHandler" />
在此情况下,.vbproj 文件扩展名映射到 system.web.httpforbiddenhandler。如果客户端请求一个以 .vbproj 终止的路径,则 ASP.NET 返回一条消息:“This type of page is not served”。
以下指导可以用于处理 .NET Framework 文件扩展名: | |
将不使用的扩展名映射到 HttpForbiddenHandler。如果您不提供 ASP.NET 页,则将 .aspx 映射到 httpforbiddenhandler。如果您不使用 Web 服务,则将 .asmx 映射到 httpforbiddenhandler。 | |
在面对 Internet 的 Web 服务器上禁用远程处理。将面对 Internet 的 Web 服务器上的远程处理扩展名 (.soap 和 .rem)映射到 httpforbiddenhandler。 |
禁用 .NET Remoting
要禁用 .rem 和 .soap 扩展名的 .NET Remoting 禁用请求,使用<httphandlers> 之下的以下元素:
<add verb="*" path="*.rem" type="System.Web.HttpForbiddenHandler"/><add verb="*" path="*.soap" type="System.Web.HttpForbiddenHandler"/>
注 这不能通过使用远程处理基础结构来防止 Web 服务器上的 Web 应用程序连接下游对象。但是,它能够防止客户端连接 Web 服务器上的对象。
验证跟踪是否禁用
通过使用 <trace> 元素来配置 Machine.config 中的跟踪。虽然在开发和测试服务器上跟踪很有用,但是不应该在生产服务器上启用跟踪,因为系统级跟踪信息能够极大地辅助攻击者分析应用程序,探查弱点。
在生产服务器上使用以下配置:
<trace enabled="false" localOnly="true" pageOutput="false" requestLimit="10" traceMode="SortByTime"/>
在生