让AD域用户帐户只能登录管理员指定的客户端计算机安全
咱们都知道,在域AD环境下域用户帐户默认是能够登录到除DC外的任意计算机客户端的,这就让一些别有用心的员工找到漏洞了,这样他就能够登录别人的计算机去得到他想要的资料了,这样对一个企业来讲是很是不安全的,那么应该如何解决这个问题呢?OK,入正题。
这里介绍两种方法,不过仍是用第一种方法比较灵活,第二种方法比较复杂并且也带有漏洞。
第一个办法:
1、在域账号的属性中设置。
打开该账号的属性,账户页面,登陆到,以下图所示:
而后在登陆工做站选择“下列计算机”;将要登陆到的计算机名字填写,而后肯定,便可。
3.测试,当使用该账号没有登陆到指定的计算机的时候,系统会提示错误,以下图所示:
到此设置完毕。
第二个办法:
1、准备两个脚本。一个用于用户登入时执行的login.vbs,另外一个是用于注销时使用的logoff.vbs
2、为配合脚本,咱们须要在DC上建立一个共享文件夹,让全部用户拥有更改的权限!
3、创建一条组策略
A、准备脚本(我会在本文最后提供脚本给你们分享)
B、建立共享文件夹Userinfo(为避免用户错误,我尽可能详尽)
建立共享及并给用户以变动权限
开始将咱们的login.vbs这个脚本加入到启动指令中。
在这一切设置完毕以后,为了加速就用的时候,咱们在GPMC管理工具上将这个策略设置成强制。并重启咱们的客户端计算机,固然你也能够先执行gpupdate /force 这个命令来强行的刷新组策略!
将这个策略设置成强制。
原理:
两个脚本是用来记录用户所登入与登出的计算机时间,在一个用户登入后,会当即写下当前的记录,若是用户使用同一个帐户在另外一个计算机上登陆时就会报警。如今咱们来看看用户登录后,在共享资料夹里产生的文件!它的文件命名方式以用户的登录名为主!
下面这个文件是MIS-04登入计算机后产生的,咱们能够清楚的看到MIS-04这个用户所登入的计算机及时间!经过这种方式,若是MIS-04再登入其余的电脑的话,VBS会检查这个档里面的信息,当他发现MIS-04已经登入一台电脑了,而且没有注销。它就会自动退出!
login.vbs代码:
Dim oNet, sUser, sComputer, ServerLog
ServerLog = "\\192.168.1.1\Userinfo\ "
Set oNet = CreateObject("Wscript.Network")
sUser = oNet.UserName
sComputer = oNet.ComputerName
Set oNet = Nothing
Dim fso, f1, WshShell, argu, alllog, lastlog
Dim FileName
FileName=ServerLog & sUser & ".txt"
Set fso = CreateObject("Scripting.FileSystemObject")
If Not (fso.FileExists(FileName)) Then
Set f1 = fso.CreateTextFile(FileName,True)
f1.WriteLine sUser & " " & sComputer
f1.Close
Set WshShell = Wscript.CreateObject("Wscript.Shell")
argu = FileName & "/T/E/G" & sUser & ":f /R Everyone"
WshShell.run("cacls " & argu)
Set WshShell = Nothing
End If
Set f = fso.GetFile(Filename)
intSizeB = f.Size
if intsizeB=0 then
alllog = ""
lastlog = ""
end if
if intsizeB>0 then
set f1=fso.OpenTextFile(Filename,1,True)
alllog = f1.readall
f1.close
set f1=fso.OpenTextFile(Filename,1,True)
lastlog = f1.readline
f1.close
end if
If Left(lastlog, 5) = "logon" Then
If InStr(lastlog,sComputer) < 1 Then
Set f1 = fso.OpenTextFile(FileName, 2, True)
f1.WriteLine (lastlog & Chr(13) & Chr(10) & "FailLogon:" & Now() & " " & sUser & " at " & scomputer & Chr(13) & Chr(10) & alllog)
f1.Close
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Dim i,OldComputer
i=InStr(lastlog,"at")
OldComputer=Right(lastlog,Len(lastlog)-i-2)
WshShell.popup "对不起:此帐号已经在 " & OldComputer & " 上登入使用!出现此提示的可能状况以下:1、您在其余电脑上登录的账户未及时注销。2、您上次非法关闭计算机或者意外停电。3、若是您确认未发生上述2种状况,那么可能您的账户被盗。对于2、3状况请及时上报IT支持,谢谢!!!" , 30
Set WshShell = Nothing
Dim os, retcode
For Each os In GetObject("Winmgmts:{impersonationLevel=impersonate,(shutdown,remoteshutdown)}!//" + sComputer).InstancesOf("Win32_OperatingSystem")
retcode = os.Win32ShutDown(4, 0)
Next
Wscript.quit
Else
Set f1 = fso.OpenTextFile(FileName, 2, True)
f1.WriteLine ("logon: " & Now() & " " & sUser & " at " & sComputer & Chr(13) & Chr(10) & alllog)
f1.Close
End If
Else
Set f1 = fso.OpenTextFile(FileName, 2, True)
f1.WriteLine ("logon: " & Now() & " " & sUser & " at " & sComputer & Chr(13) & Chr(10) & alllog)
f1.Close
End If
Set f1 = Nothing
Set fso = Nothing
Wscript.quit
logoff.vbs代码
dim oNet,sUser,sComputer,ServerLog
ServerLog = "\\192.168.1.1\Userinfo\ "
set oNet=createobject("Wscript.Network")
sUser=oNet.UserName
sComputer=oNet.ComputerName
set oNet=nothing
dim fso,f1,alllog,lastlog
Dim FileName
FileName=ServerLog & sUser & ".txt"
set fso=createobject("Scripting.filesystemobject")
If Not (fso.FileExists(FileName)) Then
Set f1 = fso.CreateTextFile(FileName,True)
f1.WriteLine sUser & " " & sComputer
f1.Close
Set WshShell = Wscript.CreateObject("Wscript.Shell")
argu = FileName & "/T/E/G" & sUser & ":f /R Everyone"
WshShell.run("cacls " & argu)
Set WshShell = Nothing
End If
Set f = fso.GetFile(Filename)
intSizeB = f.Size
if intsizeB=0 then
alllog = ""
lastlog = ""
end if
if intsizeB>0 then
set f1=fso.OpenTextFile(Filename,1,True)
alllog = f1.readall
f1.close
set f1=fso.OpenTextFile(Filename,1,True)
lastlog = f1.readline
f1.close
end if
if left(lastlog,5)="logon" Then
If InStr(lastlog,sComputer) > 0 Then
Set f1=fso.opentextfile(FileName,2,true)
f1.writeline("logoff: " & Now() & " " & suser & " at " & scomputer &
Chr(13) & chr(10) & alllog)
f1.close
End If
end if
set f1=nothing
set fso=nothing
wscript.quitide