The Cable Guy - 2003年2月

发布者 作者:The Cable Guy

网络访问隔离控制

cable_guy

欲了解关于The Cable Guy的所有专栏的列表和更多信息,请单击此处

由于常规的远程访问连接仅验证远程访问用户的凭证,用于连接到专用网络的计算机可能经常访问网络资源,虽然它的配置并不完全符合机构的网络策略。例如,某个具有有效访问凭证的远程用户可能连接到这样一个网络,该网络上有一台计算机没有安装必备的反病毒软件。或者,某台启用了路由的客户计算机可能引发安全风险,从而给恶意用户通过该客户计算机访问公司网络资源创造机会,因为这台计算机具有到专用网络的经过身份验证的连接。尽管机构内部付出努力来确保内部使用的计算机遵守网络策略,但是那些在雇员家中用来远程访问的计算机仍然会给网络带来重大的风险。

网络访问隔离控制是Windows Server 2003家族中的一个新增特性,该特性可推迟对专用网络的常规远程访问,直至该远程访问计算机的配置经过管理员提供的脚本的检查和验证。当某台远程访问计算机发起对某台远程服务器的连接时,用户将接受身份验证,并且该远程访问计算机将分配到一个IP地址。然而,该连接仍然处于隔离模式,这种模式下的网络访问将受到限制。管理员提供的脚本在远程访问计算机上运行。当该脚本通知远程访问服务器它已成功地运行,并且远程访问计算机符合当前网络策略时,隔离模式将消除,远程访问计算机将被授予正常的远程访问权限。

网络访问隔离控制旨在阻止具有不安全配置的计算机连接到专用网络;而不是保护专用网络避免已获得一组有效凭证的恶意用户的攻击。

为了理解网络隔离控制的组件及其工作原理,我们首先回顾基于Windows的常规远程访问配置,然后再研究一种隔离配置。

本页内容

Windows远程访问的组件
网络访问隔离控制的组件
网络访问隔离控制的运作原理
如何部署网络访问隔离控制
更多信息

Windows远程访问的组件

下图显示了使用远程身份验证拨入用户服务(Remote Authentication Dial-In User Service,RADIUS)身份验证时的Windows远程访问组件。

cg020301.gif

这个配置包含以下组件:

  • 远程访问客户端

    运行Windows操作系统的计算机,用以创建对远程访问服务器的拨号连接或虚拟专用网络连接。远程访问客户端可以使用手动配置的连接或连接管理器(Connection Manager,CM)配置文件。

  • 远程访问服务器

    运行Windows 2000或Windows Server 2003家族的成员之一以及为Windows或RADIUS身份验证提供程序配置的路由和远程访问服务的计算机。

  • RADIUS服务器

    运行Windows 2000或Windows Server 2003家族的成员之一和Internet身份验证服务的计算机。

  • 帐户数据库

    对于基于Windows 2000或Windows Server 2003的网络,Active Directory(活动目录)将用作帐户数据库,这个数据库中存储着用户帐户和他们的拨入属性。

  • 远程访问策略

    在运行路由和远程访问或IAS的远程访问服务器上,远程访问策略提供身份验证和连接约束,用于配置远程访问连接。

网络访问隔离控制的组件

下图显示了使用RADIUS作为身份验证提供程序时网络访问隔离控制的Windows远程访问组件。

cg020302.gif

这个配置包含以下组件:

  • 支持隔离(Quarantine-compatible)的远程访问客户端

  • 支持隔离的远程访问服务器

  • 支持隔离的RADIUS服务器(可选)

  • 隔离资源

  • 帐户数据库

  • 隔离远程访问策略

支持隔离的远程访问客户端

远程访问客户端必须是运行以下操作系统之一的计算机:

  • Windows Server 2003

  • Windows XP Professional

  • Windows XP Home Edition

  • Windows 2000

  • Windows Millennium Edition

  • Windows 98 Second Edition

