Альтернатива: logon script

<< Кликните, чтобы показать Содержание >>

Руководство Администратора | CHM EPUB PDF A4/Letter   

Альтернатива: logon script

Альтернативным способом получения информации об аутентификации пользователя в системе или в домене является использование скрипта, запускающегося по событию входа пользователя в систему.

Пример такого скрипта на языке PowerShell приведен ниже. Данный скрипт сообщает серверу агентов EtherSensor IP-адрес, имя пользователя, имя компьютера и sid пользователя. Эти данные позволяют EtherSensor связать IP-адрес извлечённого из трафика объекта с пользователем или хостом.

Logon script и его запуск необходимо настроить через средства групповых политик для события входа пользователя в систему.

Пример текста logon script:

function GetCUSID

 {

     Param ( $CUIdentity )

     $MyID = new-object System.Security.Principal.NTAccount($CUIdentity)

     return $MyID.Translate([System.Security.Principal.SecurityIdentifier]).toString()

 }

 

 # EtherSensor address

 $Server = '10.0.1.123&apos

 

 #0=EMERG, 1=Alert, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG

 $Severity = '5&apos

 

 #(16-23)=LOCAL0-LOCAL7

 $Facility = '16&apos

 

 $HostName = $env:ComputerName

 $UserName = $env:UserName

 $UserSID  = GetCUSID([Environment]::UserName)

 

 # Create a UDP Client Object

 $UDPCLient = New-Object System.Net.Sockets.UdpClient

 $UDPCLient.Connect($Server, 10514)

 

 # Calculate the priority

 $Priority = ([int]$Facility * 8) + [int]$Severity

 

 #Time format the SW syslog understands

 $Timestamp = (Get-Date).ToString("MMM dd HH:mm:ss", [CultureInfo]::GetCultureInfo('en-US'))

 

 # Assemble the full syslog formatted message

 $FullSyslogMessage = "<{0}>{1} computername={2}, username={3}, sid={4}" -f $Priority, $Timestamp, $HostName, $UserName, $UserSID

 

 # Create a UTF8 Encoding object

 $Encoding = [System.Text.Encoding]::UTF8

 

 # Convert into byte array representation

 $ByteSyslogMessage = $Encoding.GetBytes($FullSyslogMessage)

 

 # Send the Message

 $UDPCLient.Send($ByteSyslogMessage, $ByteSyslogMessage.Length)