2006年9月20日 10:37 星期三 晴


直到现在的Windows Server 2003为止,Microsoft都没有在系统中内置限制用户并发登录的机制。虽然用户的并发登录从来就不是一件生死攸关的事情,但很多在Novell的世界中学会网络的管理员还是会怀念NDS(Novell Directory Service,也即Novell目录服务,与Active Directory类似,旨在提供一种单点登录,统一资源管理的手段)。因为唯一需要做的只是将某个用户对象的一个“Check Box”设为“Enable”或是“Disable”。

当然,Microsoft并不是没有倾听用户的心声,在Windows 2000 Resource Kit中就提供了一个命名为CConnect的工具来实现对用户并发登录的跟踪和限制——但是还是有些麻烦,你需要设立一个SQL服务器的数据库并且配置好。并且,更糟的是CConnect到SQL数据库的所有信息是以明文方式被保存在注册表中,这显然是一件令人提心吊胆的事情。最后,CConnect还无法实现对终端用户的限制。

为此Microsoft发布了一个名为LimitLogin的软件包( url.gif http://download.microsoft.com/download/f/d/0/fd05def7-68a1-4f71-8546-25c359cc0842/limitlogin.exe),再次增强了在Active Directory中限制用户并发登录的能力。虽然,在一个分布环境限制当前登陆是相当困难的。而且坦率的说,LimitLogin也不是这方面的全能解决方案,但仍然给广大的Windows网络的管理员们带来一丝喜悦。
LimitLogin提供了以下的具体功能:
1.限制域内各用户的并发登录数量,包括终端服务器会话。
2.按照规则(如一个特殊客户端或域控制器的所有登陆会话,或所有计算机中某个正在登陆的用户),显示用户的登陆信息。
3.与Active Directory控制台整合,方便管理和设置。
4.在Active Directory控制台中直接注销当前用户会话。
5.依照CSV (Excel)或XML格式生成报表。

LimitLogin架构

LimitLogin由三个主要组件构成:一个用于处理登录的Web Service,一个用于记录登录信息的活动目录的应用程序分区,以及一组登录、注销时提交登录信息的vbs脚本。

当用户登录到域时,LimitLogin的登录脚本(llogin.vbs)会将搜集到的数据(包括客户端机器名,IP地址,Session ID,以及提供验证服务的域控制器名称)通过SOAP提交给Web Service。该Web Service将使用用户信息查找活动目录的应用程序分区以判断该用户是否有一个并发登录的限制。

如果没有,则用户登录完成。否则,Web Service会将应用程序分区中对应的计数器值与预先设定的并发登录阀值比较,如果该计数器值小于阀值,则该计数器值加1,并允许用户登录。如果该计数器值等于阀值,则Web Service将强制注销当前用户登录。

当用户注销时,LimitLogin的注销脚本(llogoff.vbs)同样会将搜集到的数据通过SOAP提交给Web Service。该Web Service将使用用户信息修改活动目录的应用程序分区中对应的计数器值(减1)。


实现LimitLogin

LimitLogin的三个组件分别对应三个安装文件,分别是安装LimitLogin Web Service 的LimitLoginIISSetup.msi,安装LimitLogin AD Application Partition的LimitLoginADSetup.msi,以及安装LimitLogin客户端的LimitLoginClientSetup.msi。

安装LimitLoginIISSetup.msi,首先必须安装IIS 6.0,并安装ASP.NET插件。

运行LimitLoginIISSetup.msi后,只需要指定虚拟文件夹的路径和访问的端口号,即可安装完成。

如果管理员希望部署SSL加密,则必须在运行LimitLoginADSetup.msi之前配置好。

然后安装LimitLoginADSetup.msi,LimitLoginADSetup.msi必须安装在Windows Server 2003英文版的域控制器上。
安装程序拷贝完所有文件后,会依次执行以下三个步骤:
1.Prepare your Active Directory Forest for LimitLogin,用来扩展Schema。
2.Prepare your Active Directory Domain for LimitLogin,创建LimitLogin AD Application Partition。
3.Install LimitLogin AD MMC add-in tools on this machine

扩展Schema前会提示有关权限,

之后会显示扩展Schema的结果,

之后指定存放LimitLogin脚本的共享文件夹,提供LimitLogin Web Service的IIS服务器名和Web Service名称,并确认该Web Service是否使用了SSL加密,

提示选择创建LimitLogin AD Application Partition的域控制器,

以及创建过程所使用的用户帐号,

提示创建成功后,出现说明,

最后按照提示,将C:\Program files\limitlogin\scripts的文件复制到已创建的共享\\w2003en\limitlogin中,并按照需要为对应的对象(比如域,或者包含某组用户的OU)配置登录和注销脚本。

最后在所有客户端部署LimitLoginClientSetup.msi。LimitLoginClientSetup.msi要求系统是Windows 2000 Service Pack 4,Windows XP Service Pack 1,Windows Server 2003或更高版本,并且需要 . NET Framework 1.1的支持。

LimitLogin的使用非常简单,打开Active Directory Users and Computers控制台,右键某个计算机对象或用户对象(或者是包含计算机对象或用户对象的某个容器)选择“LimitLogin Tasks”即可。

当选择某个用户对象运行LimitLogin Tasks时,可看到当前该用户的并发登录的明细,并可使用“Delete/Logoff Selected Session(s)”命令强制注销特定的登录进程。

点击“Configure”链接,即可设置该用户的并发登录阀值。

当选择某个计算机对象运行LimitLogin Tasks时,可看到当前该计算机的登录明细,并可使用“Delete/Logoff Selected Session(s)”命令强制注销特定的登录进程。

点击“Click Here to Set Logoff Options”链接,即可进一步设置该计算机的强制注销行为。

与Microsoft的大多数工具类似,LimitLogin也提供了一个命令行接口llogincmd.exe,可进行一些简单的管理任务。

----------------------------
--------------------------