Top.Mail.Ru

Настройка параллельной работы RDP на Windows Server 2016-2025

4

Windows Server 2016, 2019, 2022 и 2025 по умолчанию пускают по RDP двух администраторов одновременно, и покупать лицензии служб терминалов для этого не нужно. Ниже — как это работает, как делятся ресурсы и скрипт PowerShell, который создаёт двух пользователей и по желанию ставит защиту от подбора паролей IPBan.

Для комфортной работы двух пользователей запускайте Windows Server с тарифа Castor и старше. Рекомендуемые ресурсы: 8 vCore и 12 ГБ RAM.

Ограничения сессий: что даёт Windows из коробки

В этих версиях Windows Server по протоколу RDP (Remote Desktop Protocol) можно держать не больше двух удалённых сессий одновременно. Режим рассчитан на администрирование сервера, а не на многопользовательскую работу, и у него есть особенности:

  • Лицензирование. Клиентские лицензии служб терминалов (RDS CAL) покупать и устанавливать не нужно, роль Remote Desktop Services Licensing разворачивать тоже.
  • Лимит подключений. Третье подключение вызовет запрос на завершение одной из активных сессий.
  • Изоляция. Каждый из двух пользователей работает в своём графическом окружении, у него отдельный сеанс.

Как делятся процессор и память

При работе двух пользователей в базовом режиме система распределяет ресурсы сервера так:

Ресурс Как распределяется по умолчанию Что учесть
Процессор (CPU) Кванты времени процессора динамически делятся между потоками процессов всех активных пользователей. Жёстких квот нет. Если один пользователь запустил тяжёлую задачу, у второго может просесть отзывчивость системы.
Оперативная память (RAM) Выдаётся пользователям и их приложениям по мере необходимости из общего пула физической памяти. Следите за фоновыми процессами. Когда памяти не хватает, в ход идёт файл подкачки, и производительность может упасть.

Чтобы ввести жёсткие ограничения и гарантировать каждому долю ресурсов, нужна дополнительная компонента System Resource Manager (WSRM) или групповые политики (GPO). Для двух администраторов обычно хватает стандартного динамического распределения.

Скрипт PowerShell: два пользователя и защита

Важно: имена пользователей (UserO1, UserO2) в примерах демонстрационные, пароль в скрипте замените на свой надёжный. Запускайте PowerShell от имени администратора.

Внимание: команды ниже отключают контроль учётных записей (UAC). Это снижает безопасность системы, вы делаете это на свой страх и риск. Чтобы отключение UAC вступило в силу, сервер нужно перезагрузить.

Вариант 1: базовая настройка без IPBan

# 1. Создание учётных записей пользователей
$Password = ConvertTo-SecureString "ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ" -AsPlainText -Force
New-LocalUser -Name "UserO1" -Password $Password -PasswordNeverExpires $true -Description "RDP Admin User 1"
New-LocalUser -Name "UserO2" -Password $Password -PasswordNeverExpires $true -Description "RDP Admin User 2"

# 2. Назначение групп через SID
# S-1-5-32-544 -> Administrators
# S-1-5-32-555 -> Remote Desktop Users
$AdminGroup = (Get-LocalGroup | Where-Object { $_.SID -like "S-1-5-32-544" }).Name
$RdpGroup   = (Get-LocalGroup | Where-Object { $_.SID -like "S-1-5-32-555" }).Name

Add-LocalGroupMember -Group $AdminGroup -Member "UserO1", "UserO2"
Add-LocalGroupMember -Group $RdpGroup   -Member "UserO1", "UserO2"

# 3. Отключение стандартных учётных записей
$AccountsToDisable = @("Administrator", "Admin", "Администратор")
foreach ($Acc in $AccountsToDisable) {
    if (Get-LocalUser -Name $Acc -ErrorAction SilentlyContinue) {
        Disable-LocalUser -Name $Acc
    }
}

# 4. Отключение UAC (требуется перезагрузка)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableLUA" -Value 0

Вариант 2: настройка с защитой IPBan

