Помните печально известную уязвимость BlueKeep? Он использовал порт 3389, отправив специально созданное сообщение, которое позволяло злоумышленникам удаленно выполнять любой код в скомпрометированной системе. Учитывая угрозу безопасности, часто рекомендуется отключать RDP, когда он не нужен; однако все еще существуют определенные системы, в которых вы просто не можете его отключить, например, серверы.
Альтернативным решением является изменение номера порта RDP с значения по умолчанию на что-то другое. Это, конечно, не сделает вашу систему Windows пуленепробиваемой, но, безусловно, поможет остановить несколько скриптовых детишек. Я имею в виду, в этом весь смысл безопасности через неизвестность.
В этом руководстве я изменю порт RDP в системе с именем TERMINAL под управлением Windows 10. Поскольку мы используем PowerShell, мы можем использовать удаленное управление PowerShell для выполнения всех команд из нашей собственной системы. Просто запустите консоль PowerShell с повышенными правами и используйте следующую команду, чтобы открыть интерактивный сеанс удаленного взаимодействия PS с удаленным компьютером, на котором вы хотите изменить порт RDP.
|
Enter-PsSession -ComputerName TERMINAL -Credential domain\admin |
Если ваш текущий пользователь, вошедший в систему, является членом группы AD администраторов домена, вы можете пропустить параметр -Credential .
Открытие интерактивного сеанса удаленного взаимодействия PS на удаленном компьютере с помощью команды Enter PSSession
Вы также можете использовать командлет Invoke-Command для выполнения каждой команды, если вы не хотите открывать постоянный интерактивный сеанс на удаленном компьютере.
Определение текущего порта удаленного рабочего стола
Теперь, когда мы подключены к удаленному компьютеру (ТЕРМИНАЛУ, в нашем примере), вы можете использовать следующую команду, чтобы определить, какой номер порта RDP используется в данный момент:
|
(Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\" -Name PortNumber).PortNumber |
Использование PowerShell для просмотра номера порта, используемого в настоящее время RDP
Эта команда возвращает текущий номер порта, используемый службой RDP на вашем целевом компьютере. Вы можете видеть, что информация хранится в реестре Windows, и мы просто запросили конкретный раздел реестра для номера порта с помощью командлета Get-ItemProperty . Современные версии Windows (начиная с Server 2012 и Windows 8), как правило, используют протоколы TCP и UDP для RDP, что, по сути, означает, что по умолчанию служба сервера удаленных рабочих столов (TermService) прослушивает как TCP 3389, так и UDP 3389 в обычной системе Windows. Вы можете подтвердить это, запустивКоманды Get-NetTCPConnection и Get-NetUDPEndpoint, как показано на следующем снимке экрана:
Использование команд NetTCPConnection и Get NetUDPEndpoint для просмотра конечных точек TCP и UDP для RDP
Изменение порта RDP
Теперь, когда вы уверены, что служба удаленных рабочих столов на вашем целевом компьютере в настоящее время использует порт по умолчанию, используйте следующую команду, чтобы изменить номер порта RDP:
|
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\" -Name PortNumber -Value 50102 |
Изменение порта RDP с помощью PowerShell
Эта команда использует командлет Set-ItemProperty для изменения номера порта на временный порт (50102, в нашем примере). При изменении номера порта RDP с помощью этой команды конечные точки TCP и UDP будут изменены на один и тот же номер порта.
Вы можете использовать любой номер порта, но рекомендуется использовать от 1024 до 65535. Некоторым людям даже нравится использовать номер порта из предложенного диапазона IANA (49152-65535), поскольку он вряд ли будет конфликтовать с другими известными или настраиваемыми службами.
Добавление правил брандмауэра для пользовательских портов RDP
Теперь, когда номер порта RDP изменился, вам необходимо настроить брандмауэр защитника Windows, чтобы разрешить новый пользовательский порт RDP. Для добавления правил используйте следующие команды PowerShell:
|
New-NetFirewallRule -DisplayName "Custom RDP Port (TCP-In)" -Direction Inbound -LocalPort 50102 -Protocol TCP -Action Allow New-NetFirewallRule -DisplayName "Custom RDP Port (UDP-In)" -Direction Inbound -LocalPort 50102 -Protocol UDP -Action Allow |
Эти две команды добавляют правила, разрешающие входящий трафик по пользовательскому номеру порта RDP. Убедитесь, что вы изменили номер порта, чтобы он соответствовал вашему собственному.
Добавление правил брандмауэра защитника Windows для пользовательских номеров портов RDP с помощью PowerShell
Помните, что удаленный компьютер будет продолжать использовать старый (по умолчанию) номер порта, пока служба удаленных рабочих столов (TermService) не будет перезапущена на целевом компьютере. Чтобы перезапустить службу на целевом компьютере, используйте следующую команду:
|
Restart-Service TermService -Force |
Перезапуск службы удаленного рабочего стола на целевом компьютере с помощью PowerShell
После перезапуска службы удаленного рабочего стола целевой компьютер начнет прослушивать новый пользовательский номер порта RDP.
Проверка нового порта RDP
На этом этапе ваш удаленный компьютер настроен на использование пользовательского порта для удаленного рабочего стола. Если вы запустите следующую команду PowerShell на удаленном компьютере, она предоставит вам новые конечные точки:
|
Get-NetTCPConnection -LocalPort 50102; Get-NetUDPEndpoint -LocalPort 50102 |
Проверка новых конечных точек удаленного рабочего стола TCP и UDP на целевом компьютере с помощью PowerShell
Кроме того, вы можете использовать командлет Test-NetConnection на своем компьютере, как показано в следующей команде:
|
Test-NetConnection -ComputerName TERMINAL -Port 50102 -InformationLevel Quiet |
Использование командлета Test NetConnection для проверки подключения к целевому компьютеру через новый порт RDP
Значение True в выходных данных указывает, что ваш локальный компьютер смог успешно подключиться к удаленному компьютеру с указанным номером порта (50102, в нашем примере), что доказывает, что ваш новый пользовательский порт RDP теперь активен. Если вы повторите эту команду с номером порта RDP по умолчанию, соединение завершится ошибкой и вернет значение false, как показано на скриншоте.
Использование пользовательского порта удаленного рабочего стола
Когда служба удаленного рабочего стола запускается на порту по умолчанию, вам не нужно указывать его при подключении к целевому компьютеру с помощью приложения подключения к удаленному рабочему столу. Однако после настройки порта необходимо указать номер порта в формате ComputerName:PortNumber или IPAddress:PortNumber, как показано на скриншоте:
после настройки порта необходимо указать номер порта в формате ComputerName:PortNumber или IPAddress:PortNumber, как показано на скриншоте:
Указание пользовательского порта RDP с помощью приложения для подключения к удаленному рабочему столу
Заключение
Вы только что узнали, как изменить номер порта удаленного рабочего стола с помощью PowerShell. Как обсуждалось ранее, пользовательский порт RDP не обещает сделать систему Windows полностью безопасной, но он добавляет слой неизвестности для обеспечения определенной степени защиты. Всегда рекомендуется отключить удаленный рабочий стол на общедоступных хостах Windows. Если вам действительно нужно включить удаленный рабочий стол, настоятельно рекомендуется использовать VPN.