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 do Linux remoto seguro compatível com FIPS está disponível no Visual Studio versão 16.5 e posterior de 2019.

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. Windows validou o suporte para módulos criptográficos compatíveis com FIPS. No Visual Studio versão 16.5 de 2019 e posterior, você pode usar uma conexão criptográfica segura e compatível com FIPS com seu sistema Linux para desenvolvimento remoto.

Veja como configurar uma conexão segura e compatível com FIPS entre Visual Studio e seu sistema Linux remoto. Este guia é aplicável quando você cria projetos CMake ou MSBuild Linux em Visual Studio. Este artigo é a versão compatível com FIPS das instruções de conexão em Conexão para o computador Linux remoto.

Preparar uma conexão compatível com FIPS

Alguma preparação é necessária para usar uma conexão SSH compatível com FIPS e criptograficamente segura entre Visual Studio e seu sistema Linux remoto. Para conformidade fips-140-2, 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 você 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 seguintes linhas:

    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 compatível com FIPS que o VS dá suporte. Os algoritmos aes*-ctr também são compatíveis com FIPS, mas a implementação em Visual Studio não é aprovada. Os algoritmos de troca de chaves ecdh-* são compatíveis com FIPS, mas Visual Studio não dá suporte a eles.

    Você não está limitado a essas opções. Você pode configurar o ssh para usar criptografias adicionais, 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, consulte a página do homem para sshd_config ou a configuração do servidor SSH do artigo.

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

    sudo service ssh restart
    

Em seguida, você criará um par de chaves RSA em seu computador Windows. Em seguida, você copiará 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 este comando:

    ssh-keygen -t rsa -b 4096
    

    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%cmd) Se você alterar o nome da chave, use o nome alterado nas etapas a seguir. Recomendamos que você use uma frase secreta para aumentar a segurança.

  2. Em 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-o para entrar do Windows:

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

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

Conexão para o sistema remoto em Visual Studio

  1. Em Visual Studio, escolha Opções de Ferramentas > 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 você não tiver configurado uma conexão no Visual Studio antes, ao compilar seu projeto pela primeira vez, 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.

    Screenshot showing the Connection Manager dialog.

    A janela Conexão para Sistema Remoto é exibida.

    Screenshot showing the Connect to Remote System window.

  3. Na caixa de diálogo Conexão 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 Escolher Chave Privada para uma conexão compatível com 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 de arquivo de chave privada . Você pode 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. Escolha o botão Conexão para tentar uma conexão com o computador remoto.

    Se a conexão for bem-sucedida, 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.

    Screenshot showing a Connection Manager Error.

    Para obter mais informações sobre como solucionar problemas de sua conexão, consulte Conexão para o computador Linux remoto.

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

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

Opcional: habilitar ou desabilitar o modo FIPS

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

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

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

  3. Em Política, selecione Criptografia do sistema: use algoritmos compatíveis com FIPS para criptografia, hash e assinatura e pressione Enter para abrir sua 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 fazer com que alguns aplicativos sejam interrompidos ou se comportem inesperadamente. Para obter mais informações, consulte a postagem no blog Por que não recomendamos mais o "modo FIPS".

Recursos adicionais

Documentação da Microsoft sobre validação fips 140

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

Programa de validação de algoritmo criptográfico: notas 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