科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件构建安全的.NET系统(二)

构建安全的.NET系统(二)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

自从1999年夏季,每个出自Redmond的Microsoft软件产品都使用了.NET品牌。.NET 品牌产品由一系列运行在Windows 2000操作系统中的优秀商业应用软件组成......

作者:佚名 来源:www.winmag.com.cn 2007年11月5日

关键字: 安全 系统

  • 评论
  • 分享微博
  • 分享邮件
入侵检测系统(IDS)

  在过去的一年里,IDS已经成为一种必须的安全功能。作为任何.NET基本结构安全的必备之物,IDS执行三个主要任务:

  IDS监控出现在计算机和网络上的事件。

  IDS收集并分析这些事件。在分析的基础上,IDS可检测到由事件汇报Web站点、IDS服务或软件供应商提交的报告中提到的攻击,该类攻击已经渗透到你的安全体系中的其他保护层。

  IDS对检测到的攻击做出响应。该响应可包括通知管理员、连接终止或高级数据收集,即从更多的数据源收集比平时更多的信息。

  使用IDS你不仅可以检测到来源于公司外部的攻击,还可以检测到上报的内部攻击。太多的公司低估了内部合法用户攻击的危险性。举个例子,某个不满的雇员可能会启动Denial of Service(DoS)来攻击公司的目录。你也可以利用IDS建立一套服务,该服务可以弥补企业安全策略和IT基本结构的安全组件之间的缺口。由于IDS是对攻击做出响应的,它可动态强化企业的安全策略。

  IDS有两个基本类型——基于主机的IDS和基于网络的IDS 。基于主机的IDS主要扫描并监控本地系统的状态和数据。在Win2K的环境下,基于主机的IDS服务器通常监控日志事件、文件系统事件及注册事件。基于网络的IDS系统则监控网络通信——可将之看为一个高级“嗅探器”。基于主机的IDS的一个最常见的例子是Symantec(前身是AXENT技术)的Intruder Alert(入侵者警报)。Symantec同时提供基于网络的解决方案,叫做NetProwler。Internet Security Systems(ISS)公司则提供一种称为Real-Secure(实时安全)的产品,它是一种既基于主机又基于网络的IDS。

  身份验证

  你的.NET基本结构可能包括不同类型的客户端和管理员界面。由于这些取决于界面的用途和从这些界面可访问的数据,它们可能需要不同等级的身份验证。例如,有些界面和数据是公用的,不需要任何的身份验证。

  对身份验证协议的选择取决于你正在处理的访问协议和客户端应用软件。在基于RPC的连接中,你可以使用Kerberos或NT LAN Manager(NTLM)。基于HTTP的连接给你更多选择:基本身份验证或简要身份验证、Kerberos、NTLM或基于证书的客户端身份验证。如果你有来自不同供应商的不同种类的客户端应用软件,请不要选择NTLM或Kerberos。(NTLM是Microsoft专用的协议,而Kerberos是开放式的标准,但应用不广)。同时请记住,只有当用户已经登录Windows域时,Kerberos和NTLM才在HTTP上可用。如果你的多数客户是通过Internet连接的,对小用户群,你很可能倾向于在SSL上使用基本身份验证。对大用户群,你可能应考虑补充使用标准身份验证协议,该协议带有一种基于自定义窗体或cookies的身份验证方法。甚至你可能要考虑执行使用Microsoft护照—— 一项旨在为大型Internet环境服务的简单登录(single sign-on)(SSO)技术。

  身份验证解决方案的质量,很大程度上取决于该解决方案用来识别实体对象时考虑的因素的数量。一个只依赖于用户ID和密码的简单解决方案,比同时依赖于智能卡和PIN码的解决方案在身份验证方面的质量要低的多。前者属于单因素身份验证方法,而后者是双因素身份验证方法。对安全要求较高的.NET的解决方案,你甚至可能要考虑三因素身份验证方法,包括用户名、持有物件(智能卡)和生物数据(指纹)的验证。

  影响身份验证解决方案质量的另外一个因素,就是背后的加密技术。身份验证协议,例如Kerberos或NTLM,都比SSL客户端基于证书的身份验证方案容易遭到破坏。前者使用对称密码,而后者使用非对称密码。有个例外,就是Win2K的智能卡登录过程使用的Kerberos PKINIT。Kerberos协议的这个扩展技术同时使用对称和非对称密码。(使用非对称密码可能需要首先打开PKI。)

  当你正为.NET基本结构设计身份验证解决方案时,你还需要考虑凭据(credential)数据库。凭据数据库的设置再次取决于使用身份验证凭据的目的(相比包含发射核导弹密码的数据库,公用应用软件的密码数据库需要较少的保护)。在Windows环境下,活动目录是通常存储凭据的场所。你会选择将所有活动目录服务器上的凭据存放在受信任的区中,或者选择将活动目录服务器上的部分凭据存放在DMZ中。在后一种情况中,你或者为DMZ定义一个单独的活动目录森林,或者为DMZ定义一个单独的活动目录域,并在受信任的区使用你的活动目录森林对它进行集成。我推荐使用前面的方法(即,在DMZ中定义独立的活动目录森林),这是因为它完全将受信区的帐号与DMZ的帐号屏蔽开来了。同时,该方法不需要使用防火墙上的RPC保护你的受信网络,而允许你在SSL上使用LDAP建立内部活动目录域和DMZ的活动目录域之间的安全同步机制。

  身份验证授权

  当你正设计多等级.NET基本结构时,需要考虑的另外一项基本技术就是身份验证授权(Authentication Delegation)。多层.NET应用软件包括多个身份验证层次——例如客户端和Web服务器之间、Web服务器和COM+商务对象服务器之间、COM+商务对象服务器和数据库服务器之间等。如果你想使用用户身份来设置对数据库服务器上数据的访问控制,你所使用的身份验证协议必须支持授权。换句话说,身份验证协议需要有能力在机器之间转发用户凭证。每台机器都使用客户身份来对下一台机器验证身份。

  说明了授权支持是如何跟你所使用的身份验证协议相关联的。举个例子,假设你正使用基本身份验证来验证某用户身份,该用户通过从他/她的浏览器连接到远程服务器上的Web服务器工作。为对一台与该Web服务器相邻的服务器(例如Exchange 服务器)进行身份验证,Web服务器可重复使用用户身份。如果安装了AD(同时Kerberos身份验证协议可用),与Web服务器相距多个节点的服务器也可以使用该用户身份来身份验证。Web服务器进程可以使用Kerberos和客户端凭证来对COM+服务器进程进行身份验证。按此顺序,COM+服务器也可以使用Kerberos和客户身份来对Microsoft SQL服务器进程进行身份验证(仍是在另一台机器上)。注意,当你匿名访问Microsoft IIS,并且允许密码同步时,你不能授权给IUSR的servername帐号。当你使用的是基于SSL/TLS的证书身份验证,且证书映射在AD中已经定义时,结果也是一样。同时记住,NTLM不支持授权。

  说明了如何在一典型的基于Win2K的Intranet环境下设置Kerberos授权。所有组件都可使用RPC来实现通讯。客户端界面是基于浏览器的,从而通过HTTP与Web服务器实现通讯。同时,用户已经通过Kerberos或NTLM登录到域。在Internet的设置过程中,客户端也通过HTTP通讯,但一般不会登录到域。然而,在Internet上使用Kerberos或NTLM并不是一个好的想法——这些身份验证协议在大型环境下灵活度不大,且需要一个在线并且可以信任的第三方的存在。

  为实现从浏览器连接到数据库服务器使用Kerberos,你需要满足以下条件:

  所有相关软件必须可访问或知道如何使用Negotiate Security Support Provider(SSP,协商安全支持供应方)和Kerberos SSP。SSP是一种软件模块,它为应用软件及其开发人员抽象出身份验证方案的内核技术。Negotiate SSP是一种特殊的程序,负责协商客户端和服务器之间的身份验证协议(例如,Kerberos或NTLM)。撰写此文的时候,Kerberos SSP只适用于Win2K平台。Microsoft Internet Explorer(IE)5.5和IE 5.0、Internet Information Services (IIS)5.0、SQL Server 2000、Exchange 2000、以及COM+等都知道如何使用Negotiate和Kerberos SSPs。

  用户必须在活动目录中有帐号,并且活动目录没有启用Account is sensitive and cannot be delegated(帐户属于敏感帐户,不能被授权)属性。为检查这项设定,请启动Microsoft Management Console(MMC)Active Directory Users and Computers snap-in(Microsoft管理控制台的Active Directory用户及计算机的管理单元),访问一个AD用户对象属性表单,并选择Account选项页面。运行IIS和SQL服务器的服务帐号,还有用于COM+应用软件的身份,都必须在AD中有定义。IIS服务帐号(缺省情况下是机器帐号)和COM+应用软件身份必须得到信任以进行授权。你可以在Account页面设置帐户是得到信任可以授权的。为设置机器的帐号,可打开活动目录用户及计算机的管理单元中的当前对象的General选项页面。

  Web服务在活动目录中必须拥有有效注册的“Service Principal Name”(SPN,服务主要名称)。如果Web服务的名称不同于IIS计算机名称,请确保使用Microsoft Windows 2000 Resource Kit中的setspn.exe实用工具来注册自定义的SPN。

  COM+应用软件必须支持Delegate impersonation level授权假冒级别

  尽管身份验证授权在Win2K环境下容易设置,我仍强烈建议,在你开始对.NET基本结构实施安全措施之前,对它进行测试,尽量熟悉。比起Active Directory Users and Computers GUI的配置选项,身份验证授权后面的技术非常复杂。

  公共密钥(PKI)基本结构

  PKI给你提供了一套服务,它可对多种.NET应用软件和服务提供强有力、非对称并且基于密码的安全服务。举个例子,你可以使用PKI,在BizTalk Server SMTP连接上提供安全的MIME(S/MIME)服务,或者对访问你的Web站点的用户提供强有力的身份验证和安全通道服务(即,基于SSL和基于TLS的通道服务)。

  在.NET系统中设置PKI,例如PKI系统,是件复杂的事情。在此种情形下,PKI包括四个主要组件:脱机的根CA、联机的从属CA、运行在Web服务器上的证书注册Web站点(针对Internet用户)、以及一套支持PKI的客户端、机器和应用软件。受信区中的PKI用户和应用软件直接从联机发行的CA中获得证书。在此设置过程中,你将需要再次处理RPC和防火墙的问题——注册Web站点使用RPC与联机发行的CA进行通讯。

  .NET基本结构的“建筑师”必须能回答与PKI相关的三个关键问题。首先,PKI信任模型将是什么模样的?PKI信任模型定义了CAs和支持PKI的实体之间的信任关系。如果你正专注于商业CAs或外部合作伙伴,他们已经在适当的位置用PKI了,设置一个信任模型可能会困难重重。信任模型必须能回答上这个问题,哪个CA值得信任?并且,更为重要的是,哪个证书或公钥值得信任?尽管你可以使用加密技术来检验大多数PKI的信任关系,你仍不能检验支持PKI的实体和可信的CA发放站点之间的信任关系。支持PKI的实体和可信的CA发放站点之间的信任观念类似于人类之间的信任。你信任人们帮你做某事,那是因为你了解他们并且相信他们会做好。与之类似,你相信一个CA发放站点将发行值得信任的证书,因为你知道,经营CA服务的公司有做好这类事情的声望,或者因为CA公司的某些行动已经让你相信它是值得信任的。


