点击这里:Windows管理员的 3大心愿的一限制Windows用户的并发登录



  可能就是这篇文章题目吸引了你也可能你曾经也有过同样心愿—管理并限制Windows网络中用户登录限制而且你曾经为此筹莫展渴望解决Windows网络中用户任意登录所导致资源管理用户管理安全审核等系列问题我在这里(包括下文有时也会称为并发登录)所提到任意登录是指同时间个用户账号在区别计算机上同时登录现象或者说是在台计算机登录在完成工作后并未注册但又在另台计算机上登录现象并不是指任何时间任何地点在台计算机上登录现象如果你曾经管理过Novell网络后来转换到Windows网络你会Windows没有提供这种机制而对那些不守规矩用户行为感到无可奈何作为名Novell管理员非常清楚限制用户账号并发登录仅仅是NDS(Novell Directory ServiceNovell目录服务和Windows 2000中Active Directory旨在提供种单点登录资源管理手段都是基于X.500标准设计但NDS某些方面可能强于Windows 2000Active Directory并发登录限制就是个典型)对象个“Check Box”要做是Enable或者是Disable

  用户账号在同时间内并发登录所产生最大问题还是和内部或者外部网络安全相关例如你是个网络管理员你为自己创建了个登录账号平时管理工作需要你给这个账号添加了足够权限而且你坚信:我网络是安全同事也是相互尊重不会利用别人账号作任何事情为了自己方便记忆(或者说登录时输入简单)你设置了个很容易记忆(比如123456或者和你用户名相同)但就是Windows网络没有并发登录限制机制那些对网络特权账户充满好奇心(他知道有特权可以做很多事情)或者平时对你稍有不满用户试图利用你账号做什么事情(你设置密码简单容易被猜到而且你还相信他们不会做什么)你都无法知道这尤如恶梦那怕你设置了安全审核但审核结果还是你自己登录账号这显然是Windows没有并发登录限制所导致问题

  直到现在Windows 2000为止Microsoft都没有在系统中内置限制用户并发登录机制(如果你已经预览过Windows Server 2003你会发现它也没有这种机制)当然Microsoft并不是没有倾听用户心声因此Microsoft在他Windows 2000 Resource Kit中提供了来实现这种功能试图来掩盖普天的下众多Windows管理员谴责声显然Microsoft在这方面已经向前迈进了大步通过本文你会了解到到目前为止Microsoft究竟提供了个如何样解决方案这个解决方案是否已经呼百应实现了Window管理员多年来夙愿当然包括我首先我们来回顾下在没有Microsoft自己解决方案的前我们Windows管理员自己是如何尝试着解决这个问题

  、脚本

  作为名Windows管理员想必你肯定知道脚本在日常管理工作中重要性比如批量创建用户而且我们还知道利用脚本可以为用户创建登录脚本在登录脚本中你可以为用户映射网络驱动器连接打印机等等聪明Windows管理员就是利用脚本第次实现了并发登录限制让我们起看看是如何实现

  使用Kixtart脚本处理器制作如下个脚本Kixtart是个可以运行在Windows各个版本上增强脚本处理引擎如果你要测试文章中脚本你需要安装Kixtart有关Kixtart详细信息可以访问http://kixtart.org/站点和Kixtart配合使用部分请到对应操作系统安装盘中相应support目录或者Resource中查找

  注意脚本Onlyonce.txt是保存在Netlogon共享目录中般包括些警告和介绍说明信息可以任意定义

  这个脚本看起来有点复杂但是它工作得很好除了本身管理员还需要做 2项工作首先为每个用户主目录(Home Directory)创建个隐藏共享指定只有这个用户可以访问并且仅允许个用户访问(这个很重要)其次在用户主目录中创建个%username%.txt文件并且指定仅对这个用户具有读取权限

  从上面简单解释中大家应该已经猜到脚本实现原理非常简单:限制主目录仅允许个用户访问如果同个用户在没有注销前提下尝试登录映射网络驱动器将失败系统显示Onlyonce.txt中内容然后shutdown防止用户登录

  我想精明读者已经发现NTName/NTName2正常运行时会受到威胁—主目录服务器关闭时用户将可以任何登录你再也无法阻止他们这种行为个缺陷就是当另个用户故意或者偶然地连接到其他用户主目录在他不离开(尽管拒绝他访问但已经连接)情况下主目录所有者将不能登录(已经设置同时仅限个用户连接)

   2、个更简单手段

  Windows管理员们在不断地寻找更好解决方案所有努力并没有白白浪费终于有了更好选择NTName—个Windows NT网络中限制用户账号并发登录实用我们可能不记得是由哪位Windows管理员编写但我们肯定可以发现这个比前面脚本有很大进步和NTName配套使用是Logout个强制注销让我们粗略地看下NTName实现

  当你登录到NT网络时计算机会添加个由你用户名组成NetBIOS名字名字是唯因此同时间内它只能存在于台计算机上在计算机中Byte 16值等于0x03这个名字用来在网络中广播信息比如假设你已经要求打印作业完成后显示消息Windows网络就根据你登录时产生NetBIOS名字决定你当前登录计算机并显示已经完成消息(你可以测试假如你并发登录20个用户只会有台计算机接到这个消息)NTName就是根据这个原理来实现运行时它把用户名作为个参数处理检查这个名字是否属于当前计算机所有如果没有任何输出就返回ErrorLevel 0如果输入了名字所属系统名称返回ErrorLevel 1这往往意味着指定用户名已经在另台计算机中登录当然你可以要求另台计算机注销为此你可以在用户登录脚本中添加以下几行:

