Используйте SSH для безопасного использования подключения к удаленному рабочему столу Windows
Условия эксплуатации
- Удаленное подключение к Windows
-
- Windows 11
- Удаленное подключение из Windows
-
- Windows 10
- Протокол OpenSSH
-
- OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
Необходимые условия
- Удаленное подключение к Windows
-
- Windows 10 или более поздней версии (требуется Pro или другая версия). Однако это не относится к случаям, когда OpenSSH может быть подготовлен отдельно.
- Windows Server 2019 или более поздней версии. Однако это не относится к случаям, когда OpenSSH может быть подготовлен отдельно.
- Удаленное подключение из Windows
-
- Windows (возможно большинство версий)
- Windows Server (возможно большинство версий)
Сначала
После создания среды Windows в Интернете в облаке или VPS вы часто используете подключение к удаленному рабочему столу для работы с удаленным назначением Windows.
При подключении к удаленному рабочему столу коммуникационное содержимое шифруется, и если имя пользователя и пароль не утекают, другие пользователи не смогут войти в систему без разрешения. Всегда есть опасение, что люди попытаются войти в систему откуда угодно.
В некоторых крупных облаках брандмауэры отделены от виртуальных машин, и есть функция ограничения источника подключения. Эти функции могут быть доступны не во всех службах. Особенно в средах, построенных на низком бюджете, во многих случаях такие функции недоступны.
Поэтому в этот раз я хотел бы максимально ограничить источник подключения, добавив функцию SSH . Поскольку используется закрытый ключ и открытый ключ, до тех пор, пока не произойдет утечка закрытого ключа, возможность удаленного входа из другой среды может быть сведена к минимуму, насколько это возможно.
В данном случае мы будем использовать OpenSSH для построения SSH-среды.
Создание удаленной целевой среды Windows
Создайте среду Windows, позволяющую удаленно подключаться через Интернет. Не имеет значения, где он построен, если он проходит через Интернет, но для этой проверки он будет построен как виртуальная машина в Microsoft Azure. Шаги по созданию в Azure не имеют отношения к этому совету, поэтому я их опущу. Так как на этот раз будет использоваться порт 22, если вы используете Azure, убедитесь, что связь с портом 22 проходит через параметры виртуальной машины в Azure.
Если вы выполняете разработку в среде, отличной от Azure, убедитесь, что вы можете установить подключение к удаленному рабочему столу Windows для своей среды.
Кроме того, версия для Windows предназначена для Windows 10 или более поздней версии или Windows Server 2019 или более поздней версии, что упрощает создание среды OpenSSH. Он может быть реализован в более ранней среде, но это займет немного больше времени и усилий, потому что вам нужно скачать и настроить OpenSSH отдельно.
В этом случае процедура такая же, как и для SFTP, поэтому обратитесь к следующим советам.
Настройка OpenSSH
Отсюда мы будем работать в удаленной среде Windows. Во-первых, подключитесь к удаленному месту назначения с помощью подключения к удаленному рабочему столу. Если в вашем облаке или VPS есть консоль, вы можете использовать ее. Поскольку на этот раз мы работаем в среде Windows 11, шаги могут немного отличаться в других версиях.
Откройте меню «Пуск» и выберите «Настройки».
Выберите приложение.
Выберите Дополнительные функции.
Выберите Показать объекты.
Чуть ниже в списке находится «OpenSSH Server», поэтому поставьте галочку напротив него и нажмите «Далее».
Нажмите кнопку Установить.
Когда установка будет завершена и "OpenSSH Server" будет добавлен в список ниже, все готово.
Конфигурация сервиса для OpenSSH
Щелкните правой кнопкой мыши меню «Пуск» и выберите «Управление компьютером».
Выберите Службы из списка слева.
Найдите «OpenSSH SSH Server» в среднем списке, щелкните правой кнопкой мыши и выберите «Свойства».
При удаленном подключении мы хотим, чтобы сервер OpenSSH был запущен, поэтому установите "Тип запуска" на "Автоматический".
Так как в данный момент он не запущен, я запущу его здесь, в том числе и настрою.
После запуска нажмите кнопку ОК, чтобы закрыть его. Он должен быть запущен в списке.
Настройка OpenSSH
В начальном состоянии аутентификация по закрытому ключу отключена, поэтому установите ее. Откройте следующую папку в проводнике.
- C:\ProgramData\ssh
Тем не менее, вышеуказанная папка может быть скрытой, поэтому, пожалуйста, сделайте ее видимой, установив параметры проводника.
В папке sshd_config
есть файл с вызовом, поэтому откройте его с помощью текстового редактора, такого как Блокнот.
Поскольку в этот раз мы будем вносить изменения, пожалуйста, скопируйте и продублируйте их в качестве резервной sshd_config_old
копии перед изменением.
PubkeyAuthentication yes
Искать:
Этот элемент является параметром, определяющим, следует ли включать аутентификацию с секретным ключом.
По умолчанию он отключен и написано , но он закомментирован yes
, поэтому раскомментируйте его.
До изменения
#PubkeyAuthentication yes
После изменения
PubkeyAuthentication yes
PasswordAuthentication yes
Искать:
Этот пункт является параметром, определяющим, следует ли включать аутентификацию по паролю.
Он включен по умолчанию, и даже если вы включите аутентификацию с закрытым ключом, это не имеет смысла с точки зрения безопасности, если он останется включенным, поэтому раскомментируйте его и no
установите .
До изменения
#PasswordAuthentication yes
После изменения
PasswordAuthentication no
Закомментируйте следующую строку ближе к концу: Это ключевая настройка для группы administrators, и мы отключим ее, потому что в этом случае мы будем поддерживать вход для каждого пользователя.
До изменения
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
После изменения
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
После сохранения файла после OpenSSH SSH Server
изменения перезапустите службу, чтобы отразить настройки.
Если вы хотите изменить порт
Если вы хотите изменить порт SSH, измените следующее.
До изменения
#Port 22
После изменения
#Port <任意の番号>
Изменив номер порта, порт по умолчанию не будет атакован, что приведет к усилению безопасности. С другой стороны, это увеличивает сложность операции, поэтому нужно быть внимательным.
При изменении номера порта при подключении необходимо указать порт, отличный от 22.
Создание закрытых и открытых ключей
Это задача на стороне клиента. Однако на самом деле не имеет значения, где вы работаете. Однако будьте осторожны, чтобы не допустить утечки созданного вами закрытого ключа.
Если у вас Windows 10 или более поздняя версия, Windows Server 2019 или более поздняя версия, клиент OpenSSH установлен по умолчанию, поэтому вы можете легко создать его с помощью команды. В других средах потребуется установить отдельный OpenSSH-клиент или использовать отдельный инструмент.
Следующие советы предназначены для SFTP, но пожалуйста, обратитесь к ним для настройки клиента OpenSSH.
В клиентской среде запустите командную строку, PowerShell, терминал или любое средство, которое может выполнять команды.
Так как вы будете создавать файл, перейдите cd
в любой каталог с помощью команды.
Выполните следующую команду:
ssh-keygen -t rsa -f id_rsa
Вы можете установить парольную фразу (пароль) для ключа, поэтому при необходимости введите его. Если вы зададите парольную фразу, безопасность будет повышена, но это увеличит время и усилия на ввод парольной фразы в последующем процессе.
Созданы открытый ключ (id_rsa.pub) и закрытый ключ (id_rsa).
Открытый ключ (id_rsa.pub) будет размещен на удаленном адресате позже. Закрытый ключ может находиться в любом месте удаленного клиента, но он должен находиться в папке, доступ к которой может получить только учетная запись, используемая в целях безопасности. В принципе, я думаю, что нет никаких проблем, если вы разместите его в следующей папке на стороне клиента. Если вы используете клиент OpenSSH, он будет переходить к этой папке по умолчанию.
C:\Users\<ユーザー名>\.ssh
Если вы не можете создать вышеуказанную папку в проводнике, вы можете создать ее с помощью следующей команды.
cd C:\Users\<ユーザー名>
mkdir .ssh
Размещение открытых ключей
Это дистанционная операция.
Поместите созданный открытый ключ (id_rsa.pub) в удаленное место назначения.
Переместите этот файл в следующую папку: <ユーザー名>
— это имя учетной записи пользователя, в которую вы войдете при фактическом удаленном подключении.
C:\Users\<ユーザー名>\.ssh
Если у вас нет папки и вы не можете создать папку в проводнике, вы можете создать папку с помощью следующей команды.
cd C:\Users\<ユーザー名>
mkdir .ssh
Измените развернутый файл authorized_keys
открытого ключа на . Ну вот.
В зависимости от среды у вас может уже authorized_keys
быть файл. Это может произойти в том случае, если вы настроили SSH-соединение для других целей.
В этом случае authorized_keys
вы зарегистрировали файл, открыв файл и файл с помощью Блокнота и т. д., и id_rsa.pub
перечислив содержимое id_rsa.pub в следующей строке authorized_keys.
В authorized_keys можно зарегистрировать несколько открытых ключей.
Подключение по SSH
При подключении с помощью команды OpenSSH
Существуют различные способы подключения по SSH, но начнем с подключения на основе команд. На самом деле, соединение с наименьшим количеством шагов происходит по команде. В качестве предварительного условия у вас должен быть установлен клиент OpenSSH.
Запустите любое командное средство (командная строка, PowerShell, терминал).
Введите следующую команду:
Формат команды
ssh -i <秘密鍵ファイルパス> -L <ローカルの空いているポート>:127.0.0.1:3389 <接続先のユーザーアカウント名>@<接続先サーバーIPアドレス、またはホスト名>
Ниже приведено объяснение параметров. Установите его в соответствии с вашей средой.
параметра переменнойОписание имени | ||
---|---|---|
Сш | Объявление об использовании SSH с OpenSSH. | |
-я | Объявление об использовании файла закрытого ключа. | |
< путь к файлу закрытого ключа> | ● | Опишите расположение созданного файла закрытого ключа. C:\Users\<ユーザー名>\.ssh Путь необязателен. В противном случае требуется абсолютный или относительный путь. |
-Л | В этом объявлении указывается порт, который будет использоваться локально и удаленно при подключении к удаленному назначению. | |
< местный свободный порт> | ● | Подключение к удаленному рабочему столу обычно использует порт 3389, но вы можете подключиться с помощью любого порта. Неважно, какой это номер, главное, чтобы он был свободен. |
127.0.0.1 | Это IP-адрес хоста, который распознает, откуда подключен удаленный адресат. В принципе, 127.0.0.1 вполне подойдет. | |
3389 | Номер порта, который будет использоваться в удаленном пункте назначения. Удаленный пункт назначения обычно подключается через порт 3389 с подключением к удаленному рабочему столу, поэтому его можно оставить как есть. | |
< имя учетной записи пользователя, к которой вы хотите подключиться> | ● | Укажите, к какой учетной записи вы хотите подключиться в удаленном месте назначения. |
< IP-адрес или имя хоста сервера, к которому нужно подключиться> | ● | Указывает удаленный сервер назначения. |
Пример входных данных
ssh -i id_rsa -L 13389:127.0.0.1:3389 TestUser@52.140.221.194
В первый раз вам будет предложено ввести клавишу, поэтому yes
введите и нажмите Enter.
Если у вас есть парольная фраза, установленная для вашего закрытого ключа, вы должны ввести ее.
Следующие элементы будут находиться в подключенном состоянии. Вы можете видеть, что отображается пользователь на стороне сервера, а не клиент. Пока это окно отображается, оно подключено, поэтому, пожалуйста, не закрывайте его. Если вы закроете его, соединение будет разорвано.
При подключении к PuTTY
Здесь мы попробуем подключиться к SSH с помощью инструмента под названием PuTTY.
Преобразование закрытого ключа
Во-первых, если вы используете PuTTY, вам нужно будет преобразовать закрытый ключ. Я думаю, что в прилагаемом инструменте есть «puttygen .exe», поэтому, пожалуйста, запустите его.
Выберите в меню «Конверсии -> Ключ импорта».
Выберите созданный вами закрытый ключ, в данном случае «id_rsa».
Если вы установили парольную фразу, введите ее.
Выберите в меню пункт "Файл -> Сохранить закрытый ключ".
「. .ppk".
После создания все готово.
Настройка PuTTY
Запустите putty.exe.
Введите IP-адрес среды, к которой вы хотите подключиться. Если у вас есть домен, вы можете подключиться с помощью доменного имени.
Выберите Connection -> Data (Подключение - данные) в меню слева. В поле Имя пользователя для автоматического входа введите имя учетной записи среды, к которой вы хотите подключиться.
В меню слева выберите Connection -> SSH -> Tunnels. Введите каждый из них в поле ввода ниже и нажмите кнопку «Добавить».
Примечание к параметраимени | ||
---|---|---|
Исходный порт | 13389 | Подойдет любой бесплатный порт. Я воспользуюсь им позже |
Назначение | 127.0.0.1:3389 |
При добавлении он должен выглядеть следующим образом:
Затем выберите «Connection -> SSH -> Auth -> Cledentioals» в меню слева и нажмите кнопку «Обзор» для «Файл закрытого ключа для аутентификации».
Выберите сохраненный закрытый ключ.
Выберите «Сеанс» в меню слева, введите имя по вашему выбору для «Сохранить сеансы» и нажмите кнопку «Сохранить». В следующий раз можно загрузить эту настройку.
После подтверждения сохранения нажмите кнопку «Открыть».
При первом подключении отобразится следующий экран. Нажмите кнопку Принять.
Вы увидите экран, похожий на командную строку. Если у вас есть парольная фраза для закрытого ключа, введите ее.
Если содержимое дисплея изменится, как показано ниже, оно будет подключено. Вы можете видеть, что отображается пользователь на стороне сервера, а не клиент. Пока это окно отображается, оно подключено, поэтому, пожалуйста, не закрывайте его. Если вы закроете его, соединение будет разорвано.
Подключение к удаленному рабочему столу с помощью SSH
Теперь давайте установим подключение к удаленному рабочему столу при подключении по SSH.
При подключении компьютерной частью является не фактический удаленный адрес, а "localhost:< > имя порта, указанное в SSH-соединении". В примере было указано 13389, поэтому здесь мы будем подключаться к "localhost:13389".
Если отображается экран аутентификации, можно считать, что подключение завершено. Введите логин и пароль для подключения.
Если вы можете подключиться таким образом, вы преуспели.
Отключите регулярные подключения к удаленному рабочему столу в настройках брандмауэра
На момент предыдущего пункта теперь можно подключиться к удаленному рабочему столу с помощью SSH. Однако в этом состоянии "Подключение к удаленному рабочему столу по SSH" было добавлено только к "Обычному подключению к удаленному рабочему столу". С точки зрения безопасности это ничего не добавляет. Поэтому следующее, что нужно сделать, это предотвратить «нормальное подключение к удаленному рабочему столу».
Если вы сделаете эту настройку, вы не сможете подключиться, кроме как «подключение к удаленному рабочему столу по SSH», поэтому, если вы нарушите настройки, у вас может не быть средств для удаленного подключения. Поэтому обязательно заранее проверьте, возможно ли «подключение к удаленному рабочему столу по SSH», и иметь возможность управлять удаленной средой другими способами, даже если клиент, к которому вы пытаетесь подключиться, исчезнет.
Здесь настройте параметры брандмауэра в разделе «Подключение к удаленному рабочему столу через SSH». Это связано с тем, что если вы выполняете операцию с «обычным подключением к удаленному рабочему столу», он будет отключен в тот момент, когда вы установите брандмауэр.
Просмотрите брандмауэр Защитника Windows с расширенной безопасностью. В зависимости от версии Windows расположение дисплея может отличаться, поэтому отображайте его в соответствии с этой версией.
Выберите Inbound Rules (Правила для входящего трафика) в меню слева.
В среднем списке найдите «Удаленный рабочий стол — Пользовательский режим (TCP In)» и откройте его свойства.
Выберите вкладку Область, измените локальный IP-адрес на Эти IP-адреса и нажмите кнопку Добавить.
Введите 127.0.0.1 и нажмите кнопку ОК. Это предотвратит подключения к удаленному рабочему столу из любого места, отличного от 127.0.0.1. 127.0.0.1 — это IP-адрес, указывающий на ваш компьютер. Если вы введете неверное значение, возможно, вы не сможете подключиться откуда-либо, поэтому будьте внимательны.
Нажмите кнопку OK для подтверждения.
Пока это само по себе является контрмерой, но давайте также установим «Удаленный рабочий стол — пользовательский режим (UDP Receive)».
Убедитесь, что вы не можете удаленно подключиться к чему-либо, кроме SSH
Теперь попробуйте подключиться к удаленному рабочему столу с другого компьютера, который не использует SSH.
Если вы можете подключиться, отобразится экран аутентификации. Ничего страшного, если вы можете подтвердить, что подключение не может быть выполнено, как показано ниже.
Сводка
В последней версии Windows теперь легко внедрить SSH-сервер. Добавив настройки, вы можете легко повысить безопасность подключения к удаленному рабочему столу. Однако, поскольку он отвечает только за меры безопасности в самой Windows, Если вы хотите сделать его более безопасным, я думаю, что предпочтительнее настроить отдельный SSH-сервер или брандмауэр перед подключением к Windows.
Кроме того, вы можете жестко настроить безопасность с помощью SSH, но когда это слишком сложно, никто не может подключиться из-за ошибки в работе. Будьте осторожны, чтобы не оказаться в таком положении.