Configurar um desenvolvimento remoto seguro em Linux em conformidade com o FIPS

O suporte ao Linux está disponível no Visual Studio 2017 e posterior. O desenvolvimento remoto seguro em Linux em conformidade com o FIPS está disponível no Visual Studio 2019 versão 16.5 e posterior.

A publicação 140-2 do Padrão de Processamento de Informações Federais (FIPS) é um padrão do governo dos EUA para módulos criptográficos. As implementações do padrão são validadas pelo NIST. O Windows validou o suporte para módulos criptográficos em conformidade com o FIPS. No Visual Studio 2019 versão 16.5 e posterior, você pode usar uma conexão criptográfica segura e em conformidade com o FIPS com o sistema Linux para desenvolvimento remoto.

Veja como configurar uma conexão segura e em conformidade com o com FIPS entre o Visual Studio e seu sistema Linux remoto. Este guia é aplicável para criar projetos do CMake ou do MSBuild em Linux no Visual Studio. Este artigo é a versão em conformidade com o FIPS das instruções de conexão em Conectar-se ao computador Linux remoto.

Preparar uma conexão em conformidade com o FIPS

É necessária alguma preparação para usar uma conexão SSH em conformidade com o FIPS e criptograficamente segura entre o Visual Studio e seu sistema Linux remoto. Para conformidade FIPS-140-2, o Visual Studio dá suporte apenas a chaves RSA.

Os exemplos neste artigo usam o Ubuntu 18.04 LTS com o servidor OpenSSH versão 7.6. No entanto, as instruções devem ser as mesmas para qualquer distribuição usando uma versão moderadamente recente do OpenSSH.

Para configurar o servidor SSH no sistema remoto

  1. No sistema Linux, instale e inicie o servidor OpenSSH:

    sudo apt install openssh-server
    sudo service ssh start
    
  2. Se quiser que o servidor ssh seja iniciado automaticamente quando o sistema for inicializado, habilite-o usando o systemctl:

    sudo systemctl enable ssh
    
  3. Abra /etc/ssh/sshd_config como raiz. Edite (ou adicione, se não existirem) as linhas a seguir:

    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
    

    Observação

    ssh-rsa é o único algoritmo de chave de host em conformidade com o FIPS que o VS dá suporte. Os algoritmos aes*-ctr também estão em conformidade com o FIPS, mas a implementação no Visual Studio não está aprovada. Os algoritmos de troca de chaves ecdh-* estão em conformidade com o FIPS, mas o Visual Studio não dá suporte a eles.

    Você não está limitado a essas opções. Você pode configurar ssh para usar outras criptografias, algoritmos de chave de host e assim por diante. Algumas outras opções de segurança relevantes que talvez você queira considerar são PermitRootLogin, PasswordAuthenticatione PermitEmptyPasswords. Para obter mais informações, confira a página man para sshd_config ou o artigo Configuração do servidor SSH.

  4. Depois de salvar e fechar o sshd_config, reinicie o servidor ssh para aplicar a nova configuração:

    sudo service ssh restart
    

Em seguida, crie um par de chaves RSA em seu computador Windows. Em seguida, copie a chave pública para o sistema Linux remoto para uso por ssh.

Para criar e usar um arquivo de chave RSA

  1. No computador Windows, gere um par de chaves RSA público/privado usando o comando:

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

    O comando cria uma chave pública e uma chave privada. Por padrão, as chaves são salvas em %USERPROFILE%\.ssh\id_rsa e %USERPROFILE%\\.ssh\\id_rsa.pub. (No PowerShell, use $env:USERPROFILE em vez da macro %USERPROFILE% do cmd). Se alterar o nome da chave, use o nome alterado nas etapas a seguir. Recomendamos que use uma frase secreta para aumentar a segurança.

  2. No Windows, copie a chave pública para o computador Linux:

    scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
    
  3. No sistema Linux, adicione a chave à lista de chaves autorizadas e verifique se o arquivo tem as permissões corretas:

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  4. Agora, você pode testar para ver se a nova chave funciona no ssh. Use-a para entrar no Windows:

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

Você configurou com êxito o ssh, criou e implantou chaves de criptografia e testou sua conexão. Agora está pronto para configurar a conexão do Visual Studio.