NTName %USERNAME% >%TEMP%\LOGONEDPC.TXT ;重定向到logonedpc.txt文件 
If not errorlevel 1 goto Logon_OK 
For /f %%f in(‘TYPE %TEMP%\LOGONEDPC.TXT’) do @echo 已经登录到%%f %0..\logout.exe 
:Logon_OK 


  当然你还可以使用前面提到Kixtart修饰下这个但有点要注意如果允许用户看提示信息时间过长意味着用户有足够时间来终止logout.exe执行

  但是这个NTName存在明显不足就是在多域情况下它会影响另个域中同名账号登录比如Sales域中John没有注销Markets域中John将不能登录然而我们还是找到了解决办法NTName2支持自定义NetBIOS名字如前所述这个名字是你登录时是由系统自动添加但NTName2允许你自己指定个值默认值为Byte 16=oxCE由于需要根据这个值来确定名字冲突这样执行速度稍微会有点慢个美中不足自定义Byte 16值可能和其他NetBIOS应用发生冲突

   3、Microsoft

  事实上很多Windows管理员都希望Microsoft提供个自己解决方案最终Microsoft在Windows 2000 Server Resource Kit中提供了个命名为CConnect注意CConnect虽然在Windows 2000中才出现但它支持Windows NT但对系统方面有些特殊需求主要包括必须是NT SP4或者更高Windows Script HostWBEMMDAC 2.0以上版本Windows 2000本身已经满足这些条件这也是目前唯由Microsoft自己实现个解决方案主要提供了这些功能:

  ü 跟踪所有用户已经登录计算机

  ü 允许把并发连接限制到每用户或者每组方式

  ü 所有信息被保存地SQL数据库中

  ü 跟踪用户最后登录计算机

  ü 监视用户已经登录到哪台服务器

  以典型客户/服务器方式运行因此它要求在客户端正确地配置组策略并安装客户端软件Software如图1所示这些组策略选项由CConnect软件Software包中CConnect.adm文件提供并不是由Windows 2000自带因此你必须把这个文件添加到相应组策略中打开活动目录用户和计算机管理单元选择适当组策略(只有这个策略受到作用用户才会生效所以般我们选择Default Do Policy)展开用户配置右击管理员模板*属性*添加从相应文件夹中找到CConnect.adm文件最后从查看菜单中清除“仅显示策略”图1中看到是Windows 2000中组策略选项配置界面如果你使用是WinNT 4.0应该使用Poledit.exe打开这个模板每位管理员可以根据实际要求来配置这些选项决定启用哪些功能策略中提供调试和日志记录功能这对高要求环境提供了进支持当然你可能需要做进配置如指定日志记录位置策略中“Track Last User”是非常有意思有时候计算机可能意外停机(如停电)导致用户没有及时注销此时用户登录信息仍然保留在数据库中此时如果用户试图登录到其他计算机登录将被拒绝策略认为你仍然登录在另台计算机上此时你必须从数据库中搜索相关信息并予以删除后方可登录但如果你是登录到同台计算机(来电后重新登录)数据库信息会被自动更新并不需要额外工作



  图1:Con-Connect Limiter提供组策略选项

  对于服务器端你还需要正确配置SQL服务器为CConnect指定个具有和sa平等权限登录账号这些账号登录信息被保存在每台计算机下列位置:

  HKEY_CURRENT_USER\Software\Microsoft\CConnect\SQLSERVER

  HKEY_CURRENT_USER\Software\Microsoft\CConnect\SQLUSER

  HKEY_CURRENT_USER\Software\Microsoft\CConnect\SQLPASSWORD

  Windows 2000客户计算机可以从VB Script中获益CConnect软件Software包中提供了CConnect.vbs(登录)和CClogoff.vbs(注销)两个脚本文件脚本可以实现简单并发登录限制和远程注销功能但如果你希望实现CConnect实现所有功能建议你安装CConnect Client

  图2显示是CConnect管理界面很容易看出可以实现什么功能在这里我不再详细地描述整个配置过程有兴趣读者可以使用随CConnect提供文档来配置总体来说还是非常简单

  但我们从上面些关键信息描述中不难看出CConnect中存在问题:安全—所有SQL连接信息以明文方式被保存在注册表中这显然是件令人提心吊胆其次对于略通注册表用户通过修改注册表就可以解除登录限制除非你在组策略中限制用户修改注册表但从解决并发登录限制角度来说CConnect从可管理性角度讲个不错选择而且最新版本( 2.0)还实现对终端用户限制支持



  图片看不清楚?请点击这里查看原图(大图)

  以上是对并发登录限制 3个方案简单比较很明显不论是Windows管理员自己还是Microsoft都在进步我们期待更完美解决方案如果你有更好方案不妨和我们共享下?

