Ãëàâíàÿ > WSH ñêðèïòû > Ïîèñê ãðóïïû â ACL âëîæåííûõ ïàïîê ïåðâîãî óðîâíÿ

Ïîèñê ãðóïïû â ACL âëîæåííûõ ïàïîê ïåðâîãî óðîâíÿ


3 àïðåëÿ 2012. Ðàçìåñòèë: dimon
Ñêðèïò ïðîñìàòðèâàåò ACL âëîæåíûõ ïàïîê ïåðâîãî óðîâíÿ è èùåò óêàçàííóþ ãðóïïó. Ïðè îáíàðóæåíèè óêàçàííîé ãðóïïû â ñïèñêå â ëîã çàïèñûâàåòñÿ èìÿ ïàïêè. Ëîã âûñûëàåòñÿ àäìèíó íà ìûëî.

'----------------------------------------------------------------------
'
' Copyright (c)  All rights reserved.
'
'
' AUTHOR: tudimon.com
' DATE: 03.04.2012
' NAME: acl_group_in_log_v2.vbs
'
' COMMENT:
'
' Ñêðèïò ïðîñìàòðèâàåò ACL âëîæåíûõ ïàïîê ïåðâîãî óðîâíÿ è èùåò óêàçàííóþ ãðóïïó.
' Ïðè îáíàðóæåíèè óêàçàííîé ãðóïïû â ñïèñêå â ëîã çàïèñûâàåòñÿ èìÿ ïàïêè.
'
'
'----------------------------------------------------------------------


StartPath = "C:\1"                         ' Ñòàðòîâàÿ ïàïêà, ïðîñìàòðèâàåì ACL âëîæåííûå â íåå ïàïîê ïåðâîãî óðîâíÿ
LogFilePath = "c:\log.log"                ' ëîã-ôàéë
ACLGroupName = "DOMAIN\GROUPNAME"        ' èìÿ èñêîìîé ãðóïïû

LogTXT = ""                             ' ïåðåìåííàÿ äëÿ çàïèñè â ëîã



'----------------------------------------------------------------------

    

LogTXT = LogTXT & vbNewLine & "******************** " & Now & "********************"



Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(StartPath)
Set colSubfolders = objFolder.Subfolders
For Each objSubfolder in colSubfolders


    CurrentPath = objSubfolder.Path
    
    
    Set objWsNet = CreateObject("WScript.Network")
    strComputer = objWsNet.ComputerName
    Set objWsNet = Nothing
    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objSecSettings = objWMI.Get("Win32_LogicalFileSecuritySetting.Path='" & CurrentPath & "'")
    If objSecSettings.GetSecurityDescriptor(objSD) = 0 Then
        If Not IsNull(objSD.DACL) Then
            ' åñëè ACL ïðî÷èòàíû

            For Each objACE In objSD.DACL
                
                ACL_group_read = objACE.Trustee.Domain & "\" & objACE.Trustee.Name
                
                If ACL_group_read = ACLGroupName Then
                    ' ãðóïïà îáíàðóæåíà
                    LogTXT = LogTXT & vbNewLine & CurrentPath & " îáíàðóæåíà " & ACL_group_read
                Else
                    ' ãðóïïà íå îáíàðóæåíà
                    ' LogTXT = LogTXT & vbNewLine & "ãðóïïà íå îáíàðóæåíà"
                End If
            
                
            
            Next
            
            Set objACE = Nothing
            
        Else
            LogTXT = LogTXT & vbNewLine & "Ñïèñîê óïðàâëåíèÿ äîñòóïîì (ACL) ê çàäàííîìó îáúåêòó ïóñò. " & CurrentPath
        End If
    Else
        LogTXT = LogTXT & vbNewLine & "Íå óäàëîñü ïðî÷èòàòü äåñêðèïòîð áåçîïàñíîñòè îáúåêòà. " & CurrentPath
    End If
    
Next
    
    
    Set objSD = Nothing
    Set objSecSettings = Nothing
    Set objWMI = Nothing
    
    
' Ïèøåì ëîã
Set FSO = CreateObject("Scripting.FileSystemObject")
Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True)
LogTXT = LogTXT & vbNewLine & "*************************************************************"
LogFile.WriteLine LogTXT
LogFile.Close

Set objFolder = Nothing
Set objShell = Nothing
WScript.Quit 0




acl_group_in_log_v2.rar [2,67 Kb] (cêà÷èâàíèé: 43)





*** v3 ***


+ îòïðàâêà ëîãà àäìèíèñòðàòîðó íà e-mail

'----------------------------------------------------------------------
'
' Copyright (c)  All rights reserved.
'
'
' AUTHOR: tudimon.com
' DATE: 02.05.2012
' NAME: alc_group_in_log_v3.vbs
'
' COMMENT:
'
' Ñêðèïò ïðîñìàòðèâàåò ACL âëîæåíûõ ïàïîê ïåðâîãî óðîâíÿ è èùåò óêàçàííóþ ãðóïïó.
' Ïðè îáíàðóæåíèè óêàçàííîé ãðóïïû â ñïèñêå â ëîã çàïèñûâàåòñÿ èìÿ ïàïêè.
' Ñïèñîê ïàïîê îòïðàâëÿåòñÿ íà e-mail àäìèíèñòðàòîðó
'
'
'
'----------------------------------------------------------------------


