При подключении к VPN серверу в журнале "Безопасности" пишутся события с ID 6278 и 6272. Ранее я писал как с помощью "Планировщика задач" можно эти события отловить и выполнить powershell скрипт, который отправить информацию на почтовый адрес.
Ниже текст скрипта.
#Поиск последней записи в WIndowsEventLog по ID, и запись значения в переменную Body
$HostName = HostName
$allevent = Get-WinEvent -FilterHashtable @{LogName="Security";ID=6278,6272} | select-object -first 1 -ErrorAction SilentlyContinue
if ($allevent)
{
foreach ($event in $allevent){
$result = $type = $null
{
6278 { $result = "Подключение установлено." }
6272 { $result = "Подключение установлено." }
}
$AboutEvents = New-Object -TypeName PSObject -Property @{
UserName = $event.Properties[1].Value
ServerIP = $event.Properties[8].Value
UserIP = $event.Properties[9].Value
NasPort = $event.Properties[14].Value
AuthType = $event.Properties[21].Value
EAPType = $event.Properties[22].Value
Result = $result
}
#$BodyL - переменная для записи в текстовый лог-файл#
$BodyL = "`n"+$AboutEvents.TimeCreated +"`t"+ $AboutEvents.UserName + "`t"+ $AboutEvents.ServerIP + "`t"+ $AboutEvents.UserIP + "`t"+ $AboutEvents.NasPort + "`t"+ $AboutEvents.AuthType + "`t"+ $AboutEvents.EAPType + "`t"+ $AboutEvents.Result
#$Body - переменная для тела письма при отправке сообщения на почту и Jabber
$subj="VPN подключение. Пользователь: '" + $AboutEvents.UserName +"'. "+$AboutEvents.Result
$Body = "`nВремя: "+$event.TimeCreated +"`nИмя пользователя: "+ $AboutEvents.UserName +"`nIP сервера: "+ $AboutEvents.ServerIP +"`nIP пользователя: "+ $AboutEvents.UserIP +"`nNas port: "+ $AboutEvents.NasPort +"`nТип аутентификации: "+ $AboutEvents.AuthType +"`nТип EAP: "+ $AboutEvents.EapType +"`nРезультат: "+ $AboutEvents.Result
#Описание переменных для отправки e-mail сообщения о инциденте
$FromAddress ="mailFrom@domen.ru"
$ToAddress ="mailTo@domen.ru"
$MessageSubject ="Сервер "+$HostName+": "+$subj+". Event ID:"+ $event.ID
$MessageBody ="$subj `n$Body"
$SMTPMessage =New-Object System.Net.Mail.MailMessage $FromAddress, $ToAddress, $MessageSubject, $MessageBody
###Sets the mail values
$user = "user"
$pass = "userPass"
$serverSmtp = "mail.domen.ru"
$port = 587
$SMTPClient = New-Object Net.Mail.SmtpClient($serverSmtp, $port)
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($user, $pass);
$SMTPClient.EnableSSL = $true
$SMTPClient.Send($SMTPMessage)
#Запись данных в текстовый лог-файл
$BodyL | out-file "C:\audit\ConnectVPN.txt" -append
}
}
Ниже текст скрипта.
#Поиск последней записи в WIndowsEventLog по ID, и запись значения в переменную Body
$HostName = HostName
$allevent = Get-WinEvent -FilterHashtable @{LogName="Security";ID=6278,6272} | select-object -first 1 -ErrorAction SilentlyContinue
if ($allevent)
{
foreach ($event in $allevent){
$result = $type = $null
{
6278 { $result = "Подключение установлено." }
6272 { $result = "Подключение установлено." }
}
$AboutEvents = New-Object -TypeName PSObject -Property @{
UserName = $event.Properties[1].Value
ServerIP = $event.Properties[8].Value
UserIP = $event.Properties[9].Value
NasPort = $event.Properties[14].Value
AuthType = $event.Properties[21].Value
EAPType = $event.Properties[22].Value
Result = $result
}
#$BodyL - переменная для записи в текстовый лог-файл#
$BodyL = "`n"+$AboutEvents.TimeCreated +"`t"+ $AboutEvents.UserName + "`t"+ $AboutEvents.ServerIP + "`t"+ $AboutEvents.UserIP + "`t"+ $AboutEvents.NasPort + "`t"+ $AboutEvents.AuthType + "`t"+ $AboutEvents.EAPType + "`t"+ $AboutEvents.Result
#$Body - переменная для тела письма при отправке сообщения на почту и Jabber
$subj="VPN подключение. Пользователь: '" + $AboutEvents.UserName +"'. "+$AboutEvents.Result
$Body = "`nВремя: "+$event.TimeCreated +"`nИмя пользователя: "+ $AboutEvents.UserName +"`nIP сервера: "+ $AboutEvents.ServerIP +"`nIP пользователя: "+ $AboutEvents.UserIP +"`nNas port: "+ $AboutEvents.NasPort +"`nТип аутентификации: "+ $AboutEvents.AuthType +"`nТип EAP: "+ $AboutEvents.EapType +"`nРезультат: "+ $AboutEvents.Result
#Описание переменных для отправки e-mail сообщения о инциденте
$FromAddress ="mailFrom@domen.ru"
$ToAddress ="mailTo@domen.ru"
$MessageSubject ="Сервер "+$HostName+": "+$subj+". Event ID:"+ $event.ID
$MessageBody ="$subj `n$Body"
$SMTPMessage =New-Object System.Net.Mail.MailMessage $FromAddress, $ToAddress, $MessageSubject, $MessageBody
###Sets the mail values
$user = "user"
$pass = "userPass"
$serverSmtp = "mail.domen.ru"
$port = 587
$SMTPClient = New-Object Net.Mail.SmtpClient($serverSmtp, $port)
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($user, $pass);
$SMTPClient.EnableSSL = $true
$SMTPClient.Send($SMTPMessage)
#Запись данных в текстовый лог-файл
$BodyL | out-file "C:\audit\ConnectVPN.txt" -append
}
}
Комментариев нет:
Отправить комментарий