这些Windows版本支持CM配置文件,这些文件是使用Windows Server 2003中提供的连接管理器管理工具包(Connection Manager Administration Kit,CMAK)来创建的。CM配置文件包含以下内容:

  • 一个运行网络策略需求脚本的连接后(post-connect)操作设置。

    这个设置是在使用CMAK创建CM配置文件时配置的。

  • 一个网络策略要求脚本。

    这个脚本对远程访问客户计算机执行验证检查,以检验它是否符合网络策略。其可以是一个自定义的可执行文件,也可以只是一个简单的命令文件(也称为批处理文件)。当这个脚本成功运行,并且连接的计算机满足全部网络策略要求(根据脚本的检验结果)时,这个脚本将使用适当的参数来运行一个通知组件(一个可执行文件),并随意从一个隔离资源复制这个脚本的最新版本。

    如果这个脚本未成功运行,它应该将远程访问用户指引到某个隔离资源,比如一个内部Web页,该页面描述如何安装遵守网络策略所必需的组件。

  • 通知组件

    通知组件向支持隔离的远程访问服务器发送一条消息来指示这个脚本已成功执行。您可以使用自己的通知组件,或者使用Rqc.exe,这是Windows Server 2003资源包所提供的。

在安装这些组件之后,远程访问客户计算机就使用CM配置文件来执行它自己的网络策略要求检查,并作为连接设置的一部分向远程访问服务器指示检查过程的成功情况。

**注意:**由于隔离网络访问控制在获得正常远程访问方面引入了延时,紧跟在连接完成之后运行的应用程序可能会遇到问题。最小化延迟的途径之一就是将您的脚本分离到两个脚本中: 一个脚本作为连接前的操作来运行,另一个脚本作为连接后的操作来运行。

支持隔离的远程访问服务器

支持隔离的远程访问服务器需要以下条件:

  • 一台运行Windows Server 2003家族成员之一和路由和远程访问服务的计算机,支持使用一个侦听器组件和MS-Quarantine-IPFilter(MS隔离IP过滤器)以及MS-Quarantine-Session-Timeout(MS隔离会话超时)RADIUS开发商支持的属性(VSA)来指定隔离设置。

  • 侦听器组件

    这个组件侦听来自支持隔离的远程访问客户端的消息,那些客户端通过该消息指出它们的脚本已经成功地运行。您可以创建自己的自定义侦听器组件(与您自己的自定义通知组件匹配),或者使用Windows Server 2003资源包中的远程访问隔离代理服务(Rqs.exe)。

在安装这些组件之后,远程访问服务器计算机就使用隔离模式来连接远程访问客户端,并侦听通知消息,同时指示这些客户端已满足网络策略要求,从而可以退出隔离模式了。

路由和远程访问可以使用Windows或RADIUS身份验证提供程序来配置。如果路由和远程访问使用Windows身份验证提供程序进行配置,那么支持隔离的RADIUS服务器就不是必需的,并且您可以为存储在远程访问服务器上的远程访问策略配置隔离属性。图2所示的配置假设路由和远程访问使用RADIUS身份验证提供程序进行配置。

支持隔离的RADIUS服务器(可选)

如果远程访问服务器上的路由和远程访问使用RADIUS身份验证提供者进行配置,那么支持隔离的RADIUS服务器需要计算机运行Windows Server 2003和IAS,这样该计算机就支持使用MS-Quarantine-IPFilter(MS隔离IP过滤器)和MS-Quarantine-Session-Timeout(MS隔离会话超时)RADIUS开发商支持的属性(VSA)来指定支持隔离的远程访问服务器的隔离设置。

隔离资源

隔离资源由如下服务器组成:即隔离模式下的远程访问客户端能够访问它们以执行名称解析(DNS服务器),获得最新版本的脚本(允许匿名访问的文件服务器)或使得远程访问客户端遵守网络策略所需要的指令和组件(允许匿名访问的Web服务器)。

帐户数据库

基于Windows 2000或Windows Server 2003的网络使用Active Directory作为帐户数据库来存储用户帐户和他们的拨入属性。您还可以使用Windows NT 4.0域。

隔离远程访问策略

您不需要使用远程访问连接所必需的条件来配置一个隔离远程访问策略,而是只需使用能够指定MS-Quarantine-IPFilter或MS-Quarantine-Session-Timeout属性的配置文件(在配置文件的**“高级”**选项卡上配置)。

您可以使用MS-Quarantine-IPFilter属性来配置输入和输出数据包筛选器,以便仅允许以下流量:

  • 由通知组件生成的流量。如果您在使用Rqc.exe及其默认的端口,那么应该配置单个输入包过滤器来仅允许来自TCP端口7250和发送到TCP端口7250的流量。

  • 访问隔离资源所需要的流量。这包括允许远程访问客户端访问名称解析服务器(比如域名系统[Domain Name System,DNS])、文件共享或Web站点的过滤器。