StartPath = "G:\Share"                     ' Ñòàðòîâàÿ ïàïêà, ïðîñìàòðèâàåì âëîæåííûå â íåå ïàïêè ïåðâîãî óðîâíÿ
LogFilePath = "c:\log.log"                ' ëîã-ôàéë
ALCGroupName = "Domain\ALC_group"        ' èìÿ èñêîìîé ãðóïïû

LogTXT = ""                             ' ïåðåìåííàÿ äëÿ çàïèñè â ëîã

compName = "ServerName"                    ' èìÿ êîìïüþòåðà/ñåðâåðà

strSMTP_Server = "smtp.local"            ' SMTP ñåðâåð
strSMTP_user = "admin"                    ' ëîãèí ïîëüçîâàòåëÿ äëÿ SMTP ñåðâåðà
strSMTP_password = "secret_pass"        ' ïàðîëü ïîëüçîâàòåëÿ äëÿ SMTP ñåðâåðà
strTo = "support@domain.ru"                ' e-mail êóäà îòñûëàåì ïðåäóïðåæäåíèå
strFrom = "support@domain.ru"            ' îò êîãî
strSubject = "Find bad security on " & compName        ' òåìà ñîîáùåíèÿ
strBody = ""                            ' òåêñò ñîîáùåíèÿ
needSentMail = 0                        ' ôëàã, ÷òî òðåáóåòñÿ ñëàòü ïèñüìî - äîñòèãíóò ëèìèò


'----------------------------------------------------------------------

    

LogTXT = LogTXT & vbNewLine & "******************** " & Now & "********************"



Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(StartPath)
Set colSubfolders = objFolder.Subfolders
For Each objSubfolder in colSubfolders

    CurrentPath = objSubfolder.Path
    
    Set objWsNet = CreateObject("WScript.Network")
    strComputer = objWsNet.ComputerName
    Set objWsNet = Nothing
    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objSecSettings = objWMI.Get("Win32_LogicalFileSecuritySetting.Path='" & CurrentPath & "'")
    If objSecSettings.GetSecurityDescriptor(objSD) = 0 Then
        If Not IsNull(objSD.DACL) Then
            ' åñëè ACL ïðî÷èòàíû
            
            For Each objACE In objSD.DACL
                
                ALC_group_read = objACE.Trustee.Domain & "\" & objACE.Trustee.Name
                
                If ALC_group_read = ALCGroupName Then
                    ' ãðóïïà îáíàðóæåíà
                    LogTXT = LogTXT & vbNewLine & CurrentPath & " îáíàðóæåíà " & ALC_group_read
                    needSentMail = 1
                Else
                    ' ãðóïïà íå îáíàðóæåíà
                    ' LogTXT = LogTXT & vbNewLine & "ãðóïïà íå îáíàðóæåíà"
                End If
            
                
            
            Next
            
            Set objACE = Nothing
            
        Else
            LogTXT = LogTXT & vbNewLine & "Ñïèñîê óïðàâëåíèÿ äîñòóïîì (ACL) ê çàäàííîìó îáúåêòó ïóñò."
        End If
    Else
        LogTXT = LogTXT & vbNewLine & "Íå óäàëîñü ïðî÷èòàòü äåñêðèïòîð áåçîïàñíîñòè îáúåêòà."
    End If
    
Next
    
LogTXT = LogTXT & vbNewLine & "*************************************************************"
    
    Set objSD = Nothing
    Set objSecSettings = Nothing
    Set objWMI = Nothing
    
    
    
    ' åñëè ôëàã áûë èçìåíåí, òî óâåäîìèì ïî å-ìàéëó àäìèíèñòðàòîðà
    If needSentMail = 1 Then

        strBody = LogTXT         

        Set iMsg = CreateObject("CDO.Message")
        Set iConf = CreateObject("CDO.Configuration")
        Set Flds = iConf.Fields
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP_Server
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/SMTPAuthenticate") = cdoBasic
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/SendUserName") = strSMTP_user
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/SendPassword") = strSMTP_password
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
        Flds.Update
        iMsg.Configuration = iConf
        iMsg.To = strTo
        iMsg.From = strFrom
        iMsg.Subject = strSubject
        iMsg.TextBody = strBody
        iMsg.Send
        
    End If
    
    
' Ïèøåì ëîã
Set FSO = CreateObject("Scripting.FileSystemObject")
Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True)
LogFile.WriteLine LogTXT
LogFile.Close

Set objFolder = Nothing
Set objShell = Nothing
WScript.Quit 0



alc_group_in_log_v3.rar [3,32 Kb] (cêà÷èâàíèé: 38)



Åñëè íóæíî óêàçàòü íåñòàíäàðòíûé ïîðò SMTP
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25

Âåðíóòüñÿ íàçàä