Logo: TechTrax...brought to you by MouseTrax Computing Solutions

You Know You're a Real Admin When... Part IV

by Greg Chapman, MVP (retired)
Skill rating level 6.

How many of you get appropriate notice from managers and HR when a new employee arrives or terminates service? That many? You're lucky. The best of companies are realizing they have a lot at stake in the period of time between employee termination and the disabling of that employee's accounts and system access.

Rudely, they're spending more on researching how to quickly sever the employee from the company data than they are in figuring out how to get that employee up and running on the first day. It's sad but necessary, too. Consider how long it takes to get data, to tamper with it or to divulge it to competitors. It doesn't take long.

But if you're like most of us, there may be a significant period between employee termination and the notification you receive. In some cases, IT staff may never be notified. Yet, if those machine and user accounts are left active, the chance of exploitation increases dramatically. You're not going to meet your data security obligation in this environment and you do need to communicate constantly to HR the importance of being on the notification list. Until then, you've still the responsibility of managing the network with the best knowledge you can gather about employee and system account status.

There are some things unique about computer accounts in an NT domain. Amongst those things is the default password policy on the computer accounts. Did you know that NT Domain member computers will contact the domain and negotiate a password change every 7 days? It's a handy thing to know. That knowledge can be used to identify machine accounts that should be removed from the domain.

Again, scripting is your friend for this job. Knowledge of WSH and ADSI are getting more and more critical as you try to keep your systems in shape.

This month, we'll keep a promise we made in the last installment. We'll identify every machine that hasn't changed its password in the last 90 days and make the assumption that this machine is no longer in service (and this IS an assumption unless you can prove the system is no longer around). Further, we'll work on deleting the domain accounts for those systems with such aged credentials.

Dim strCurPath
Dim strScriptPath
Dim strScriptName
Dim strDomainName
Dim objFSO
Dim f
Dim LogFile

Const ForReading = 1, ForWriting = 2, ForAppending = 8

On Error Resume Next

strScriptPath=Wscript.ScriptFullName
strScriptName=Wscript.ScriptName
strCurPath= Left(strScriptPath, _
Len(strScriptPath)-Len(strScriptName))

If Right(strCurPath,1)<>"\" Then strCurPath=strCurPath & "\"

LogFile=strCurPath & _
"ExpiredDomainComputerAccounts.log"

strDomainName="YourDomainHere"

Set objFSO = CreateObject("scripting.FileSystemObject")
set f = objFSO.OpenTextFile(LogFile, ForAppending, True, -2)

LogAction "Report Generated: " & Now() & vbNewLine

CompAccounts(strDomainName)

LogAction "------------------------------------------------"

f.close

'----------------------------------------------------------
Sub CompAccounts(strDomain)

Dim Domain
Dim Member
Dim strDays
Dim Computer

On Error Resume Next

Set Domain=GetObject("WinNT://" & strDomain)

Domain.Filter=Array("Computer")

For Each Member in Domain
           Set Computer=GetObject("WinNT://" & _
           strDomain & "/" & Member.Name & _
           "$,user")
           'PasswordAge returned in seconds since changed
           'setting for 90 days. These are the only one's we'll log
           If Computer.Get("PasswordAge") > 7776000 Then
                     strDays=FormatNumber(Computer.Get("PasswordAge")/86400,,2)
                     LogAction Member.Name & ", " & strDays & _
                     " days"
                     Call strDomain.Delete("Computer", Member)
                     LogAction "Deleted account for " & Member.Name
           End If
Next

End Sub

'------------------------------------------------------------------------
Sub LogAction(strEntry)

f.WriteLine strEntry

End Sub


Note that you may merely want to get a list of those old accounts before deleting them. In that eventuality, comment out the "Call strDomain.Delete" line in the CompAccounts subroutine and the LogAction line that follows it.

You'll notice that the CompAccounts routine also has an unusual bit of math in it. Well, the math is normal but the numbers are pretty wild. The values for the password age are in seconds since the change. 90 days = 60 seconds/minute * 60 minutes/hour * 24 hours/day * 90 days=7776000 seconds.

To run the script, copy/paste the code to a text file and call it OldCompAccts.vbs. Modify the strDomainName variable with the name of your NT Domain and call it from the command line as such:

Cscript <drive>:\<path>\oldcompaccts.vbs

The script above will create a log file in the same directory with the script called "ExpiredDomainComputerAccounts.log". In the file will be listed every machine account which hasn't changed its password on the domain in the specified last 90 days. Left unmodified, the script will also delete the machine's account from the domain.

So far, we've treated the basics of administering Windows networks based primarily on the characteristics of the domain's computers. It makes sense that we would because these are the sorts of things administrators are expected to do but aren't expected to take a great deal of time to perform. Since you'll be doing this sort of thing over and over again and none of us are paid to continue doing our jobs in inefficient ways, it should be obvious that automating these jobs is a natural requirement.

As you examine the logs produced by our scripts, you may also be starting to understand that we have been doing exactly the things that the Unix folks have wished we would for so long. We're managing our network (although just scratching the surface), we're adding 'depth' to the native shell, we're doing these things remotely and we're producing an audit trail, logs of our actions and attempted actions to describe the state of the domain at any given time. And by following those practices, we're addressing basic security concerns by learning and controlling exactly what systems have access to domain resources.

Oh, but there's more…to come later.

 

 

Go up to the top of this page.
This site powered by the Logical Web Publisher™: Content management by Logical Expressions, Inc.