Настройка RDP сервера Windows (RDP Wrapper), XRDP в Ubuntu и клиентов

RDP (Remote Desktop Protocol — протокол удалённого рабочего стола) — протокол прикладного уровня, разработанный Майкрософт, использующийся для обеспечения удалённой работы пользователя с сервером, на котором запущен сервис терминальных подключений. Клиенты существуют практически для всех версий Windows (включая Windows CE и Mobile), Linux, FreeBSD, Mac OS X. По умолчанию используется порт TCP 3389. Официальное название Майкрософт для клиентского ПО — Remote Desktop Connection или Terminal Services Client (TSC), в частности, клиент в Windows 2k/XP/2003/Vista/2008/7 называется mstsc.exe.

  • Утилита командной строки Linux rdesktop (grdesktop)
    apt install rdesktop
    rdesktop 192.202.123.123:50009

    Для подключения к Microsoft Azure правильно укажите внешний порт

  • remmina более удобный выбор, чем rdesktop
    apt install remmina

Программа RdpGuard защищает от brute-force атак. Защищаемые протоколы и службы: RDP, FTP, IMAP, POP3, SMTP, MySQL, MS-SQL, IIS Web Login, ASP.NET Web Forms, MS Exchange, RD Web Access, VoIP/SIP, и т.д.

Поддерживаемые ОС: Windows Vista/7/8/10/11 and Windows Server 2008/2012/2016/2019/2022

Программа получает события из стандартного журнала Windows, и если количество неудачных попыток входа в систему с одного IP-адреса достигает установленного предела, IP-адрес злоумышленника будет заблокирован на указанный в настройках период времени. Блокирование IP-адреса осуществляется с помощью стандартного встроенного Windows Firewall.

Все операции реализованы стандартными средствами Windows, а программа только автоматически добавляет/удаляет IP-адреса в брандмауэр, благодаря чему поддерживается высокая производительность, совместимость и стабильность. Для конфигурирования имеется как GUI, так и интерфейс командной строки. Приложение написано на .Net 4, при отсутствии его необходимо будет установить. При блокировании/разблокировании/отказе входа можно назначить дополнительное действие. В программе можно задавать белые списки, например, для интрасети или удаленных офисов. Ввиду того, что brute-force атаки теперь производятся не только по стандартным, но и по всем открытым портам, актуальность использования данной программы очень высока.

Установка RDP Wrapper с автообновлением

Что такое RDP Wrapper?

RDP Wrapper - программа, являющаяся альтернативой службе удаленных рабочих столов. Она может понадобится по причине того, что Вас не устраивают ограничения в плане работы удаленного рабочего стола, вводимые Microsoft на различные редакции Windows Благодаря данной программе, на любой версии Windows можно реализовать:

  • Полноценный RDP сервер (который отсутствует в домашних редакциях Windows);
  • Возможность одновременной работы нескольких пользователей через удаленный рабочий стол;
  • Поддержка работы по удаленному рабочему столу с использованием нескольких мониторов.

Итак приступи к установке, англоязычная документацию читайте по ссылке https://github.com/asmtron/rdpwrap/blob/master/binary-download.md.

  1. Загрузите RDPWrap-v1.6.2.zip по ссылке https://github.com/stascorp/rdpwrap/releases и распакуйте в директорию "%ProgramFiles%\RDP Wrapper". Для установки RDPWrap вы должны использовать только эту директорию "%ProgramFiles%\RDP Wrapper" (обычно C:\Program Files\RDP Wrapper), иначе автообновление работать не будет.
  2. Загрузите autoupdate.zip и распакуйте в директорию "%ProgramFiles%\RDP Wrapper".
  3. Чтобы включить в автозапуск Windows 10 файл autoupdate.bat при запуске системы, запустите следующий вспомогательный пакетный файл от имени администратора: "%ProgramFiles%\RDP Wrapper\helper\autoupdate__enable_autorun_on_startup.bat"
  4. Установите в своем антивирусе или Защитнике Windows исключение для папки «% ProgramFiles% \ RDP Wrapper», чтобы предотвратить удаление файлов RDP Wrapper.
  5. Для ручного обновления RDP Wrapper (файла rdpwrap.ini) запустите командный файл автообновления autoupdate.bat от имени администратора: "%ProgramFiles%\RDP Wrapper\autoupdate.bat"

Для того чтобы проверить правильность настроек утилиты RDP Wrapper запустите файл RDPConf и вы должны увидеть

Установка XRDP сервера в Ubuntu 20.04

XRDP – это реализация протокола удалённого рабочего стола Microsoft (RDP) с открытым исходным кодом, которая позволяет графически управлять удалённой системой. В отличие от коммерческого продукта, XRDP в Linux позволяет работать одновременно с одним компьютером или виртуальной машиной неограниченному числу пользователей, что позволяет активно использовать XRDP для разворачивания терминальных серверов на базе Ubuntu 20.04.

Какой порт использует xRDP? xRDP принимает соединения по порту 3389/tcp.

apt update
apt install xrdp

При установке генерируется сертификат, который необходим для функционирования RDP протокола, строка ниже указывает, что сертификат успешно создан:

ssl_gen_key_xrdp1 ok

