如何利用限制AD用户登陆
创始人
2024-03-21 18:01:31
0

大家都知道,Windows活动目录中,默认情况下,域用户可以在任意域计算机上登陆。哪么如何阻止这种现象发生呢?

常见的方法有在ADUC中设置用户属性中的登陆到,指定他能够登陆到的计算机。还有就是在客户端组策略的安全设置|本地策略|用户权限指派|“在本地登陆”设置允许在该计算机上登陆的用户和组。还有就是并发登陆,这里我们不讨论这个。微软有一个limitlogon工具,没怎么用过。至少我下下来我不知道从哪里下手。似乎这些方法都有一个点,需要手动一个一个的去设置用户的登陆属性,这对于大型环境,会打来很大的工作量。为此,我提出下面这个方法,主要思想创建一条域组策略的是将在该计算机上登陆最多的用户添加到“在本地登陆”中去。但是不同的机器又不同的用户,如何解决这个问题呢。我的处理方法是在每个客户端添加一个本地用户组,在策略“在本地登陆”中,将一个组添进去,将登陆客户端机器最多的用户添加到这个组中去。创建本地组和添加用户到组是可以采用脚本来实现的,从而解决了逐个设置的麻烦。

本人脚本不是很熟,很多是参照其他的脚本写的,也许有的地方不是很***。

一、创建本地组

有两种方式,一种BAT脚本,一种VBS脚本,将脚本作为启动脚本。

    
1、BAT方式
net localgroup LogonUser /add /comment:允许本地登组
 
2、VBS
strComputer = "."
Set objComputer = GetObject("WinNT://" & strComputer & ",computer")
Set objGroup = objComputer.Create("group", "LogonUser")
objGroup.SetInfo


二、找出在客户端登陆最多的用户。

谁的机器,一般情况下当然是谁使用谁登陆的最多。哪么如何找出这个用户呢?登陆登陆,对了,审核。哪么我们得在域中的策略中将登陆成功审核开启。我们只需要检索谁登陆成功审核日志最多。首先***个要解决的问题就是,我如何获得在这台机器上登陆过得域账户?

每一个域账户登陆后,都会在注册表SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList写入一个记录,下面的子项是他们的SID。哪么我只需要读出这些SID就可以了。在反过来通过SID查处用户。

   
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
                strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
If left(subkey,40) = "S-1-5-21-3417139075-3398302879-647143828" Then
'比较SID,只统计域帐户,上面这一行是域用户SID的前面一段,应该属于域ID。
 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_UserAccount Where LocalAccount='False' And SID= '" & subkey & "'")
 
For Each objItem in colItems
LogonTimes=CountLogon("cotoso\\" & objitem.Name) 
'函数CountLogon,统计事件日志\安全 中成功审核的事件次数


     
Function CountLogon(Username)
strComputer = "."
Set objWMIService = GetObject("winmgmts:{(Security)}\\" & _ strComputer & "\root\cimv2")
Set colEvents = objWMIService.ExecQuery
      _ ("SELECT * FROM Win32_NTLogEvent WHERE LogFile = 'Security' AND " & _
         "EventCode = 528 AND User ='" & username & "'")  ‘统计事件528的用户
CountLogon=colEvents.Count end Function


 

【编辑推荐】

  1. IT领域25大鲜为人知秘密曝光:Windows非原名
  2. 007.确保windows安全性
  3. IT领域25大鲜为人知秘密曝光:Windows非原名

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...