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.
apt install rdesktop rdesktop 192.202.123.123:50009
Для подключения к Microsoft Azure правильно укажите внешний порт
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 - программа, являющаяся альтернативой службе удаленных рабочих столов. Она может понадобится по причине того, что Вас не устраивают ограничения в плане работы удаленного рабочего стола, вводимые Microsoft на различные редакции Windows Благодаря данной программе, на любой версии Windows можно реализовать:
Итак приступи к установке, англоязычная документацию читайте по ссылке https://github.com/asmtron/rdpwrap/blob/master/binary-download.md.
Для того чтобы проверить правильность настроек утилиты RDP Wrapper запустите файл RDPConf и вы должны увидеть
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 на нужный и снова подключиться к удалённой машине.
nano /etc/xrdp/startwm.sh
Добавьте эти строки в начале файла:
unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR
apt install dbus-x11
Эти команды используются для 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 1239” dir=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 3389” dir=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.