Необходимо ввести пользователя xrdp, от имени которого работает XRDP в системе, в группу ssl-cert. Выполните команду:

adduser xrdp ssl-cert

Затем добавьте службу xrdp в автозапуск и перезапустите её для применения изменений:

systemctl enable xrdp
systemctl restart xrdp

В конце настройте файрволл, для UFW, это будет выглядеть так:

ufw allow from 192.168.2.0/24 to any port 3389

Стандартный клиент RDP для Windows называется "Подключение к удалённому рабочему столу". В нем необходимо ввести IP-адрес или имя сервера, можно указать логин и пароль для входа в удалённую машину, настроить различные параметры взаимодействия. Клиенты RDP существуют для любого устройства: телефона, планшета, ноутбука, любого компьютера.

Для смены раскладки клавиатуры в Ubuntu 20.04 используется комбинация клавиш Super+Пробел. Если в окне раскладка не меняется, и вводится пароль не на том языке, то необходимо отключить клиент RDP, закрыть его, поменять язык в Windows на нужный и снова подключиться к удалённой машине.

  • XRDP откроет новый сеанс, поэтому у вас могут возникнуть проблемы, если сеанс уже открыт на удаленном компьютере. Если это так, тогда измените startwm.sh, чтобы сбросить существующий сеанс.
nano /etc/xrdp/startwm.sh

Добавьте эти строки в начале файла:

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
  • Ошибка Failed to execute child process "dbus-launch" Для решения нужно установить пакет dbus-x11 и перезапустить xrdp
apt install dbus-x11

FAQ RDP PowerShell

Эти команды используются для Windows и Windows сервер.

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
netsh firewall set service remotedesktop enable
# Активируем пользователя
$adminUser = "Administrator"
 
#Проверяем если пользователь Administrator/Admin существует
$existingUser = Get-WmiObject -Class Win32_UserAccount | Where-Object { $_.Name -eq $adminUser }
 
if ($existingUser) {
    net user Administrator /active:yes
    net user Administrator /expires:never
} else {
    net user admin /active:yes
    net user admin /expires:never
}
 
# Меняем порт в regedit
$portRDP=(Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\").PortNumber
if ($portRDP -eq 3389) {
 
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\" -Name PortNumber -Value 1239
 
# добавляем правило для нового порта
netsh advfirewall firewall add rule name=”RDP 1239dir=in action=allow protocol=TCP localport=1239
 
# Отключаем существующие правила для RDP которые у нас по умолчанию
$array = @('Remote Desktop - Shadow (TCP-In)','Remote Desktop - User Mode (UDP-In)','Remote Desktop - User Mode (TCP-In)')
foreach ($i in $array) {
 
$Params = @{
"DisplayName" = $i
}
 
Disable-NetFirewallRule  @Params
}
 
 
#Собираем лог по брутфорсу в файл C:\bruteforce.txt
$timeout = 5 # Время задержки в секундах
 
# Get-WinEvent Security -FilterXPath "*[System[EventID=4625] and EventData[Data[@Name='LogonType']=3]]" | Select TimeCreated,@{n="UserName";e={$_.properties[5].value}},@{n="IP";e={$_.properties[19].value}} > 'C:\bruteforce.txt'
 
$eventLog = Get-WinEvent -FilterHashtable @{
    LogName = 'Security'
    ID = 4625
}
 
foreach ($event in $eventLog) {
    $ipAddress = $event.Properties[19].Value
    $username = $event.Properties[5].Value
 
#    Write-Host "IP: $ipAddress, Username: $username"
}
 
$eventLog > C:/bruteforce.txt
 
$timer = [System.Diagnostics.Stopwatch]::StartNew()
 
while ($timer.Elapsed.TotalSeconds -lt $timeout) {
    # Ожидание выполнения задержки
    Start-Sleep -Milliseconds 100
}
$timer.Stop()
# ребутаем сервер чтобы приминились изменения 
shutdown /r /t 0
}
else {
Write-Output "Порт уже 1239"
}

Ссылка на официальное руководство по смене порта RDP.

netsh advfirewall firewall add rule name=”RDP 3389dir=in action=allow protocol=TCP localport=3389

Когда пользователь закрывает окно сеанса RDP/RDS в клиенте терминала (mstsc.exe - Подключение к удаленному рабочему столу, RDCMan или Remote Desktop HTML5 web client), просто щелкнув крестик в правом верхнем углу, не выходя из системы, его сеанс переходит из активного в отключенный режим. В этом режиме все приложения, открытые документы и окна по-прежнему работают на компьютере с удаленным рабочим столом и потребляют системные ресурсы.

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

В Windows Server 2022/2019/2016/2012R2 вы можете установить таймауты сеансов RDP с помощью групповых политик.

Чтобы узнать информацию о компьютере, с которого произведено подключение по протоколу RDP (Remote Desktop Protocol) к Windows изучите системный журнал безопасности (Security Log).

В системном журнале безопасности (Security Log) смотрим события 4624 (успешная аутентификация - An account was successfully logged on) или 4625 (ошибка аутентификации - An account failed to log on) с LogonType=10. В описании события имя пользователя - в поле Account Name, имя компьютера - в Workstation Name, IP-адрес - в Source Network Address.

PQ VPS сервера в 38+ странах.

📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!