Поделиться через


Настраивает совместимую с 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 в удаленной системе

  1. В системе Linux установите и запустите сервер OpenSSH.

    sudo apt install openssh-server
    sudo service ssh start
    
  2. Чтобы сервер ssh автоматически запускался при загрузке системы, выполните команду systemctl.

    sudo systemctl enable ssh
    
  3. Откройте /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.

  4. После сохранения и закрытия sshd_config перезапустите сервер SSH, чтобы применить новую конфигурацию.

    sudo service ssh restart
    

Далее вы создадите пару ключей RSA на компьютере Windows. Затем вы скопируете открытый ключ в удаленную систему Linux для его использования ssh.

Создание и использование файла ключа RSA

  1. На компьютере Windows создайте пару открытого и закрытого ключей RSA с помощью следующей команды:

    ssh-keygen -t rsa -b 4096 -m PEM
    

    У вас будет пара, состоящая из открытого и закрытого ключей. По умолчанию ключи сохраняются в файлах %USERPROFILE%\.ssh\id_rsa и %USERPROFILE%\\.ssh\\id_rsa.pub. (В PowerShell вместо макроса cmd %USERPROFILE% нужно использовать $env:USERPROFILE.) В случае изменения имени ключа используйте новое имя в последующих шагах. В целях повышения безопасности рекомендуется использовать парольную фразу.

  2. Скопируйте открытый ключ из Windows на компьютер Linux.

    scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
    
  3. В системе Linux добавьте этот ключ в список авторизованных ключей и убедитесь, что для файла установлены правильные разрешения.

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  4. Теперь можно проверить, работает ли новый ключ в ssh. Выполните с его помощью вход из Windows.

    ssh -i %USERPROFILE%\.ssh\id_rsa user@hostname
    

Вы успешно настроили ssh, создали и развернули ключи шифрования и проверили подключение. Теперь вы можете настроить подключение в Visual Studio.

Подключение к удаленной системе в Visual Studio

  1. Чтобы в Visual Studio открыть диалоговое окно Параметры, в строке меню выберите Сервис > Параметры. Затем выберите Кроссплатформенный > Диспетчер подключений, чтобы открыть диалоговое окно диспетчера подключений.

    Если подключение в Visual Studio не было настроено ранее, это диалоговое окно откроется при первом создании проекта.

  2. В диалоговом окне диспетчера подключений нажмите кнопку Добавить, чтобы добавить новое подключение.

    Снимок экрана: панель параметров в диалоговом окне диспетчер подключений. Выделены кроссплатформенные > C плюс > диспетчер подключений.

    Откроется окно Подключение к удаленной системе.

    Снимок экрана: окно

  3. В диалоговом окне Подключение к удаленной системе введите сведения о подключении удаленного компьютера.

    Формат ввода Description
    Host Name Имя или IP-адрес целевого устройства
    порт. Порт, в котором работает служба SSH, обычно 22
    Имя пользователя Пользователь для проверки подлинности
    Тип проверки подлинности Для FIPS-совместимого подключения выберите элемент Закрытый ключ.
    Файл закрытого ключа Закрытый ключ, созданный для подключения по SSH
    Парольная фраза Парольная фраза, используемая с закрытым ключом, выбранным выше

    Измените тип проверки подлинности, выбрав значение Закрытый ключ. В поле Файл закрытого ключа введите путь к закрытому ключу. Или нажмите кнопку Обзор, чтобы перейти к файлу закрытого ключа. Затем в поле Парольная фраза введите парольную фразу, используемую для шифрования файла закрытого ключа.

  4. Нажмите кнопку Подключить, чтобы попытаться подключиться к удаленному компьютеру.

    Если соединение будет установлено успешно, Visual Studio настроит IntelliSense для использования удаленных заголовков. Подробнее см. раздел об использовании IntelliSense для заголовков в удаленных системах.

    Если подключение установить не удастся, будут выделены красным цветом поля, информацию в которых нужно изменить.

    Снимок экрана: окно

    Дополнительные сведения об устранении неполадок с подключением см. в статье Подключение к удаленному компьютеру Linux.

Служебная программа командной строки для диспетчера подключений

Visual Studio 2019 версии 16.5 или более поздних версий: ConnectionManager.exe — это программа командной строки для управления подключениями удаленной разработки вне Visual Studio. Ее удобно использовать для выполнения таких задач, как подготовка нового компьютера разработчика. Кроме того, с ее помощью можно настроить Visual Studio для непрерывной интеграции. Примеры и полные справочные сведения по командам ConnectionManager см. в статье Справка по ConnectionManager.

Дополнительно: включение и отключение режима FIPS

Режим FIPS можно включить в Windows глобально.

  1. Для включения режима FIPS нажмите Windows+R, чтобы открыть диалоговое окно Выполнить, а затем запустите gpedit.msc.

  2. Откройте раздел Политика локального компьютера > Конфигурация компьютера > Параметры Windows > Параметры безопасности > Локальные политики и выберите Параметры безопасности.

  3. В разделе Политика выберите Системное шифрование: использовать FIPS-совместимые алгоритмы для шифрования, хэширования и подписывания, а затем нажмите клавишу ВВОД, чтобы открыть соответствующее диалоговое окно.

  4. На вкладке Параметр локальной безопасности выберите Включен или Отключен, а затем нажмите кнопку ОК, чтобы сохранить изменения.

Предупреждение

Включение режима FIPS может привести к нарушению работы некоторых приложений. Дополнительные сведения см. в записи блога о том, почему мы больше не рекомендуем использовать режим FIPS.

Дополнительные ресурсы

Документация Майкрософт по проверке FIPS 140

FIPS 140-2: Security Requirements for Cryptographic Modules (FIPS 140-2: требования безопасности для криптографических модулей) (автор: институт NIST)

Программа проверки алгоритма шифрования: примечания по проверке (автор: институт NIST)

Запись блога Майкрософт о том, почему мы больше не рекомендуем "режим FIPS"

Конфигурация сервера SSH

См. также

Настройка проекта Linux
Настройка проекта Linux CMake
Подключение к удаленному компьютеру Linux
Развертывание, запуск и отладка проекта Linux
Настройка сеансов отладки CMake