CLS 
AT (1,1) 
If @INWIN = 2     ; 表示客户计算机是Windows 95/98 
  $L = "@LSERVER" + "\" + "NETLOGON" + "\" + "WINSET.EXE" 
  shell "$L USERNAME=@USERID" 
  shell "$L HOMEDRIVE=X:" ; 你为用户映射网络驱动器 
  shell "$L HOMEPATH=@HOMEDIR" 
  shell "$L HOMESHARE=@HOMESHR" 
  shell "$L COMPUTERNAME=@WKSTA" 
  shell "$L USERDOMAIN=@DOMAIN" 
  shell "$L LOGONSERVER=@LSERVER" 
  shell "$L USERPROFILE=@HOMESHR" 
  shell "$L OS=Windows_98" 
  l "USERNAME=@USERID" 
  l "HOMEDRIVE=X:" 
  l "HOMEPATH=@HOMEDIR" 
  l "HOMESHARE=@HOMESHR" 
  l "COMPUTERNAME=@WKSTA" 
  l "USERDOMAIN=@DOMAIN" 
  l "LOGONSERVER=@LSERVER" 
  l "USERPROFILE=@HOMESHR" 
  l "OS=Windows_98" 
end 
If @WKSTA <> "@LSERVER"   ; 如果客户工作站不是这台计算机 
  time "@LSERVER"   ; 把工作站时间设置成服务器时间 
end 
use X: "@HOMESHR"   ;这是Kixtart中自带Net use命令 
$S = "@LSERVER" + "\" + "NETLOGON" + "\" + "users.txt" 
IF INGROUP("users") and EXIST("$S") 
  Display "$S" 
  AT (23,1) "按任何键继续" 
  GET $A 
end 
$B = "@LSERVER" + "\" + "NETLOGON" + "\" + "LOGBAT.BAT" 
shell "$B"   
CLS 
BIG 
$X = 1 
DO 
  COLOR w/n 
  AT ( $X,$X*2 ) "@USERID" 
  $X = $X+1 
  UNTIL $X = 6 
COLOR g+/n 
AT ( $X,$X*2 ) "@USERID" 
sleep 3 
AT (23,0) 
SMALL 
$K=”@LSERVER”+”\”+”NETLOGON”+”\”+Onlyonce.txt” 
$J=”x:\”+”@USERID”+”.txt” 
 exist(“J$”) 
goto done 
end 
CLS 
Display “$K” 
Sleep 3 
$RC=shutdown(“”,”正在关闭系统!”,0,1,0) 
:done 
cookie1 ; 需要通知Windows 98计算机当通过LMSCRIPT时脚本已经运行完毕 
exit 


Tags:  windowsxp管理员 点击这里

延伸阅读

最新评论

发表评论