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
No sistema Linux, instale e inicie o servidor OpenSSH:
sudo apt install openssh-server sudo service ssh start
Se quiser que o servidor
ssh
seja iniciado automaticamente quando o sistema for inicializado, habilite-o usando osystemctl
:sudo systemctl enable ssh
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 algoritmosaes*-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 chavesecdh-*
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ãoPermitRootLogin
,PasswordAuthentication
ePermitEmptyPasswords
. Para obter mais informações, confira a páginaman
parasshd_config
ou o artigo Configuração do servidor SSH.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
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.No Windows, copie a chave pública para o computador Linux:
scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
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
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
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ê.
Na caixa de diálogo Gerenciador de Conexões, escolha o botão Adicionar para adicionar uma nova conexão.
É exibida a janela Conectar ao Sistema Remoto.
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.
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.
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.
Para habilitar o modo FIPS, pressione Windows+R para abrir a caixa de diálogo Executar e, em seguida, execute
gpedit.msc
.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.
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.
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"
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