为MS-Quarantine-IPFilter属性配置的包过滤器隔离远程访问客户端的流量,直至客户端上的通知组件指出该计算机符合网络策略。

您可以使用MS-Quarantine-Session-Timeout属性来指定远程访问服务器在终止连接之前,必须等待接收“该脚本已成功运行”通知的时间。

网络访问隔离控制的运作原理

以下过程描述了当使用上图中的组件集时,网络访问隔离控制是如何运作的:

  1. 支持隔离的远程访问客户端上的用户使用已安装的CM配置文件来连接支持隔离的远程访问服务器。

  2. 远程访问计算机将它的身份验证凭证传递给远程访问服务器。

  3. 路由和远程访问服务向IAS服务器发送一条RADIUS Access-Request消息。

  4. IAS服务器验证远程访问客户端的身份验证凭证,(假设该凭证有效)并检查它的远程访问策略。该连接尝试与隔离策略匹配。

  5. 该连接的隔离属性被接受。IAS服务器发送一条包含MS-Quarantine-IPFilter和MS-Quarantine-Session-Timeout属性的RADIUS Access-Accept消息。

  6. 远程访问客户端和远程访问服务器完成远程访问连接,其中包括包含一个IP地址和其他配置设置。

  7. 路由和远程访问服务配置该连接上的MS-Quarantine-IPFilter和MS-Quarantine-Session-Timeout设置。此时,远程访问客户端只能成功地发送与隔离过滤器相匹配的流量,并最多拥有MS-Quarantine-Session-Timeout中指定的秒数来通知远程访问服务器关于脚本已成功运行的情况。

  8. CM配置文件将网络策略遵守脚本作为连接后的操作来运行。

  9. 管理员脚本运行并检验远程访问计算机的配置是否符合网络策略需求。 如果该脚本运行成功,它将运行Rqc.exe,后者将向远程访问服务器发送一条通知,指出脚本已成功运行。

  10. 该通知将由侦听器组件(Rqs.exe)接收。该通知流量被允许是因为它匹配MS-Quarantine-IPFilter属性所指定的流量。

  11. 侦听器组件通知路由和远程访问服务,后者将从该连接中删除MS-Quarantine-IPFilter和MS-Quarantine-Session-Timeout设置,并配置常规的连接约束。此时,该远程访问客户端拥有对intranet的正常访问。

**注意:**如果远程访问计算机发送的通知没有受到保护,它可能遭恶意用户的攻击。为防止恶意用户确定通知消息,可同时对拨号连接和VPN连接采取加密。

如何部署网络访问隔离控制

为了给您的远程访问解决方案部署网络访问隔离控制,请完成以下步骤:

  1. 创建一个通知组件来向远程访问服务器验证远程访问客户计算机符合网络策略需求。如果不想创建自己的通知组件,您可以使用Rqc.exe。

  2. 创建一个脚本来验证客户机配置。如果该脚本的所有验证检查都成功了,它将使用适当的参数来运行通知组件。

  3. 创建侦听器组件,从通知组件接收网络策略符合情况通知。 如果不想创建侦听器组件,您可以使用Rqs.exe。Rqs.exe创建的通知是使用加密密钥来签过名的。如果使用Rqs.exe,您必须决定用于通知的加密密钥。Rqs.exe可以配置为从旧的或更新的加密密钥接受通知。

  4. 使用Windows Server 2003中的CMAK来创建一个新的CM配置文件。配置连接后操作来使用必需的参数运行脚本。将脚本和通知组件包括在配置文件中。

  5. 分发该CM配置文件以便安装在远程访问客户计算机上。

  6. 当在远程访问客户计算机上安装CM配置文件之后,在您的路由和远程访问或IAS服务器上配置一个隔离远程访问策略。

**注意:**没有安装新的CM配置文件的远程访问客户机不能够获得正常的远程访问连接。它们将被置于隔离模式,并且因为它们不运行脚本或发送通知,因而一直被置于隔离模式,直至隔离定时器过期,此时它们将自动断开连接。

更多信息

欲了解关于Windows远程访问的更多信息,请参考以下资源:

关于本专栏内容的任何反馈,请致信Microsoft TechNet。请注意我们无法确保回复您的来信。

欲了解关于The Cable Guy的所有专栏的列表和更多信息,请单击此处