IP кто заходил на терминальный сервер
Думаю любой админ, сталкивался с задачей, когда необходимо просмотреть ip адреса пользователей, заходивших на терминальный сервер, а также имя пользователя и время входа.
Во первых, чтобы собрать такую информацию необходимо включить аудит успешных входов в с систему делаем это так. Заходим в групповую политику и далее “Конфигурация компьютера” – “Конфигурация Windows” – “Параметры безопасности” – “Локальные политики” – “Политики аудита” – “Аудит входа в систему” поставить “Успех”, желательно еще поставить “Отказ” для отслеживания попыток брутфорса.
Теперь у нас в журнале безопасности при удачном входе в систему будут регистрироваться события с кодом 528. Можно кончено перелопатить журнал и искать их. Но лучше установить PowerShell и воспользоваться скриптом, который я привожу ниже, оный я также нашел на просторах инета.
Итак устанавливаем PowerShell, думаю тем, кто собрался собирать IP про установку расказывать не нужно, если что пишите в коменты. И создаем файл например users_login.ps1 и вставляем в него следующее содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 |
$Events = Get-EventLog security | ?{$_.eventid -eq 528 -and $_.message -like "*Тип входа:`t10*"} $Data = New-Object System.Management.Automation. PSObject $Data | Add-Member NoteProperty Time ($null) $Data | Add-Member NoteProperty UserName ($null) $Data | Add-Member NoteProperty Address ($null) $Events | %{ $Data.time = $_.TimeGenerated; $message = $_.message.split("`n") | %{$_.trimstart()} | %{$_.trimend()} $Data.UserName = ($message | ?{$_ -like "Пользователь:*"} | %{$_ -replace "^.+`t *"}) $Data.Address = ($message | ?{$_ -like "Адрес сети источника:*"} | %{$_ -replace "^.+`t *"}) $Data>>C:\out.txt } |
И сохраняем его например на С:.
Далее заходим в PowerShell и запускаем его введя C:\users_login.ps1 здесь обратите внимание на строку $Data>>C:\out.txt она указывает файл, куда будет записываться итоговая информация.
Также обратите внимание, что у меня в скрипте типы полей на русском Тип входа, Пользователь, Адрес сети источника у кого не руссифицированый Windows соответсвенно ставим английские аналоги.
Доброго дня! Наткнулся на Ваше решение. Воспользовался, однако PS вываливает ошибки.
Не могли ли Вы проверить Ваш скрипт, а то на WinServ2008R2 при запуске Вашего скрипта выдает ошибку:
“Нельзя вызвать метод для выражения со значением NULL.
C:\user_login_WinServ2008.ps1:7 знак:59
+ $Data.time = $_.TimeGenerated; $message = $_.message.split <<<< ("n") | %{$_.trimstart()} | %{$_.trimend()}
+ CategoryInfo : InvalidOperation: (split:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull