Настраивает совместимую с FIPS безопасную удаленную разработку для Linux
Поддержка Linux реализована в Visual Studio версии 2017 и выше. Возможность совместимой с FIPS безопасной удаленной разработки для Linux доступна в Visual Studio 2019 версии 16.5 и более поздних версиях.
Federal Information Processing Standard (FIPS) Publication 140-2 (Федеральный стандарт по обработке информации) — это стандарт безопасности правительства США для криптографических модулей. Реализации стандарта утверждаются институтом NIST. В Windows представлена проверенная поддержка FIPS-совместимых криптографических модулей. В Visual Studio 2019 версии 16.5 и более поздних можно использовать безопасное FIPS-совместимое криптографическое подключение к системе Linux для удаленной разработки.
В этой статье приводятся инструкции по настройке безопасного FIPS-совместимого подключения между Visual Studio и удаленной системой Linux. Они применимы при создании проектов Linux CMake или MSBuild в Visual Studio. Эта статья представляет собой версию инструкций по настройке FIPS-совместимого подключения, которые приведены в документе о подключении к удаленному компьютеру Linux.
Подготовка FIPS-совместимого подключения
Для использования FIPS-совместимого криптографически безопасного SSH-подключения между Visual Studio и удаленной системой Linux требуется выполнить ряд подготовительных процедур. Для обеспечения совместимости с FIPS-140-2 Visual Studio поддерживает только ключи RSA.
В примерах в этой статье используется Ubuntu 18.04 LTS с сервером OpenSSH версии 7.6. Для всех дистрибутивов с относительно недавней версией OpenSSH следует придерживаться одинаковых инструкций.
Настройка сервера SSH в удаленной системе
В системе Linux установите и запустите сервер OpenSSH.
sudo apt install openssh-server sudo service ssh start
Чтобы сервер
ssh
автоматически запускался при загрузке системы, выполните командуsystemctl
.sudo systemctl enable ssh
Откройте
/etc/ssh/sshd_config
в качестве корневой папки. Измените (или добавьте, если они не существуют) следующие строки:Ciphers aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc HostKeyAlgorithms ssh-rsa KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1 MACs hmac-sha2-256,hmac-sha1
Примечание.
ssh-rsa
— это единственный FIPS-совместимый алгоритм ключа узла, поддерживаемый Visual Studio. Алгоритмыaes*-ctr
также совместимы с FIPS, но их реализация в Visual Studio не утверждена. Алгоритмы обмена ключамиecdh-*
совместимы с FIPS, но не поддерживаются в Visual Studio.Вы также можете использовать другие параметры. Можно настроить
ssh
для использования других шифров, алгоритмов ключей узлов и т. д. Также доступны и другие важные параметры безопасности, которые стоит рассмотреть, —PermitRootLogin
,PasswordAuthentication
иPermitEmptyPasswords
. Дополнительные сведения см. на странице по или в статьеman
Конфигурация сервера SSHsshd_config
.После сохранения и закрытия
sshd_config
перезапустите сервер SSH, чтобы применить новую конфигурацию.sudo service ssh restart
Далее вы создадите пару ключей RSA на компьютере Windows. Затем вы скопируете открытый ключ в удаленную систему Linux для его использования ssh
.
Создание и использование файла ключа RSA
На компьютере Windows создайте пару открытого и закрытого ключей RSA с помощью следующей команды:
ssh-keygen -t rsa -b 4096 -m PEM
У вас будет пара, состоящая из открытого и закрытого ключей. По умолчанию ключи сохраняются в файлах
%USERPROFILE%\.ssh\id_rsa
и%USERPROFILE%\\.ssh\\id_rsa.pub
. (В PowerShell вместо макроса cmd%USERPROFILE%
нужно использовать$env:USERPROFILE
.) В случае изменения имени ключа используйте новое имя в последующих шагах. В целях повышения безопасности рекомендуется использовать парольную фразу.Скопируйте открытый ключ из Windows на компьютер Linux.
scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
В системе Linux добавьте этот ключ в список авторизованных ключей и убедитесь, что для файла установлены правильные разрешения.
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
Теперь можно проверить, работает ли новый ключ в
ssh
. Выполните с его помощью вход из Windows.ssh -i %USERPROFILE%\.ssh\id_rsa user@hostname
Вы успешно настроили ssh
, создали и развернули ключи шифрования и проверили подключение. Теперь вы можете настроить подключение в Visual Studio.
Подключение к удаленной системе в Visual Studio
Чтобы в Visual Studio открыть диалоговое окно Параметры, в строке меню выберите Сервис > Параметры. Затем выберите Кроссплатформенный > Диспетчер подключений, чтобы открыть диалоговое окно диспетчера подключений.
Если подключение в Visual Studio не было настроено ранее, это диалоговое окно откроется при первом создании проекта.
В диалоговом окне диспетчера подключений нажмите кнопку Добавить, чтобы добавить новое подключение.
Откроется окно Подключение к удаленной системе.
В диалоговом окне Подключение к удаленной системе введите сведения о подключении удаленного компьютера.
Формат ввода Description Host Name Имя или IP-адрес целевого устройства порт. Порт, в котором работает служба SSH, обычно 22 Имя пользователя Пользователь для проверки подлинности Тип проверки подлинности Для FIPS-совместимого подключения выберите элемент Закрытый ключ. Файл закрытого ключа Закрытый ключ, созданный для подключения по SSH Парольная фраза Парольная фраза, используемая с закрытым ключом, выбранным выше Измените тип проверки подлинности, выбрав значение Закрытый ключ. В поле Файл закрытого ключа введите путь к закрытому ключу. Или нажмите кнопку Обзор, чтобы перейти к файлу закрытого ключа. Затем в поле Парольная фраза введите парольную фразу, используемую для шифрования файла закрытого ключа.
Нажмите кнопку Подключить, чтобы попытаться подключиться к удаленному компьютеру.
Если соединение будет установлено успешно, Visual Studio настроит IntelliSense для использования удаленных заголовков. Подробнее см. раздел об использовании IntelliSense для заголовков в удаленных системах.
Если подключение установить не удастся, будут выделены красным цветом поля, информацию в которых нужно изменить.
Дополнительные сведения об устранении неполадок с подключением см. в статье Подключение к удаленному компьютеру Linux.
Служебная программа командной строки для диспетчера подключений
Visual Studio 2019 версии 16.5 или более поздних версий: ConnectionManager.exe
— это программа командной строки для управления подключениями удаленной разработки вне Visual Studio. Ее удобно использовать для выполнения таких задач, как подготовка нового компьютера разработчика. Кроме того, с ее помощью можно настроить Visual Studio для непрерывной интеграции. Примеры и полные справочные сведения по командам ConnectionManager см. в статье Справка по ConnectionManager.
Дополнительно: включение и отключение режима FIPS
Режим FIPS можно включить в Windows глобально.
Для включения режима FIPS нажмите Windows+R, чтобы открыть диалоговое окно Выполнить, а затем запустите
gpedit.msc
.Откройте раздел Политика локального компьютера > Конфигурация компьютера > Параметры Windows > Параметры безопасности > Локальные политики и выберите Параметры безопасности.
В разделе Политика выберите Системное шифрование: использовать FIPS-совместимые алгоритмы для шифрования, хэширования и подписывания, а затем нажмите клавишу ВВОД, чтобы открыть соответствующее диалоговое окно.
На вкладке Параметр локальной безопасности выберите Включен или Отключен, а затем нажмите кнопку ОК, чтобы сохранить изменения.
Предупреждение
Включение режима FIPS может привести к нарушению работы некоторых приложений. Дополнительные сведения см. в записи блога о том, почему мы больше не рекомендуем использовать режим FIPS.
Дополнительные ресурсы
Документация Майкрософт по проверке FIPS 140
FIPS 140-2: Security Requirements for Cryptographic Modules (FIPS 140-2: требования безопасности для криптографических модулей) (автор: институт NIST)
Программа проверки алгоритма шифрования: примечания по проверке (автор: институт NIST)
Запись блога Майкрософт о том, почему мы больше не рекомендуем "режим FIPS"
См. также
Настройка проекта Linux
Настройка проекта Linux CMake
Подключение к удаленному компьютеру Linux
Развертывание, запуск и отладка проекта Linux
Настройка сеансов отладки CMake