如何利用限制AD用户登陆

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

大家都知道,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非原名
责任编辑:张燕妮 来源: 中国IT实验室
相关推荐

2012-02-28 09:41:20

AD病毒微软

2011-07-21 14:24:25

组策略

2009-07-16 15:14:27

WebWork用户登陆

2023-03-10 07:32:34

2011-02-25 17:07:25

2010-06-13 14:49:02

MySQL创建远程登陆

2015-01-13 09:08:54

内容安全策略CSP

2009-06-17 12:59:32

Linux

2009-02-25 09:22:03

2017-11-14 08:25:36

数据库MySQL安全登陆

2009-08-16 20:24:59

linux命令行登陆linux命令行linux命令

2009-06-16 09:38:39

Linux

2009-12-25 12:58:52

GoogleChrome OS

2010-05-12 11:43:31

MYSQL远程登陆用户

2011-07-25 10:24:00

2011-07-20 09:27:37

Scala

2017-02-06 15:13:06

谷歌Chromewindows

2010-01-26 08:56:57

Windows 7屏蔽多用户登录

2010-03-22 17:52:13

2010-04-23 17:14:59

Aix用户
点赞
收藏

51CTO技术栈公众号