Как посмотреть ошибки rdp

В этой статье мы рассмотрим, как получить и проанализировать логи RDP подключений в Windows. Логи RDP подключений позволяют администраторам терминальных RDS серверов/ферм получить информацию о том, какие пользователи подключались к серверу, когда был выполнен вход и когда сеанс завершен, с какого устройства (имя или IP адрес) подключался пользователь.

Описанные методики получения и исследования RDP логов применима как к Windows Server 2022/2019/2016/2012R2, так и для десктопных версий Windows 11, 10, 8.1 c.

Содержание:

  • События RDP подключений в журналах Windows (Event Viewer)
  • Получаем логи RDP подключений в Windows с помощью PowerShell
  • Логи RDP подключений на клиентах Windows

События RDP подключений в журналах Windows (Event Viewer)

Когда пользователь удаленно подключается к RDS серверу или удаленному столу Windows (RDP), информация об этих событиях сохраняется в журналы Windows. Рассмотрим основные этапы RDP подключения и связанные с ними события в Event Viewer.

  1. Network Connection
  2. Authentication
  3. Logon
  4. Session Disconnect/Reconnect
  5. Logoff

Network Connection: – событие установления сетевого подключение к серверу от RDP клиента пользователя. Событие с EventID – 1149 (Remote Desktop Services: User authentication succeeded). Наличие этого события не свидетельствует об успешной аутентификации пользователя. Этот журнал находится в разделе Applications and Services Logs -> Microsoft -> Windows -> Terminal-Services-RemoteConnectionManager -> Operational. Включите фильтр по данному событию (ПКМ по журналу-> Filter Current Log -> EventId 1149).

1149 Terminal-Services-RemoteConnectionManager

С помощью PowerShell можно вывести список всех попыток RDP подключений:

$RDPAuths = Get-WinEvent -LogName 'Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational' -FilterXPath '<QueryList><Query Id="0"><Select>*[System[EventID=1149]]</Select></Query></QueryList>'
[xml[]]$xml=$RDPAuths|Foreach{$_.ToXml()}
$EventData = Foreach ($event in $xml.Event)
{ New-Object PSObject -Property @{
TimeCreated = (Get-Date ($event.System.TimeCreated.SystemTime) -Format 'yyyy-MM-dd hh:mm:ss K')
User = $event.UserData.EventXML.Param1
Domain = $event.UserData.EventXML.Param2
Client = $event.UserData.EventXML.Param3
}
} $EventData | FT

вывести журнал подключений к RDP/RDS серверу с помощью powershell

В результате у вас получится список с историей всех сетевых RDP подключений к данному серверу. В событии содержится имя пользователя, домен (если используется NLA аутентификация, при отключенном NLA текст события выглядит иначе) и IP адрес компьютера пользователя.

Remote Desktop Services: User authentication succeeded

Authentication: – успешная или неудачная аутентификация пользователя на сервере. Журнал Windows -> Security. Здесь нас могут интересовать события с EventID – 4624 (успешная аутентификация — An account was successfully logged on) или 4625 (ошибка аутентификации — An account failed to log on). Обратите внимание на значение LogonType в событии.

  • LogonType = 10 или 3 — при входе через терминальную службу RDP —.
  • LogonType = 7, значит выполнено переподключение к уже существующему RDP сеансу.
  • LogonType = 5 – событие RDP подключения к консоли сервера (в режиме mstsc.exe /admin)

Вы можете использовать события с ошибками аутентификации для защиты от удаленного перебора паролей через RDP. СВы можете автоматически блокировать на файерволе IP адреса, с которых выполняется подбор пароля, простым PowerShell скриптом (см. статью).

rdp событие аутентфикации An account was successfully logged on

При этом имя пользователя содержится в описании события в поле Account Name, имя компьютера в Workstation Name, а имя пользователя в Source Network Address.

Обратите внимание на значение поля LogonID – это уникальный идентификатор сессии пользователя, с помощью которого можно отслеживать дальнейшую активность данного пользователя. Но при отключении от RDP сессии (disconnect) и повторного переподключения к той же сессии, пользователю будет выдан новый TargetLogonID (хотя RDP сессия осталась той же самой).

Вы можете получить список событий успешных авторизаций по RDP (событие 4624) с помощью такой команды PowerShell.

Get-EventLog security -after (Get-date -hour 0 -minute 0 -second 0) | ?{$_.eventid -eq 4624 -and $_.Message -match 'logon type:s+(10)s'} | Out-GridView

получиь журнал RDP входов с помощью PowerShell

