Встроенный Remote Desktop Connection (RDP) клиент Windows (mstsc.exe) при каждом успешном соединении с удаленным компьютером сохраняет в системе его имя (или ip адрес) и имя пользователя, под которым был выполнен вход. При следующем запуске клиент RDP предлагает пользователю выбрать одно из подключений, которыми он уже пользовался ранее. Пользователь может выбрать из списка имя удаленного RDP/RDS сервера, и клиент автоматически подставляет используемое ранее для входа имя пользователя.
Это удобно с точки зрения конечного пользователя, но не безопасно. Особенно, когда вы подключаетесь к своему RDP серверу с общедоступного или недоверенного компьютера.
Информация о всех RDP сессиях хранится индивидуально для каждого пользователя компьютера в реестре, т.е. обычный пользователь (не администратор) не сможет просмотреть историю удаленных подключений другого пользователя.
В этой статье мы покажем, где в Windows хранится история подключений к удаленным рабочим столам и сохраненные пароли, и каким образом можно эту историю очистить.
Удаление журнала RDP подключений из реестра системы
- Откройте редактор реестра regedit.exe и перейдите в ветку HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client;
- Внутри этого раздела нас интересуют две ветки: Default (хранит историю о 10 последних RDP подключениях) и Servers (содержит список всех RDP серверов и имен пользователей, используемых ранее для входа);
- Разверните ветку реестра HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default, в которой содержится список 10 адресов или имен удаленных компьютеров, которые использовались последними (MRU – Most Recently Used). Имя (IP адрес) удаленного сервера хранится в значении ключа MRU*. Чтобы очистить историю последних RDP-соединений, выделите все ключи с именами MRU0-MRU9, щелкните правой клавишей и выберите пункт Delete;
- Теперь разверните ветку HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers. В ней содержится список всех RDP подключений, которые использовались ранее под этим пользователем. Разверните ветку с именем (IP адресом) любого хоста. Обратите внимание на значение параметра UsernameHint (подсказка имени пользователя). В нем указано имя пользователя, использующееся для подключения к RDP/RDS хосту. Именно это имя пользователя будет подставлено в окно клиента mstsc.exe, когда вы в следующий раз попытаетесь подключится к этому хосту. Кроме того в переменной CertHash находится отпечаток RDP сертификата сервера (см. статью о настройке доверенных TLS/SSL сертфикатов для RDP);
- Чтобы очистить историю всех RDP-подключений и сохраненных имен пользователей нужно очистить содержимое ветки реестра Servers. Т.к. выделить все вложенные ветки не получится, проще всего удалить ветку Servers целиком, а затем пересоздать ее вручную;
- Кроме указанных выше параметров и веток реестра, вам необходимо удалить файл дефолтного RDP подключения Default.rdp. В этом файле хранится информацию о самом последнем RDP подключении. Файл является скрытым и находится в каталоге Documents (Документы);
- Windows также сохраняет историю RDP подключений в списках быстрого перехода (jump lists). Если вы наберете в поисковой строке Windows 10
mstsc
, то в списке появится ранее использованные RDP подключения. Вы можете отключить ведение истории быстрого перехода с помощью dword параметра реестра Start_TrackDocs в веткеHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
, либо можно очистить списки Resent Items, удалив файлы в каталоге%AppData%\Microsoft\Windows\Recent\AutomaticDestinations
.
Скрипт очистки истории (логов) RDP подключений
Выше мы показали, как вручную очистить историю RDP подключений в Windows. Однако делать это вручную (особенно на нескольких компьютерах) – занятие достаточно долгое. Поэтому мы предлагаем небольшой скрипт (bat-файл), который позволяет автоматически очистить историю подключений к удаленным рабочим столам.
Для автоматизации очистки истории RDP, данный скрипт можно поместить в автозагрузку, либо распространить его на компьютеры пользователей с помощью логоф скрипта групповой политики.
@echo off
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /va /f
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f
reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"
attrib -s -h %userprofile%\documents\Default.rdp
del %userprofile%\documents\Default.rdp
del /f /s /q /a %AppData%\Microsoft\Windows\Recent\AutomaticDestinations
Последовательно разберем все команды скрипта:
- Отключен вывод информации в консоль;
- Удаление всех параметров в ветке HKCU\Software\Microsoft\Terminal Server Client\Default (очистка списка последних 10 RDP соединений);
- Удаление ветки HKCU\Software\Microsoft\Terminal Server Client\Servers вместе с вложенными элементами (очистка списка всех RDP подключений и сохраненных имен пользователей);
- Пересоздаем ветку реестра Servers;
- Убираем атрибуты Скрытый и Системный у файла default.rdp в каталоге профиля текущего пользователя;
- Удаление файла default.rdp;
- Очистка Recent Items.
Вы можете скачать готовый скрипт тут: CleanRDPHistory.bat
Кроме того, можно очистить историю подключений RDP с помощью следующего PowerShell скрипта:
Get-ChildItem "HKCU:\Software\Microsoft\Terminal Server Client" -Recurse | Remove-ItemProperty -Name UsernameHint -Ea 0
Remove-Item -Path 'HKCU:\Software\Microsoft\Terminal Server Client\servers' -Recurse 2>&1 | Out-Null
Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Terminal Server Client\Default' 'MR*' 2>&1 | Out-Null
$docsfoldes = [environment]::getfolderpath("mydocuments") + '\Default.rdp'
remove-item $docsfoldes -Force 2>&1 | Out-Null
Как запретить Windows сохранять историю RDP подключений?
Если вы хотите, чтобы Windows не сохраняла историю RDP подключений, нужно запретить запись в ветку реестра HKCU\Software\Microsoft\Terminal Server Client для всех аккаунтов, в том числе System. Сначала отключите наследование разрешений на указанную ветку (Permissions -> Advanced -> Disable inheritance). Затем измените ACL на ветку, выставив Deny галочку для пользователей (но, вы должны понимать, что это уже unsupported configuration…).
В результате mstsc просто не сможет записать информацию об RDP подключении в реестр.
Очистка Bitmap кэша RDP
В клиенте Remote Desktop Connection есть функционал кэширования изображений (persistent bitmap caching). Клиент RDP при подключении сохраняет редко изменяющиеся куски удаленого экрана в виде кэша растровых изображений. Благодаря этому клиент mstsc.exe загружает из локального кэша части экрана, которые не изменились с момента последней прорисовки. Этот механизм кэширования RDP уменьшает количество данных, передаваемых по сети.
RDP кэш представляет собой два типа файлов в каталоге
%LOCALAPPDATA%\Microsoft\Terminal Server Client\Cache
:
- *.bmc
- bin
В этих файлах хранятся сырые растровые изображения RDP экрана в виде плиток 64×64 пикселя. С помощью простых PowerShell или Python скриптов (легко ищутся по запросу RDP Cached Bitmap Extractor) можно получить PNG файлы с кусками экрана рабочего стола и использовать их для получения конфиденциальной информации. Размер плиток мал, но достаточен для получения полезной информации для изучающего RDP кэш.
Вы можете запретить RDP клиенту сохранять изображение экрана в кэш, отключив опцию Persistent bitmap caching (Постоянное кэширование точечных рисунков) на вкладке Advanced.
Bitmap Disk Cache Failure. Your disk is full or the cache directory is missing or corrupted. Some bitmaps may not appear.
В этом случае нужно очистить каталог RDP кэша или отключить опцию Bitmap Caching.
Удаление сохраненных RDP паролей
Если при установке удалённого RDP подключения, перед вводом пароля пользователь поставил галку Remember Me / Запомнить меня, то имя пользователя и пароль будут сохранены в системном менеджере паролей системы (Credential Manager). При следующем подключении к этому же компьютеру, RDP клиент автоматически использует сохранённый ранее пароль для авторизации на удаленном компьютере.
Вы можете удалить сохраненный пароль прямо из окна клиента mstsc.exe. Выберите в списке подключений тоже самое подключение, и нажмите на кнопку Delete. Далее подтвердите удаление сохраненного пароля.
Либо можно удалить сохраненный пароль непосредственно из менеджера паролей Windows. Перейдите в следующий раздел Панели Управления: Control Panel\User Accounts\Credential Manager. Выберите Manage Windows Credentials и в списке сохранённых паролей найдите имя компьютера (в формате
TERMSRV/192.168.1.100
). Разверните найденный элемент и нажмите на кнопку Remove.
В доменной среде вы можете запретить сохранение паролей для RDP подключений можно с помощью политики Network access: Do not allow storage of passwords and credentials for network authentication (см. статью).
Очистка RDP логов на сервере
Логи подключения так же ведутся на стороне RDP/RDS сервера. Вы можете найти информацию об RDP подключениях в логах Event Viewer:
- Security;
- Applications and Services Logs -> Microsoft -> Windows -> TerminalServices-RemoteConnectionManager -> Operational;
- TerminalServices-LocalSessionManager -> Admin.
Вы можете очистить журналы Event Viewer на RDP сервере с помощью wevtutil или PowerShell.
Отличная статья, спасибо за толковый материал.
С правами рядового юзера должно работать? У меня не работает. Скрипт после успешного выполнения трех операций пишет «Не найден файл: Default.rdp», и сервер все равно висит в списке mstsc.
С правами рядового пользователя удаляется история rdp подключений, хранящяяся в реестре. Адрес последнего сервера, к которому подключались по rdp хранится в файле Default.rdp, поэтому стоит найти и удалить его руками. Проверьте в папке %userprofile%\documents\ этот файл лежит?
> Проверьте в папке %userprofile%\documents\ этот файл лежит?
Проверил — нету его там.
Попробуйте найти файл Default.rdp поиском.. Не забудьте, что этот файл по-умолчанию скрыт.
И еще один вопрос: какая ОС? Win 7 Русская?
Нашел! Действительно, он там был. Почему же его скрипт не видел?
Ага. Когда я попытался его запустить из Проводника, он мне выдал его свойства с надписью «Осторожно, этот файл был получен с другого компьютера…» и кнопочкой Разблокировать. Я нажал ее. Тогда после запуска батника уже открылась консоль и удалился файл Default.rdp. Спасибо!
Надыбал утилиту Remote Desktop History AutoCleaner. Всё стало проще 🙂
Подскажите пожалуйста, как удалить сохраненную информацию о подключении к небезопасному компьютеру? Что бы повторно вышло предупреждение, что компьютер может быть не безопасен.
Приведенного выше сценарий не помогает?
Правильно ли я понял, что требуется удалить данные о недоверенных сертфикатах RDP серверов (окно «The identity of the remote computer cannot be verified», которые были добавлены пользователем в доверенные проставкой галки «Don’t ask me again for connections to this computer»?
Эти сертфикаты удаляются из mmc консоли управления сертификатам: mmc.exe -> Add Snap In -> Cerificates -> Computer Account -> Local Computer
Найдите и удалите эти сертфикаты в контейнере Remote Desktop -> Certificates.
Если не удаляется Default, помещайте батник в папку с файлом.
Remote Desktop History AutoCleaner — крутая штука и бесплатная. Антивирь вроде не ругался.
После установки прячется в компе, и если я правильно понял, по наблюдениям, то после закрытия RDP, максимум в течении 20 секунд зачищает следы. Как будто и не вводилось ничего.
Спасибо за статью, добавил в закладки.
Во многих местах подключаюсь к серверу своему, приходится чистить, чтобы не мешало и не светилось подключение на чужом ПК 🙂
Спасибо, статья замечательная.
Спасибо за статью!
Однако, удаление Default.rdp при запуске скрипта с диска отличного от C: не сработает ибо cd на другой диск невозможно. Лучше последние три строки заменить на:
attrib -s -h %userprofile%\documents\Default.rdp
del %userprofile%\documents\Default.rdp
Все верно, лучше задавать путь через переменную окружения. Это универсально 🙂
Спасибо!
А есть ли способ передавать имя пользователя для удаленного подключения через командную строку или записать в файл подключения — *.rdp, чтобы имя пользователя не сохранялось ? Чтобы все было(все параметры подключения) в файле *.rdp?
Все, всем спасибо, нашел:
username:s:имя_пользователя
Премного благодарна. Очень полезный пост!
Спасибо за статью! Мне помогло «Удаление журнала RDP подключений из реестра системы». Наконец-то можно нормально работать сервером.
Не могу очистить списки Resent Items ((
Файлы в каталоге %AppData%\Microsoft\Windows\Recent\AutomaticDestinations удаляю, а они вновь возрождаются!
=O
)) Спасибо за статью!
Остальное всё работает ))
Ну тут главное их удалить, чтобы история сесиий пропала 🙂 Новые будут появляться пока вы совсем не отключите recent items (в общем то удобная штука).
В том-то и дело, что история не пропадает.
Я закрываю все RDP сессии, руками удаляю эти файлы и они возрождаются в ту же секунду.
((
и по-прежнему присутствуют в Resent Items ((
Запретил сохранять историю RDP подключений, но в джамп листе все ещё появляется Ip к которому подключался, так должно быть или я что-то неправильно делаю?
Вы можете отключить ведение истории быстрого перехода с помощью dword параметра реестра Start_TrackDocs в ветке HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
Не понимаю как это сделать, у меня по этому направлению отсуствует файл Start_trackDocs.
Помогите отключить этот чертов JUnp list
Добрый день.
Есть ли какой либо вариант в 10 перестать подставлять по умолчанию учетную запись в RDP сессию?
Приходится постоянно выбирать «больше вариантов» и указывать учетные записи.