Первые четыре шага те же, что в варианте 1. После них скрипт скачивает и запускает IPBan.

# 1. Создание учётных записей пользователей
$Password = ConvertTo-SecureString "ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ" -AsPlainText -Force
New-LocalUser -Name "UserO1" -Password $Password -PasswordNeverExpires $true -Description "RDP Admin User 1"
New-LocalUser -Name "UserO2" -Password $Password -PasswordNeverExpires $true -Description "RDP Admin User 2"

# 2. Назначение групп через SID
$AdminGroup = (Get-LocalGroup | Where-Object { $_.SID -like "S-1-5-32-544" }).Name
$RdpGroup   = (Get-LocalGroup | Where-Object { $_.SID -like "S-1-5-32-555" }).Name

Add-LocalGroupMember -Group $AdminGroup -Member "UserO1", "UserO2"
Add-LocalGroupMember -Group $RdpGroup   -Member "UserO1", "UserO2"

# 3. Отключение стандартных учётных записей
$AccountsToDisable = @("Administrator", "Admin", "Администратор")
foreach ($Acc in $AccountsToDisable) {
    if (Get-LocalUser -Name $Acc -ErrorAction SilentlyContinue) {
        Disable-LocalUser -Name $Acc
    }
}

# 4. Отключение UAC (требуется перезагрузка)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableLUA" -Value 0

# 5. Установка IPBan
$IpbanUrl = "https://github.com/DigitalRuby/IPBan/releases/latest/download/IPBan-Windows-x64.zip"
$ZipPath  = "$env:TEMP\IPBan.zip"
$DestPath = "C:\IPBan"

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -Uri $IpbanUrl -OutFile $ZipPath
Expand-Archive -Path $ZipPath -DestinationPath $DestPath -Force

# Регистрация и запуск службы IPBan
& "$DestPath\IPBan.exe" install
Start-Service -Name "IPBan"

# Очистка временных файлов
Remove-Item -Path $ZipPath -Force

Что делает скрипт

  • Вариант 1. Создаёт учётные записи UserO1 и UserO2 и добавляет их в группы администраторов и пользователей RDP (группы находятся по SID, поэтому скрипт работает и в русской, и в английской Windows). Отключает стандартные административные учётные записи (Administrator, Admin, Администратор): это базовая защита от подбора паролей. Отключает UAC через параметр реестра EnableLUA, чтобы программы ставились без всплывающих запросов. Нужна перезагрузка сервера.
  • Вариант 2. Делает всё то же, что вариант 1, и дополнительно скачивает утилиту IPBan из репозитория GitHub в папку C:\IPBan и ставит её как системную службу. IPBan отслеживает неудачные попытки входа по RDP и блокирует адреса нападающих через брандмауэр Windows.

Управление процессором и памятью между сессиями

Современные Windows Server используют механизм Dynamic Fair Share Scheduling (DFSS). Вместо жёстких процентных лимитов он динамически и равномерно распределяет вычислительные ресурсы процессора (CPU), оперативной памяти (RAM) и дискового ввода-вывода между всеми активными сессиями RDP.

Чтобы убедиться, что механизм CPU Fair Share включён, можно проверить раздел реестра HKLM\System\CurrentControlSet\Control\Session Manager\Quota System (параметр EnableCPUQuota = 1).

Похожее

Все статьи
Отключение SSH пароля и защита сервера через ключи

SSH: отключение входа по паролю и защита сервера

Отключение SSH-пароля — одна из самых опасных настроек на VPS, если сделать её в неправильном порядке. Единственная безопасная последовательность действий выглядит так: сначала настроить и проверить вход по ключу, и только после того как ключ точно работает — отключать пароль.…

rsync ssh

Rsync по SSH: синхронизация и резервное копирование файлов

Rsync копирует только изменения — не весь файл целиком, а только блоки которые отличаются от предыдущей версии. На практике это означает что первая синхронизация 10 ГБ занимает столько времени сколько нужно для передачи 10 ГБ, а следующая — секунды, если…