查ip查手机 | 身份证验证 | 在线翻译 | 简繁转换 | 天气预报 | 邮编区号 | 火车时刻 | 飞机航班 | 世界时间 | 阴阳万年历
度衡量 | 实时汇率 | Alexa排名 | PR值查询 | 域名查询 | 住房贷款计算 | 搜索引擎收录 | 实用网址 | 友情链接

查看完整版本: [微软教程] 安全部署审查

delta 2007-7-7 08:36

[微软教程] 安全部署审查

安全部署审查发布日期: 1/10/2005 | 更新日期: 1/10/2005] G)L!M3U Cm e#S
[img=250,68]http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/art/pponline.gif[/img](},\"g-A;n#]vI
mn@'\5_jJ1rm2@

l`T8F e_T 5iz(Ir2u*c2C
[url=http://www.microsoft.com/security/guidance/topics/default.mspx][color=#0000ff]查看全部的安全性指导主题[/color][/url]
NW6|N6y\5m-c Microsoft Corporation6B0?by S}Ey{
"f/WX$Y'F#\h$t|
[img=30,6]http://img.microsoft.com/library/gallery/templates/MNP2.Common/images/3squares.gif[/img]"J l_&fFX d9Z.g
本单元概要在 ASP.NET Web 应用程序部署在实际服务器上之后,必须确保最后的部署安全地实现,而且 Web 应用程序环境尽可能安全和得到保护。
v"z7n6\atq%T2i \ Z 如果底层的基础结构不安全而且容易受到威胁,那么创建 ASP.NET Web 应用程序时的所有努力,即设计时安全、默认时安全和部署时安全(即能够在高度安全和受保护的服务器环境中工作)也无法保护应用程序。脆弱的网络或者主机配置设置会产生可能而且将被利用的缺陷。
*Mx~,G*WR| 本单元包含一个覆盖了网络和主机安全配置问题的全面列表。这提供了一个方法和框架,有助于执行安全审核。
u0{E+Z9u ^)i%_2^p [url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]/nP%}V&V f#h7Zb
目标使用本单元可以: 0\Bm/A#\2N3Mt
[table][tr][td]•[/td][td]确保您的 ASP.NET Web 应用程序安全地部署,并且正寄宿在安全的环境中。 ?~u"o?/`|k9{0O
[/td][/tr][tr][td]•[/td][td]创建一个执行部署审查和安全审核的方法和框架。 eLev/W@D8e8kZ?
[/td][/tr][tr][td]•[/td][td]通过询问安全问题的一个全面列表快速定位安全问题。 &yEn6P GdE
[/td][/tr][tr][td]•[/td][td]审查以下的已部署配置:网络和主机、基础 Windows 2000、IIS 和 .NET Framework、Web 应用程序和 Web 服务、企业服务、远程处理和 SQL Server。
3}'e gMJ ~5~&O [/td][/tr][/table][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]6R;RL b~B9egA,Mk
适用范围本单元适用于下列产品和技术: ~X @IB"Twv5~,p
[table][tr][td]•[/td][td]Microsoft® Windows® Server 2000 操作系统 -[%u*z_Lg(ZsHC[q
[/td][/tr][tr][td]•[/td][td]Microsoft .NET Framework 1.1 和 ASP.NET 1.1
5LY_ ~5|`'h [/td][/tr][tr][td]•[/td][td]Microsoft SQL Server™ \N zl,pU4g/wt
[/td][/tr][/table][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]OMme'C:Lp!M%F
如何使用本单元使用本单元可以确保 ASP.NET Web 应用程序安全地部署,并且寄宿在安全的环境中。
'N7v(O6W,W5I)kN3v#h [table][tr][td]•[/td][td]要想充分利用本单元:
`(jZh)tR+O [/td][/tr][tr][td]•[/td][td]阅读“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod94.asp][i][color=#0000ff]安全代码审查[/color][/i][/url]”单元,遵循其中的方法确保 Web 应用程序在开发时就是安全的。
l(O8f g8? [/td][/tr][tr][td]•[/td][td]使用配置类别。使用本单元中标识的类别可以帮助使您的安全审查工作更加集中。 r2}t#u&i&r?9t3b4~;Zh
[/td][/tr][tr][td]•[/td][td]使用本指南第 IV 部分中与本单元配套的保护单元: -u'h` _b N
[table][tr][td]•[/td][td]“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod88.asp][i][color=#0000ff]保护网络的安全[/color][/i][/url]”
1td JLh [/td][/tr][tr][td]•[/td][td]“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod89.asp][color=#0000ff][i]保护[/i][i] Web [/i][i]服务器的安全[/i][/color][/url]” Z/z/zq8P;V
[/td][/tr][tr][td]•[/td][td]“保护应用程序” xv C2i&W*C[t
[/td][/tr][tr][td]•[/td][td]“保护数据库服务器” b7t?Bu3O
[/td][/tr][tr][td]•[/td][td]“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod92.asp][color=#0000ff][i]保护[/i][i] ASP.NET [/i][i]应用程序的安全[/i][/color][/url]”
*`I2u u6e/~'uj [/td][/tr][tr][td]•[/td][td]“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod93.asp][color=#0000ff][i]寄宿多个[/i][i] Web [/i][i]应用程序[/i][/color][/url]”
9e,IaY:K-x [/td][/tr][/table][/td][/tr][tr][td]•[/td][td]使用配套的核对表
WkY)[ M)xnQ [table][tr][td]•[/td][td]“[url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/ChecklistSecurNetwork.mspx][i][color=#0000ff]核对表:保护网络的安全[/color][/i][/url]”
W+])o|;HN&n [/td][/tr][tr][td]•[/td][td][i]“ [url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/ChecklistSecurWebServer.mspx][color=#810081]核对表:保护 Web 服务器的安全[/color][/url]” [/i]2y5V'n+hK)Y-w
[/td][/tr][tr][td]•[/td][td]“核对表:保护数据库服务器”
+p|N2\V4}$d4H^ [/td][/tr][tr][td]•[/td][td]“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod106.asp][i][color=#0000ff]核对表:托管代码的安全审查[/color][/i][/url]” Y4^\$xJ3}Kp
[/td][/tr][/table][/td][/tr][/table]本页内容[table][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ENB][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ENB][color=#0000ff]本单元概要[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ESB][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ESB][color=#0000ff]目标[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#E5B][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#E5B][color=#0000ff]适用范围[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#EIC][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#EIC][color=#0000ff]如何使用本单元[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ERF][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ERF][color=#0000ff]概述[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#EBG][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#EBG][color=#0000ff]Web 服务器配置[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#EIAAE][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#EIAAE][color=#0000ff]IIS 配置[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ELOAE][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ELOAE][color=#0000ff]Machine.Config[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ESAAG][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ESAAG][color=#0000ff]Web 服务[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ELDAG][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#ELDAG][color=#0000ff]企业服务[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#EMLAG][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#EMLAG][color=#0000ff]远程处理[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#EDQAG][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#EDQAG][color=#0000ff]数据库服务器配置[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#E2BBG][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#E2BBG][color=#0000ff]网络配置[/color][/url][/td][/tr][tr][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#E3IBG][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif[/img][/color][/url][/td][td][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#E3IBG][color=#0000ff]小结[/color][/url][/td][/tr][/table][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/color][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]
T WO)if9L3Ca 概述Web 应用程序的安全依赖于应用程序部署所在的底层基础结构的安全。脆弱的网络或者主机配置设置将产生可能和将要被利用的缺陷。本单元中覆盖的部署审查检查了网络和主机的配置。主机包括 Windows 2000 Server,根据服务器角色的不同,还可能包括 IIS、Microsoft .NET Framework、企业服务和 SQL Server。:ho2O0~ `5_F `
部署审查过程中需要涉及的主要配置元素如图 1 中所示。"f8zAMN O4c0Q \+{ u"?
[img=439,254]http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/art/f22secmod01.gif[/img]
R(|#P%a;[4N~ [b]图[/b][b] 1. [/b][b]部署审查的核心元素[/b].A+y'D6n0e&AMN

)b&bfQ9m%c ~ C
*M T|Nv h$sR [url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]4gM BpU b4}
Web 服务器配置审查中此阶段的目的是标识 Web 服务器上基础操作系统配置中的缺陷。这不包括 IIS 配置,后者需要单独处理。有关本部分中审查问题所提出问题的进一步背景信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod89.asp][color=#0000ff]保护 Web 服务器的安全[/color][/url]”单元。
;xQ~ q W;] 要帮助集中和组织审查过程,将审查问题划分为以下配置类别: }Nl Ey2?0f0U
[table][tr][td]•[/td][td][b]修补程序和更新[/b]
,^+ug*R z Ln [/td][/tr][tr][td]•[/td][td][b]服务[/b]
Ubs0kP [/td][/tr][tr][td]•[/td][td][b]协议[/b]e"n|q$Uu8Lr
[/td][/tr][tr][td]•[/td][td][b]帐户[/b]
3}])`:cm8wO6c [/td][/tr][tr][td]•[/td][td][b]文件和目录[/b]B2AO;A"V-p ?
[/td][/tr][tr][td]•[/td][td][b]共享[/b]9B EZ1z j
[/td][/tr][tr][td]•[/td][td][b]端口[/b]6nNt:Me5|
[/td][/tr][tr][td]•[/td][td][b]注册表[/b]l:e*])nM4AV
[/td][/tr][tr][td]•[/td][td][b]审核和日志记录[/b]&^uL%\:A+\
[/td][/tr][/table][b]修补程序和更新[/b]b+ZH+^2d-_k
验证您的服务器是否使用最新的服务包和软件修补程序进行了更新。需要分别检查操作系统组件和 .NET Framework。审查以下问题:
EF"Ma0OQ [table][tr][td]•[/td][td][b]运行[/b][b] MBSA [/b][b]了吗?[/b]
@] b]u$p 确保您已经运行 MBSA 工具标识了常见的 Windows 和 IIS 缺陷,并标识了遗漏的服务包和修补程序。 C | h(O,@S!uF
通过修补已标识的缺陷,并安装最新的修补程序和更新,对 MBSA 的结果做出响应。有关更多信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod89.asp][color=#0000ff]保护 Web 服务器的安全[/color][/url]”单元中的“第 1 步. 修补程序和更新”。 4L'|9F~2W5y!}0? w
[/td][/tr][tr][td]•[/td][td][b]安装[/b][b] .NETFramework [/b][b]更新了吗?[/b]
U RsmI/Q9wT/t\ 要确定 .NET Framework 的当前版本,请参阅 Microsoft 知识库文章 318785,“[url=http://msdn.microsoft.com/isapi/gosupport.asp?Target=/default.aspx?scid=kb;en-us;Q318785][color=#0000ff][i]INFO[/i][i]:[/i][i]Determining Whether Service Packs Are Installed on the .NET Framework[/i][/color][/url]”。然后将 .NET Framework 的已安装版本与当前服务包做比较。为此,使用文章 318836 中列出的 .NET Framework 版本,“ [url=http://msdn.microsoft.com/isapi/gosupport.asp?Target=/default.aspx?scid=kb;en-us;Q318836][color=#0000ff][i]INFO [/i][i]:[/i][i]How to Obtain the Latest .NET Framework Service Pack[/i][/color][/url]”。 ,z![3g&G6gzook
[/td][/tr][/table][b]服务[/b]
W3a;b!GT 确保只启用必需的服务。检查是否所有其他服务都已经禁用,这样能够减少服务器的受攻击面。为了查看哪些服务正在运行和启用,使用服务和应用程序 Microsoft 管理控制台 (MMC) 管理单元,可以从“计算机管理”中访问。要禁用一个服务,一定要先停止它,然后将其启动类型设置为手动。:t'S7rt"SC;c
审查以下问题以验证您的服务配置: ~9J!q7My D?1G
[table][tr][td]•[/td][td][b]运行不必要的服务了吗?[/b]:\+x6S3L;?5t
通过使用服务管理单元,审查每个正在运行的服务,确认每个服务都是必需的。标识为什么必需,哪些解决方案要依赖于它。确保禁用所有不必要的服务。 F]j%o(E?d
[/td][/tr][tr][td]•[/td][td][b]禁用[/b][b] Telnet [/b][b]服务了吗?[/b] L5|#Cxo
Telnet 经常用于远程 IIS 管理。但是它是一个不安全的协议,容易遭到许多攻击。检查是否禁用了 Telnet 服务。要获得更安全的管理解决方案,应该使用终端服务。
0VW.\1t/l%z%m}/c [/td][/tr][tr][td]•[/td][td][b]禁用[/b][b] FTP[/b][b]、[/b][b]SMTP [/b][b]和[/b][b] NNTP [/b][b]服务了吗?[/b] ke ^H|w
这些服务都是不安全协议,有已知的缺陷。如果您不需要,就应该禁用它们。如果您需要使用它们,则应该寻找安全的替代方案。这些服务都在服务 MMC 管理单元中列出,即 FTP 发布服务,简单邮件传输协议 (SMTP) 和网络新闻传输协议 (NNTP)。 3Q^c!{E-L
[b]注[/b] IISLockdown 禁用这些服务。&_"WMdNs'R1Y6XR
[/td][/tr][tr][td]•[/td][td][b]使用[/b][b] ASP.NET [/b][b]会话状态服务了吗?[/b]3\1o&] r:s2K7Up
要想知道应用程序是否使用了这个服务,可以查看应用程序的 Web.config 文件中的 <[b]sessionState[/b]>[b]元素。如果[/b][b] Web.config [/b][b]不包含这个元素,检查[/b][b] Machine.config [/b][b]中它的设置。如果[/b][b] mode[/b] 属性设置为“StateServer”而且 [b]stateConnectionString[/b] 指向本地机器例如本地主机地址,就需要在 Web 服务器上使用会话状态服务,如下所示:
k8?H&Q9XpV{8D <sessionState mode="StateServer"          stateC />如果您没有在 Web 服务器上使用该服务,就应该禁用它。在服务 MMC 管理单元中它是以“ASP.NET State Service”的形式列出的。
-JDC%bN:Nq7?2m'L*n 有关如何保护 ASP.NET 会话状态的更多信息,请参考“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod92.asp][color=#0000ff][i]保护[/i][i] ASP.NET [/i][i]应用程序的安全[/i][/color][/url]”单元中的“会话状态”。
8c ]H a$cen^U+LgA#Gy [/td][/tr][/table][b]协议[/b]
;b`#sM9@ 审查服务器上启用了哪些协议,确保没有启用不必要的协议。使用以下问题辅助审查服务器上的协议: v"m+aE Ohns
[table][tr][td]•[/td][td][b]使用[/b][b] WebDAV [/b][b]了吗?[/b]
R#ur4J;E 如果您使用 Web 分布式创作和版本控制协议 (WebDAV) 发布内容的话,那么应该确保它是安全的。如果您不使用它,应该禁用此协议。
f,NZ O+pf't!ZcW 有关如何保护 WebDAV 的信息,请参阅 Microsoft 知识库文章 323470,“[url=http://msdn.microsoft.com/isapi/gosupport.asp?Target=/default.aspx?scid=kb;en-us;Q323470][i][color=#0000ff]How To:Create a Secure WebDAV Publishing Directory[/color][/i][/url]”。有关禁用 WebDAV 的信息,请参阅文章 241520,“[url=http://msdn.microsoft.com/isapi/gosupport.asp?Target=/default.aspx?scid=kb;en-us;Q241520][color=#0000ff][i]How to Disable WebDAV for IIS [/i][i]5.0[/i][/color][/url]”。
'B7e$EHd [/td][/tr][tr][td]•[/td][td][b]加固[/b][b] TCP/IP [/b][b]堆栈了吗?[/b]
,`8t5`-Lu$T&\ 确保加固了 TCP/IP 堆栈,以防止网络级拒绝服务攻击,包括 SYN flood 攻击。为了检查服务器上的堆栈是否加固,使用 Regedt32.exe 并检查以下注册表项: ;hU[,~pK.F
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters如果存在以下子项,则表示已经加固了 TCP/IP 堆栈:[b]SynAttackProtect[/b][b]、[/b][b]EnableICMPRedirect[/b][b]、[/b]和 [b]EnableDeadGWDetect[/b]。
h;{ `/M|&J| 有关完全加固堆栈所必需的项和相应项值的完整列表,请参阅本指南“如何做”部分中的“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod109.asp][i][color=#810081]How To Harden the TCP/IP Stack[/color][/i][/url]”。 r,^ua&C j
[/td][/tr][tr][td]•[/td][td][b]为面向[/b][b] Internet [/b][b]的网卡禁用[/b][b] NetBIOS [/b][b]和[/b][b] SMB [/b][b]了吗?[/b]
q6_f N+IY@ 检查是否禁用了 TCP/IP 上的 NetBIOS,并且禁用了 SMB,以防止主机枚举攻击。有关更多信息,请参阅单元“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod89.asp][color=#0000ff][i]保护[/i][i] Web [/i][i]服务器的安全[/i][/color][/url]”中的“协议”。
I4jSGzO)S f [/td][/tr][/table][b]帐户[/b]
j0p c8J U }*G 审查服务器上使用的所有 Windows 帐户,以确保不存在不必要的帐户,而且所有必要的帐户都配置为最低特权和必需的访问权限。以下问题有助于标识帐户缺陷:
6lt!W0o;pD|V6X [table][tr][td]•[/td][td][b]删除或者禁用所有未用的帐户了吗?[/b]
GzlcOT vr)e,U 执行审核以验证所有帐户都在使用,而且是必需的。删除或者禁用任何不必要的帐户。本地管理员帐户和 [b]guest[/b] 帐户无法删除。应该禁用 [b]guest[/b] 帐户并将 [b]Administrator[/b] 帐户改名,确保它有坚固的密码。 T'mY,yB(Bu)~(fP
[/td][/tr][tr][td]•[/td][td][b]禁用[/b][b] Guest [/b][b]帐户了吗?[/b](_.~&@9_@\A
要检查是否禁用了 [b]guest[/b] 帐户,显示计算机管理工具中的 [b]Users[/b] 文件夹,并检查是否 [b]guest[/b] 帐户旁显示有叉号图标。如果没有禁用,显示 [b]Properties[/b] 对话框并选择 [b]Account is disabled[/b]。 M`f3ccHi,i
[/td][/tr][tr][td]•[/td][td][b]重命名默认管理员帐户了吗?[/b]6D i4P1Tb6[v'dw2s
默认的本地 [b]administrator[/b] 帐户是攻击的主要目标。验证已经重命名了 [b]administrator[/b] 帐户,并赋予其坚固的密码。 RX0}(@,v8}G
[/td][/tr][tr][td]•[/td][td][b]创建自定义匿名[/b][b] Web [/b][b]帐户了吗?[/b]-gw^|K,d
检查是否禁用了默认 [b]IUSR_MACHINE[/b] 帐户,并且已经配置了替代的 [b]anonymous user[/b] 帐户供 Web 应用程序使用。 e#T.Fmc3{ O'{f
[/td][/tr][tr][td]•[/td][td][b]使用坚固的密码策略了吗?[/b](y'L2\*v:WKZ:e
使用本地安全策略工具审查密码策略。有关推荐的密码策略的信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod89.asp][color=#0000ff][i]保护[/i][i] Web [/i][i]服务器的安全[/i][/color][/url]”单元中“第 5 步:帐户”。
@9\5o)w/`aW-d [/td][/tr][tr][td]•[/td][td][b]限制远程登录了吗?[/b]
Qx)`ve3g 检查本地安全策略工具中的用户权限指派,以确保 Everyone 组没有被授予“从网络访问本计算机”的用户权限。
l;t2Fi*D%sl+W? [/td][/tr][tr][td]•[/td][td][b]禁用空会话了吗?[/b]T,J Z.CGh#TMd [&i
检查是否禁用了空会话,以防止您的服务器创建匿名(未经过身份验证的)会话。为了检查这一点,运行 Regedt32.exe 并确认 [b]RestrictAnonymous[/b] 项设置为 1,如下所示。
PXj;ONqV f HKLM\System\CurrentControlSet\Control\LSA\RestrictAnonymous=1[/td][/tr][/table][b]文件和目录[/b]w:AzW5B$L
以下审查问题能够验证是否适当地使用 NTFS 权限锁定了一些帐户,例如匿名 Web 用户帐户。
O_ L;o T:yd#n6~ [table][tr][td]•[/td][td][b]IIS [/b][b]安装在[/b][b] NTFS [/b][b]卷上吗?[/b]rH"^p$L)Jp
这使您能够使用 NTFS 配置资源的 ACL 以限制访问。不要构建使用 FAT 分区的服务器。 d M#i6b@ gtn
[/td][/tr][tr][td]•[/td][td][b]限制[/b][b] Everyone [/b][b]组了吗?[/b]
l\.YxQN3m 使用 Windows 资源管理器确保 Everyone 组不具备访问以下目录的权限:
8_ |] lL [table][tr][td]•[/td][td]根目录 (:\)
2U#l/em%M ]%D [/td][/tr][tr][td]•[/td][td]系统目录 (\WINNT\system32)
!}j"l;g9U W/S [/td][/tr][tr][td]•[/td][td]框架工具目录 (\WINNT\Microsoft.NET\Framework\{version}) B-T+OY J4\aW
[/td][/tr][tr][td]•[/td][td]Web 站点根目录和所有内容目录(默认时是 \inetpub\*)
9`z&Ip GyE [/td][/tr][/table][/td][/tr][tr][td]•[/td][td][b]限制匿名[/b][b] Web [/b][b]用户帐户了吗?[/b]
3@u%V R\:u 确保匿名 Internet 用户帐户不能写入 Web 内容目录。使用 Windows 资源管理器查看每个内容目录的 ACL。还要检查 %windir%\system32 目录的 ACL,以确保它不能访问系统工具和实用工具。 4[ KPru$[-|Oj
[b]注[/b] 如果您运行 IISLockdown,Web 匿名用户组和 Web 应用程序组可以用来限制访问。默认时,Web 匿名用户组包含 IUSR 帐户,而 Web 应用程序组包含 Internet Web 应用程序管理器 (IWAM)。从管理的角度来看,限制访问一个组比限制单独的帐户要好。;b8Ql5q G s [ g
[/td][/tr][tr][td]•[/td][td][b]保护或者删除实用工具和[/b][b] SDK [/b][b]了吗?[/b]s\.y])r0^3tpU$w{
验证服务器上没有实用工具或者软件开发包 (SDK)。确保没有安装 Visual Studio.NET 和任何 .NET Framework SDK。还要确保使用 NTFS 权限限制了对强大系统工具(例如 At.exe、Cmd.exe、Net.exe、Pathping.exe、Regedit.exe、Regedt32.exe、Runonce.exe、Runas.exe、Telnet.exe 和 Tracert.exe)的访问。最后,确保服务器上没有安装调试工具。IISLockdown 自动限制 Web 匿名用户组和 Web 应用程序组对系统工具的访问。
Sj:t9gb GOK,F [/td][/tr][tr][td]•[/td][td]删除未用的 DSN 了吗? Rh:o!rR3W
验证所有未用的数据源名 (DSN) 已经从服务器删除,因为它们可能包含明文数据库连接详细信息。
\l:P%]R ]7K0v [/td][/tr][/table][b]共享[/b]!n)o? kb Z'}(L7O
审查以下问题以确保不存在文件共享不必要地公开服务器: %}w3b.lc.^
[table][tr][td]•[/td][td][b]服务器上有什么共享?[/b]
tOzgJk 要审查共享和相关的权限,运行计算机管理 MMC 管理单元,选择 [b]SharedFolders[/b] 之下的 [b]Shares[/b]。检查是否所有共享都是必需的。删除任何不必要的共享。
!NT?wi1JRD [/td][/tr][tr][td]•[/td][td][b]Everyone [/b][b]组能够访问共享吗?[/b]
wu;h9[k:IH0@ 验证 Everyone 组没有被授予访问共享的权限,除非故意如此,还要验证已经配置特定的权限来代替。 .He-S~T+e
[/td][/tr][tr][td]•[/td][td][b]删除管理共享了吗?[/b]
-qNYtt(O!L \7X 如果您不允许远程管理服务器,那么检查是否管理共享(例如 C$ 和 IPC$)已经删除。
-DZZ7joCO c [/td][/tr][/table][b]端口[/b]u1B6\1fZy*r:T
审查服务器上的活动端口,以确保不存在不必要的端口。要验证正在侦听哪些端口,运行以下 [b]netstat[/b] 命令。
M1C;s C U1y$~#U netstat -n -a这个命令生成以下输出:i`DW'_i5u)j
[img=433,322]http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/art/f22secmod02.gif[/img]S;E#i _\` pm Vv
[b]图[/b][b] 2. Netstat [/b][b]的输出[/b]F}y)o4qnZ
C8H'QC i-^
1J5u Z [.Jt;v?
这个输出列出了所有端口以及它们的地址和当前状态。确保您知道每个侦听端口公开的服务,并验证每个服务都是必需的。禁用任何未用的服务。{e9m`&B0Z#FB
要从 netstat 输出筛选出特定的字符串模式,可以将其与操作系统 findstr 工具结合使用。以下示例筛选了处于“LISTENING”状态的端口的输出。B6V;f(l*l [_
netstat -n -a | findstr LISTENING您还可以使用 Portqry.exe 命令行实用工具验证 TCP/IP 端口的状态。有关工具和如何下载的更多信息,请参阅 Microsoft 知识库文章 310099,“[url=http://msdn.microsoft.com/isapi/gosupport.asp?Target=/default.aspx?scid=kb;en-us;Q310099][color=#0000ff]Description of the Portqry.exe Command-Line Utility[/color][/url]”。
2m&y1_qX 还要审查以下问题:
ueh3|D GOS [table][tr][td]•[/td][td][b]面向[/b][b] Internet [/b][b]的端口被限制为[/b][b] TCP 80 [/b][b]和[/b][b] 443[/b]。 o6k3Wv5T~'_0k
[/td][/tr][tr][td]•[/td][td][b]Intranet [/b][b]流量是受限的或者进行了加密[/b]。
+vC8{ N(ay;v0Jd [/td][/tr][/table][b]注册表[/b]u jixGH
通过以下问题审查注册表配置的安全: ~`,x F'LO8o [
[table][tr][td]•[/td][td][b]限制远程注册表管理了吗?[/b]
/q)[Jg;~+Jp 使用 Regedt32.exe 以审查 WinReg 注册表项的 ACL,这能够控制是否可以远程访问注册表。 *u7N&I*u'A-`q4TcM
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winregWindows 2000 上默认时远程注册表访问权限仅限于 [b]Administrators[/b] 和 [b]Backup operators[/b] 组的成员。为了尽量提高安全性,通过使用空的自由访问控制列表 (DACL) 限制对注册表的所有远程访问。
!U!e_:GgWN [b]注[/b] 有些服务需要远程访问注册表。请参阅 Microsoft 知识库文章 153183“[url=http://msdn.microsoft.com/isapi/gosupport.asp?Target=/default.aspx?scid=kb;en-us;Q153183][i][color=#0000ff]How to Restrict Access to the Registry from a Remote Computer[/color][/i][/url]”,查看是否您的场景要求有限的远程注册表访问。
4`c4K9V ^R1pN!NC [/td][/tr][tr][td]•[/td][td][b]保护[/b][b] SAM [/b][b]了吗?[/b]
I tpYR%j| 这只适用于独立服务器。检查是否通过如下所示在注册表中创建了项(而不是值)[b]NoLMHash[/b],从而限制了安全帐户管理器 (SAM) 数据库中的 LMHash 存储区: 0J.x UMj9W
HKLM\System\CurrentControlSet\Control\LSA\NoLMHash[/td][/tr][/table][b]审核和日志记录[/b]5uG1fv.u}WL
通过以下问题审查 Windows 审核的使用。 `uO#S!x7`;MK5Q0a5Td U
[table][tr][td]•[/td][td][b]记录所有失败的登录企图了吗?[/b]
~U#WvlF W 使用本地安全策略工具检查是否启用了对失败登录企图的审核。
3^%Fu'E8],q x$O [/td][/tr][tr][td]•[/td][td][b]记录所有文件系统的失败操作了吗?[/b]
J!L ]D4ls T 使用本地安全策略工具检查是否启用了对象访问审核。然后检查是否整个文件系统都启用了审核。 Z;B9o;vP?3g5b
[/td][/tr][/table][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]
8[.}&r e$g1g N IIS 配置提供审查和提高 IIS 配置设置的安全性,可以有效地减少 Web 服务器的受攻击面。有关本部分中讨论的审查点的更多信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod89.asp][color=#0000ff][i]保护[/i][i] Web [/i][i]服务器的安全[/i][/color][/url]”单元。"r@0R pa-fTjc
本部分中审查问题已经按以下配置类别组织。
|'Y T!SS"|5UW;C4Y [table][tr][td]•[/td][td][b]IISLockdown[/b]
3KP9H$wsrZK\(| [/td][/tr][tr][td]•[/td][td][b]URLScan[/b]
;Hm O"f+R!jZ%g [/td][/tr][tr][td]•[/td][td][b]站点和虚拟目录[/b]
?+BJ m,Z [/td][/tr][tr][td]•[/td][td][b]ISAPI [/b][b]筛选器[/b]
\ q A1yV [/td][/tr][tr][td]•[/td][td][b]IIS [/b][b]元数据库[/b]
N/} E+DO [/td][/tr][tr][td]•[/td][td][b]服务器证书[/b]G4|"u'Cq6a*bF e6f
[/td][/tr][/table][b]IISLockdown[/b]
O[N8Xc0w P IISLockdown 工具能够标识和关闭功能,以减少 IIS 的受攻击面。为了查看它是否运行在您的服务器上,检查 IISLockdown 生成的以下报告:
xZ5pf-k,Kc6t,` \WINNT\system32\inetsrv\oblt-rep.log有关 IISLockdown 的更多信息,请参阅本指南“如何做”中的“[url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/HowToUseIISLockdown.mspx][color=#0000ff][i]如何使用[/i][i] IISLockdown[/i][/color][/url]”。 |)r?0{7vYOt
[b]URLScan[/b]
&ygsG/e"_f8E8K URLScan 是一个随 IISLockdown 安装的 ISAPI 筛选器。它有助于防止可能有害的请求到达服务器并导致破坏。检查是否已经安装并已经适当地进行了配置。/d nNP1Y-C-J
[b]为了查看是否安装了[/b][b] URLScan[/b]
Sny;]:P u"vv#iE [table][tr][td]1.
5` MC3I R [/td][td]启动 [b]Internet [/b][b]信息服务[/b]。 C3mIW2K1E:f:E?%xO
[/td][/tr][tr][td]2.
9Y-d.M ? X k [/td][td]鼠标右击服务器(而不是 Web 站点),然后单击 [b]Properties[/b]。
"v`um'lZ8D-GA [/td][/tr][tr][td]3.
o7JO\;x+[/d_ t [/td][td]单击紧靠 [b]MasterProperties[/b] 的 [b]Edit[/b] 按钮。
ys;}/h.C%CL?7uP [/td][/tr][tr][td]4.@.Vf m$z
[/td][td][b]单击[/b][b] ISAPIFilters[/b] 选项卡,查看是否列出了 URLScan。
E%N3jH"H2zO*w [/td][/tr][/table]为了检查 URLScan 配置,使用记事本编辑以下 URLScan 配置文件。
2I s+o n0Z7Z %WINDIR%\System32\Inetsrv\URLScan\URLScan.ini有关 URLScan 的更多信息,请参阅本指南“如何做”部分中的“[url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/HowToUseURLScan.mspx][color=#0000ff][i]如何使用[/i][i] URLScan[/i][/color][/url]”。`'h @D_j$b!R
[b]站点和虚拟目录[/b]} N$hm*~
本部分中的审查问题与 Web 站点的特定配置和应用程序的虚拟目录相关。本部分中,将审查以下类别: D0U\xm"z9[B9K:}
[table][tr][td]•[/td][td][b]Web [/b][b]站点位置[/b]
HcAf7E2sVvRgw [/td][/tr][tr][td]•[/td][td][b]脚本映射[/b]
@G IzC~5x [/td][/tr][tr][td]•[/td][td][b]匿名[/b][b] Internet [/b][b]用户帐户[/b]
yx _IY+[N] [/td][/tr][tr][td]•[/td][td][b]审核和日志记录[/b]
:OL/_^i[w [/td][/tr][tr][td]•[/td][td][b]Web[/b][b]权限[/b]
a9IEl[` wFi [/td][/tr][tr][td]•[/td][td][b]IP [/b][b]地址和域名限制[/b]
1{5o!^%^5t%u*w [/td][/tr][tr][td]•[/td][td][b]身份验证[/b]
-m-Y%|AH| [/td][/tr][tr][td]•[/td][td][b]父路径设置[/b]
v~n9@ o;n)N [/td][/tr][tr][td]•[/td][td][b]Microsoft FrontPage [/b][b]服务器扩展[/b] k;eN.xA:lz
[/td][/tr][/table][b]Web [/b][b]站点位置[/b]
xz,Y|0S6x,d 检查 Web 站点的根目录是否安装在非系统卷中。通过重新定位您的 Web 站点根目录到非系统卷,能够防止攻击者使用目录遍历攻击访问系统工具和可执行文件,例如 Cmd.exe。C/o8o+mM8{T"h
[b]脚本映射[/b]|rYp"I~M
检查是否映射所有不必要的文件扩展名到 404.dll,后者在运行 IISLockdown 时安装。
$v l&GP|n [b]要审查脚本映射[/b]O g'y {zt.]hn
[table][tr][td]1. i `-vD)Vpu
[/td][td]启动 [b]Internet [/b][b]信息管理器[/b]。
5H2w5YgH{{ [/td][/tr][tr][td]2.
8dE@:~:SdH1{iQ'zL [/td][td]鼠标右击 Web 站点并单击 [b]Properties[/b]。 q.ar;{2kW
[/td][/tr][tr][td]3.
wr;M$S0t#V+l8Tnvp [/td][td]单击 [b]Home Directory[/b] 选项卡,然后单击 [b]Application Settings[/b] 组中的 [b]Configuration[/b] 按钮。 ORs,_+a,D#~
[/td][/tr][/table][b]匿名[/b][b]Internet [/b][b]用户帐户[/b]
)gX[#H:U$]0L 验证您的应用程序是否配置为使用了非默认匿名 Internet 用户帐户。如果您的服务器上有多个 Web 应用程序,检查是否每个应用程序都被配置为使用不同的匿名帐户。这使您能够配置权限并跟踪每个 Web 应用程序的活动。
@.~kob bi:d5z3U [b]审核和日志记录[/b]
,S i2{\)C(bk%{ 检查您是否配置 IIS 审核,以帮助检测进行中的攻击,并诊断攻击踪迹。以下审查问题有助于标识 IIS 审核中的缺陷: VBv4JOB0Ek+F
[table][tr][td]•[/td][td][b]日志文件定位在不同的非系统卷了吗?[/b]k amh9w'my
鼠标右击 IIS 中的 Web 站点,单击 [b]Web Site[/b] 选项卡。单击 [b]Properties[/b] 按钮以检查日志文件位置。检查是否日志文件位于一个使用非默认名称的非默认位置(最好在非系统卷上)。 8uWn3Z*Zw,~
[/td][/tr][tr][td]•[/td][td][b]限制访问日志文件了吗?[/b]
T!^,f}M4@ 使用 Windows 资源管理器查看日志文件目录上的 ACL。检查是否 ACL 授予管理员和系统帐户完全控制,但是没有授予其他用户访问权限。
0V e!N5QI*[7e [/td][/tr][/table][b]Web [/b][b]权限[/b]
'`$Ha1?~ 审查为 Web 站点和每个虚拟目录配置的默认 Web 权限。检查是否满足以下条件: U0v GD:wZ&c)}
[table][tr][td]•[/td][td]包括限制 Read 权限的目录。 ;|d,pX'GPW
[/td][/tr][tr][td]•[/td][td]允许匿名访问的虚拟目录配置为限制 Write 和 Execute 权限。
{8u6cN/Bv [/td][/tr][tr][td]•[/td][td]Write 权限和脚本源代码访问权限只被授予允许内容创作的内容文件夹。还要检查允许内容创作的文件夹是否要求身份验证和安全套接字层 (SSL) 加密。
qF*}p6Q3`G [/td][/tr][/table][b]IP [/b][b]地址和域名限制[/b]C@]+a7[j8|&M.N4L [ u
使用 IP 和域名限制来限制对 Web 服务器的访问了吗?如果是这样的话,考虑到 IP 欺骗的风险了吗?/G$y\}~L.z
[b]身份验证[/b]:G6T$z!nQCv.J8rzU
检查 Web 站点和虚拟目录的身份验证设置。确保只有站点中可以公开访问的区域支持匿名访问。如果您选择了多个身份验证选项,需要彻底测试应用程序上的效果和身份验证优先级。
Nk |8o'i"~5jf 如果选择的是基本身份验证,检查是否整个站点使用了 SSL 保护凭据。H9{4vum4B&x"R%V
[b]父路径设置[/b]
z.^ | t%zl t!dwC 检查是否已经禁用了父路径设置,防止在脚本和应用程序的函数调用(例如 [b]MapPath[/b])中使用“..”。这有助于防止目录遍历攻击。:x)V5SX _*N c`
[b]要审查父路径设置[/b]sf} t&h3[#K$R
[table][tr][td]1.2Nk6Vb%DHNS r
[/td][td]启动 [b]Internet [/b][b]服务管理器[/b]。
+pJ8_E9x!Y,OaQ!K D [/td][/tr][tr][td]2.t8tS#c4\J$Hp2d%v
[/td][td]鼠标右击 Web 站点,并单击 [b]Properties[/b]。
/HL5|@_~0pmW [/td][/tr][tr][td]3.
.A Rm1go [/td][td]单击 [b]HomeDirectory[/b] 选项卡。 vbcB!G0q6w)\
[/td][/tr][tr][td]4.^ Rvy(U6E m)h3g'|
[/td][td]单击 [b]Configuration[/b]。 iC"A:r1uFP4E/N`,|
[/td][/tr][tr][td]5.4hW4zf&a;w
[/td][td]单击 [b]AppOptions[/b] 选项卡。
s)x-zj W g [/td][/tr][tr][td]6.T8TWw3}cU
[/td][td]检查是否清除了 [b]Enableparentpaths[/b] 复选框。 QL _Hkbd*Y;O/E r
[/td][/tr][/table][b]FrontPage [/b][b]服务器扩展[/b][b] (FPSE)[/b]%[/i3jZTN:z
FrontPage 服务器扩展可以用于访问、创作和管理基于 FrontPage 的 Web 站点。应该使用这些扩展的最新版本以避免安全缺陷。如果您不使用 FPSE,那就禁用它们以减小受攻击面。 t&[D^w*R/?
有关更多信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod89.asp][color=#0000ff][i]保护[/i][i] Web [/i][i]服务器的安全[/i][/color][/url]”单元中“第 11 步:站点和虚拟目录”。0RW0LE(TM;e(mZ#Q
[b]ISAPI [/b][b]筛选器[/b]
4W\[ Z*\$o 确保没有安装未用的 ISAPI 筛选器,以防止这些筛选器中任何潜在的缺陷被人利用。)d1FIN#KBT CT
[b]要审查[/b][b] ISAPI [/b][b]筛选器[/b]
W-`i Fa6Bt [table][tr][td]1. {"x?PcV+P
[/td][td]启动 [b]Internet [/b][b]信息管理器[/b]。
%{L(X3[P Z*sh;@\ D3z [/td][/tr][tr][td]2.I Ab9BAl#K
[/td][td]鼠标右击 [b]server[/b](而不是 Web 站点),然后单击 [b]Properties[/b]。
_9V0U-_$^:d.R0f.m [/td][/tr][tr][td]3.
p+c[*F ][b#T [/td][td]单击紧靠 [b]MasterProperties[/b] 的 [b]Edit[/b] 按钮。 7Br7aG%`
[/td][/tr][tr][td]4. a&FU,TO+w"o X s:Uu
[/td][td]单击 [b]ISAPIFilters[/b] 选项卡以查看已安装的筛选器。 CS"fM1OP%[
[/td][/tr][/table][b]IIS [/b][b]元数据库[/b]+G5KnO |k'jX
IIS 元数据库包含 IIS 配置设置,其中有许多但不是所有都是通过 IIS 管理工具配置的。文件本身必须保护,对无法使用 IIS 配置工具维护的特定设置应该进行检查。审查以下问题以确保配置了适当的元数据库:
-I8G)Vu+o2?c [table][tr][td]•[/td][td][b]限制访问元数据库了吗?[/b]1e b't;? { J3Nu
检查是否元数据库文件上的 ACL 允许系统帐户和管理员有完全控制访问权限。其他帐户都不应该拥有这种访问权限。元数据库文件和位置是: y'@qPU ?akr
%windir%\system32\inetsrv\metabase.bin[/td][/tr][tr][td]•[/td][td][b]暴露内部[/b][b] IP [/b][b]地址了吗?[/b] [&k;yD:i.Z
默认时, IIS 在 HTTP 响应头的内容-位置部分中返回服务器内部 IP 地址。应该通过设置 [b]UseHostName[/b] 元数据库属性为 [b]true[/b] 防止出现这种情况。要检查是否已经设置,从 \inetpub\adminscripts 目录运行以下命令:
`(@_l1h#Pf`DL adsutil GET w3svc/UseHostName确认属性值已经设置为 [b]true[/b]。如果属性没有设置,这个命令将返回消息“The parameter 'UseHostName' is not set at this node”。有关更多信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod89.asp][color=#0000ff][i]保护[/i][i] Web [/i][i]服务器的安全[/i][/color][/url]”单元中“第 14 步:IIS 元数据库”。
H}0qf9e"N{4P [/td][/tr][/table][b]服务器证书[/b],q)m2]_-x Am ]}
如果您的应用程序使用 SSL,确保 Web 服务器上安装了有效的证书。为了查看服务器证书的属性,单击 IIS 中 Web 站点 [b]Properties[/b] 对话框 [b]Directory Security[/b] 页上的 [b]View Certificate[/b]。审查下列问题: CK \N Sl
[table][tr][td]•[/td][td][b]您的服务器证书到期了吗?[/b] Fa+B!|g~N
[/td][/tr][tr][td]•[/td][td][b]证书链中所有公钥直到可信的根,都是有效的吗?[/b]@%Kl#`&ri'K0t
[/td][/tr][tr][td]•[/td][td][b]您的证书撤消了吗?[/b]
(H4[M]~.{\4e2U2fx [/td][/tr][/table]检查是否它没有位于一个证书撤消列表 (CRL) 上,此列表来自颁发该证书的服务器。 c E;d5~P$Xt2D#x Wf
[url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]
b*|*b]_;c] ? pM2m^ Machine.Config服务器上所有应用程序的 .NET Framework 配置都在 Machine.config 中维护。为了进行安全审查,本部分自顶向下查看 Machine.config 中的设置,并只考虑那些与安全相关的设置。 UiuW(T
大多数安全设置都包含在 <[b]system.web[/b]> 元素之下,但是也有显著的例外,即 Web 服务配置和 .NET Remoting 配置就没有包含在内。Web 服务和 .NET Remoting 配置的审查过程将在本单元后面讲述。
%t3P[/LG%g-N _@ 有关以下审查问题所提出问题的更多信息和背景,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod92.asp][color=#0000ff][i]保护[/i][i] ASP.NET [/i][i]应用程序的安全[/i][/color][/url]”单元。以下元素将在本部分中审查: `g9Ce#ns&j b4T j/k
[table][tr][td]•[/td][td]<[b]trace[/b]> -dnV8Pz"MhG,qT
[/td][/tr][tr][td]•[/td][td]<[b]httpRunTime[/b]> `b%y-j:A}9i|
[/td][/tr][tr][td]•[/td][td]<[b]compilation[/b]>
El&W!DEe@:I [/td][/tr][tr][td]•[/td][td]<[b]pages[/b]> k ?)f*m.S)Q
[/td][/tr][tr][td]•[/td][td]<[b]customErrors[/b]> 5\;wJ \w%P1V O
[/td][/tr][tr][td]•[/td][td]<[b]authentication[/b]> 0Z&OL0{+T c
[/td][/tr][tr][td]•[/td][td]<[b]Identity[/b]> 2G:H1Kt9i6L
[/td][/tr][tr][td]•[/td][td]<[b]authorization[/b]> Sm RjggM S+`mF
[/td][/tr][tr][td]•[/td][td]<[b]machineKey[/b]>
8v4@)m0Uv4B c d [/td][/tr][tr][td]•[/td][td]<[b]trust[/b]> 8^2v }Q6D O
[/td][/tr][tr][td]•[/td][td]<[b]sessionState[/b]>
^pq-U QEQ\#bD [/td][/tr][tr][td]•[/td][td]<[b]httpHandlers[/b]> OI3n F2T
[/td][/tr][tr][td]•[/td][td]<[b]processModel[/b]>
)AuLL Mm?8r y [/td][/tr][/table][b]<trace>[/b]d!X-~*mh6o$Or
通过以下设置确保禁用跟踪。 S1}#@+K {z6NYe~
<trace enabled="false" ... />[b]<httpRunTime>[/b];fWV ?J E)v
验证 <[b]httpRunTime[/b]> 元素的 [b]maxRequestLength[/b] 属性的值。您可以使用这个值防止用户上传非常大的文件。最大允许值是 4 MB。"PH-N,Xm.q+i_
[b]<compilation>[/b];q0{"jM gP
检查是否没有编译调试二进制文件。确保 [b]debug[/b] 属性设置为 [b]false[/b]。
^2Q,j{8nT <compilation debug="false" ... />[b]<pages>[/b]bo,y'otd f{5J X*m
<[b]pages[/b]> 元素控制着默认页级配置设置。从安全的角度看,应该审查查看状态和会话状态设置。 @2g+r1Z:\w h|k
[table][tr][td]•[/td][td][b]使用查看状态了吗?[/b](Dz5^ xSi,f
如果 [b]enableViewState[/b] 设置为 [b]true[/b],确保 [b]enableViewStateMac[/b] 也设置为 [b]true[/b],以保护网络的安全上的查看状态。还要确保审查了 <[b]machineKey[/b]> 配置,因为这能够指定与相关的密钥一同使用的加密和散列算法。
NpU zzln4I [/td][/tr][tr][td]•[/td][td][b]使用会话状态了吗?[/b]B2a"F,BOc}.kP
如果 [b]enableSessionState[/b] 设置为 [b]true[/b],确保您审查了 <[b]sessionState[/b]> 元素配置。
w p^XUoom [/td][/tr][/table]<customErrors>
7r$d6s&F(m4p 确保 [b]mode[/b] 属性设置为 [b]On[/b] 以确保详细的异常信息没有泄漏给客户端。还要检查是否通过 [b]defaultRedirect[/b] 属性指定了默认错误页。vL'C OD txj
<customErrors mode="On" defaultRedirect="/apperrorpage.htm" /><authentication>
[ Lm1RRH;Z 这个元素控制着应用程序的身份验证机制。检查 [b]mode[/b] 属性,查看配置了哪个身份验证机制,然后使用特定的审查问题检查配置的身份验证模式。f }Fe/q
<authentication mode="[Windows|Forms|Passport|None"] />[b]窗体身份验证[/b]3{&EzqD(Zn1r
审查以下问题以验证窗体身份验证的配置。
2}7{%{N,A [table][tr][td]•[/td][td][b]加密身份验证[/b][b] cookie [/b][b]了吗[/b][b]?[/b]
+~by-X6kL![yX 即使在 SSL 信道上的 cookie 也应该进行加密,并检查完整性,以检测篡改,因为可以通过跨站点脚本 (XSS) 攻击窃取 cookie。检查 <[b]forms[/b]> 元素的 [b]protection[/b] 属性是否设置为 [b]All[/b]。 Z9I[ sE!K
<forms protection="All" .../>   All indicates encryption and verification[/td][/tr][tr][td]•[/td][td][b]在窗体身份验证中使用[/b][b] SSL [/b][b]了吗?[/b]~+yL#U]1I)Nd
SSL 能够防止会话劫持和 cookie 重放攻击。检查 <[b]forms[/b]> 元素的 [b]requireSSL[/b] 属性。 X7LwCH[ \
<forms requireSSL="true" ... />[/td][/tr][tr][td]•[/td][td][b]限制身份验证[/b][b] cookie [/b][b]生存期了吗?[/b]
9v"}5V'o(]:Xq 尽量减少 cookie 的超时,以限制攻击者能够使用 cookie 访问应用程序的时间。检查 <[b]forms[/b]> 元素的 [b]timeout[/b] 属性。
?!U!Y.T.p8@4k <forms timeout="10" ... />[/td][/tr][tr][td]•[/td][td][b]使用滑动到期时间了吗?[/b]
{y3V7I_3GC 检查 [b]slidingExpiration[/b] 属性。[b]slidingExpiration="true"[/b] 意味着 cookie 在其最初的持续时间之后一个固定时间到期。超时时钟不会在每个请求之后重置。使用滑动到期时间对于所有页上不使用 SSL 保护 cookie 的应用程序尤其有用。 ptV7dE;]:{
[/td][/tr][tr][td]•[/td][td][b]使用唯一[/b][b] cookie [/b][b]路径和名称了吗?[/b]
U$Pj"h2?:Z0h 检查是否每个 Web 应用程序使用了不同的 cookie 名称和路径。这能够确保已经对一个应用程序进行了身份验证的用户在使用在同一 Web 服务器上寄宿的另一个应用程序时,不会被当成已身份验证的用户处理。检查 <[b]forms[/b]> 元素上的 [b]path[/b] 和 [b]name[/b] 属性。 &i{u+b~:x
<forms name=".ASPXAUTH" path="/" ... />[/td][/tr][tr][td]•[/td][td][b]使用[/b]<[b]credentials[/b]>[b]元素了吗?[/b]
;[/Lm8]S?%k1A.F4K k*f 您不应该在产品服务器上使用 <[b]credentials[/b]> 元素。这个元素只用于开发和测试目的。凭据应该存储在 Microsoft Active Directory&reg; 目录服务或者 SQL Server 中。 *X B$DI7[i
[/td][/tr][tr][td]•[/td][td][b]您如何存储凭据?[/b]&DZ5@MOG
如果您的应用程序使用 Windows 身份验证,凭据将存储在 Active Directory 中,后者将凭据的管理问题传给操作环境。如果您的应用程序使用窗体身份验证,确保您使用 SQL Server 或者 Active Directory 凭据存储区。 REcm$N2T,~ td"QAI
[/td][/tr][tr][td]•[/td][td][b]存储密码散列值了吗?[/b]
;Ys0VJ%S({ 确保密码没有存储在数据库中。相反,存储带有附加 salt 值的密码散列值以阻止词典攻击。 Y8mof_#Xwp tf[
[/td][/tr][tr][td]•[/td][td][b]使用坚固的密码了吗?[/b]` Y1l$E2`v+~.bU
您的应用程序应该强制使用坚固的密码。实现这一点的很好方式,是在窗体登录页中使用正则表达式。
mPMw]:F\c,G5T [/td][/tr][/table]以下问题有助于验证在 <[b]Identity[/b]> 元素上指定的模拟配置:
]h$DuBZxy [table][tr][td]•[/td][td][b]模拟原始调用方了吗?[/b] ?t'nV H6S$Q
如果 [b]impersonate[/b] 属性设置为 [b]true[/b],且您没有指定 [b]userName[/b] 或者 [b]password[/b] 属性,模拟经 IIS 身份验证的标识,该标识可能是匿名 Internet 用户帐户。 !Y%w Rm aO+@6_
确保 ACL 配置为允许模拟的标识只访问那些需要获得访问权限的资源。 Q0S-@'o6G
[/td][/tr][tr][td]•[/td][td][b]模拟固定标识了吗?[/b] m6W dI R L S
如果您模拟和设置了 [b]userName[/b] 和 [b]password[/b] 属性,模拟一个固定标识,这个标识是用于资源访问的。
uI6em ?(W4Q 确保您不在 <[b]Identity[/b]> 元素上指定明文凭据。相反,在注册表中使用 Aspnet_setreg.exe 存储加密凭据。 8` N|N2O
在 Windows 2000 上,这个方法将强制您将“Act as part of the operating system”用户权限授予 ASP.NET 进程帐户,这是不推荐的。有关替代方法,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod92.asp][color=#0000ff][i]保护[/i][i] ASP.NET [/i][i]应用程序的安全[/i][/color][/url]”单元。 5exp;H t8RT{
[/td][/tr][/table]这个元素控制着 ASP.NET URL 授权,具体而言就是 Web 客户端获取访问特定的文件夹、页和资源的权限的能力。
,Z1LdzA mv [table][tr][td]•[/td][td][b]使用正确格式的用户名和角色名了吗?[/b]Y@1r0s.eOvH.`
当有 <[b]authentication mode="Windows" /[/b]> 时,将授权 Windows 用户和组帐户进行访问。
qJq6s,e 用户名的形式是“DomainName\WindowsUserName”。角色名的形式是“DomainName\WindowsGroupName”。
*P,NXYVQ7s4s [b]注[/b] 本地管理员组称为“BUILTIN\Administrators”。本地用户组称为“BUILTIN\Users”。
ZR4}jt3Ry] 当有 <[b]authentication mode="Forms" /[/b]> 时,将授权经过应用程序身份验证的标识。通常,针对从数据库检索的角色进行授权。角色名是特定于应用程序的。 (_ ?!X+|!G.e
[b]<machineKey>[/b]|G3I \sz#\\
这个元素是用来指定加密和验证密钥,以及用来保护窗体身份验证 cookie 和页级查看状态的算法的。 K4QMU6K E u~
[/td][/tr][tr][td]•[/td][td][b]在同一服务器上运行多个应用程序吗?[/b]+kHV4Ag q)z
如果是这样的话,使用 [b]IsolateApps[/b] 设置以确保每个 Web 应用程序都生成不同的密钥。
O/f6fXi%W <machineKey validati             decrypti validation="SHA1"/>[/td][/tr][tr][td]•[/td][td][b]运行在[/b][b] Web [/b][b]服务器场中吗?[/b]0Dj5w io$v
如果是这样的话,确保您使用特定的机器密钥,将它们复制到场中的所有服务器。
M(jK4r-U)v [/td][/tr][tr][td]•[/td][td][b]保护查看状态了吗?[/b]
H#Ir"wA 如果您保护查看状态,例如,通过设置 <[b]pages[/b]> 元素的 [b]enableViewSetMac="true"[/b],在 <[b]machineKey[/b]> 元素上设置 validation="SHA1"(安全散列算法)或者 "3DES"。如果您还要通过设置 <[b]forms[/b]> 元素的 [b]protection="All"[/b] 加密窗体身份验证 cookie 的话,三重数据加密标准 (3DES) 设置是必需的。 W/Y2^b8G/c4^'K
[b]<trust>[/b]
2DXIQ+R1[ <[b]trust[/b]> 元素确定了用来运行 ASP.NET Web 应用程序和 Web 服务的代码访问安全信任级。
W&f(a5I+si [/td][/tr][tr][td]•[/td][td][b]运行的是什么版本的[/b][b] .NET Framework[/b][b]?[/b]
F k&fk4Q 如果您运行 .NET Framework 1.0,那么信任级必须设置为 [b]Full[/b]。如果版本等于或者大于 1.1,可以将其更改为以下设置之一:
n$m*t%x+|!SHw <!--  level="[Full|High|Medium|Low|Minimal]" --><trust level="Full" originUrl=""/>  [/td][/tr][tr][td]•[/td][td][b]使用什么信任级?[/b]
;j+A1p&LC5s7k/rAd.l 根据安全策略和与开发小组的协议,可以在 Web.config 或者 Machine.config 中为应用程序设置适当的信任级。 a4_t$C.F-p
[b]<sessionState>[/b]tYN4l f)D\\T
[b]sessionState [/b]元素配置应用程序的用户会话状态管理。审查以下问题:
+s SH]f [/td][/tr][tr][td]•[/td][td][b]使用远程状态存储区了吗?[/b]a-xIu Rh!~*{,c
通过查看 [b]mode[/b] 属性检查状态存储区。 4b,k+i0Q/t^'a
<sessionState mode="Off|Inproc|stateServer|SQLServer" ... />如果您使用远程状态存储区,而且 [b]mode[/b] 属性设置为 [b]stateServer[/b] 或者 [b]SQLServer[/b],应该分别检查 [b]stateConnectionString[/b] 和 [b]sqlConnectionString[/b] 属性。因此凭据并不包括在数据库连接字符串中,确保连接字符串是以加密格式在注册表中使用 Aspnet_setreg.exe 工具保护的,或者用 Windows 身份验证连接 SQL Server 状态存储区。 ;D*Q7zb)X FT
以下配置说明了当使用 Aspnet_setreg.exe 加密注册表中字符串时,[b]stateConnectionString[/b] 的样子。 *Ex s*NvP,v
<!-- aspnet_setreg.exe has been used to store encrypted details --><!-- in the registry. --><sessionState mode="StateServer"          stateC />[/td][/tr][tr][td]•[/td][td][b]对状态数据库使用[/b][b] Windows [/b][b]身份验证了吗?[/b]
] s2Y j(|"}Y'C 如果您使用 SQL Server 状态存储区,应该检查是否使用 Windows 身份验证连接状态数据库。这意味着凭据并不存储在连接字符串中,凭据不会在网络上传输。 r_4{_{z3~6` r
如果您必须使用 SQL 身份验证,确保连接字符串在注册表中加密,而且数据库服务器上安装了服务器证书,确保凭据在网络上加密。
K~|7A*O7} [/td][/tr][/table][b]<httpHandlers>[/b]
XM` fo7J F 这个元素列出了处理特定文件类型请求的 HTTP 处理程序。检查以确保您禁用了所有未用的文件类型。m'}A6O3\*e.De
映射未用的文件类型到 [b]System.Web.HttpForbiddenHandler[/b] 以防止对它们的 HTTP 检索。例如,如果您的应用程序不使用 Web 服务,将如下映射 .asmx 扩展名:
_6`9ih6T i| <httpHandlers>  <add verb="*" path="*.asmx" type="System.Web.HttpForbiddenHandler"/></httpHandlers>[b]<processModel>[/b]9`-MXd(D
ASP.NET 辅助进程运行所用标识是通过 Machine.config 中 <[b]processModel[/b]> 元素的设置控制的。 以下审查问题有助于验证进程标识设置:
6JA s f&M2_\#_] [table][tr][td]•[/td][td][b]使用什么标识运行[/b][b] ASP.NET[/b][b]?[/b]
kRKpO 检查 [b]userName[/b] 和 [b]password[/b] 属性。理想情况下,使用以下配置使 ASP.NET 进程运行在最低特权 ASPNET 帐户下。 0BX}{#NDB^t
<processModel userName="Machine" password="AutoGenerate" . . ./>[/td][/tr][tr][td]•[/td][td][b]加密[/b]<[b]processModel[/b]>[b]凭据了吗?[/b]
}BD2]Txs 如果您使用自定义帐户,确保帐户凭据没有以明文在 Machine.config 中指定。确保 Aspnet_setreg.exe 实用工具已经用来在注册表中存储加密凭据。如果已经使用了该工具,[b]userName[/b] 和 [b]password[/b] 属性与如下所示的设置类似: ]?&qHp6f
<processModel        userName="registry:HKLM\SOFTWARE\YourSecureApp\processModel\                  ASPNET_SETREG,userName"        password="registry:HKLM\SOFTWARE\YourSecureApp\processModel\                  ASPNET_SETREG,password" . . ./>[/td][/tr][tr][td]•[/td][td][b]使用最低特权帐户了吗?[/b]S0\ t!P.CrI&l
默认 ASPNET 帐户是设计来运行 ASP.NET 的最低特权本地帐户。为了将其用于远程资源访问,需要在远程服务器上创建一个重复的帐户。或者,您也可以创建一个最低特权域帐户。
&o3~dI/YU/N)B/S6t 检查是否帐户不是用户组的成员,并在本地安全策略工具中查看用户权限指派,以确认没有向其授予任何扩展或者不必要的用户权限。确保没有向其授予“Act as part of the operating system”用户权限。
3t1P{+H-{7ko [/td][/tr][/table][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]
-m9W`X:a}$tC Web 服务审查中此阶段的目的是标识 Web 服务配置中的缺陷。有关本部分中审查问题所提出的问题的进一步的背景信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod90.asp][i][color=#0000ff]保护应用程序服务器的安全[/color][/i][/url]”单元和“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod92.asp][color=#0000ff][i]保护[/i][i] ASP.NET [/i][i]应用程序的安全[/i][/color][/url]”单元。?tD y1e H9Z
使用以下问题帮助审查 Web 服务的安全配置: WOnNJn;Q T,\J^)M
[table][tr][td]•[/td][td][b]禁用文档协议了吗?[/b]q0S'j C |$Qv'g8R
如果您不想公开 Web 服务终结点,则可以从 Machine.config 的 <[b]protocols[/b]> 元素中删除 [b]Documentation[/b] 协议并手工分发 Web 服务描述语言 (WSDL) 文件到特定的 Web 服务使用者。
)D0WG$VV M ^,qqwP [/td][/tr][tr][td]•[/td][td][b]禁用[/b][b] HTTP Get [/b][b]和[/b][b] Post [/b][b]协议了吗?[/b]@jt;`l"UVTp
通过禁用(注释掉)Machine.config 文件的 <[b]protocols[/b]> 元素中 [b]HttpGet[/b] 和 [b]HttpPost[/b] 协议,将有助于减少 Web 服务的受攻击面。
N w`6NBh-Z(` [/td][/tr][tr][td]•[/td][td][b]限制对[/b][b] WSDL [/b][b]的访问了吗?[/b]d9] z6C![
如果您在 Web 服务器上存储所生成的 .WSDL 文件,将它们分发给使用者,确保文件由适当的 ACL 进行了保护。这防止了恶意用户更新或者代替 WSDL,从而指向与期望 URL 不同的终结点。
h1XP6[9lE-X0c4B [/td][/tr][tr][td]•[/td][td][b]在[/b][b] SOAP [/b][b]请求或者响应中传递敏感数据了吗?[/b]I.LG;_2_,?zk*Y-q
如果您的 Web 服务处理敏感数据,您如何保护网络的安全上的数据并应对网络侦听威胁呢?使用 SSL 或者 IPSec 加密信道,或者通过使用 XML 加密加密部分消息了吗?
!a:inMXN n)O MR [/td][/tr][tr][td]•[/td][td][b]您如何对调用方进行身份验证?[/b]F~g*? i#_
如果您的 Web 服务公开了受限的操作或者数据,它需要对调用方进行身份验证以支持授权。审查 Web 服务是如何对其客户端进行身份验证的。 |jB.K%x h$^6e
[/td][/tr][tr][td]•[/td][td][b]在[/b][b] SOAP [/b][b]头中传递凭据了吗?[/b] G)I Z t+u:D
如果您在 SOAP 头中传递凭据,它们是以明文传递的吗?如果是,确保使用了加密信道。
\Jx!n ~ [/td][/tr][/table][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]7R$R p Tj [Zs`Sf
企业服务本部分标识了当审查企业服务应用程序和组件时,应该考虑的关键审查点。有关本部分中所提出问题的更多信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod90.asp][i][color=#0000ff]保护应用程序服务器的安全[/color][/i][/url]”单元。
1Pq5Wj4\0@[ 当审查企业服务应用程序时,考虑以下问题:
8dWk``{)G_x3b [table][tr][td]•[/td][td][b]帐户[/b]
8y!y1V9^2Di [/td][/tr][tr][td]•[/td][td][b]文件和目录[/b]:QQ|ZlFvWA
[/td][/tr][tr][td]•[/td][td][b]身份验证[/b]%?F![qILnr
[/td][/tr][tr][td]•[/td][td][b]授权[/b]
Ws D`"FG [/td][/tr][tr][td]•[/td][td][b]远程服务组件[/b]
9M9nf PYK"|s [/td][/tr][/table][b]帐户[/b]Z*jAU/dK"_hw*N
如果您使用企业服务服务器应用程序,应该检查使用了哪个帐户来运行应用程序。这显示在组件服务中应用程序的 [b]Properties[/b] 对话框的 [b]Identity[/b] 页中。需要审查以下问题:
*E8Y9g KD'? [table][tr][td]•[/td][td][b]使用最低特权帐户了吗?[/b]
({e/S7m q [0^~ 检查用来运行企业服务服务器应用程序的帐户,确保它们配置为最低特权帐户,有受限的用户权限和访问权限。如果您使用进程帐户访问下游数据库,应该确保数据库登录在数据库中受限。 z#na~,^3`/O
[/td][/tr][tr][td]•[/td][td][b]使用交互式帐户了吗?[/b]+`LJ%YM9\(GuXp
在产品服务器上不要使用交互式帐户。这个帐户只是为了在开发和测试期间使用的。
8[-zt mK._ [/td][/tr][/table][b]文件和目录[/b]
8t8\l t4MQ 审查以下问题,以确保您适当地使用 NTFS 权限保护与企业服务应用程序相关的各种文件: 8QFp8K4r"f1zB&J9Z
[table][tr][td]•[/td][td][b]保护[/b][b] COM+ [/b][b]编录了吗?[/b]
I\*\2L(OOVc F COM+ 编录保留着 COM+ 应用程序的配置数据。确保以下保留着编录文件的文件夹使用受限的 ACL 进行了配置。 k7V1KT*Wg}EQ3U
%windir%\registration配置以下 ACL: -Dd+\x9~gZvXz+s
Administrators: Read, WriteSystem: Read, WriteEnterprise Services Run-As Account(s): Read[/td][/tr][tr][td]•[/td][td][b]保护[/b][b] CRM [/b][b]日志文件了吗?[/b]*PH.PoiR
如果您的应用程序使用补偿资源管理器,CRM 日志文件 (.crmlog) 应该用 NTFS 权限保护,因为日志文件可能包含敏感的应用程序数据。
O!h+dJ6N,GV3N [/td][/tr][tr][td]•[/td][td][b]保护您的应用程序[/b][b] DLL [/b][b]了吗?[/b]
;e`3D,jfDe-C aI-~Q 确保用来保存应用程序 DLL 的文件夹通过以下受限的 ACL 进行了配置。
!T RqfR"Y1F6Y Users: ExecuteApplication Run as account: ExecuteAdministrators: Read, Write and Execute有关更多信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod90.asp][i][color=#0000ff]保护应用程序服务器的安全[/color][/i][/url]”单元。
zB0BG z8e%t]"_f*z [/td][/tr][/table][b]身份验证[/b]9_1qZH#a3imo
服务组件可以寄宿在一个库应用程序中,该库应用程序运行在客户端进程地址空间,或者在运行在不同 Dllhost.exe 实例中的服务器应用程序中。这是通过组件服务中的应用程序的 [b]Properties[/b] 对话框的 [b]Activation[/b] 页上指定的激活类型确定的。企业服务库应用程序的客户端进程通常是一个 ASP.NET Web 应用程序进程。a Ys4[!T5E
以下讨论的设置都是在组件服务中应用程序的 [b]Properties[/b] 的对话框 [b]Security[/b] 页上指定的。
:g.V U7T;z-BF1f [b]服务器应用程序[/b]V W5t HN i)W F
如果 Activation 类型设置为服务器应用程序,审查以下问题: Jd#d@0]
[table][tr][td]•[/td][td][b]防止匿名访问了吗?[/b]
(OTyb] f.x+_P:l 检查是否您的应用程序至少使用调用级身份验证,确保客户端每次进行方法调用时都进行身份验证。这能够防止匿名访问。
9qG3KV:`&XME [/td][/tr][tr][td]•[/td][td][b]使用什么模拟级?[/b]
W8Ov$B B6t3N4j%H\ 检查以确保您至少使用标识级模拟,以允许下游系统标识您的服务组件。默认时,这是应用程序 run-as 帐户决定的进程标识。如果您的服务组件使用编程模拟,这可以是一个模拟的标识。只在需要下游系统能够使用您的服务组件标识访问远程资源时,才使用委托级。
G}VC*[ g ?c [/td][/tr][/table][b]库应用程序[/b]kBpU }!f3o8o-i
如果激活类型设置为库应用程序,身份验证和模拟设置将从宿主进程继承。本部分中的审查问题假设 ASP.NET 进程是宿主进程。 E;s FK6Meu"O
[table][tr][td]•[/td][td][b]禁用身份验证了吗?[/b]N;b0s3n%ZJ,@
为了检查,查看应用程序的 [b]Properties[/b] 对话框的 [b]Security[/b] 页上设置的 [b]Enable authentication[/b] 复选框。您不应该禁用身份验证,除非有特定的需求,例如需要处理来自远程服务组件的未经身份验证的回调。 c2|%|It
[/td][/tr][tr][td]•[/td][td][b]使用什么身份验证级?[/b]
wY^K?*V!H 在 Machine.config 中的 <[b]processModel[/b]> 元素上指定的身份验证级,控制着对远程服务组件或者 DCOM 组件外出调用使用的身份验证级。使用这个值和远程服务器配置的值中较大的一个。检查 <[b]processModel[/b]> 元素的 [b]comAuthenticationLevel[/b] 设置:
-l fVdna [/td][/tr][tr][td]•[/td][td][b]使用什么模拟级?[/b]
U:L~,Hr 这将影响从库组件到其他远程组件的外出调用。检查 Machine.config 中 <[b]processModel[/b]> 元素的 [b]comImpersonationLevel[/b] 属性。
7kK$MR t0UF H)y <processModel comImpersonationLevel=              "Default|Anonymous|Identify|Impersonate|Delegate" .../>[/td][/tr][/table][b]授权[/b]
8h1F/ClA nb(~ 企业服务应用程序中的服务组件使用基于 COM+ 角色的安全来授权调用方。审查以下问题以确保适当授权: \Y9qP?Z)JA/T1@
[table][tr][td]•[/td][td][b]启用访问检查了吗?[/b]ODN9WVZ.N inO7p9s
这控制着是否启用 COM+ 授权。检查组件服务中应用程序的 [b]Properties[/b] 的对话框 [b]Security[/b] 页上是否选择了 [b]Enforce access checks for this application[/b]。 s |:H F x5]a9A,[
[/td][/tr][tr][td]•[/td][td][b]使用什么安全级?[/b]C)RV5?Qx)ZUXL
检查在组件服务中应用程序的 [b]Properties[/b] 的对话框的 [b]Security[/b] 页上指定的 [b]Security level[/b]。应用程序应该使用进程级和组件级访问检查以支持细粒度的授权。这允许应用程序使用角色来控制对特定的类、接口和方法的访问。 .wj!U!^2pj%] g!d
[b]注[/b] 进程级和组件级访问检查必须为库应用程序启用,否则无法使用基于角色的授权。1Y+QXK8kK;Q0t,V
[/td][/tr][tr][td]•[/td][td][b]实施组件级访问检查了吗?[/b]w3Wj4t5o
为了在组件级、接口级和方法级支持授权检查,每个组件都必须在 COM+ 编录中适当地进行配置。检查应用程序中的每个组件,以确保选择了组件的 [b]Properties[/b] 对话框 [b]Security[/b] 页上的 [b]Enforce component level access checks[/b]。
'kve_TG0O3m&x@ [/td][/tr][/table][b]远程服务组件[/b]/w$M[+|AN/D5r
以下问题在您使用远程服务组件并通过网络通信时适用。典型的场景是 ASP.NET 客户端与远程应用程序服务器上的一个企业服务应用程序通信。
:V7L'L f }O [table][tr][td]•[/td][td][b]传递敏感数据吗?[/b]7Hg"m TA @8A
如果是这样的话,采用了什么机制来应对网络侦听威胁呢?确保客户端和服务器之间的链路在传输级(例如通过 IPSec)进行了加密。还可确保您的企业服务应用程序为数据包私密级身份验证进行了配置,这将强制对发送到应用程序和从应用程序而来的所有数据包使用 RPC 加密。
!L;KObs/Fn;LG'\ [/td][/tr][tr][td]•[/td][td][b]通过防火墙通信吗?[/b]
f3ND#i(c8oX 企业服务使用 DCOM,后者继而又要使用 RPC 通信。RPC 通信要求端口 135 在防火墙上打开。审查您的防火墙和企业服务配置,确保只打开了最少的额外端口。 _&]$@"I1|"H0J1s#g
DCOM 动态分配的端口范围可以是受限的,还可以用静态终结点映射来指定单独的端口。有关更多信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod90.asp][i][color=#0000ff]保护应用程序服务器的安全[/color][/i][/url]”单元。
m;~2B(Bp!N[ [/td][/tr][/table][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]
_0?:y u9}#ya 远程处理本部分标识了在审查应用程序对 .NET Remoting 的使用时应该考虑的关键审查点。有关本部分中所提出问题的更多信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod90.asp][i][color=#0000ff]保护应用程序服务器的安全[/color][/i][/url]”单元。
`"td*PZbS 当审查 .NET Remoting 解决方案时,首先标识使用哪一台主机运行远程组件。如果您使用带 [b]HttpChannel[/b] 的 ASP.NET 主机,需要检查是否 IIS 和 ASP.NET 安全进行了适当配置,来为您的远程组件提供身份验证、授权和安全通信服务。如果您使用自定义主机和 [b]TcpChannel[/b],需要审查保护组件的方式,因为这个主机和信道组合需要自定义身份验证和授权解决方案。)w7B b+cL8s-n*MQ
[b]端口的注意事项[/b]!b,I(c)S;q/Im{
远程处理并非设计用于 Internet 客户端。检查您的组件侦听的端口是否不能被 Internet 客户端直接访问。这一(类)端口通常在服务器端配置文件中的 <[b]channel[/b]> 元素上指定。
C[|yl3P*\ [b]寄宿在带[/b][b] HttpChannel [/b][b]的[/b][b] ASP.NET [/b][b]中[/b]
2N_:exe4Y PE 如果您使用 ASP.NET 主机,审查以下项: ] L:s*l5b
[table][tr][td]•[/td][td][b]您如何保护网络的安全上的敏感数据?[/b]\ X9T6UD0yJ/r k-l
使用 SSL 或者 IPSec 吗?没有 SSL 或者 IPSec,传递到远程组件和从远程组件传来的数据容易遭到信息泄漏和篡改的威胁。审查采取了哪些措施应对网络侦听威胁。
V?FJ @ ^2V [/td][/tr][tr][td]•[/td][td][b]您如何对调用方进行身份验证?[/b]
[9`q(?1E 确保 IIS 中禁用对应用程序的虚拟目录的匿名访问。还要检查您是否使用了 Windows 身份验证。应用程序的 Web.config 应该包含以下配置。
@0yQ.EdIe ]&v <authentication mode="Windows" />[/td][/tr][tr][td]•[/td][td][b]使用[/b][b]ASP.NET [/b][b]文件授权了吗?[/b]
.j&Tui9]8x&V;RT 如果没有,为什么呢?您可以通过创建一个 .rem 或者 .soap 文件并配置文件的 NTFS 权限,使用 ASP.NET 文件授权控制对远程处理应用程序终结点的访问。ASP.NET FileAuthorizationModule 然后将对组件的访问进行授权。有关更多信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod86.asp][i][color=#0000ff]构建安全远程组件[/color][/i][/url]”单元中的“授权”。 ;c AzhfO gn9\.d
[/td][/tr][tr][td]•[/td][td][b]使用[/b][b] URL [/b][b]授权了吗?[/b]Tk$X5X%TX7X9V
检查应用程序是否使用 <[b]authorization[/b]> 元素。通过应用 <[b]allow[/b]> 和 <[b]deny[/b]> 标记,使用 ASP.NET [b]UrlAuthorizationModule[/b]。
/OhS7_ A$t [/td][/tr][tr][td]•[/td][td][b]防止详细的错误返回客户端了吗?[/b]
"LZ5o-Gx${ 检查应用程序的配置,确保正确配置了 <[b]customErrors[/b]> 元素以防止详细的错误返回客户端。确保 [b]mode[/b] 属性设置为 [b]On[/b],如下所示。 Q:xj ~D
<customErrors mode="On" />[/td][/tr][tr][td]•[/td][td][b]使用了什么标识运行[/b][b] ASP.NET[/b][b]?[/b]
)`%G^~R 检查是否使用了最低特权帐户运行 ASP.NET,例如默认 ASPNET 帐户,或者在 Windows Server 2003 上的网络服务帐户。 6c?zJ|4`;[G
[/td][/tr][/table][b]寄宿在带[/b][b] TcpChannel [/b][b]的自定义进程中[/b] [)Pq7vZ*Y Gt9C;N
如果您使用自定义主机进程,例如一个 Windows 服务,审查以下项。 &}`.T P"hfx(CxM
[table][tr][td]•[/td][td][b]您如何保护网络的安全上的敏感数据?[/b]|5oZ V3\/nl
保护从客户端到服务器的信道了吗?可以使用传输级 IPSec 加密,或者应用程序可以使用自定义加密接收器加密请求和响应数据。 ` su;Za(x
[/td][/tr][tr][td]•[/td][td][b]您如何对调用方进行身份验证?[/b]
.A%X.{v,KcSi [b]TcpChannel[/b] 没有提供身份验证机制,所以必须开发您自己的机制。审查您的应用程序是如何对其调用方进行身份验证的。
#XeYqFfu6obO [/td][/tr][tr][td]•[/td][td][b]限制客户端了吗?[/b]
|HJt#~yT$qi6c1^5b 通过 [b]TcpChannel[/b] 的远程处理是设计用于可信服务器场景中的,其中远程组件信任其客户端。限制能够连接远程组件的客户端范围了吗(例如通过使用 IPSec 策略进行限制)?
0z*\ C!gG7_~ `TMy [/td][/tr][tr][td]•[/td][td][b]使用最低特权进程标识了吗?[/b]
kP?k8m,ci&k6C+QD 审查使用哪个帐户运行自定义宿主进程,并确保它配置为最低特权帐户。 VVe)q6N o[Zt
[/td][/tr][/table][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]j&e;L*z;A]5Q/Mh
数据库服务器配置审查中此阶段的目的是标识 SQL Server 数据库服务器配置中的缺陷。有关本部分中审查问题所提出的问题的进一步的背景信息,请参阅“保护数据库服务器”单元。
M[G(t-B7N 要帮助集中和组织审查过程,将审查问题划分为以下配置类别: ,gA&j C%M
[table][tr][td]•[/td][td][b]修补程序和更新[/b]
$buc.N:j [/td][/tr][tr][td]•[/td][td][b]服务[/b]
{ Wy3F| [/td][/tr][tr][td]•[/td][td][b]协议[/b]s*l/[)L/zo!s
[/td][/tr][tr][td]•[/td][td][b]帐户[/b]Cm N QBMW1BQE|
[/td][/tr][tr][td]•[/td][td][b]文件和目录[/b]
6O2W(pE0VDS b [/td][/tr][tr][td]•[/td][td][b]共享[/b]
%gL:VlI g5wH [/td][/tr][tr][td]•[/td][td][b]端口[/b]
+D IX-L7\3P-^V$fLr [/td][/tr][tr][td]•[/td][td][b]注册表[/b]
vdt,auB V/`Z2KO [/td][/tr][tr][td]•[/td][td][b]审核和日志记录[/b] {J&J:}5|'B
[/td][/tr][tr][td]•[/td][td][b]SQL Server [/b][b]安全[/b]
/^L.{ l+?8a9~ [/td][/tr][tr][td]•[/td][td][b]SQL Server [/b][b]登录、用户和角色[/b]
r7}IrD3f_2Y-P$} [/td][/tr][/table][b]修补程序和更新[/b] L3b w? O4iQnn
检查是否您的服务器已经使用最新的服务包和软件修补程序进行了更新。这包括操作系统和 SQL Server 的服务包和修补程序。
f U4mhO+A'x)l 确保您已经运行 Microsoft Baseline Security Analyzer (MBSA) 工具标识常见的 Windows 和 SQL Server 缺陷,并标识了缺少的服务包和修补程序。5q9N`&Me-L]!q
通过修补已标识的缺陷,并安装最新的修补程序和更新,对 MBSA 的结果做出反映。有关更多信息,请参阅“保护数据库服务器”单元中的“第 1 步:修补程序和更新”。
["bh(K!?3i [b]服务[/b]
cv-eoK 确保只启用了那些必需的服务。检查是否所有其他服务都已经禁用,这样能够减小服务器的受攻击面。
WA_9a2[2wZ|;eqQ [table][tr][td]•[/td][td][b]运行了哪些[/b][b] SQL Server [/b][b]服务?[/b]
2kr-bSe {_ p)^ SQL Server 安装了四个服务。如果您只需要基本功能,那么就禁用 Microsoft 搜索服务、MSSQLServerADHelper 服务和 SQLServerAgent 服务以减小服务器的受攻击面。
[ do,]Mj%C} [/td][/tr][tr][td]•[/td][td][b]使用分布式事务了吗?[/b]y4w&qRu/kd7{ L0^
如果您的应用程序使用 COM+ 事务服务管理与 SQL Server 的事务,那么 Microsoft 分布式事务协调程序 (DTC) 服务在数据库服务器上是必需的。
9i/~|*s qw'PJwq7V3SJ 如果您不使用分布式事务,一定要禁用 DTC 服务。 l'vn0`u1ax0G
[/td][/tr][/table][b]协议[/b]
^(vd(O ud 通过防止使用不必要的协议,能够减小受攻击面。审查以下问题: 4n0lb&gZy0{Y f
[table][tr][td]•[/td][td][b]SQL Server [/b][b]配置了哪些协议?[/b]
1pA&qILrLz SQL Server 支持多个协议。使用服务器网络实用工具检查是否只启用了 TCP/IP 协议支持。
i&["F a7c%B$]Pk#m#fU0f [/td][/tr][tr][td]•[/td][td][b]加固[/b][b] TCP/IP [/b][b]堆栈了吗?[/b]+HW F$[(?nH"r;GZ
要检查服务器上的堆栈是否加固,使用 Regedt32.exe 并检查以下注册表项:
B#K ?Z8RY!_7H9h'w HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters如果存在以下子项,则指示 TCP/IP 堆栈已经加固:[b]SynAttackProtect[/b][b]、[/b][b]EnableICMPRedirect[/b] 和 [b]EnableReadGWDetect[/b]。
S.w@$?x'H/G;p 有关完全加固堆栈所必需的项和相应项值的完整列表,请参阅本指南“如何做”部分中的“[url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/HowToHardenTCPStack.mspx][color=#0000ff][i]如何加固[/i][i] TCP/IP [/i][i]堆栈[/i][/color][/url]”。~mUOLIe
[/td][/tr][/table][b]帐户[/b]
r-c~hY'V 通过询问以下问题,审查数据库服务器使用的帐户: "x7e\ Nk
[table][tr][td]•[/td][td][b]是使用最低特权帐户运行[/b][b] SQL Server [/b][b]吗?[/b]MI Fc(Ps4[#fh9R
审查使用了哪个帐户运行 SQL Server,确保它是最低特权帐户。不应该是管理性帐户或者强大的本地系统帐户。还要确保帐户不是本地计算机上用户组的成员。 ;kG8^I~ax
[/td][/tr][tr][td]•[/td][td][b]删除或者禁用未用帐户了吗?[/b]$E%n7tH4s
审核服务器上的本地帐户,检查是否所有未用的帐户都已经禁用。 r$_#a k@
[/td][/tr][tr][td]•[/td][td][b]禁用[/b][b] Guest [/b][b]帐户了吗?[/b]7@3W^gdk_ M
检查是否禁用了 Windows [b]guest[/b] 帐户,以限制匿名连接您的数据库服务器。 h&R,^3W,L+P
[/td][/tr][tr][td]•[/td][td][b]创建新的管理员帐户了吗?[/b]
.Thh*w:p(H9~!] 默认本地管理员帐户是攻击的一个主要目标。为了提高安全性,检查是否已经创建了新的自定义帐户用于管理,而且禁用默认管理员帐户。 5K(uO~/k1TS&m8N:M;`
[/td][/tr][tr][td]•[/td][td][b]使用坚固的密码策略了吗?[/b]\6N,VZ#k1WN
使用本地安全策略工具以审查密码策略。有关推荐的密码策略的信息,请参阅“保护数据库服务器”单元中“第 4 步:帐户”。 +ZS0K^&L
[/td][/tr][tr][td]•[/td][td][b]限制远程登录了吗?[/b]9e!UYhQs
检查本地安全策略工具中的用户权限指派,以确保 [b]Everyone[/b] 组没有被授予“从网络访问本计算机”的用户权限。 _$YcyP[,w(o
[/td][/tr][tr][td]•[/td][td][b]禁用空会话了吗?[/b]
8` z PK {`"T;d 检查是否禁用了空会话,以防止在您的服务器上创建匿名(未经身份验证的)会话。为了检查这一点,运行 Regedt32.exe 并确认 [b]RestrictAnonymous[/b] 项已设置为 [b]1[/b],如下所示。
.A _j$Uwv HKLM\System\CurrentControlSet\Control\LSA\RestrictAnonymous=1[/td][/tr][tr][td]•[/td][td][b]客户端通过使用[/b][b] Windows [/b][b]身份验证连接吗?[/b]
j6?$h?jhl 如果是这样的话,检查是否启用和实施了最坚固的 NTLM 身份验证版本 (NTLMv2)。要检查是否实施了 NTLMv2 身份验证,使用本地安全策略工具。展开 [b]LocalPolicies[/b] 并选择 [b]SecurityOptions[/b],然后双击 [b]LAN Manager Authentication Level[/b]。验证是否选择了 [b]Send NTLMv2 response only\refuse LM & NTLM[/b]。 8S c6]1m\[d
[/td][/tr][/table][b]文件和目录[/b]
XB~y[H^-Ru T 以下审查问题使您可以验证是否在数据库服务器上适当地使用了 NTFS 权限。 ;@E"lPD$]Ddw
[table][tr][td]•[/td][td][b]配置[/b][b] SQL Server [/b][b]安装目录上的权限了吗?[/b]
'D1h\2M'ur 审查 SQL Server 安装目录上的权限,确保权限只授予有限的访问权限。有关权限的详细情况,请参阅“保护数据库服务器”单元中的“第 5 步:文件和目录”。
'q2E&y.wJ| }5? Y [/td][/tr][tr][td]•[/td][td][b]删除[/b][b] SQL Server [/b][b]文件的[/b][b] Everyone [/b][b]权限了吗?[/b]
5Q.bF.{*R})l 审查 SQL Server 文件位置上的权限(默认时是 \Program Files\Microsoft SQL Server\MSSQL)并检查是否 [b]Everyone[/b] 组已经从目录 ACL 删除。与此同时,确保完全控制只授予 SQL 服务帐户、[b]Administrators[/b] 组和本地系统帐户。
Lq1v4C.N]2d [/td][/tr][tr][td]•[/td][td][b]保护安装日志文件了吗?[/b]
5FH W;]0H8y 如果您已经安装了 SQL Server 2000 Service Pack 1 或者 2,系统管理员或者服务帐户密码可能留在 SQL 安装目录中。确保已经使用 Killpwd.exe 实用工具从日志文件删除密码实例。 `9AYf2?
有关获取和使用这个实用工具的信息,请参阅 Microsoft 知识库文章 263968,“[url=http://msdn.microsoft.com/isapi/gosupport.asp?Target=/default.aspx?scid=kb;en-us;Q263968][color=#0000ff][i]FIX[/i][i]:[/i][i]Service Pack Installation May Save Standard Security Password in File[/i][/color][/url]”。 'm H5d_R W H
[/td][/tr][/table][b]共享[/b]Vn!P-lK+C?"W
审查以下问题以确保您的服务器没有因为存在文件共享而不必要地公开:
~/x-Ih:i,M_,`9w1WS [table][tr][td]•[/td][td][b]您的服务器上存在什么共享?[/b]9ke |4r9i7x
要审查共享和相关的权限,运行计算机管理 MMC 管理单元,并选择 [b]SharedFolders[/b] 下的 [b]Shares[/b]。检查是否所有共享都必需。删除任何不必要的共享。 %[)Y7M i*[\'Bk0k
[/td][/tr][tr][td]•[/td][td][b]Everyone [/b][b]组能够访问共享吗?[/b]]]"\{:M1eC
检查是否 [b]Everyone[/b] 组没有被授予访问共享的权限,除非故意如此,还要验证已经配置特定的权限来代替。
6\c kl)a:o [/td][/tr][tr][td]•[/td][td][b]删除管理共享了吗?[/b]
Wr*xi2x 如果您不允许远程管理您的服务器,那么检查是否管理共享(如 C$ 和 IPC$)已经删除。 ^8]J@d
[b]注[/b] 一些应用程序可能需要管理性共享。例如,Microsoft Systems Management Server (SMS) 和 Microsoft Operations Manager (MOM)。有关更多信息,请参阅 Microsoft 知识库文章 318751 ,“[url=http://msdn.microsoft.com/isapi/gosupport.asp?Target=/default.aspx?scid=kb;en-us;Q318751][color=#0000ff][i]How To:Remove Administrative Shares in Windows 2000 or Windows NT[/i][i]4[/i][/color][/url]”。
4Hswk6a [/td][/tr][/table][b]端口[/b]
`_QWCt,[)E#R6Y 审查服务器上处于激活状态的端口,以确保不存在不必要的端口。有关使用 netstat 命令实现这一点的更多信息,请参阅本单元前面“Web 服务器配置”中的子部分“端口”。然后审查以下问题:
(_c7wA6O dI7v0nj:~ [table][tr][td]•[/td][td][b]限制访问[/b][b] SQL Server [/b][b]端口了吗?[/b]
ZD v/_4yx}x 审查限制访问 SQL Server 端口的方式。检查是否外围防火墙防止了从 Internet 的直接访问。为了防止内部攻击,审查 IPSec 策略以确保它们限制了对 SQL Server 端口的访问。
b*W*xM1w~ [/td][/tr][tr][td]•[/td][td][b]配置命名实例侦听同一端口了吗?[/b]x:d6{8jZ6t
如果您使用了命名实例,使用网络服务器实用工具验证是否配置了实例侦听特定的端口。这避免了客户端和服务器之间的 UDP 协商,意味着您不需要打开其他端口。
%d'RdS-n.WKqO [/td][/tr][/table][b]注册表[/b] GG| aGo/^
通过以下问题审查注册表配置的安全: \)\0wp2l
[table][tr][td]•[/td][td][b]保护[/b][b] SQL Server [/b][b]注册表项了吗?[/b] Y:g`Y'CT[m*F$ua7M
使用 Regedt32.exe 检查是否 Everyone 组已经从附加于以下注册表项的 ACL 中删除。 2V/LjT c/O;I
Administrators: Full ControlSQL Server service account: Full Control[/td][/tr][tr][td]•[/td][td][b]保护[/b][b] SAM [/b][b]了吗?[/b]
G$|VO&jJ` 检查是否通过在注册表中创建项(而不是值)[b]NoLMHash[/b],限制了在安全帐户管理器 (SAM) 中的 LMHash 存储区,如下所示。 !t3iOdr"V
HKLM\System\CurrentControlSet\Control\LSA\NoLMHash有关更多信息,请参阅 Microsoft 知识库文章 299656,“[url=http://msdn.microsoft.com/isapi/gosupport.asp?Target=/default.aspx?scid=kb;en-us;Q299656][i][color=#0000ff]How to Prevent Windows from Storing a LAN Manager Hash of Your Password in Active Directory and Local SAM Databases[/color][/i][/url]”。 D2U6xq#m
[/td][/tr][/table][b]审核和日志记录[/b]
"|,}ut0{9|kfT 审查以下问题以检查是否在数据库服务器上使用了适当的审核和日志记录。
OH9r$SJ3gD4] [table][tr][td]•[/td][td][b]启用[/b][b] SQL Server [/b][b]审核了吗?[/b]S Z^6{hj
检查是否启用了 SQL Server 审核。确保 Enterprise Manager 中 SQL Server [b]Properties[/b] 对话框 [b]Security[/b] 页的 [b]Audit level[/b] 设置被设置为 [b]All[/b] 或者 [b]Failure[/b]。
*Z-vIlE5n(B;E?t [/td][/tr][tr][td]•[/td][td][b]记录所有失败的登录企图了吗?[/b]
3b(t,_(lq@ 使用本地安全策略工具检查是否启用了对失败登录企图的审核。
u6wG'A"_0I`9h [/td][/tr][tr][td]•[/td][td][b]记录了所有对文件系统的失败操作吗?[/b]
cSA ?k;JI 使用本地安全策略工具检查是否启用了对象访问审核。然后检查是否审核已经对整个文件系统启用。 6@(i-@?0F_
[/td][/tr][/table][b]SQL Server [/b][b]安全[/b]*N(F$M~G9FZ
审查您的 SQL Server 配置为使用哪种身份验证模式。您可以通过查看 Enterprise Manager 中服务器 [b]Properties[/b] 对话框的 [b]Security[/b] 页看到该模式。如果您的服务器配置为支持 [b]SQL Server and Windows[/b] 身份验证,检查是否应用程序的确需要 SQL 身份验证。如果可能,使用 [b]Windows only[/b] 身份验证。
kx$c/WQ&i 如果您的应用程序确实需要 SQL 身份验证,审查它们是如何管理数据库连接字符串的。如果使用 SQL 身份验证的话这很重要,因为它们包含用户名和密码。还要确保服务器证书已经安装在数据库服务器上,确保凭据通过网络传递给数据库服务器时已经加密,或者使用了传输级加密。
v,m)po;g5p [b]SQL Server [/b][b]登录、用户和角色[/b]Hw7aNE$ob
SQL Server 中的授权是通过 SQL Server 登录、数据库用户和各种不同类型的角色管理的。审查以下问题以确保这些角色进行了适当的配置: |"ZdW-K%|)~.K
[table][tr][td]•[/td][td][b]有坚固的[/b][b] sa[/b][b](系统管理员)密码吗?[/b]v1S#j8B&}qn
确保 [b]sa[/b] 帐户有坚固的密码。 6h ug SZ/gy9y
[b]重要说明[/b] 甚至从 SQL 身份验证改为 Windows 身份验证时,[b]sa[/b] 帐户仍然是活动的。#l2kEuJ"F.d5vgs
还要确保您将坚固的密码应用于所有数据库帐户,尤其是特权帐户,例如,[b]sysadmin[/b] 和 [b]db_owner[/b] 的成员。如果您使用复制,需要检查是否 [b]distributer_admin[/b] 帐户有坚固的密码。 gC!xZI{;w ^"?"d
[/td][/tr][tr][td]•[/td][td][b]删除[/b][b] SQL Server [/b][b]来宾帐户了吗?[/b]om)x&M Pq"K"]He
如果当您安装 SQL Server 时,启用了 Windows [b]guest[/b] 帐户,将创建一个 SQL Server [b]guest[/b] 帐户。检查每个数据库,并确保 SQL Server [b]guest[/b] 帐户不存在。如果有的话,删除它。 U%X;{vb9\Wx
[b]注[/b] 您无法从 master、tempdb、replication 和 distribution 数据库中删除 [b]guest[/b]。y rG$@i'~2MZ
[/td][/tr][tr][td]•[/td][td][b]删除[/b][b] BUILTIN\Administrators [/b][b]服务器登录了吗?[/b]/X5],q [7tE+]/Y
如果您的公司区分域管理员和数据库管理员角色,则删除 BUILTIN\Administrators SQL Server 登录。创建包含特定的数据库管理的特定 Windows 组,是一个好想法。 6z"A~*S1dk*w
[/td][/tr][tr][td]•[/td][td][b]删除公共角色权限了吗?[/b]
#pL LS/{E 审查授予每个数据库中公共角色的权限。确保它没有权限访问任何数据库对象。
*G"b2~T5r [/td][/tr][tr][td]•[/td][td][b]有多少成员属于[/b][b] sysadmin [/b][b]角色?[/b],Zw B ua!`
检查有多少登录属于 [b]sysadmin[/b] 角色。理想情况下,系统管理员应该不超过两个用户。 #J9CL IZ@&I9iD
[/td][/tr][tr][td]•[/td][td][b]授予登录受限数据库权限了吗[/b]
7wr#on)y:N:r 审查授予每个数据库用户帐户的权限,确保每个帐户(包括应用程序帐户)只有最低的必需权限。 +qk(M S ],D4^{5c
[/td][/tr][/table][b]SQL Server [/b][b]数据库对象[/b]
F } vP!GYg 审查以下问题以确保您删除了不必要的数据库对象(包括示例数据库),而且存储过程也得到了适当保护。 4` s!CS$Kwk
[table][tr][td]•[/td][td][b]删除示例数据库了吗?[/b]
*KV(@5fyI-Nd)yW 使用 SQL Server Enterprise Manager 检查是否所有示例数据库(包括 Pubs 和 Northwind)都已经删除。
RoK"r,dG [/td][/tr][tr][td]•[/td][td][b]保护存储过程了吗?[/b]
#^^aQ'cW 检查确保公共角色和 guest 用户都没有访问任何存储过程的权限。为了授权存储过程的访问权限,应该将服务器的 SQL Server 登录映射到数据库用户,将数据库用户置于一个用户定义的数据库角色中,然后将权限应用于这个角色,以提供应用程序存储过程的执行访问权限。
^^ `8vNtO0c c [/td][/tr][tr][td]•[/td][td][b]限制访问[/b][b] cmdExec [/b][b]了吗?[/b]
rS)W%\9h [b]cmdExec[/b] 函数被 SQL Server Agent 用来执行 Windows 命令行应用程序和 SQL Server Agent 安排的脚本。检查是否 [b]cmdExec[/b] 的访问权限只限于 [b]sysadmin[/b] 角色的成员。
.e2K8bJB^_E)\"AO 为了检查这一点,使用 SQL Server Enterprise Manager,展开 [b]Management[/b] 节点。鼠标右击 [b]SQL Server Agent[/b] 并显示 [b]SQL Server Agent Properties[/b] 对话框。单击 Job System 选项卡,检查是否选择了 [b]Only users with Sysadmin privileges can execute CmdExec and ActiveScripting job steps[/b]。 9zN!J]H T;J
[/td][/tr][/table][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][img=7,9]http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif[/img][/url][url=http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/ImpWebSec/iwassecmod95.mspx#top][color=#0000ff]返回页首[/color][/url]
\i h"l~$o 网络配置审查中此阶段的目的是标识网络配置中的缺陷。有关本部分中审查问题所提出问题的进一步的背景信息,请参阅“[url=http://msdn.microsoft.com/library/en-us/secmod/html/secmod88.asp][i][color=#0000ff]保护网络的安全[/color][/i][/url]”单元。
a{4H8Hj;XFo 要帮助集中和组织审查过程,将审查问题划分为以下配置类别: iF}0|q*~/W@F5Z
[table][tr][td]•[/td][td][b]路由器[/b]
B;x#v` M;L [/td][/tr][tr][td]•[/td][td][b]防火墙[/b]
:jDz y hA3m'fN [/td][/tr][tr][td]•[/td][td][b]交换机[/b]\7d9UQ_V
[/td][/tr][/table][b]路由器[/b]
U2d8{f1n 根据以下问题审查路由器配置: x+i)e,p1eb"u2w
[table][tr][td]•[/td][td][b]应用最新的修补程序和更新了吗?[/b]
b(yK#}6@mq,@5@*h 与联网硬件厂商协商,以确保拥有最新的修补程序。 C'E ^~`m9wz
[/td][/tr][tr][td]•[/td][td][b]使用入口和出口筛选了吗?[/b]
%XZ1S@k1T 有关更多信息,请参阅“Network Ingress Filtering:Defeating Denial of Service Attacks which employ IP Source Address Spoofing”,网址是:[url=http://www.rfc-editor.org/rfc/rfc2267.txt][i][color=#0000ff]http://www.rfc-editor.org/rfc/rfc2267.txt[/color][/i][/url]。
7W | e?:vu [/td][/tr][tr][td]•[/td][td][b]阻塞[/b][b] ICMP [/b][b]流量?[/b][iPts eb;T
确保您在外围路由器阻塞了网际控制消息协议 (ICMP) 流量,以防止各种攻击,例如层级式 ping 洪水攻击和其他潜在的 ICMP 缺陷。 H3pQ8NfT
[/td][/tr][tr][td]•[/td][td][b]防止值为[/b][b] 0 [/b][b]或者[/b][b] 1 [/b][b]的生存时间[/b][b] (TTL) [/b][b]到期消息了吗?[/b]
:b9}X#fi(@u_ EY%L0r)c 这能够防止路由跟踪导致的信息泄漏。
&i$g v6S6vc [/td][/tr][tr][td]•[/td][td][b]接收或者转发广播流量了吗?[/b] B$WOgD S ]"Q
应该筛选的源地址如表 1 所示。 mO7_ qKam
[table][tr][td=2,1]表 1 应该筛选