自从1999年夏季,每个出自redmond的microsoft软件产品都使用了.net品牌。.net 品牌产品由一系列运行在windows 2000操作系统中的优秀商业应用软件组成。 这些应用软件包括sql server 2000、commerce server 2000、 biztalk server 2000、exchange 2000 server、application center 2000 server、mobile information 2001 server以及inte.net security and acceleration (isa) server 2000。
microsoft同时也用.net品牌来命名新一代.应用软件开发体系和方法,也就是所谓的.net框架。由于microsoft对.net品牌技术的定义非常宽范,它将影响到所有现存的基于microsoft 技术的it系统或者microsoft的关键型应用软件。
当你规划你的.net基本结构时,你需要考虑使用哪些安全服务。最基本的安全服务应该包括可靠的身份验证、数据保密和数据完整性保护(用于通过网络发送的数据和存储在任何类型存储介质上的数据)、认可服务及antireplay(反数据窃听)服务。这些服务以及提供服务的技术对任何系统结构——不仅仅是.net——都很重要。当然,.net特有的安全功能也还存在。不过,我们希望能够保护.net系统结构的所有部分,而不仅仅是利用.net各z应用软件中自带的安全功能进行系统防护。
为实施这些基本的安全服务,你需要掌握几项关键技术和基本设计原理。如何设置安全区和防火墙、“侵入检测系统”(idss)、身份验证、身份验证授权、公钥基本结构(pki)以及如何强化平台安全(hardening)对你的.net基本结构是非常重要的。
一个典型的.net基本结构
一个典型的.net基本结构。需要保护的组件有web服务器、商务对象服务器、目录、证书颁发服务器(cas)、企业资源规划(erp)系统、数据库以及组件间的通信连接。
在.net系统中,内部和外部客户完全基于web访问.net基本结构。一个典型的.net基本结构将包括不同的可用性和负载均衡解决方案。在web服务器级,捆绑在win2k advanced server、win2k datacenter server和application center 2000上的“网络负载均衡服务”(nlbs),可提供高可用性和负载均衡能力。sql server数据库和erp系统则支持群集。需要注意的是系统同时也包括一个com+的商务对象群集。你可使用application center 2000来集成和管理该com+群集及web服务器的nlbs。(
在我撰写此文的时候,要对有某些.net应用软件功能进行深入的讨论是不太可能的,这是因为那些功能的一些细节还不清楚。然而,鉴于microsoft正在win2k上建立.net基本结构,我们可以认为,.net将进一步开发win2k的安全功能。同时,随着基于inte.net 的协议的重要性日益增强,我们可以认为,将主要通过标准inte.net协议(例如http、smtp、“轻量级目录访问协议”—ldap),访问.net基本结构组件。
安全区和防火墙
当你规划你的安全.net基本结构,你将需要评估一下当前公司的安全区和防火墙。你的.net基本结构可能需要你作一定的改变。即使你构建的应用软件不会与外界接触,你也需要考虑使用防火墙。内部防火墙可以保护站点或有特定安全要求的部门,可以限制对你内部网络某些部分的访问(在入侵者破坏防火墙的情况下,内部防火墙将是你外部安全界线的一部分)。
当你设计系统结构的时候,可能会碰到两个涉及到安全区和防火墙的常见问题。第一个问题是,我应该将数据和服务器放在何处?用来存放数据和服务器的安全区取决于你正使用的数据或服务器的目的。请评估你的服务器处理和存储的数据的机密程度,然后在你信任的安全区内存储机密的客户数据。
如果你的公司在网络拓扑中使用了不设防区域(dmz),问题将复杂一些。尽管你应该在dmz中只存放公用数据。然而,即使是公用数据的也需要保护其完整性。在2000年美国总统选举期间,两个候选人都不会想让入侵者改变cnn公布在其web站点上的选票数。(不过,也许al gore并不会介意。)
第二个问题是,我该如何处理“远程过程调用”(rpc)及“安全套接字层”(ssl)/“传输层安全”(tls)通信,使防火墙两边的应用实体可以进行通信。许多商业web站点使用ssl/tls为消费者提供一套基本的安全服务。该套基本安全服务通常包括服务器身份验证、客户身份验证、以及对ssl客户端与服务器之间传输数据完整性和保密性的保护。为了在在防火墙的层次处理ssl通信,你可以采取以下两种方法之一:ssl隧道操作,或ssl 桥接操作。大多数商业防火墙支持ssl隧道操作,使用http connect消息来告诉防火墙忽略特定的ssl会话的具体内容,只是简单地转发ssl包。在ssl桥接设置中,防火墙对ssl是敏感的,并保留正确的ssl证书。防火墙扮演ssl隧道终点的角色。ssl桥接操作不仅对在防火墙级处理ssl通信,而且让通信通道的公开(比如未被信任的区域)部分(与不支持ssl的应用相连接的部分)也可以使用ssl,因此不失为一种很好的解决方案。
rpc允许客户端使用远程应用软件相互联系。所有涉及.net基本结构的组件都可使用rpc通信。值得特别关注的是,使用rpc在microsoft的分布式组件模型(即dcom和com+)中实现组件之间的通讯,以及active directory(活动目录)的复制。
rpc很容易进行设置——如果不涉及防火墙的话。rpc的一个令人讨厌的特性就是使用动态入站端口,这使得用户无法预测即将使用哪个端口。出于安全因素考虑,很少有防火墙管理员愿意打开所有可能的端口。有关这个问题的更多信息,请参见microsoft文章“howto: configure rpc dynamic port allocation to work with firewall(如何配置rpc动态端口分配使其与防火墙协同工作)”(http://support.microsoft.com/support/kb /articles/q154/5/96.asp)。
那么,如何处理用于dcom和com+通讯的rpc和防火墙的呢?首先,你决不能使用rpc将inte.net客户连接到你的.net系统。相反,应选择一个基于http的解决方案。只要不使用ssl或ip安全(ipsec),http就比较容易控制,并且使用固定入站端口(缺省情况下为端口80)。然而,有时你需要考虑,如何设置rpc使其能通过防火墙进行dcom和com+通信。设想一下, 在基本结构中,你需要在dmz中的一个web服务器和一个com+商业对象服务器之间进行com+通信。在这种情况下,你可以使用rpc,通过隧道tcp或简单对象访问协议(soap)实现组件之间的通讯。
隧道tcp在dcom通讯序列开始时,添加了一种基于http的“握手”(handshake)。“握手”之后,隧道tcp在tcp上发送普通的dcom包,不受http的干涉。隧道tcp依赖于rpc_connect消息,并需要一个rpc代理。要在win2k上安装rpc代理,请打开控制面板的添加/删除程序项,添加com inte.net services proxy (cis代理.networking service.(com inte.net服务代理网络服务)。要在win2k或windows nt 4.0客户端配置隧道tcp,可以使用dcomcnfg.exe 配置工具。有关配置隧道tcp和cis代理的详细信息,请参见marc levy在msdn上发表的文章“com inte.net services”(http://msdn.microsoft.com/library/backgrnd /html/cis.htm)。 尽管隧道tcp和cis代理解决了防火墙问题,但是它们依赖于microsoft平台。
soap,.net框架的一个时髦说法,是一项相当新的技术。microsoft、lotus、及ibm的专家们将soap定义为一项独立于平台的协议。soap的一个主要优势就是,它提供了一种使用http协议消息来传送rpc通讯的方法。换句话说,soap允许客户端使用http协议与远程的基于组件的应用软件进行通讯。
为将rpc信息嵌入到http中,soap使用了xml编码。区别于隧道tcp,soap依赖于http 协议获得远远多于初始“握手”的信息。有关soap的更多信息,请参见aaron skonnard在msdn上发布的文章《soap: the simple object access protocol》(http://msdn.microsoft.com/library/periodic /period00/soap.htm)。
另外一个基于rpc的应用,在.net系统结构安全领域特别令人感兴趣,那就是同一域内的域控制器(dc)之间的活动目录复制,这些域控制器是不同安全区的成员。到目前为止, microsoft还不支持将smtp协议用于域名相关的信息复制。为解决这一问题,你可以设置基于ipsec的隧道解决方案。ipsec允许你在网络层实施隧道操作。为建立通过防火墙的ipsec隧道,你需要打开以下端口:
用于dns通信的53/tcp和53/udp
用于inte.net密钥交换(ike)通信的500/udp
用于kerberos v5 通信的88/tcp和88/udp(当你未使用预共享密钥或基于证书的身份验证方法时)
同时,你需要打开防火墙,以支持ipsec encapsulating security payload(esp,封装安全负载)——协议50,以及ipsec authentication header(ah,身份验证头)——协议51。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器