第二个问题是,你将部署来自内部的PKI还是外购的?抑或是混和的?如果你依赖于商业CA,你会变得对其极端依靠(因为你已经向一家外部公司透露了部分安全结构的管理方法)。如果你使用这种PKI,对那些涉及高度机密或财政信息的应用软件提供安全保障,那么这种高度依赖性将让人无法忍受。

  第三个问题是,你将如何在支持PKI的实体之间交换证书和证书吊销列表?你需要决定你将如何设置PKI,以使证书和证书吊销列表(CRL)对所有支持PKI的实体都有效。在小环境下,你可以使用单独的LDAP目录来访问,例如内部Win2K的AD。但如果你考虑多目录情况(可能包括你自己的和每个正使用你的.NET 解决方案的合作伙伴的目录),情形会变得复杂。

  尽管在你的.NET基本结构中设置PKI时,你还需要应付许多其他的挑战,单上述这些问题是最重要的部分。好好准备吧,记住,设计PKI不会像在Win2K 下运行CA安装程序那么简单。

  平台安全强化

  平台安全强化涉及到你的.NET基本结构运行的Win2K平台的安全性。强化操作系统平台的安全是所有操作系统的管理员面对的永无休止的一项任务。

  主要的平台安全强化任务是,随时使用最新的服务包和安全补丁程序。为部署服务包和安全补丁程序,你可以使用“Microsoft系统管理服务器”(SMS)或“组策略对象”(GPO)上的应用软件部署功能。

  2000年颇受关注的一个平台安全强化主题,就是保护免受DoS的攻击。从系统可用性观点看来,DoS攻击可对你的.NET基本结构造成严重损害。你需要清楚了解最新的DoS攻击类型,Microsoft和“计算机紧急响应小组”(CERT)在其Web站点上定期发布DoS信息。Microsoft提供了一套注册表子键(subkey)(例如SynAttackProtect、EnableDeadGWDetect、EnablePMTUDiscovery),可强化TCP/IP堆栈对DoS攻击的抵制。有关这些密钥的附加信息,请参见Microsoft文章《Security Considerations for Network Attacks》(http://www.microsoft.com/technet/security/dosrv.asp)。

  有个很好的工具可帮助你自动实现服务器的安全强化,就是Win2K的“安全配置和分析”(SCA)工具。有关Win2K安全强化的更多信息,请参见Microsoft的安全Web站点(http://www.microsoft.com/technet/security),和Windows IT安全Web站点(http://www.ntsecurity.net)。有个优秀的最新安全事件信息源是“CERT协调中心”(CERT/CC),在http://www.cert.org。

  入侵者警报

  我已经描述了一些当你正为你的.NET基本结构设计时,需要牢记在心的关键技术和设计原理。当然,还有其他
的安全技术和设计原理,但我讨论的解决方案代表一套“基本的”安全保障措施。如果你不认真对待每条建议,你可能就会错过提高安全的重要机会。更糟糕的是,你的最终设计可能会成为网络入侵者的天堂。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章