Conecte-se ao sistema remoto no Visual Studio

  1. No Visual Studio, escolha Ferramentas > Opções na barra de menus para abrir a caixa de diálogo Opções. Em seguida, selecione Gerenciador de Conexões multiplataforma > para abrir a caixa de diálogo Gerenciador de Conexões.

    Se não tiver configurado previamente uma conexão no Microsoft Visual Studio, ao compilar seu projeto pela primeira vez, o Microsoft Visual Studio abrirá a caixa de diálogo Gerenciador de Conexões para você.

  2. Na caixa de diálogo Gerenciador de Conexões, escolha o botão Adicionar para adicionar uma nova conexão.

    Captura de tela mostrando o painel de opções na caixa de diálogo Gerenciador de Conexões. A opção Gerenciador de Conexões do Cross Platform > C plus plus > está realçado.

    É exibida a janela Conectar ao Sistema Remoto.

    Captura de tela mostrando a janela Conectar ao Sistema Remoto, que tem caixas de texto para o nome do host, porta, nome de usuário, tipo de autenticação e senha.

  3. Na caixa de diálogo Conectar ao Sistema Remoto, insira os detalhes da conexão do computador remoto.

    Entrada Descrição
    Nome do Host Nome ou endereço IP do dispositivo de destino
    Porta Porta na qual o serviço SSH está em execução, normalmente 22
    Nome de usuário Usuário como o qual será autenticado
    Tipo de autenticação Escolha Chave Privada para uma conexão em conformidade com o FIPS
    Arquivo de chave privada Arquivo de chave privada criado para conexão ssh
    Frase secreta Frase secreta usada com a chave privada selecionada acima

    Altere o tipo de autenticação para Chave Privada. Insira o caminho para sua chave privada no campo Arquivo de chave privada. Também é possível usar o botão Procurar para navegar até o arquivo de chave privada. Em seguida, insira a frase secreta usada para criptografar seu arquivo de chave privada no campo Frase secreta.

  4. Selecione o botão Conectar para tentar uma conexão com o computador remoto.

    Se a conexão for bem-sucedida, o Microsoft Visual Studio configurará o IntelliSense para usar os cabeçalhos remotos. Para saber mais, veja IntelliSense para cabeçalhos em sistemas remotos.

    Se a conexão falhar, as caixas de entrada que precisarem ser alteradas serão destacadas em vermelho.

    Captura de tela da janela Conectar ao Sistema Remoto que tem o nome do host e as caixas de texto da porta descritas em vermelho para indicar que elas precisam ser alteradas.

    Para obter mais informações sobre como solucionar problemas de conexão, confira Conectar-se ao seu computador Linux remoto.

Utilitário de linha de comando para o Gerenciador de Conexões

Microsoft Visual Studio 2019 versão 16.5 ou posterior: ConnectionManager.exe é um utilitário de linha de comando para gerenciar conexões de desenvolvimento remoto fora do Microsoft Visual Studio. Ele é útil para tarefas como provisionamento de uma nova máquina de desenvolvimento. Ou você pode usá-lo para configurar o Microsoft Visual Studio para integração contínua. Para obter exemplos e uma referência completa ao comando ConnectionManager, consulte Referência ao ConnectionManager.

Opcional: habilitar ou desabilitar o modo FIPS

É possível habilitar o modo FIPS globalmente no Windows.

  1. Para habilitar o modo FIPS, pressione Windows+R para abrir a caixa de diálogo Executar e, em seguida, execute gpedit.msc.

  2. Expanda a Política de configurações locais > Configuração do computador > Configurações do Windows > Configurações de Segurança > Políticas Locais e selecione Opções de Segurança.

  3. Em Política, selecione Criptografia do sistema: use algoritmos em conformidade com o FIPS para criptografia, hash e assinatura e pressione Enter para abrir a caixa de diálogo.

  4. Na guia Configuração de Segurança Local, selecione Habilitado ou Desabilitado e escolha OK para salvar suas alterações.

Aviso

Habilitar o modo FIPS pode causar a interrupção ou comportamento inesperados de alguns aplicativos. Para obter mais informações, confira a postagem no blog Por que não recomendamos mais o "modo FIPS".

Recursos adicionais

Documentação da Microsoft sobre a validação do FIPS 140

FIPS 140-2: Requisitos de segurança para módulos criptográficos (do NIST)

Programa de validação de algoritmo criptográfico: observações de validação (do NIST)

Postagem no blog da Microsoft sobre Por que não recomendamos mais o "modo FIPS"

Configuração do servidor SSH

Consulte Também

Configurar um projeto do Linux
Configurar um projeto do Linux CMake
Conectar-se ao computador Linux remoto
Implantar, executar e depurar o projeto do Linux
Configurar sessões de depuração do CMake