Windows VPS: что настроить в первые полчаса после аренды
Провайдер присылает адрес, имя пользователя и пароль — и на этом почти все инструкции заканчиваются. А дальше сервер с открытым портом 3389 и учётной записью «Администратор» живёт до первого подбора пароля. Разбираем, что сделать сразу, — по шагам и с готовыми командами.
Сначала честно: нужен ли вам Windows
Сервер с Windows обходится дороже, чем с Linux, по двум причинам: лицензия и память, которую графическая оболочка занимает всегда, независимо от того, что вы на сервере запустили. Поэтому первый вопрос — а нужен ли он вообще. Проверяется он одним признаком: есть ли у программы, ради которой берётся сервер, версия под Linux или веб-интерфейс.
| Задача | Windows действительно нужен? |
|---|---|
| Сайт, магазин, почта, файловое хранилище | Нет. Всё это на Linux работает и лицензии не требует |
| VPN, телеграм-бот, контейнеры Docker, база данных | Нет. Это классические задачи для Linux |
| 1С с работой нескольких человек через рабочий стол | Да — либо связка Linux и PostgreSQL, но её сложнее настроить |
| Торговый терминал, отраслевая программа, приложение .NET Framework | Да. Версии под Linux у таких программ обычно нет |
Если в вашем случае ответ «нет», статья дальше не нужна, а нужна настройка Linux-сервера. Если «да» — читайте дальше: Windows требует другого набора действий, и совпадает из них немногое.
Сколько памяти и диска нужно самой системе
Это стоит посчитать до оплаты: доплатить за память потом можно, а вот переносить настроенный сервер на другой тариф — работа на полдня. Официальные минимумы Microsoft:
- Windows Server 2022 — 1 ГБ памяти для варианта Server Core (управление только из командной строки) и 2 ГБ для «сервера с рабочим столом».
- Windows Server 2025 — 2 ГБ в обоих вариантах, рекомендуется 4 ГБ.
- Диск — не меньше 32 ГБ под систему. Microsoft называет это абсолютным минимумом для установки: место под обновления, файл подкачки и ваши программы считается сверх него.
Практический вывод простой. Тарифы на 1–2 ГБ у провайдеров есть, и Windows на них загрузится, но свободного места под задачу останется мало. Если через удалённый рабочий стол работает больше одного человека или на сервере крутится что-то кроме одной небольшой программы, берите от 4 ГБ памяти и от 50 ГБ диска. И только SSD или NVMe: на обычном жёстком диске графическая оболочка Windows заметно подтормаживает.
Если сервера ещё нет
4 ГБ RAM · 50 ГБ диска · Windows · Россия
Числа — из абзаца выше: 4 ГБ памяти закрывают систему и рабочую программу, 50 ГБ диска — систему, обновления и файл подкачки с запасом. Локация — Россия: удалённый рабочий стол чувствителен к задержке, курсор и ввод отзываются тем хуже, чем дальше сервер от того, кто за ним работает.
В каталоге под эти требования подходит 38 тарифов, самый дешёвый — 720 ₽/мес (HostKey, 4 ГБ, 60 ГБ NVMe).
Открыть каталог с этими фильтрами →Шаг 1. Первое подключение
В письме от провайдера есть три вещи: адрес сервера, имя пользователя и пароль. Дальше в статье адрес сервера — 203.0.113.10, подставляйте свой.
- С Windows. Ничего ставить не нужно: нажмите
Win + R, введитеmstsc— откроется «Подключение к удалённому рабочему столу». В поле «Компьютер» — адрес сервера. - С macOS, Android и iPhone. Официальное приложение называется Windows App — раньше оно называлось Microsoft Remote Desktop и было переименовано в 2024 году.
- С Linux. Remmina — она есть в репозиториях всех популярных дистрибутивов.
Имя пользователя вводите с точкой и обратной косой чертой: .\Administrator — а если провайдер прислал русское имя, то .\Администратор. Точка означает «учётная запись этого сервера». Без неё клиент иногда пытается войти под учётной записью вашего рабочего компьютера, и вы получаете ошибку подлинности на ровном месте.
Первое, что стоит сделать внутри, — посмотреть версию системы и точное имя встроенной учётной записи администратора: на русских образах она называется «Администратор», на английских — Administrator, и дальше это имя понадобится. Откройте PowerShell от имени администратора: правая кнопка по «Пуску», дальше пункт Windows PowerShell (администратор) — в новых версиях он может называться Терминал (администратор). Приписка «(администратор)» обязательна: без неё половина команд ниже откажет. Выполните:
(Get-CimInstance Win32_OperatingSystem).Caption
Get-LocalUser | Where-Object { $_.SID -like '*-500' } | Select-Object Name, EnabledПервая команда напечатает название версии, вторая — имя встроенного администратора. Признак -500 — это внутренний номер, который у встроенной учётной записи один и тот же на любом языке, поэтому команда работает и на русской, и на английской системе.
Шаг 2. Пароль, имя администратора, блокировка перебора
Пароль от провайдера знаете не только вы: он лежал в письме и в панели управления. Меняем его на свой, длиной от 16 символов, с буквами в двух регистрах и цифрами. Рассчитывать тут не на что: на отдельно стоящем сервере проверка сложности пароля по умолчанию выключена, и Windows молча примет любой. Команда ниже спросит пароль отдельно, поэтому он не останется в истории команд.
$admin = Get-LocalUser | Where-Object { $_.SID -like '*-500' }
Set-LocalUser -Name $admin.Name -Password (Read-Host 'Новый пароль' -AsSecureString)Теперь имя. Боты, которые круглосуточно перебирают пароли, пробуют два имени: Administrator и Администратор. Переименование не делает сервер неприступным, но обесценивает почти весь автоматический перебор — подбирать приходится уже две вещи вместо одной.
$admin = Get-LocalUser | Where-Object { $_.SID -like '*-500' }
Rename-LocalUser -Name $admin.Name -NewName 'winadmin'Текущий сеанс не оборвётся, но следующий вход будет уже под .\winadmin. Одна оговорка: если в панели провайдера есть кнопка «сбросить пароль администратора», после переименования она может перестать находить учётную запись. Убедитесь, что новый пароль записан в надёжном месте, — например, в своём менеджере паролей.
Третье действие — блокировка после неудачных попыток входа. Десять ошибок подряд — учётная запись закрывается на полчаса, и перебор паролей теряет смысл. Команды выполняются по одной и именно в этом порядке: пока порог не задан, Windows отказывается менять время блокировки и отвечает «Системная ошибка 87».
net accounts /lockoutthreshold:10
net accounts /lockoutduration:30 /lockoutwindow:30
net accountsТретья команда покажет, что получилось: строка «Порог блокировки» должна показывать 10, а не «Никогда».
Встроенный администратор — исключение. На обычные учётные записи блокировка действует сразу, а встроенная учётная запись попадает под неё, только если включена отдельная политика «Разрешить блокировку учётной записи администратора». Возможность появилась в обновлениях от октября 2022 года и включена изначально лишь там, где установочный образ уже содержал эти обновления, — у готовых образов провайдеров это далеко не всегда так. Проверить и включить: secpol.msc → «Политики учётных записей» → «Политика блокировки учётной записи». Блокировка касается только сетевых входов, поэтому вход через консоль в панели провайдера продолжит работать даже тогда, когда RDP закрыт.
Шаг 3. Меняем порт удалённого рабочего стола
Стандартный порт 3389 сканируют непрерывно, и начинается это в первые часы после запуска сервера — независимо от того, интересны ли кому-то вы лично. Это фоновый шум интернета. Смена порта его почти полностью убирает: массовый перебор идёт по стандартному порту. Неприступным сервер от этого не становится — целенаправленное сканирование найдёт и нестандартный порт, — но поток попыток входа исчезает, а вместе с ним и риск, что кто-то однажды угадает пароль.
Выберите число от 10000 до 49000: всё, что выше 49152, Windows раздаёт своим программам сама, и однажды кто-то может занять ваш порт раньше службы удалённого рабочего стола. Дальше в примерах — 48200.
Порядок важен. Сначала открываем новый порт в брандмауэре и только потом переключаем на него службу. Если сделать наоборот, вы отключитесь от сервера, а войти на новый порт ещё не сможете.
$port = 48200
New-NetFirewallRule -DisplayName 'RDP-custom-TCP' -Profile Any `
-Direction Inbound -Action Allow -Protocol TCP -LocalPort $port
New-NetFirewallRule -DisplayName 'RDP-custom-UDP' -Profile Any `
-Direction Inbound -Action Allow -Protocol UDP -LocalPort $port
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' `
-Name 'PortNumber' -Value $port -Type DWord
Restart-Computer -ForceПосле перезагрузки подключайтесь по адресу с портом через двоеточие: 203.0.113.10:48200. Старые правила для 3389 можно не трогать — на этом порту больше никто не слушает, и открытое правило ни к чему не ведёт. А вот если у провайдера в панели управления есть собственный сетевой экран, новый порт нужно открыть и там: правило внутри Windows на него не распространяется.
Ограничение по адресу — если ваш адрес постоянный
Это самая надёжная мера из всех и одновременно самая опасная: сервер перестанет принимать подключения откуда бы то ни было, кроме указанного адреса. Свой адрес можно узнать прямо на сервере, не выходя из сеанса, — команда покажет, откуда пришло текущее подключение:
Get-NetTCPConnection -LocalPort 48200 -State Established |
Select-Object RemoteAddressПрежде чем ограничивать, убедитесь, что адрес и правда постоянный. Домашний интернет чаще всего выдаёт его на время, и завтра он будет другим: посмотрите свой адрес сегодня и через день. Если он изменился, ограничение не ставьте — вместо защиты получится закрытая дверь. И заранее найдите в панели провайдера доступ к консоли сервера: это путь назад, если адрес всё-таки сменится.
Set-NetFirewallRule -DisplayName 'RDP-custom-TCP' -RemoteAddress '198.51.100.25'
Set-NetFirewallRule -DisplayName 'RDP-custom-UDP' -RemoteAddress '198.51.100.25'Чего делать не нужно: отключать проверку подлинности на уровне сети (NLA). Она включена по умолчанию и требует пароль до того, как сервер начнёт выделять ресурсы под сеанс. Её отключение иногда советуют как способ решить проблемы с подключением — это ровно тот совет, который стоит пропустить.
Шаг 4. Закрываем всё остальное
Кроме удалённого рабочего стола наружу могут отвечать ещё две службы Windows. Первая — общий доступ к файлам и принтерам, протокол SMB (порт 445): через него расходились самые известные сетевые заражения, и в интернет его не открывают. Вторая — удалённое управление WinRM (порт 5985), нужное для управления сервером из корпоративной сети, которой у вас нет. В правиле ниже к ним добавлены соседние порты тех же служб: 135 и 139 работают вместе с SMB, 5986 — это тот же WinRM, только по защищённому каналу.
Открыты они или нет, зависит от того, какой сетевой профиль выставлен в образе провайдера, — а он бывает разным. Поэтому проще не разбираться в разрешающих правилах, а поставить одно запрещающее: у брандмауэра Windows запрет всегда сильнее разрешения, и это правило закроет порты независимо от всего остального.
New-NetFirewallRule -DisplayName 'Закрыть SMB и WinRM снаружи' -Profile Any `
-Direction Inbound -Action Block -Protocol TCP -LocalPort 135,139,445,5985,5986
New-NetFirewallRule -DisplayName 'Закрыть NetBIOS снаружи' -Profile Any `
-Direction Inbound -Action Block -Protocol UDP -LocalPort 137,138Проверить, что вообще слушает сеть на сервере, можно одной командой. Адрес 0.0.0.0 напротив порта означает «принимаю подключения со всех сторон» (то же самое для IPv6 записывается как ::), а 127.0.0.1 — «только изнутри самого сервера»:
Get-NetTCPConnection -State Listen |
Select-Object LocalAddress, LocalPort |
Sort-Object LocalPortЕсли позже вам понадобится общий доступ к файлам — например, через VPN между офисом и сервером, — запрещающее правило нужно будет удалить командой Remove-NetFirewallRule с тем же именем. Пока такой задачи нет, пусть остаётся.
Шаг 5. Обновления и браузер на сервере
Образ провайдера собран не сегодня, и обновления за несколько месяцев на нём почти наверняка не установлены. Открывайте «Пуск» → «Параметры» → «Центр обновления Windows» (в Windows Server 2019 и 2022 он лежит внутри раздела «Обновление и безопасность») → «Проверить наличие обновлений». Ставьте всё, перезагружайтесь и повторяйте, пока список не опустеет: часть обновлений появляется только после установки предыдущих.
Перезагрузка после обновлений — заодно и проверка предыдущих шагов: если вы попали на сервер по новому порту, значит, всё настроено верно.
Но одного раза мало, и это главная ловушка шага. На Windows Server автоматическая установка обновлений по умолчанию выключена: система их скачивает и ждёт, пока вы нажмёте кнопку. Через пару месяцев сервер снова окажется без свежих исправлений — а вместе с ними перестанут приезжать и базы Microsoft Defender, они приходят тем же Центром обновления. Включаем ночную установку. Команды задают ровно то же, что групповая политика «Настройка автоматического обновления» в режиме 4:
$au = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'
New-Item -Path $au -Force | Out-Null
Set-ItemProperty -Path $au -Name 'NoAutoUpdate' -Value 0 -Type DWord
Set-ItemProperty -Path $au -Name 'AUOptions' -Value 4 -Type DWord
Set-ItemProperty -Path $au -Name 'ScheduledInstallDay' -Value 0 -Type DWord
Set-ItemProperty -Path $au -Name 'ScheduledInstallTime' -Value 4 -Type DWordЧитается это так: обновления скачиваются и ставятся сами (AUOptions = 4), каждый день (ScheduledInstallDay = 0), в четыре часа ночи (ScheduledInstallTime = 4) по часовому поясу сервера — он может отличаться от вашего, проверьте. Плата за удобство одна: сервер может сам перезагрузиться ночью, чтобы доустановить обновление. Если ночная перезагрузка недопустима, поставьте AUOptions = 3 — тогда обновления будут скачиваться заранее, а установку вы запускаете руками. И тогда её нельзя откладывать.
Про режим усиленной безопасности Internet Explorer
В Windows Server 2019 и 2022 включён режим усиленной безопасности Internet Explorer: браузер блокирует почти всё содержимое страниц и спрашивает разрешение на каждый сайт. В Windows Server 2025 Internet Explorer удалён, и этого режима там нет.
Совет «отключите его в диспетчере серверов» встречается в каждой второй инструкции. Лучше так не делать: сервер — не то место, где стоит ходить по сайтам, и почти всегда браузер нужен ради одного — скачать файл. Это делается одной командой, без браузера вообще:
New-Item -ItemType Directory -Path 'C:\Install' -Force | Out-Null
Invoke-WebRequest -Uri 'https://aka.ms/vs/17/release/vc_redist.x64.exe' `
-OutFile 'C:\Install\vc_redist.x64.exe' -UseBasicParsingКлюч -UseBasicParsing здесь обязателен. Без него команда на свежем сервере отвечает, что «содержимое не может быть обработано, поскольку недоступен обработчик Internet Explorer»: разбирать ответ она по старой памяти поручает браузеру, который никто ни разу не запускал.
А если работать в браузере на сервере действительно нужно, поставьте отдельный современный браузер. Это честнее, чем ослаблять настройки Internet Explorer ради задачи, для которой он всё равно не годится.
Два подключения по умолчанию — и что дальше
Windows Server из коробки разрешает два одновременных подключения к рабочему столу. Это режим администрирования сервера, а не рабочие места: предполагается, что подключаются администраторы, а не сотрудники.
Пока людей двое, ничего докупать не нужно. Начиная с третьего требуется роль Remote Desktop Services и клиентские лицензии RDS CAL — по числу пользователей или устройств. Они оплачиваются отдельно, в цену сервера не входят, и у большинства провайдеров продаются отдельной позицией. У роли есть льготный период 120 дней, в течение которого лицензии не требуются: об этом легко забыть и внезапно потерять доступ через четыре месяца.
Способы снять ограничение в обход лицензирования существуют. Это нарушение условий лицензии, поэтому мы их не описываем.
И про саму лицензию Windows. У одних провайдеров она входит в цену тарифа, у других оплачивается отдельно и заметно меняет итог. Единого правила нет, и мы это поле не сверяем — уточняйте на странице заказа, до оплаты. По той же причине цены Windows-тарифов у разных провайдеров нельзя сравнивать напрямую.
Резервные копии и наблюдение за сервером
Снимок состояния в панели провайдера — самый быстрый способ вернуть сервер к тому виду, в котором он был десять минут назад. Делайте его перед каждым крупным изменением: установкой программы, обновлением, правкой настроек. Резервной копией он при этом не является: снимок лежит у того же провайдера и пропадёт вместе с сервером.
Настоящая копия — та, что уезжает за пределы сервера. В Windows Server для этого есть встроенное средство: компонент «Система архивации данных Windows Server». Он ставится одной командой, дальше расписание и место хранения задаются в его оснастке:
Install-WindowsFeature Windows-Server-BackupВажное правило: копия, которая лежит на диске C: того же сервера, копией не считается. Отправляйте её на второй диск, в сетевое хранилище или в объектное хранилище провайдера. И раз в месяц пробуйте восстановиться — проверенная копия отличается от непроверенной ровно в тот день, когда она понадобится.
За чем наблюдать. Один показатель говорит больше остальных: неудачные попытки входа. Они записываются в журнал безопасности под кодом 4625, и вот двадцать последних вместе с адресами, откуда стучались:
Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4625 } -MaxEvents 20 |
ForEach-Object {
$d = ([xml]$_.ToXml()).Event.EventData.Data
[pscustomobject]@{
'Время' = $_.TimeCreated
'Логин' = ($d | Where-Object Name -eq 'TargetUserName').'#text'
'Адрес' = ($d | Where-Object Name -eq 'IpAddress').'#text'
}
}Если команда ответит, что событий не найдено, — это хорошая новость: неудачных входов не было. Через неделю после смены порта список обычно пустеет полностью, и это лучшая проверка того, что шаг 3 сработал.
Частые проблемы
После смены порта сервер не пускает
Войдите через консоль в панели провайдера и проверьте три вещи. Первая: слушает ли сервер новый порт — Get-NetTCPConnection -State Listen | Where-Object LocalPort -eq 48200. Если ответ пустой, значит, значение в реестре не применилось: сервер не был перезагружен. Вторая: есть ли разрешающее правило — Get-NetFirewallRule -DisplayName RDP-custom-TCP. И третья причина, внешняя: сетевой экран в панели провайдера, где новый порт тоже нужно открыть.
«Не удаётся установить связь с локальной системой безопасности»
Сообщение означает, что проверка подлинности не дошла до сервера. На отдельно стоящем сервере причина обычно в имени пользователя: если ввести его без префикса, клиент подставляет домен вашего рабочего компьютера, и Windows начинает искать контроллер домена, которого нет. Пишите имя как .\winadmin — точка означает «учётная запись самого сервера». Если не помогло, проверьте порт и подождите пару минут: сразу после перезагрузки служба удалённых рабочих столов поднимается не мгновенно.
В сеансе не переключается раскладка или появилась третья «РУС-US»
Windows передаёт в сеанс раскладку вашего компьютера, и она накладывается на раскладки сервера. Лечится запретом на эту передачу — после команды нужно перезагрузить сервер:
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout' `
-Name 'IgnoreRemoteKeyboardLayout' -PropertyType DWord -Value 1 -ForceТеперь сеанс использует раскладки, настроенные на самом сервере. Если русской там нет, добавьте её: «Параметры» → «Время и язык» → «Язык и регион».
Коротко: порядок действий
- Найти в панели провайдера доступ к консоли сервера — это путь назад
- Подключиться по удалённому рабочему столу, имя пользователя вводить как
.\Administratorили.\Администратор - Сменить пароль на свой, длиной от 16 символов
- Переименовать встроенную учётную запись администратора
- Включить блокировку после десяти неудачных попыток входа
- Открыть новый порт в брандмауэре, затем перевести на него службу и перезагрузиться
- Убедиться, что вход по новому порту работает; при постоянном адресе — ограничить доступ по IP
- Поставить запрещающее правило на SMB и WinRM
- Установить все обновления, включить их автоматическую установку и перезагрузиться
- Сделать снимок состояния и настроить резервное копирование за пределы сервера
Частые вопросы
Для работы одного-двух человек по удалённому рабочему столу нужен сервер от 4 ГБ памяти и от 50 ГБ быстрого диска. На странице собраны провайдеры, у которых Windows-тариф есть, с ценой самого дешёвого такого тарифа у каждого.
Провайдеры с тарифами на Windows→