Logon: – RDP вход в систему, EventID – 21 (Remote Desktop Services: Session logon succeeded. Это событие появляется после успешной аутентификации пользователя. Этот журнал находится в разделе Applications and Services Logs -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Operational. Как вы видите, здесь можно узнать идентификатор RDP сессии для пользователя — Session ID.

Remote Desktop Services: Session logon succeeded

Событие с EventID – 21 (Remote Desktop Services: Shell start notification received) означает успешный запуск оболочки Explorer (появление окна рабочего стола в RDP сессии).

Session Disconnect/Reconnect – события отключения и переподключения к сессии имеют разные коды в зависимости от того, что вызвало отключение пользователя (отключение по неактивности, заданному в таймаутах для RDP сессий; выбор пункта Disconnect в сессии; завершение RDP сессии другим пользователем или администратором и т.д.). Эти события находятся в разделе журналов Applications and Services Logs -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Operational. Рассмотрим RDP события, которые могут быть полезными:

  • EventID – 24 (Remote Desktop Services: Session has been disconnected) – пользователь отключился от RDP сессии.
  • EventID – 25 (Remote Desktop Services: Session reconnection succeeded) – пользователь переподключился к своей имеющейся RDP сессии на сервере.
  • EventID – 39 (Session <A> has been disconnected by session <B>) – пользователь сам отключился от своей RDP сессии, выбрав соответствующий пункт меню (а не просто закрыл окно RDP клиента). Если идентификаторы сессий разные, значит пользователя отключил другой пользователь (или администратор).
  • EventID – 40 (Session <A> has been disconnected, reason code <B>). Здесь нужно смотреть на код причины отключения в событии. Например:
    • reason code 0 (No additional information is available) – обычно говорит о том, что пользователь просто закрыл окно RDP клиента.
    • reason code 5 (The client’s connection was replaced by another connection) – пользователь переподключился к своей старой сессии.
    • reason code 11 (User activity has initiated the disconnect) – пользователь сам нажал на кнопку Disconnect в меню.

Событие с EventID – 4778 в журнале Windows -> Security (A session was reconnected to a Window Station). Пользователь переподключился к RDP сессии (пользователю выдается новый LogonID).

Событие с EventID 4779 в журнале Windows -> Security (A session was disconnected from a Window Station). Отключение от RDP сеанса.

Logoff: – выход пользователя из системы. При этом в журнале Applications and Services Logs -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Operational регистрируется событие с EventID 23 (Remote Desktop Services: Session logoff succeeded).

Remote Desktop Services: Session logoff succeeded

При этом в журнале Security нужно смотреть событие EventID 4634 (An account was logged off).

Событие Event 9009 (The Desktop Window Manager has exited with code (<X>) в журнале System говорит о том, что пользователь инициировал завершение RDP сессии, и окно и графический shell пользователя был завершен.

EventID 4647 — User-initiated logoff

Получаем логи RDP подключений в Windows с помощью PowerShell

Ниже представлен небольшой PowerShell скрипт, который выгружает из журналов терминального RDS сервера историю всех RDP подключений за текущий день. В полученной таблице указано время подключения, IP адрес клиента и имя пользователя (при необходимости вы можете включить в отчет другие типы входов).

Get-EventLog -LogName Security -after (Get-date -hour 0 -minute 0 -second 0)| ?{(4624,4778) -contains $_.EventID -and $_.Message -match 'logon type:s+(10)s'}| %{
(new-object -Type PSObject -Property @{
TimeGenerated = $_.TimeGenerated
ClientIP = $_.Message -replace '(?smi).*Source Network Address:s+([^s]+)s+.*','$1'
UserName = $_.Message -replace '(?smi).*ssAccount Name:s+([^s]+)s+.*','$1'
UserDomain = $_.Message -replace '(?smi).*ssAccount Domain:s+([^s]+)s+.*','$1'
LogonType = $_.Message -replace '(?smi).*Logon Type:s+([^s]+)s+.*','$1'
})
} | sort TimeGenerated -Descending | Select TimeGenerated, ClientIP `
, @{N='Username';E={'{0}{1}' -f $_.UserDomain,$_.UserName}} `
, @{N='LogType';E={
switch ($_.LogonType) {
2 {'Interactive - local logon'}
3 {'Network conection to shared folder)'}
4 {'Batch'}
5 {'Service'}
7 {'Unlock (after screensaver)'}
8 {'NetworkCleartext'}
9 {'NewCredentials (local impersonation process under existing connection)'}
10 {'RDP'}
11 {'CachedInteractive'}
default {"LogType Not Recognised: $($_.LogonType)"}
}
}}

логи RDP подключений к RDS серверу с IP адресами и учетными записями

Можно экспортировать логи RDP подключений из журнала в CSV файл (для дальнейшего анализа в таблице Excel). Экспорт журнала можно выполнить из консоли Event Viewer (при условии что логи не очищены) или через командную строку:

WEVTUtil query-events Security > c:pssecurity_log.txt

Или с помощью PowerShell:

get-winevent -logname "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" | Export-Csv c:psrdp-log.csv  -Encoding UTF8

Если ваши пользователи подключаются к RDS серверам через шлюз удаленных рабочих столов Remote Desktop Gateway, вы можете обрабатывать логи подключений пользователей по журналу Microsoft-Windows-TerminalServices-Gateway по EventID 302. Например, следующий PowerShell скрипт выведет полную историю подключений через RD Gateway указанного пользователя:

$rdpusername="kbuldogov"
$properties = @(
@{n='User';e={$_.Properties[0].Value}},
@{n='Source IP Adress';e={$_.Properties[1].Value}},
@{n='TimeStamp';e={$_.TimeCreated}}
@{n='Target RDP host';e={$_.Properties[3].Value}}
)
(Get-WinEvent -FilterHashTable @{LogName='Microsoft-Windows-TerminalServices-Gateway/Operational';ID='302'} | Select-Object $properties) -match $rdpusername

powershell поиск в логах удаленных RDP подключений на remote desktop gateway в windows server 2019

Другие события, связанные с подключениями пользователей на RD Gateway в журнале Microsoft-Windows-TerminalServices-Gateway:

  • 300
    The user %1, on client computer %2, met resource authorization policy requirements and was therefore authorized to connect to resource %4
  • 302
    The user %1, on client computer %2, connected to resource %4
  • 303
    The user %1, on client computer %2, disconnected from the following network resource: %4. Before the user disconnected, the client transferred %6 bytes and received %5 bytes. The client session duration was %7 seconds.

Список текущих RDP сессий на сервере можно вывести командой:

qwinsta

Команда возвращает как идентификатор сессии (ID), имя пользователя (USERNAME)и состояние (Active/Disconnect). Эту команду удобна использовать, когда нужно определить ID RDP сессии пользователя при теневом подключении.

Qwinsta

Список запущенных процессов в конкретной RDP сессии (указывается ID сессии):

qprocess /id:157

qprocess

Логи RDP подключений на клиентах Windows

Также вы можете изучать логи исходящих подключений на стороне RDP клиента. Они доступны в журнале событий Application and Services Logs -> Microsoft -> Windows -> TerminalServices-ClientActiveXCore -> Microsoft-Windows-TerminalServices-RDPClient -> Operation.

Например, событие с Event ID 1102 появляется, когда компьютер устанавливает подключение с удаленным RDS хостом Windows Server или компьютером с Windows 10/11 с включенной службой RDP (десктопные версии Windows также поддерживают несколько одновременных rdp подключений).

The client has initiated a multi-transport connection to the server 192.168.31.102.

событие с ID 1102 в журнале Microsoft-Windows-TerminalServices-RDPClient событие подключения к RDP серверу на клиенте

Следующий RDP скрипт выведет историю RDP подключений на указанном компьютере (для получения событий Event Log используется командлет Get-WinEvent):

$properties = @(
@{n='TimeStamp';e={$_.TimeCreated}}
@{n='LocalUser';e={$_.UserID}}
@{n='Target RDP host';e={$_.Properties[1].Value}}
)
Get-WinEvent -FilterHashTable @{LogName='Microsoft-Windows-TerminalServices-RDPClient/Operational';ID='1102'} | Select-Object $properties

powershell вывести история RDP подключений на клиентском компьютере

Скрипт возвращает SID пользователей, которые инициировали RDP подключения на этом компьютере и DNS имена/IP адреса серверов, к которым подключались пользователи. Вы можете преобразовать SID в имена пользователей.

Также история RDP подключений пользователя хранится в реестре.

1.

Start → Administrative tools → Event Viewer

Пуск → Администрирование → Просмотр событий

2.

Applications and Services Logs → Microsoft → Windows

Журналы приложений и служб → Microsoft → Windows

3.

TerminalServices-LocalSessionManager → Operational

Actions → Filter Current Log

Справа Действия → Фильтр текущего журнала

4.

Указываем код события 21 и 25

5.

Пример

EOM

Сайт rtfm.wiki использует cookies и трекинг посещений. Продолжая использовать этот сайт, вы соглашаетесь с сохранением файлов cookie на вашем компьютере. Если вы не согласны покиньте сайт или включите Adblock 😎 Что такое cookies? 🍪

In this article we will take a look at the features of Remote Desktop Protocol (RDP) connection auditing and log analysis in Windows. Typically, it is useful when investigating various incidents on Windows servers when a system administrator is required to provide information about what users logged on to the server, when he logged on and off, and from which device (name or IP address) the RDP user was connecting.

Remote Desktop Connection Events

Like other events, the Windows RDP connection logs are stored in the event logs. The Windows logs contain a lot of information, but it can be difficult to find the right event quickly. When a user remotely connects to a Windows server, many events are generated in the Windows logs. We will take a look at the following:

  • Network Connection
  • Authentication
  • Logon
  • Session Disconnect/Reconnect
  • Logoff

Network Connection Events

Network Connection connects user’s RDP client with the Windows server. That logs EventID – 1149 (Remote Desktop Services: User authentication succeeded). The presence of this event does not indicate successful user authentication. This log can be found at Applications and Services Logs ⇒ Microsoft ⇒ Windows ⇒ Terminal-Services-RemoteConnectionManager ⇒ Operational. You can filter this log by right clicking on Operational log ⇒ Selecting “Filter Current Log” and type in EventID 1149.

Event log filtering

Filtering the log for EventID 1149

The result is a list with the history of all network RDP connections to this server. As you can see, the log file contains the username, domain (When Network Level Authentication (NLA) authentication is used), and IP address of the computer from which the RDP connection is made.

EventID 1149

EventID 1149 output

Authentication Events

User authentication can be successful or unsuccessful on the server. Navigate to Windows logs ⇒ Security. We are interested in logs with EventID – 4624 (An account was successfully logged on) or 4625 (An account failed to log on). Pay attention to the LogonType value in the event. LogonType – 10 or 3 indicates a new logon to the system. If LogonType is 7, it indicates re-connection to an existing RDP session.

EventID 4624

EventID 4624

The username of the connecting account is written in the Account Name field, his computer name is written in Workstation Name, and the IP address in Source Network Address.

Take a look at TargetLogonID field, which is a unique user session identifier that can be used to track further activity of this user. However, if a user disconnects from the RDP session and reconnects to the session again, the user will be issued a new TargetLogonID (although the RDP session remains the same).

You can get a list of successful authentication events over RDP (EventID 4624) using the following PowerShell command:

Get-EventLog security -after (Get-date -hour 0 -minute 0 -second 0) | ?{$_.eventid -eq 4624 -and $_.Message -match 'logon type:s+(10)s'} | Out-GridView

Logon Events

RDP logon is the event that appears after successful user authentication. Log entry with EventID – 21 (Remote Desktop Services: Session logon succeeded). This log can be found in Applications and Services Logs ⇒ Microsoft ⇒ Windows ⇒ TerminalServices-LocalSessionManager ⇒ Operational. As you can see here you can see the RDP Session ID for the user.

RDS EventID 21

Remote Desktop Services EventID 21

Remote Desktop Services: Shell start received” details in EventID 21 means that the Explorer shell has been successfully launched in the RDP session.

Session Disconnect and Reconnect Events

Session Disconnect/Reconnect events have different codes depending on what caused the user to end the session, for example disable by inactivity, selecting “Disconnect” in Start menu, RDP session drop by another user or administrator, etc. These events can be found in Applications and Services Logs ⇒ Microsoft ⇒ Windows ⇒ TerminalServices-LocalSessionManager ⇒ Operational. Let’s take a look at the RDP events that may be of interest:

  • EventID – 24 (Remote Desktop Services: Session has been disconnected) – the user has disconnected from the RDP session.
  • EventID – 25 (Remote Desktop Services: Session reconnection succeeded) – The user has reconnected to his existing RDP session on the server.
  • EventID – 39 (Session A has been disconnected by session B) – user disconnected from his RDP session by selecting the appropriate menu item (not just closed the RDP client window by clicking on “x” in the top right corner). If the session IDs are different, then the user has been disconnected by another user or administrator.
  • EventID – 40 (Session A has been disconnected, reason code B). Here you should look at the reason code for the disconnection in the event. For example:
    • Reason code 0 (No additional information is available) – usually indicates that the user just closed the RDP client window.
    • Reason code 5 (The client’s connection was replaced by another connection) – the user re-connected to his old session.
    • Reason code 11 (User activity has the disconnect) – the user clicked the Disconnect button on the menu.
  • EventID – 4778 in Windows log ⇒ Security (A session was reconnected to a Window Station). The user re-connected to an RDP session (the user is given a new LogonID).
  • EventID 4799 in Windows Logon ⇒ Security (A session was reconnected to a Window Station). Disconnection from an RDP session.

Logoff Events

Logoff logs track the user disconnection from the system. In the Applications and Services Logs ⇒ Microsoft ⇒ Windows ⇒ TerminalServices-LocalSessionManager ⇒ Operational logs we can find EventID 23. In this case in Security log we need to search for EventID 4634 (An account was logged off).

logoff EventID 23

RDP session logoff EventID 23

Event 9009 (The Desktop Window Manager has exited with code (x)) in the System log shows that the user initiated the end of the RDP session and the user’s window and graphical shell were terminated. Below is a small PowerShell that uploads the history of all RDP connections for the current day from the Remote Desktop Service server. The table below shows the connection time, client IP address, and RDP username (you can include other logon types in the report if necessary).

Get-EventLog -LogName Security -after (Get-date -hour 0 -minute 0 -second 0)| ?{(4624,4778) -contains $_.EventID -and $_.Message -match 'logon type:s+(10)s'}| %{
(new-object -Type PSObject -Property @{
TimeGenerated = $_.TimeGenerated
ClientIP = $_.Message -replace '(?smi).*Source Network Address:s+([^s]+)s+.*','$1'
UserName = $_.Message -replace '(?smi).*Account Name:s+([^s]+)s+.*','$1'
UserDomain = $_.Message -replace '(?smi).*Account Domain:s+([^s]+)s+.*','$1'
LogonType = $_.Message -replace '(?smi).*Logon Type:s+([^s]+)s+.*','$1'
})
} | sort TimeGenerated -Descending | Select TimeGenerated, ClientIP `
, @{N='Username';E={'{0}{1}' -f $_.UserDomain,$_.UserName}} `
, @{N='LogType';E={
switch ($_.LogonType) {
2 {'Interactive - local logon'}
3 {'Network conection to shared folder)'}
4 {'Batch'}
5 {'Service'}
7 {'Unlock (after screensaver)'}
8 {'NetworkCleartext'}
9 {'NewCredentials (local impersonation process under existing connection)'}
10 {'RDP'}
11 {'CachedInteractive'}
default {"LogType Not Recognised: $($_.LogonType)"}
}
}}

Exporting RDP logs

Sometimes it is needed to export RDP logs into Excel table, in this case you can upload any Windows log to a text file and afterwards import it into Excel. You can export the log from the Event Viewer console or from the command line:

WEVTUtil query-events Security > c:pssecurity_log.txt

Or:

get-winevent -logname "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" | Export-Csv c:psrdp-log.txt -Encoding UTF8 

A list of the current RDP sessions on the server can be displayed as a command “Qwinsta”

qwinsta command output

qwinsta output

The command returns as session identifier, username and status (Active/Disconnect). This command is useful when you need to determine the RDP session ID of a user during a shadow connection.

After defining a Session ID you can list running processes in a particular RDP session:

qprocess command output

qprocess output

So here are the most common ways to view RDP connection logs in Windows.

Содержание

  1. Просмотр и анализ логов RDP подключений в Windows
  2. Очистка истории RDP подключений в Windows
  3. Удаление журнала RDP подключений из реестра системы
  4. Скрипт очистки истории (логов) RDP подключений
  5. Как запретить Windows сохранять историю RDP подключений?
  6. Очистка Bitmap кэша RDP
  7. Удаление сохраненных RDP паролей
  8. Очистка RDP логов на сервере
  9. Мониторинг активности и статуса подключенных удаленных клиентов.
  10. Мониторинг активности и состояния удаленных клиентов
  11. Просмотр и анализ логов RDP подключений в Windows

Просмотр и анализ логов RDP подключений в Windows

В этой статье мы рассмотрим, особенности аудита / анализа логов RDP подключений в Windows. Как правило, описанные методы могут пригодиться при расследовании различных инцидентов на терминальных / RDS серверах Windows, когда от системного администратора требуется предоставить информацию: какие пользователи входили на RDS сервер, когда авторизовался и завершил сеанс конкретный пользователь, откуда / с какого устройства (имя или IP адрес) подключался RDP-пользователь. Я думаю, эта информация будет полезна как для администраторов корпоративных RDS ферм, так и владельцам RDP серверов в интернете (Windows VPS как оказалось довольно популярны).

Как и другие события, логи RDP подключения в Windows хранятся в журналах событий. Откройте консоль журнала событий (Event Viewer). Есть несколько различных журналов, в которых можно найти информацию, касающуюся RDP подключения.

В журналах Windows содержится большое количество информации, но быстро найти нужное событие бывает довольно сложно. Когда пользователь удаленно подключается к RDS серверу или удаленному столу (RDP) в журналах Windows генерируется много событий. Мы рассмотрим журналы и события на основных этапах RDP подключения, которые могут быть интересны администратору:

1149 terminal services remoteconnectionmanager

В результате у вас получится список с историей всех сетевых RDP подключений к данному серверу. Как вы видите, в логах указывается имя пользователя, домен (используется NLA аутентификация, при отключенном NLA текст события выглядит иначе) и IP адрес компьютера, с которого осуществляется RDP подключение.

remote desktop services user authentication succe

rdp sobytie autentfikacii an account was successfu

При этом имя пользователя содержится в описании события в поле Account Name, имя компьютера в Workstation Name, а имя пользователя в Source Network Address.

Вы можете получить список событий успешных авторизаций по RDP (событие 4624) с помощью такой команды PowerShell.

poluchi zhurnal rdp vhodov s pomoshyu powershell

Событие с EventID – 21 (Remote Desktop Services: Shell start notification received) означает успешный запуск оболочки Explorer (появление окна рабочего стола в RDP сессии).

При этом в журнале Security нужно смотреть событие EventID 4634 (An account was logged off).

Событие Event 9009 (The Desktop Window Manager has exited with code ( ) в журнале System говорит о том, что пользователь инициировал завершение RDP сессии, и окно и графический shell пользователя был завершен.

Ниже представлен небольшой PowerShell, который выгружает из журналов терминального RDS сервера историю всех RDP подключений за текущий день. В полученной таблице указано время подключения, IP адрес клиента и имя RDP пользователя (при необходимости вы можете включить в отчет другие типы входов).

logi rdp podklyuchenij k rds serveru s ip adresami i

Иногда бывает удобно с логами в таблице Excel, в этом случае вы можете выгрузить любой журнал Windows в текстовый файл и импортировать в Excel. Экспорт журнала можно выполнить из консоли Event Viewer (конечно, при условии что логи не очищены) или через командную строку:

WEVTUtil query-events Security > c:pssecurity_log.txt

Список текущих RDP сессий на сервере можно вывести командой:

Команда возвращает как идентификатор сессии (ID), имя пользователя (USERNAME)и состояние (Active/Disconnect). Эту команду удобна использовать, когда нужно определить ID RDP сессии пользователя при теневом подключении.

qwinsta

Список запущенных процессов в конкретной RDP сессии (указывается ID сессии):

qprocess

На RDP-клиенте логи не такие информационные, основное чем часто пользуются информация об истории RDP подключений в реестре.

Источник

Очистка истории RDP подключений в Windows

Встроенный Remote Desktop Connection (RDP) клиент Windows (mstsc.exe) при каждом успешном соединении с удаленным компьютером сохраняет в системе его имя (или ip адрес) и имя пользователя, под которым был выполнен вход. При следующем запуске клиент RDP предлагает пользователю выбрать одно из подключений, которыми он уже пользовался ранее. Пользователь может выбрать из списка имя удаленного RDP/RDS сервера, и клиент автоматически подставляет используемое ранее для входа имя пользователя.

Это удобно с точки зрения конечного пользователя, но не безопасно. Особенно, когда вы подключаетесь к своему RDP серверу с общедоступного или недоверенного компьютера.

Информация о всех RDP сессиях хранится индивидуально для каждого пользователя компьютера в реестре, т.е. обычный пользователь (не администратор) не сможет просмотреть историю удаленных подключений другого пользователя.

mstsc rdp istoriya podklucheniy

В этой статье мы покажем, где в Windows хранится история подключений к удаленным рабочим столам и сохраненные пароли, и каким образом можно эту историю очистить.

Удаление журнала RDP подключений из реестра системы

Скрипт очистки истории (логов) RDP подключений

Выше мы показали, как вручную очистить историю RDP подключений в Windows. Однако делать это вручную (особенно на нескольких компьютерах) – занятие достаточно долгое. Поэтому мы предлагаем небольшой скрипт (bat-файл), который позволяет автоматически очистить историю подключений к удаленным рабочим столам.

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

Последовательно разберем все команды скрипта:

Вы можете скачать готовый скрипт тут: CleanRDPHistory.bat

Как запретить Windows сохранять историю RDP подключений?

zapret vesti rdp istoriyu cherez reestr

В результате mstsc просто не сможет записать информацию об RDP подключении в реестр.

Очистка Bitmap кэша RDP

В клиенте Remote Desktop Connection есть функционал кэширования изображений (persistent bitmap caching). Клиент RDP при подключении сохраняет редко изменяющиеся куски удаленого экрана в виде кэша растровых изображений. Благодаря этому клиент mstsc.exe загружает из локального кэша части экрана, которые не изменились с момента последней прорисовки. Этот механизм кэширования RDP уменьшает количество данных, передаваемых по сети.

RDP кэш представляет собой два типа файлов в каталоге %LOCALAPPDATA%MicrosoftTerminal Server ClientCache :

terminal server client rdp bitmap kesh

В этих файлах хранятся сырые растровые изображения RDP экрана в виде плиток 64×64 пикселя. С помощью простых PowerShell или Python скриптов (легко ищутся по запросу RDP Cached Bitmap Extractor) можно получить PNG файлы с кусками экрана рабочего стола и использовать их для получения конфиденциальной информации. Размер плиток мал, но достаточен для получения полезной информации для изучающего RDP кэш.

rdp cache png

Вы можете запретить RDP клиенту сохранять изображение экрана в кэш, отключив опцию Persistent bitmap caching (Постоянное кэширование точечных рисунков) на вкладке Advanced.

otkluchit rdp keshirovanie

В этом случае нужно очистить каталог RDP кэша или отключить опцию Bitmap Caching.

Удаление сохраненных RDP паролей

Если при установке удалённого RDP подключения, перед вводом пароля пользователь поставил галку Remember Me / Запомнить меня, то имя пользователя и пароль будут сохранены в системном менеджере паролей системы (Credential Manager). При следующем подключении к этому же компьютеру, RDP клиент автоматически использует сохранённый ранее пароль для авторизации на удаленном компьютере.

rdp sohranit parol polzovatelya

Вы можете удалить сохраненный пароль прямо из окна клиента mstsc.exe. Выберите в списке подключений тоже самое подключение, и нажмите на кнопку Delete. Далее подтвердите удаление сохраненного пароля.

mstsc udalit sohranenniy rdp parol

Либо можно удалить сохраненный пароль непосредственно из менеджера паролей Windows. Перейдите в следующий раздел Панели Управления: Control PanelUser AccountsCredential Manager. Выберите Manage Windows Credentials и в списке сохранённых паролей найдите имя компьютера (в формате TERMSRV/192.168.1.100 ). Разверните найденный элемент и нажмите на кнопку Remove.

menedsher paroley udalit rdp parol

В доменной среде вы можете запретить сохранение паролей для RDP подключений можно с помощью политики Network access: Do not allow storage of passwords and credentials for network authentication (см. статью).

Очистка RDP логов на сервере

Логи подключения так же ведутся на стороне RDP/RDS сервера. Вы можете найти информацию об RDP подключениях в логах Event Viewer:

Источник

Мониторинг активности и статуса подключенных удаленных клиентов.

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016

примечание. Windows Server 2012 объединяет службу directaccess и службы удаленного доступа (RAS) в одну роль удаленного доступа.

Консоль управления на сервере удаленного доступа можно использовать для наблюдения за активностью и состоянием удаленных клиентов.

Для выполнения задач, описанных в этом разделе, необходимо войти в систему как член группы «Администраторы домена» или член группы «Администраторы» на каждом компьютере. Если вы не можете выполнить задачу, войдя в учетную запись, которая является членом группы «Администраторы», попробуйте выполнить задачу, войдя в учетную запись, которая является членом группы «Администраторы домена».

Мониторинг активности и состояния удаленных клиентов

В диспетчере серверов щелкните Средства и выберите пункт Управление удаленным доступом.

Вы увидите список пользователей, подключенных к серверу удаленного доступа, и подробную статистику по ним. Щелкните первую строку в списке, соответствующую клиенту. При выборе строки на панели предварительного просмотра отображается активность удаленных пользователей.

Windows PowerShell эквивалентные команды

Следующие командлеты Windows PowerShell выполняют ту же функцию, что и предыдущая процедура. Вводите каждый командлет в одной строке, несмотря на то, что здесь они могут отображаться разбитыми на несколько строк из-за ограничений форматирования.

Статистику пользователя можно фильтровать на основе выбора критериев, используя поля в следующей таблице.

Источник

Просмотр и анализ логов RDP подключений в Windows

В этой статье мы рассмотрим, особенности аудита / анализа логов RDP подключений в Windows. Как правило, описанные методы могут пригодиться при расследовании различных инцидентов на терминальных / RDS серверах Windows, когда от системного администратора требуется предоставить информацию: какие пользователи входили на RDS сервер, когда авторизовался и завершил сеанс конкретный пользователь, откуда / с какого устройства (имя или IP адрес) подключался RDP-пользователь. Я думаю, эта информация будет полезна как для администраторов корпоративных RDS ферм, так и владельцам RDP серверов в интернете (Windows VPS как оказалось довольно популярны).

Статья применима при исследовании RDP логов как в Windows Server 2008 R2, 2012/R2, 2016, так и в соответствующих десктопных версиях Windows (Windows 7, 8.1, 10).

Как и другие события, логи RDP подключения в Windows хранятся в журналах событий. Откройте консоль журнала событий (Event Viewer). Есть несколько различных журналов, в которых можно найти информацию, касающуюся RDP подключения.

В журналах Windows содержится большое количество информации, но быстро найти нужное событие бывает довольно сложно. Когда пользователь удаленно подключается к RDS серверу или удаленному столу (RDP) в журналах Windows генерируется много событий. Мы рассмотрим журналы и события на основных этапах RDP подключения, которые могут быть интересны администратору:

1149 terminal services remoteconnectionmanager

В результате у вас получится список с историей всех сетевых RDP подключений к данному серверу. Как вы видите, в логах указывается имя пользователя, домен (используется NLA аутентификация, при отключенном NLA текст события выглядит иначе) и IP адрес компьютера, с которого осуществляется RDP подключение.

remote desktop services user authentication succe

Вы можете использовать события с ошибками аутентфикации для защиты от удаленного перебора паролей к RDP. Вы можете автоматически блокировать на файерволе такие IP адреса простым PowerShell скриптом.

rdp sobytie autentfikacii an account was successfu

При этом имя пользователя содержится в описании события в поле Account Name, имя компьютера в Workstation Name, а имя пользователя в Source Network Address.

Обратите внимание на значение поля TargetLogonID – это уникальный идентификатор сессии пользователя с помощью которого можно отслеживать дальнейшую активность данного пользователя. Однако при отключении от RDP сессии (disconnect) и повторного переподключения в сессию, пользователю будет выдан новый TargetLogonID (хотя RDP сессия осталась той же самой).

Вы можете получить список событий успешных авторизаций по RDP (событие 4624) с помощью такой команды PowerShell.

poluchi zhurnal rdp vhodov s pomoshyu powershell

Событие с EventID – 21 (Remote Desktop Services: Shell start notification received) означает успешный запуск оболочки Explorer (появление окна рабочего стола в RDP сессии).

При этом в журнале Security нужно смотреть событие EventID 4634 (An account was logged off).

Событие Event 9009 (The Desktop Window Manager has exited with code ( ) в журнале System говорит о том, что пользователь инициировал завершение RDP сессии, и окно и графический shell пользователя был завершен.

Ниже представлен небольшой PowerShell, который выгружает из журналов терминального RDS сервера историю всех RDP подключений за текущий день. В полученной таблице указано время подключения, IP адрес клиента и имя RDP пользователя (при необходимости вы можете включить в отчет другие типы входов).

logi rdp podklyuchenij k rds serveru s ip adresami i

Иногда бывает удобно с логами в таблице Excel, в этом случае вы можете выгрузить любой журнал Windows в текстовый файл и импортировать в Excel. Экспорт журнала можно выполнить из консоли Event Viewer (конечно, при условии что логи не очищены) или через командную строку:

WEVTUtil query-events Security > c:pssecurity_log.txt

Список текущих RDP сессий на сервере можно вывести командой:

Команда возвращает как идентификатор сессии (ID), имя пользователя (USERNAME)и состояние (Active/Disconnect). Эту команду удобна использовать, когда нужно определить ID RDP сессии пользователя при теневом подключении.

qwinsta

Список запущенных процессов в конкретной RDP сессии (указывается ID сессии):

qprocess

На RDP-клиенте логи не такие информационные, основное чем часто пользуются информация об истории RDP подключений в реестре.

Источник

Журналы событий обеспечивают контрольный журнал, который записывает пользовательские события и действия на компьютере и являются потенциальным источником доказательств в цифровой криминалистике исследования.
В этой статье мы рассмотрим процесс экспертизы событий event logs в Windows 10 Версия 1809 (Сборка ОС 17763.195), 64 и 32 разрядных операционных систем, относящейся к RDP (Remote Desktop Protocol) – специальный протокол, разработанный компанией Microsoft для удаленного управления ОС Windows (протокол удалённого рабочего стола).

Версии Windows начиная с Vista включают ряд новых событий, которые не регистрируются системами Windows XP. Выпуски Windows Server содержат большее количество и типы событий.

ris 0 jpg

Таким образом, точная идентификация версии операционной системы Windows должна быть очень тщательно продумана при разработке цифрового процесса компьютерно-технической экспертизы, основанного на журналах событий (event logs).
Расположение журналов событий Windows по умолчанию:
Windows 2000/Server2003/Windows XP:
%SystemRoot%System32Config*.evt

Windows Vista/7/Server2008/10/Server2012/Server2016:
%SystemRoot%System32winevtLogs*.evtx

ris 1 jpg

ris 2 jpg

ris 3 jpg

Application Events (События приложения):
КомпьютерHKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventLogApplication
Hardware Events (Аппаратные события):
КомпьютерHKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventLogHardwareEvents
Security Events (События безопасности):
КомпьютерHKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventLogSecurity
System Events (Системные события):
КомпьютерHKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventLogSystem

Когда используется пользовательский путь, ключ создается в месте реестра:
КомпьютерHKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionWINEVTChannels[logname]
(например [logname] это: Microsoft-Windows-TerminalServices-LocalSessionManager/Admin)

Источник

Обновлено 08.12.2022

rdp logoДобрый день! Уважаемые читатели и гости, IT блога Pyatilistnik.org. В прошлый раз мы с вами поговорили, про отложенный запуск служб в Windows, сегодня я хочу вам показать еще один не приятный момент в работе терминальных служб удаленного рабочего стола, а именно ошибка подключения «Произошла внутренняя ошибка«, после чего подключение разрывается. Такое я встречал уже в Windows Server 2012 R2 и 2016. Давайте разбираться в чем дело.

Описание проблемы

Есть сервер с операционной системой Windows Server 2012 R2, сотрудник пытается к нему подключиться, через классическую утилиту «Подключение к удаленному рабочему столу», в момент авторизации, выскакивает окно с ошибкой «Произошла внутренняя ошибка».

Произошла внутренняя ошибка

В английском варианте ошибка звучит вот так:

An internal error has occurred

An internal error has occurred

После этого у вас разрывается соединение. Когда мы видели моргающий экран по RDP, там хотя бы вы попадали на сервер и могли открыть диспетчер устройств, тут сразу все обрубается на корню. Давайте смотреть, что можно сделать.

🆘 Что есть в логах?

Если посмотреть журналы событий на удаленном сервере, куда вы пытаетесь подключиться, то там порядок событий будет такой:

События нужно искать в журнале Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational

  • 1️⃣ Первым будет идти событие ID 131 «The server accepted a new TCP connection from client IP-адрес:60050.». Тут вы увидите IP-адрес с которого идет попытка входа.

Event ID 131

  • 2️⃣ Далее событие ID 65 «Connection RDP-Tcp#11 created «.

Event ID 65

  • 3️⃣ Затем событие 141 «PerfCounter session started with instance ID 11». Тут сессии будет назначен ID.

Event ID 141

  • 4️⃣ За ним будет идти ID 142 «TCP socket READ operation failed, error 1236».

TCP socket READ operation failed, error 1236

  • 5️⃣ Потом вы увидите ID 72 «Interface method called: OnDisconnected»

ID 72

  • 6️⃣ И же после этого вам покажут, что сервер разорвал подключение: «ID 102 The server has terminated main RDP connection with the client.»

Event ID 102

  • 7️⃣ В событии ID 145 так же появляются подробности «During this connection, server has not sent data or graphics update for 0 seconds (Idle1: 0, Idle2: 0).».

Event ID 145

  • 8️⃣ Могут быть события с ID 148 «Channel rdpinpt has been closed between the server and the client on transport tunnel: 0.» или «Channel rdpcmd has been closed between the server and the client on transport tunnel: 0.» или «Channel rdplic has been closed between the server and the client on transport tunnel: 0.»
  • 9️⃣ Ну и вишенка на торте, ошибка  ID 227 «‘Failed to get property Disconnect Reason’ in CUMRDPConnection::Close at 2212 err=[0x80070057]»

Event ID 227

Исправляем ошибку «Произошла внутренняя ошибка»

Так как по RDP подключиться не получается, то первым делом нужно проверить отвечает ли порт, по умолчанию это 3389. О том, как проверить порт на удаленном сервере я вам описывал, там все сводилось к выполнению команды Telnet, ознакомьтесь. Если порт отвечает, то делаем следующее.

Нужно удаленно перезапустить службу на этом сервере, чтобы сам сервер не перезагружать, так как в этот момент, он может выполнять важные задачи, можно использовать утилиту «Управление компьютером». Открыть ее можно через команду вызова оснастки, вызываем окно «Выполнить», через одновременное нажатие клавиш WIN и R, в котором пишем:

Открываем compmgmt.msc

В открывшейся оснастке, щелкните в самом верху по пункту «Управление компьютером» правым кликом мыши, и выберите пункт «Подключиться к удаленному компьютеру».

Подключение к удаленному компьютеру

Выберите пункт «Другим компьютером» и укажите его DNS имя, или найдите его через кнопку обзор.

Нажимаем кнопку обзор

Когда вы подключитесь к нужному серверу, перейдите в пункт «Службы и приложения — Службы», в списке сервисов найдите службу удаленных рабочих столов (Remote Desktop Services), и перезапускаем ее. После этого ошибка подключения по RDP «Произошла внутренняя ошибка», у вас должна пропасть.

Перезапуск удаленной службы RDP

Так же вы можете использовать оболочку PowerShell запущенную от имени пользователя, у которого есть права на удаленный сервер, где будет перезапускаться служба RDP. Выполните:

Get-Service TermService -ComputerName Имя сервера | Restart-Service –force –verbose

Дополнительные методы решения

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

Для этого в окне «Редактор реестра» пункт меню «Файл — Подключить сетевой реестр».

подключение к удаленному реестру

В открывшемся окне «Выбор компьютера» указываем его DNS-имя или ip-адрес и нажимаем ок. У вас будет установлено подключение к удаленному реестру сервера, что испытывает проблемы.

Произошла внутренняя ошибка-6

Находим ключ CheckMode по пути

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl Session ManagerCProIntegrityCheckMode

Перед любыми правками реестра, обязательно сделайте выгрузку нужной ветки, чтобы можно было восстановить все в оперативном режиме

Выставляем ему значение о, чтобы отключить у программы КриптоПРО CSP проверку контрольных сумм. Еще один важный момент, если у вас старая версия КриптоПРО, то это так же может быть источником, проблем, недавний пример, это ошибка «Windows installer service could not be accessed». Для этого удаляем правильно КриптоПРО CSP и ставим последнюю доступную версию.

Произошла внутренняя ошибка-7

Еще можно попробовать изменить значение вот такого ключа реестра:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl Session ManagerMemory ManagementSessionImageSize

Найдите ключ SessionImageSize и задайте ему значение 0x00000020.

Дополнительные настройки RDP клиента

Например ошибка «An internal error has occurred» у меня встретилась на Windows Server 2022 и там мне помогло в настройках клиента RDP отключение некой опции. Перейдите в дополнительные настройки клиента для удаленного подключения, где н вкладке «Experiens (Взаимодействие)» вам нужно убрать галку с опции «Восстановить подключение при разрыве (Reconnect if the connection is droped)«

Восстановить подключение при разрыве (Reconnect if the connection is droped)

На каких-то сайтах предлагалось именно активировать данный пункт.

Удаление кэша подключений

Еще одним методом решения внутренней ошибки подключения по RDP может выступать поврежденный кэш, который хранится на локальном компьютере пользователя. Для его отображения вам необходимо включить отображение скрытых папок и удалить содержимое папки:

C:Usersимя пользователяAppDataLocalMicrosoftTerminal Server Client

внутренняя ошибка RDP

Обновление 07.12.2022

В декабре я вновь столкнулся с внутренней ошибкой, она еще стала проявлять себя вот так:

Не удается подключиться к удаленному компьютеру

Внутренняя ошибка

Произошла внутренняя ошибка. Код ошибки: 0x4. Расширенный код ошибки: 0x0

внутренняя ошибка rdp error 0x4

В логах сервера очень много ошибок:

Она возникает, при каждой попытке войти на рабочий стол, это и есть проблема в моем конкретном случае. Устраните ее, и ошибка с подключекнием уйдет. Перезагрузка не нужна.

Данная ошибка говорит, что на тот сертификат, что использует удаленный сервер, нет прав у самого сервера, подробности выше по ссылке

ошибка 0x8009030D

На клиентской машине откуда я пытался произвести подключение было три события:

ID 1024: Выполняется подключение RDP ClientActiveX к серверу (ter104)

ID 1024: Выполняется подключение RDP ClientActiveX к серверу

ID 1105: Мультитранспортное подключение разорвано.

Мультитранспортное подключение разорвано.

ID 1028: Отключение RDP ClientActiveX (Причина= 2308)

Код 2808 — Ваш сеанс служб удаленных рабочих столов завершен. Соединение с удаленным компьютером было потеряно, возможно, из-за проблем с сетевым подключением. Попробуйте снова подключиться к удаленному компьютеру. Если проблема не исчезнет, ​​обратитесь к сетевому администратору или в службу технической поддержки.

Отключение RDP ClientActiveX (Причина= 2308)

Так как у меня это была виртуальная машина, то я смог легко подключиться через консоль. В случае с ошибкой «Отключение RDP ClientActiveX (Причина= 2308)«, я отключил на сервере и клиенте autotuninglevel:

netsh interface tcp set global autotuninglevel=disabled

Не забываем перезагрузиться.

netsh interface tcp set global autotuninglevel=disabled

Это не помогло, далее я выполнил еще несколько рекомендаций. Я установил на сервер валидный SSL сертификат для RDP сессии. В ошибке 0x907, RDP соединение разрывалось, так как клиентская система не доверяла самоподписному сертификату удаленного сервера. Это нужно поправить, ссылку я указал, обязательно проверьте, кто сейчас выступает в роли активного:

Get-WmiObject «Win32_TSGeneralSetting» -Namespace rootcimv2terminalservices -Filter «TerminalName=’RDP-tcp'»

Еще я создал параметр реестра MaxOutstandingConnections. В Windows по умолчанию есть ограничения на количество сетевых подключений, так например в серверной версии, это параметр равен 3000, в десктопной 100. Из-за нестабильной сети, они могут быстро забиваться. Одно из решений проблемы с внутренней ошибкой подключения, является увеличение этого значения. В командной строке в режиме администратора выполните:

REG ADD «HKLMSYSTEMCurrentControlSetControlTerminal Server» /v MaxOutstandingConnections /t REG_DWORD /d 65536

New-ItemProperty -Path «HKLM:SYSTEMCurrentControlSetControlTerminal Server»

-Name MaxOutstandingConnections -Value 10000 -PropertyType DWORD -Force

Создание MaxOutstandingConnections

После этого нужно перезагрузиться.

Временное решение

Пока вы не уберете ошибку «Код ошибки, возвращенный модулем шифрования: ошибка 0x8009030D», описанную выше, вы можете понизить уровень безопасности вот такими манипуляциями, это устранит «An internal error has occurred».

На обычном сервере все это помогло, а вот на ноде RDSH ошибка оставалась. Тут я решил проверить догадку с уровнем безопасности «Configure security settings». На моей ферме был уровень «Согласования (Negotiate)«

Configure security settings

Я пошел на сервер, где были проблемы подключения и решил проверить один параметр локальной политики gpedit.msc.

Конфигурация компьютера — Административные шаблоны- Компоненты Windows — Службы удаленных рабочих столов — Узел сеансов удаленных рабочих столов — Безопасность — Требовать использование специального уровня безопасности для удаленных подключений по протоколу RDP

Тут попробуйте выставить уровень RDP. В результате у меня после этих настроек все заработало. Теперь нужно понять, что изменилось. В настройках RDS фермы указано, что мы используем уровень согласование:

* Согласование: метод согласования принудительно применяет самый безопасный метод, поддерживаемый клиентом. Если поддерживается протокол TLS версии 1.0, то он используется для проверки подлинности сервера узла сеансов удаленных рабочих столов. Если протокол TLS не поддерживается, то для обеспечения безопасности взаимодействий используется собственное шифрование протокола удаленного рабочего стола (RDP), но проверка подлинности сервера узла сеансов удаленных рабочих столов не выполняется. В отличие от SSL-шифрования, использовать собственное шифрование RDP не рекомендуется.

Выбор уровня безопасности

Если и это вам не помогло, то нужно смотреть вариант в сторону обновления или переустановки драйверов на сетевую карту, тут вы определяете модель вашей карты или материнской платы, если в нее все интегрировано и обновляете. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Дополнительные ссылки

  • https://serverfault.com/questions/934026/windows-10-pro-rdp-server-an-internal-error-has-occurred
  • https://social.technet.microsoft.com/Forums/en-US/e1d60cc0-0096-4859-a0e7-eb7f11905737/remote-desktop-v10-error-0x4-from-mac?forum=winRDc
  • https://learn.microsoft.com/en-us/answers/questions/108219/can-not-rdp-to-2012-r2-standard-server-after-septe.html
  • https://serverfault.com/questions/541364/how-to-fix-rdp-on-windows-server-2012

Всем привет.

Время от времени администратору необходимо проводить аудит логов RDP подключений в Windows. Как правило, это может пригодиться при расследовании различных инцидентов на терминальных / RDS серверах Windows, когда от системного администратора требуется предоставить информацию: какие пользователи входили на RDS сервер, когда авторизовался и завершил сеанс конкретный пользователь, с какого устройства (имя или IP адрес) подключался RDP-пользователь, и т.п. 

Используем Powershell. Самый простой запрос:

Get-EventLog security -after (Get-date -hour 0 -minute 0 -second 0) | ?{$_.eventid -eq 4624 -and $_.Message -match ‘Тип входа:s+(10)s’} |  select -First  5 | Select $_.Message 

И более развернутый вариант. Обращаю ваше внимание на различие запросов по языку интерфейса.

# English версия

Get-EventLog -LogName Security -after (Get-date -hour 0 -minute 0 -second 0)| ?{(4624,4778) -contains $_.EventID -and $_.Message -match ‘Тип входа:s+(10)s’}| %{

(new-object -Type PSObject -Property @{

TimeGenerated = $_.TimeGenerated

ClientIP = $_.Message -replace ‘(?smi).*Source Network Address:s+([^s]+)s+.*’,’$1′

UserName = $_.Message -replace ‘(?smi).*Account Name:s+([^s]+)s+.*’,’$1′

UserDomain = $_.Message -replace ‘(?smi).*Account Domain:s+([^s]+)s+.*’,’$1′

LogonType = $_.Message -replace ‘(?smi).*Logon Type:s+([^s]+)s+.*’,’$1′

})

} | sort TimeGenerated -Descending | Select TimeGenerated, ClientIP `

, @{N=’Username’;E={‘{0}{1}’ -f $_.UserDomain,$_.UserName}} `

, @{N=’LogType’;E={

switch ($_.LogonType) {

2 {‘Interactive — local logon’}

3 {‘Network conection to shared folder)’}

4 {‘Batch’}

5 {‘Service’}

7 {‘Unlock (after screensaver)’}

8 {‘NetworkCleartext’}

9 {‘NewCredentials (local impersonation process under existing connection)’}

10 {‘RDP’}

11 {‘CachedInteractive’}

default {«LogType Not Recognised: $($_.LogonType)»}

}

}} | Export-Csv RDP-eng.txt  -Encoding UTF8

# Russian версия

Get-EventLog -LogName Security -after (Get-date -hour 0 -minute 0 -second 0)| ?{(4624,4778) -contains $_.EventID -and $_.Message -match ‘Тип входа:s+(10)s’}| %{

(new-object -Type PSObject -Property @{

TimeGenerated = $_.TimeGenerated

ClientIP = $_.Message -replace ‘(?smi).*Сетевой адрес источника:s+([^s]+)s+.*’,’$1′

UserName = $_.Message -replace ‘(?smi).*Имя учетной записи:s+([^s]+)s+.*’,’$1′

UserDomain = $_.Message -replace ‘(?smi).*Домен учетной записи:s+([^s]+)s+.*’,’$1′

LogonType = $_.Message -replace ‘(?smi).*Тип входа:s+([^s]+)s+.*’,’$1′

})

} | sort TimeGenerated | Select TimeGenerated, ClientIP `

, @{N=’Username’;E={‘{0}{1}’ -f $_.UserDomain,$_.UserName}} `

, @{N=’LogType’;E={

switch ($_.LogonType) {

2 {‘Interactive — local logon’}

3 {‘Network conection to shared folder)’}

4 {‘Batch’}

5 {‘Service’}

7 {‘Unlock (after screensaver)’}

8 {‘NetworkCleartext’}

9 {‘NewCredentials (local impersonation process under existing connection)’}

10 {‘RDP’}

11 {‘CachedInteractive’}

default {«LogType Not Recognised: $($_.LogonType)»}

}

}} | Export-Csv RDP-rus.txt  -Encoding UTF8

Если вас не интересует сама авторизация RDP-подключения то не обязательно анализировать журнал Security. Есть более простой способ. Открываем журнал Diagnostics -> Event Viewer -> Applications and Services Logs -> Microsoft -> Windows -> TerminalServices-RemoteConnectionManager->Operational и смотрим события с номером Event Id 1149. Для удобства можно отфильтровать журнал по событию с этим номером.

#——- Connection by RDP ——————

Так по имени сервера и логину пользователя найдем все состоявшиеся RDP подключения, которые есть в журнале событий.

$servername = «sccm01.forza.com»

$username = «Cooladmin»

 [xml]$equery = @»

<QueryList>

   <Query Id=»0″ Path=»Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational»>

   <Select Path=»Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational»>*[System[(EventID=1149)]] and *[UserData[EventXML[(Param1=’$username’)]]]</Select>

   </Query>

</QueryList>

«@

Get-WinEvent -ComputerName $servername -FilterXML $equery |

   Select-Object TimeCreated, @{Name=»User»;Expression={$_.Properties[0].Value}},

                              @{Name=»Domain»;Expression={$_.Properties[1].Value}},

                              @{Name=»Source Network Address»;Expression={$_.Properties[2].Value}},MachineName | Out-GridView

#——— Connections thru RD Gateway 1 —————-

Выводим состоявшиеся подключения через RD Gateway. Обратите внимание на то, что логин должен быть задан в полной форме.

$servername = «sccm01.forza.com»

$username = «forza.comCooladmin»

 [xml]$equery = @»

<QueryList>

   <Query Id=»0″ Path=»Microsoft-Windows-TerminalServices-Gateway/Operational»>

   <Select Path=»Microsoft-Windows-TerminalServices-Gateway/Operational»>*[System[(EventID=302)]] and *[UserData[EventInfo[(Username=’$username’)]]]</Select>

   </Query>

</QueryList>

«@

Get-WinEvent -ComputerName $servername -FilterXML $equery |

   Select-Object TimeCreated, @{Name=»User»;Expression={$_.Properties[0].Value}},

                              @{Name=»Source Network Address»;Expression={$_.Properties[1].Value}},

                              @{Name=»Resource»;Expression={$_.Properties[3].Value}},MachineName | Out-GridView

#——— Connections thru RD Gateway 2 —————-

Тоже самое только имя пользователя задается в формате RegEx для поиска по шаблону. Этот вариант будет работать очень медленно! К сожалению, Windows не поддерживает поиск по шаблону в XPath для значений.

$servername = «sccm01.forza.com»

$username = «Cooladmin»

[xml]$equery = @»

<QueryList>

   <Query Id=»0″ Path=»Microsoft-Windows-TerminalServices-Gateway/Operational»>

   <Select Path=»Microsoft-Windows-TerminalServices-Gateway/Operational»>*[System[(EventID=302)]]</Select>

   </Query>

</QueryList>

«@

Get-WinEvent -ComputerName $servername -FilterXML $equery |

   Select-Object TimeCreated, @{Name=»User»;Expression={$_.Properties[0].Value}},

                              @{Name=»Source Network Address»;Expression={$_.Properties[1].Value}},

                              @{Name=»Resource»;Expression={$_.Properties[3].Value}},MachineName |

              Where-Object {$_.User -match $username} | Out-GridView

Еще такой вариант — возможно вам понадобиться провести аудит активных RDP-сессий на ваших серверах. В этом случае вам поможет следующий скрипт, список исследуемых серверов помещаете в файл servers.txt, либо получаете прямым запросом из AD.

$Today = Get-Date

$SessionLis t = «`n`nRDP Session List — » + $Today + «`n`n»

$CurrentSN = 0

#$Servers = Get-ADComputer -filter {OperatingSystem -like «*server*»}

#$Servers = Import-Csv -Encoding UTF8 -path «D:PSservers.txt» -Delimiter «,» 

$Servers = Get-ADComputer -filter * -searchbase «OU=Infrastructure Servers,DC=forza,DC=com»

$NumberOfServers = $Servers.Count

ForEach ($Server in $Servers) {

    $ServerName = $Server.Name

    Write-progress -activity «Checking RDP Sessions» -status «Querying $ServerName» -percentcomplete (($CurrentSN/$NumberOfServers)*100)

    try

    {

        $queryResults = (qwinsta /server:$ServerName | foreach { (($_.trim() -replace «s+»,»,»))} | convertfrom-csv)

# Обращаю ваше внимание на различие запросa по языку интерфейса.

        ForEach($QueryResult in $QueryResults) {

        #    $RDPUser=$QueryResult.USERNAME

        #    $SessionType=$QueryResult.SESSIONNAME

        #    $SessionID=$QueryResult.ID

        #    $ReturnedCurrentState=$QueryResult.State

             $RDPUser = $QueryResult.ПОЛЬЗОВАТЕЛЬ

             $SessionType = $QueryResult.СЕАНС

             $SessionID = $QueryResult.ID

             $ReturnedCurrentState = $QueryResult.СТАТУС

            If($ReturnedCurrentState -eq $null){ $CurrentState=»Disconnected» } Else { $CurrentState=»Active» }

            If (($RDPUser -ne $NULL) -and ($SessionType -ne «console») -and ($SessionType -ne «services») -and ($SessionType -ne «rdp-tcp») -and ($RDPUser -ne «65536»)) {

                $SessionList=$SessionList + «`n» + $ServerName + » logged in by » + $RDPUser + » as » + $SessionType + «, session id «+ $SessionID + » is » + $CurrentState

            }

        }

    }

    catch

    {

        $SessionList=$SessionList + «`n Unable to query » + $ServerName 

        write-host «Unable to query $ServerName!» -foregroundcolor Red

    }

    $CurrentSN++

}

$SessionList + «`n`n»

На этом все.

In this article, we’ll describe how to get and audit the RDP connection logs in Windows. The RDP connection logs allow RDS terminal servers administrators to get information about which users logged on to the server when a specific RDP user logged on and ended up the session, and from which device (DNS name or IP address) the user logged on.

Contents:

  • RDP Connection Events in Windows Event Viewer
  • Getting Remote Desktop Login History with PowerShell
  • Outgoing RDP Connection Logs in Windows

The article is applicable when analyzing RDP logs for both Windows Server 2022/2019/2016/2012R2 and to desktop editions (Windows 11, 10, and 8.1).

RDP Connection Events in Windows Event Viewer

When a user connects to a Remote Desktop-enabled or RDS host, information about these events is stored in the Event Viewer logs (eventvwr.msc). Consider the main stages of RDP connection and related events in the Event Viewer, which may be of interest to the administrator

  1. Network Connection;
  2. Authentication;
  3. Logon;
  4. Session Disconnect/Reconnect;
  5. Logoff.

Network Connection – establishing a network connection to a server from the user’s RDP client. It is the event with the EventID 1149 (Remote Desktop Services: User authentication succeeded). If this event is found, it doesn’t mean that user authentication has been successful. This log is located in “Applications and Services Logs -> Microsoft -> Windows -> Terminal-Services-RemoteConnectionManager > Operational”. Enable the log filter for this event (right-click the log -> Filter Current Log -> EventId 1149).

windows event log Terminal-Services-RemoteConnectionManager filtering

You can list all RDP connection attempts with PowerShell:

$RDPAuths = Get-WinEvent -LogName 'Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational' -FilterXPath '<QueryList><Query Id="0"><Select>*[System[EventID=1149]]</Select></Query></QueryList>'
[xml[]]$xml=$RDPAuths|Foreach{$_.ToXml()}
$EventData = Foreach ($event in $xml.Event)
{ New-Object PSObject -Property @{
TimeCreated = (Get-Date ($event.System.TimeCreated.SystemTime) -Format 'yyyy-MM-dd hh:mm:ss K')
User = $event.UserData.EventXML.Param1
Domain = $event.UserData.EventXML.Param2
Client = $event.UserData.EventXML.Param3
}
} $EventData | FT

powershell script: get rdp conneciton events

Then you will get an event list with the history of all RDP connections to this server. The logs provide a username, a domain (in this case the Network Level Authentication is used; if NLA is disabled, the event description looks differently), and the IP address of the user’s computer.

EventID 1149 - Remote Desktop Services: User authentication succeeded

Authentication shows whether an RDP user has been successfully authenticated on the server or not. The log is located under Windows -> Security. So, you may be interested in the events with the EventID 4624 (An account was successfully logged on) or 4625 (An account failed to log on).

Please, pay attention to the LogonType value in the event description.

  • LogonType = 10 or 3 — if the Remote Desktop service has been used to create a new session during log on;
  • LogonType = 7, means that a user has reconnected to the existing RDP session;
  • LogonType = 5 – RDP connection to the server console (in the mstsc.exe /admin mode).

security log: rdp logon event with the username and ip adress of the remote client

In this case, the user name is contained in the event description in the Account Name field, the computer name in the Workstation Name, and the user IP in the Source Network Address.

Please, note the value of the LogonID field. This is a unique user RDP session identifier that helps track the user’s further activity. However, if an RDP session is disconnected and a user reconnects to it, the user will be assigned a new LogonID (although the RDP session remains the same).

You can get a list of successful RDP authentication events (EventID 4624) using this PowerShell command:

Get-EventLog security -after (Get-date -hour 0 -minute 0 -second 0) | ?{$_.eventid -eq 4624 -and $_.Message -match 'logon type:s+(10)s'} | Out-GridView

list sucess rdp auth event with an EventID 4624

Logon refers to an RDP login to Windows. EventID 21 – this event appears after a user has been successfully authenticated (Remote Desktop Services: Session logon succeeded). This events are located in the “Applications and Services Logs -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Operational”. As you can see, here you can find the ID of a user RDP session — Session ID.

EventID 21 - Remote Desktop Services: Session logon succeeded

EventID – 21  (Remote Desktop Services: Shell start notification received) indicates that the Explorer shell has been successfully started (the Windows desktop appears in the user’s RDP session).

Session Disconnect/Reconnect – session disconnection and reconnection events have different IDs depending on what caused the user disconnection (disconnection due to inactivity set in timeouts for RDP sessions, Disconnect option has been selected by the user in the session, RDP session ended by another user or an administrator, etc.). You can find these events in the Event Viewer under “Applications and Services Logs -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Operational”. Let’s consider the RDP Event IDs that might be useful:

  • EventID – 24 (Remote Desktop Services: Session has been disconnected) –a user has disconnected from the RDP session;
  • EventID – 25 (Remote Desktop Services: Session reconnection succeeded) – a user has reconnected to the existing RDP session on the server;
  • EventID – 39 (Session <A> has been disconnected by session <B>) – a user has disconnected from the RDP session by selecting the corresponding menu option (instead of just closing the RDP client window). If the session IDs are different, a user has been disconnected by another user (or administrator);
  • EventID – 40 (Session <A> has been disconnected, reason code <B>). Here you must check the disconnection reason code in the event description. For example:
    • reason code 0 (No additional information is available) means that a user has just closed the RDP client window;
    • reason code 5 (The client’s connection was replaced by another connection) means that a user has reconnected to the previous RDP session;
    • reason code 11 (User activity has initiated the disconnect) a user has clicked the Disconnect button in the start menu.

EventID 4778 in Windows -> Security log (A session was reconnected to a Window Station). A user has reconnected to an RDP session (a user is assigned a new LogonID).

EventID 4779 in “Windows -> Security” log (A session was disconnected from a Window Station). A user has been disconnected from an RDP session.

Logoff refers to the end of a user session. It is logged as the event with the EventID 23 (Remote Desktop Services: Session logoff succeeded) under “Applications and Services Logs -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Operational”.

EventID 23 - Remote Desktop Services: Session logoff succeeded

At the same time the EventID 4634 (An account was logged off) appears in the Security log.

The EventID 9009  (The Desktop Window Manager has exited with code <X>) in the System log means that a user has initiated logoff from the RDP session with both the window and the graphic shell of the user have been terminated.

EventID 4647 — User-initiated logoff

Getting Remote Desktop Login History with PowerShell

Here is a short PowerShell script that lists the history of all RDP connections for the current day from the terminal RDS server event logs. The resulting table shows the connection time, the client’s IP address (DNS computername), and the remote user name (if necessary, you can include other LogonTypes in the report).

Get-EventLog -LogName Security -after (Get-date -hour 0 -minute 0 -second 0)| ?{(4624,4778) -contains $_.EventID -and $_.Message -match 'logon type:s+(10)s'}| %{
(new-object -Type PSObject -Property @{
TimeGenerated = $_.TimeGenerated
ClientIP = $_.Message -replace '(?smi).*Source Network Address:s+([^s]+)s+.*','$1'
UserName = $_.Message -replace '(?smi).*ssAccount Name:s+([^s]+)s+.*','$1'
UserDomain = $_.Message -replace '(?smi).*ssAccount Domain:s+([^s]+)s+.*','$1'
LogonType = $_.Message -replace '(?smi).*Logon Type:s+([^s]+)s+.*','$1'
})
} | sort TimeGenerated -Descending | Select TimeGenerated, ClientIP `
, @{N='Username';E={'{0}{1}' -f $_.UserDomain,$_.UserName}} `
, @{N='LogType';E={
switch ($_.LogonType) {
2 {'Interactive - local logon'}
3 {'Network connection to shared folder)'}
4 {'Batch'}
5 {'Service'}
7 {'Unlock (after screensaver)'}
8 {'NetworkCleartext'}
9 {'NewCredentials (local impersonation process under existing connection)'}
10 {'RDP'}
11 {'CachedInteractive'}
default {"LogType Not Recognised: $($_.LogonType)"}
}
}}

powershell: list todays rdp logons with an ip and username

This method allows you to collect and parse RDP connection logs on a standalone RDSH server. If you have multiple servers in the RDS farm, you can query each of them with this script, or get logs from a management server with the Remote Desktop Connection Broker role.

You can export RDP connection logs from the Event Viewer to a CSV file (for further analysis in an Excel spreadsheet). You can export the log from the Event Viewer GUI (assuming Event Viewer logs are not cleared) or via the command prompt:

WEVTUtil query-events Security > c:psrdp_security_log.txt

Or with PowerShell:

get-winevent -logname "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" | Export-Csv c:psrdp_connection_log.txt  -Encoding UTF8

If your users connect to corporate RDS hosts through the Remote Desktop Gateway, you can check the user connection logs in the Microsoft-Windows-TerminalServices-Gateway log by the EventID 302. For example, the following PowerShell script will display the specified user’s connection history through RD Gateway:

$rdpusername="b.smith"
$properties = @(
@{n='User';e={$_.Properties[0].Value}},
@{n='Source IP Adress';e={$_.Properties[1].Value}},
@{n='TimeStamp';e={$_.TimeCreated}}
@{n='Target RDP host';e={$_.Properties[3].Value}}
)
(Get-WinEvent -FilterHashTable @{LogName='Microsoft-Windows-TerminalServices-Gateway/Operational';ID='302'} | Select-Object $properties) -match $rdpusername

rd gateway user connection logs

You can check the following RD Gateway user connection events in the Microsoft-Windows-TerminalServices-Gateway event log:

  • 300 — The user NAME, on client computer DEVICE, met resource authorization policy requirements and was therefore authorized to connect to resource RDPHOST;
  • 302 — The user NAME, on client computer DEVICE, connected to resource RDPHOST;
  • 303 — The user NAME, on client computer DEVICE, disconnected from the following network resource: RDPHOST. Before the user disconnected, the client transferred X bytes and received X bytes. The client session duration was X seconds.

You can display the list of current remote sessions on your RDS host with the command:

qwinsta
The command returns the session ID, the USERNAME, and the session state (Active/Disconnect). This command is useful when you need to get the user’s RDP session ID when using shadow Remote Desktop connections.

Qwinsta - list RDP sessions and usernames

You can display the list of the running processes in the specific RDP session (the session ID is specified):

qprocess /id:5

qprocess - get process list for an RDP session

Outgoing RDP Connection Logs in Windows

You can also view outgoing RDP connection logs on the client side. They are available in the following event log: Application and Services Logs -> Microsoft -> Windows -> TerminalServices-ClientActiveXCore -> Microsoft-Windows-TerminalServices-RDPClient -> Operational.

For example, EventID 1102 occurs when a user connects to a remote Windows Server RDS host or a Windows 10/11 computer with RDP enabled (desktop Windows editions also support multiple simultaneous RDP connections).

The client has initiated a multi-transport connection to the server 192.168.13.201.

Microsoft-Windows-TerminalServices-RDPClient connection event in Windows

The following RDP script will display the history of RDP client connections on the current computer:

$properties = @(
@{n='TimeStamp';e={$_.TimeCreated}}
@{n='LocalUser';e={$_.UserID}}
@{n='Target RDP host';e={$_.Properties[1].Value}}
)
Get-WinEvent -FilterHashTable @{LogName='Microsoft-Windows-TerminalServices-RDPClient/Operational';ID='1102'} | Select-Object $properties

rdp client connection events

The script returns the SIDs of the users who initiated RDP connections on this computer, as well as the DNS names/IP addresses of the Remote Desktop hosts that the users connected to. You can convert SIDs to usernames as follows.

Включаем шифрование RDP и смотрим логи

Включаем шифрование RDP

Сессии RDP поддерживают четыре типа шифрования

  • RDP Low Encryption – по умолчанию (самый старый режим). Может согласовать шифрование на базе 56-ти битового DES или 40-ка битового RC2. Очень плохой вариант. Например, если включить его, то не включится TLS.
  • RDP Client Compatible Encryption – Попробует до 128 бит RC4, но сразу согласится на DES/RC2. Очень плохой вариант. Тоже не совместим с TLS.
  • RDP High Encryption – Минимально допустимый режим. Потребует хотя бы 128-ми битовый RC4. Работает со всеми серверами, начиная с Windows 2000 Server w/HEP.
  • RDP FIPS140-1 Encryption – Будет поддерживать современные симметричные алгоритмы и в явном виде не будет поддерживать RC2, RC4, одиночный DES, а также будет заставлять использовать для вычисления целостности (Message Authentication Code – MAC) алгоритм SHA-1, а не MD5

Но в полном объеме шифрование не заработает:

  • нет валидного сертификата SSL (самоподписанный сертификат)
  • будет ругаться RDP при подключении
  • будет ругаться сисадмин в офисе

Но мы делаем временный доступ на две недели и надеемся, что злые боты нас не найдут за это время.

Включаем шифрование RDP и смотрим логи

RDP ругается на сертификат…

Конфигурация компьютера —> Административные шаблоны —> Компоненты Windows —> Службы удаленных рабочих столов —>  Узел сеансов удаленных рабочих столов—>Безопасность

Включаем шифрование RDP и смотрим логи

«Установить уровень шифрования для клиентских подключений». Включаем и выбираем «Высокий» уровень. Это нам даст 128-битное шифрование.

Включаем параметр «Требовать безопасное RPC-подключение»

Устанавливаем параметр «Требовать использования специального уровня безопасности для удаленных подключений по методу RDP» в значение «Включено» и Уровень безопасности в значение «SSL TLS 1.0»

Самый максимальный уровень шифрования обеспечивается стандартом FIPS 140-1 (для Windows 7).

Federal Information Processing Standards (FIPS) – Федеральный стандарты по обработке информации. Стандарт компьютерной безопасности правительства США. В настоящее время принят FIPS 140-2.

Конфигурация компьютера —> Конфигурация Windows —> Параметры безопасности —> Локальные политики —> Параметры безопасности

Включаем шифрование RDP и смотрим логи

Чтобы включить использование FIPS 140-1 – включаем параметр «Системная криптография: использовать FIPS-совместимые алгоритмы для шифрования, хэширования и подписывания»

ВАЖНО: если Вы подключаетесь из Windows XP (или к Windows XP) – не включайте это шифрование, Windows XP ничего не знает про FISP

Подключаем RDP Windows XP из Windows 7

Просмотр логов подключения RDP

Да, Windows ведет подробные логи подключения, только они сильно спрятаны в настройках и немного не очевидны.

Администрирование —> Просмотр событий —> Журналы приложений и служб —> Microsoft —> Windows  —> TerminalServices-LocalSessionManager —> Operational

И это общий лог. Для получения списка по конкретным событиям нужно отфильтровать по коду события… Правой клавишей мышки по  Operational —> “Фильтр”

Включаем шифрование RDP и смотрим логи

  • EventID – 21 (Remote Desktop Services: Shell start notification received) означает успешный запуск оболочки Explorer (появление окна рабочего стола в RDP сессии
  • EventID – 24 (Remote Desktop Services: Session has been disconnected) – пользователь отключился от RDP сессии.
  • EventID – 25 (Remote Desktop Services: Session reconnection succeeded) – пользователь переподключился к своей имеющейся RDP сессии на сервере.
  • EventID – 39 (Session <A> has been disconnected by session <B>) – пользователь сам отключился от своей RDP сессии, выбрав соответствующий пункт меню (а не просто закрыл окно RDP клиента). Если идентификаторы сессий разные, значит пользователя отключил другой пользователь (или администратор).
  • EventID – 40 (Session <A> has been disconnected, reason code <B>). Здесь нужно смотреть на код причины отключения в событии. Например:
    • reason code 0 (No additional information is available)– обычно говорит о том, что пользователь просто закрыл окно RDP клиента.
    • reason code 5 (The client’s connection was replaced by another connection) – пользователь переподключился к своей старой сессии.
    • reason code 11 (User activity has initiated the disconnect) – пользователь сам нажал на кнопку Disconnect в меню

Что бы посмотреть все входы RDP – в фильтре пишем 21,25

Так, а где IP входа? По умолчанию аудит IP отключен. Идем в настройки политик безопасности secpol.msc

Включаем шифрование RDP и смотрим логи

Включаем регистрацию Успеха и Отказа

Вот тут читаем подробнее (+защита от перебора IPBan для Wondows)

Защищаем RDP сервер от перебора паролей с блокировкой по IP

Для создания сложностей ботам (подбор паролей на порту 3389) используем

Классический вход в Windows

Почитать в разделе

RDP

Удаленный рабочий стол RDP Windows — он же Remote Desktop Protocol Проприетарный протокол прикладного уровня, позаимствованный Microsoft из купленной у PictureTel (ныне известной как Polycom) телекоммуникационной программы Liveshare Plus (названной впоследствии NetMeeting), использующийся для обеспечения удалённой работы пользователя с сервером, на котором запущен сервис терминальных подключений. Актуальные версии Версия 6.1 была выпущена в феврале 2007 и включена в Windows Server 2008, и в пакет обновления Windows Vista SP1 и Windows XP SP3.
Версия 7 (вышла в составе Windows 7, поддерживается в Windows XP, где по умолчанию в данной версии установлена 6.1)
Версия 7.1…
(Читать полностью…)

  • Всего статей в разделе: 8
  • Показано статей в списке: 7
  • Сортировка: название по алфавиту

Борьба с “крестиком” терминального сеанса RDP

Вот он вредитель (на панели подключений при работе на полном экране) – сисадмины поймут всю боль Проблема в том, что “крестик” только закрывает “Удаленный рабочий стол” на ПК пользователя, но оставляет на сервере открытую терминальную сессию. Если пользователей много – то все их сессии остаются на сервере открытыми и занимают память. Варианты решений.
Вообще убрать панель от пользователя – в настройках при создании удаленного рабочего стола (выход только через завершение сеанса) Убрать сам “крестик” (выход только через завершение сеанса)
Есть специальная программа, которая крестик убирает. Смотреть здесь. И будет вот так :) Ограничить время сессии
(пункты 1 и 2 могут…
(Читать полностью…)

Как включить звук при подключении RDP

По умолчанию обычно так В настройках файла RDP все включено — но звука все равно нет. Еще надо сделать настройки и разрешения на самой машине, к которой мы подключаемся.
Настройки звука на целевом компьютере RDP
Для начала нам необходима служба
Проверка работы службы Windows Audio
«Пуск» — «Администрирование» — «Службы», в списке находите «Windows Audio» и два раза кликаем по ней. В настройках службы нужно установить «Тип запуска — Автоматически», «применить» и затем и можно сразу же запустить службу с помощью соответствующей кнопки ВАЖНО: если служба Windows Audio не запускается — убедитесь, что включены и запущены…
(Читать полностью…)

Настраиваем RDP (remote desktop protocol)

Удаленный рабочий стол RDP ВАЖНО: Если Windows-машина напрямую «смотрит» в большой Интернет (у нее есть «белый» IP-адрес) — то номер порта 3389 RDP поменять обязательно! Иначе доступ RDP (после разрешения его использовать) взломают достаточно быстро — с применением сетевых ботнетов со всего мира. Читаем статью
Порты сервера и их основная защита Для долговременной удаленной работы необходимо использовать: или создать VPN-тунель и уже внутри него подключаться через RDP
или использовать профессиональные средства сервер-клиент типа RAdmin Для быстрого подключения из дома к ПК на работе читаем статью Подключаем компьютер к рабочему ПК…
(Читать полностью…)

Переключение языков при RDP

При подключении через RDP (удаленный рабочий стол Windows) Вы можете увидеть непривычную картинку Язык ввода «русский / английский» переключается — но при вводе остается только английская клавиатура. И появилась дополнительная иконка «клавиатуры». Что делать? В Windows есть: язык ввода
языковая раскладка   Проблема возникает, если язык клиентской машины перед подключением к RDP не совпадает с языком по умолчанию в серверной машине. Например вводите пароль из английских букв и не переключая языка конектитесь к серверу терминалов, на котором по умолчанию русский язык — получите необходимость «двойного» переключения языка и раскладки. Можно…
(Читать полностью…)

Подключаем RDP Windows XP из Windows 7

Будет интересно. Основная статья по настройке удаленного рабочего стола. Еще одна статья Подключаем компьютер к рабочему ПК через RDP (Windows 7) Простая задача — есть Windows XP, мы к ней хотим подключиться из Windows 7 через удаленный рабочий стол. Вроде все оно просто — но есть небольшое количество грабелек, разложенных на этом пути. Берем админский бубен: «Мы в город Изумрудный идём дорогой трудной….»
Для подключения через RDP нам нужна Windows XP Professional SP3
Да, на форумах полно советов, как из Home сделать Professional. Не верьте. Все советы касаются изменений в реестре. И да — система будет показывать, что она теперь Professional — но это только…
(Читать полностью…)

Подключаем компьютер к рабочему ПК через RDP (Windows 7)

Как из дома подключиться к рабочему ПК по RDP? Внутри локальной сети у компьютера есть только локальный IP-адрес вида 192.168.1.2, со стороны Интернета такой компьютер не виден (т.е. к нему напрямую невозможно адресовать пакет по внешнему IP адресу). Обычно внешний IP-адрес провайдер выдает динамический: придется тоже его менять в настройках RDP
некоторые провайдеры меняют IP один раз в месяц В крайнем случае (если очень надо) — можно купить услугу «выделенный IP» и адрес от провайдера не будет меняться. А наш домашний ПК — он там, за интернетом — в свой локальной сети. Можно подключиться из дома к рабочему компьютеру в локальной сети офиса через RDP: …
(Читать полностью…)

Формат файла RDP

Это собственно файл — а не ярлык рабочего стола. Данный настроенный файл можно переслать другому пользователю, он его сохранит —  и всё будет работать. Более того — это простой текстовый файл, в котором хранятся все настройки удаленного подключения и этот файл можно открыть Блокнотом. Кстати, часть параметров не редактируется через стандартные настройки, их можно вписать руками.
Структура файла RDP
screen mode id:i: — 1 — удаленный сеанс выполняется в оконном режиме, 2 — в полноэкранном. Редактируется на вкладке ”Экран” окна ”Параметры” средства ”Подключение к удаленному рабочему столу”. use multimon:i: — 0 — запрет поддержки нескольких мониторов, 1 — разрешение поддержки…
(Читать полностью…)

Понравилась статья? Поделить с друзьями:
  • Как посмотреть ошибки php на сайте
  • Как посмотреть ошибки opel zafira b
  • Как посмотреть ошибки opel astra h автомат
  • Как посмотреть ошибки opel astra gtc
  • Как посмотреть логи ошибок windows 10 через cmd