Configuración del desarrollo de Linux remoto seguro compatible con FIPS
La compatibilidad con Linux está disponible en Visual Studio 2017 y versiones posteriores. El desarrollo remoto seguro de Linux compatible con FIPS está disponible en Visual Studio 2019, versión 16.5 y posteriores.
La publicación del Estándar federal de procesamiento de información (FIPS) 140-2 es un estándar del gobierno de EE. UU. para los módulos criptográficos. NIST valida las implementaciones del estándar. Windows ofrece soporte técnico validado para los módulos criptográficos compatibles con FIPS. En Visual Studio 2019, versión 16.5 y posteriores, puede usar una conexión criptográfica segura compatible con FIPS para su sistema Linux de desarrollo remoto.
Aquí se muestra cómo configurar una conexión segura compatible con FIPS entre Visual Studio y el sistema Linux remoto. Esta guía es aplicable al compilar proyectos de CMake o MSBuild de Linux en Visual Studio. Este artículo es la versión compatible con FIPS de las instrucciones de conexión en Conexión al equipo remoto Linux.
Preparación de una conexión compatible con FIPS
Se requiere alguna preparación para usar una conexión SSH criptográficamente segura y compatible con FIPS entre Visual Studio y el sistema Linux remoto. Para el cumplimiento con FIPS-140-2, Visual Studio solo admite claves RSA.
En los ejemplos de este artículo se usa Ubuntu 18.04 LTS con el servidor OpenSSH, versión7.6. No obstante, las instrucciones deben ser iguales para cualquier distribución que use una versión bastante reciente de OpenSSH.
Para configurar el servidor SSH en el sistema remoto
En el sistema Linux, instale e inicie el servidor OpenSSH:
sudo apt install openssh-server sudo service ssh start
Si desea que el servidor
ssh
se inicie automáticamente al arrancar el sistema, habilítelo mediantesystemctl
:sudo systemctl enable ssh
Abra
/etc/ssh/sshd_config
como raíz. Edite las líneas siguientes, o agréguelas si no existen: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
Nota:
ssh-rsa
es el único algoritmo de claves de host compatible con FIPS que VS admite. Los algoritmosaes*-ctr
también son compatibles con FIPS, pero la implementación en Visual Studio no está aprobada. Los algoritmos de intercambio de claves deecdh-*
son compatibles con FIPS, pero Visual Studio no los admite.No está limitado a estas opciones. Puede configurar
ssh
para usar otros cifrados, algoritmos de claves de host, etc. Algunas otras opciones de seguridad importantes que se pueden considerar sonPermitRootLogin
,PasswordAuthentication
yPermitEmptyPasswords
. Para obtener más información, consulte la páginaman
desshd_config
o el artículo sobre la configuración del servidor SSH.Después de guardar y cerrar
sshd_config
, reinicie el servidor SSH para aplicar la nueva configuración:sudo service ssh restart
A continuación, creará un par de claves RSA en el equipo Windows. A continuación, copiará la clave pública en el sistema Linux remoto para que la use ssh
.
Para crear y usar un archivo de clave RSA
En la máquina Windows, genere un par de claves RSA pública y privada mediante este comando:
ssh-keygen -t rsa -b 4096 -m PEM
Este comando creará una clave pública y una clave privada. De forma predeterminada, las claves se guardan en
%USERPROFILE%\.ssh\id_rsa
y%USERPROFILE%\\.ssh\\id_rsa.pub
. (En PowerShell, use$env:USERPROFILE
en lugar de la macro cmd%USERPROFILE%
). Si cambia el nombre de la clave, utilice el nombre cambiado en los pasos siguientes. Se recomienda usar una frase de contraseña para aumentar la seguridad.En Windows, copie la clave pública en la máquina Linux:
scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
En el sistema Linux, agregue la clave a la lista de claves autorizadas y asegúrese de que el archivo tiene los permisos correctos:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
Ahora, puede realizar una prueba para ver si la nueva clave funciona en
ssh
. Úsela para iniciar sesión desde Windows:ssh -i %USERPROFILE%\.ssh\id_rsa user@hostname
Ha configurado correctamente ssh
, creado e implementado claves de cifrado y probado la conexión. Ya está preparado para configurar la conexión de Visual Studio.
Conexión al sistema remoto en Visual Studio
En Visual Studio, elija Herramientas > Opciones en la barra de menús para abrir el cuadro de diálogo Opciones. Después, seleccione Multiplataforma > Administrador de conexiones para abrir el cuadro de diálogo Administrador de conexiones.
Si no ha configurado anteriormente una conexión en Visual Studio, al crear el proyecto por primera vez, Visual Studio abre automáticamente el cuadro de diálogo Administrador de conexiones.
En el cuadro de diálogo Administrador de conexiones, elija el botón Agregar para agregar una nueva conexión.
Se muestra la ventana Conectar con el sistema remoto.
En el cuadro de diálogo Conectar con el sistema remoto, escriba los detalles de conexión de la máquina remota.
Entrada Descripción Nombre de host Nombre o dirección IP del dispositivo de destino Puerto Puerto en el que se ejecuta el servicio SSH, normalmente 22 Nombre de usuario Usuario como el que se autentica Tipo de autenticación Elección de la clave privada para una conexión compatible con FIPS Archivo de clave privada Archivo de clave privada creado para la conexión ssh Frase de contraseña Frase de contraseña usada con la clave privada seleccionada anteriormente Cambie el tipo de autenticación a Clave privada. Escriba la ruta de acceso a la clave privada en el campo Archivo de clave privada. Puede usar el botón Examinar para ir al archivo de clave privada en su lugar. A continuación, escriba la frase de contraseña usada para cifrar el archivo de clave privada en el campo Frase de contraseña.
Seleccione el botón Conectar para intentar la conexión con el equipo remoto.
Si la conexión se realiza correctamente, Visual Studio configura IntelliSense para usar los encabezados remotos. Para más información, consulte IntelliSense para los encabezados en sistemas remotos.
Si se produce un error en la conexión, se marcan en rojo los cuadros de entrada que deben cambiarse.
Para obtener más información sobre la solución de problemas de conexión, consulte Conexión al equipo remoto Linux.
Utilidad de línea de comandos para el Administrador de conexiones
Visual Studio 2019, versión 16.5 o posteriores: ConnectionManager.exe
es una utilidad de línea de comandos para administrar conexiones de desarrollo remotas fuera de Visual Studio. Resulta útil para tareas como el aprovisionamiento de una nueva máquina de desarrollo. O bien, puede usarla para configurar Visual Studio para la integración continua. Para obtener ejemplos y una referencia completa al comando ConnectionManager, consulte Referencia de ConnectionManager.
Opcional: habilite o deshabilite el modo FIPS.
Es posible habilitar el modo FIPS globalmente en Windows.
Para habilitar el modo FIPS, presione Windows+R para abrir el cuadro de diálogo Ejecutar y, a continuación, ejecute
gpedit.msc
.Expanda Directiva de equipo local > Configuración del equipo > Configuración de Windows > Configuración de seguridad > Directivas locales y seleccione Opciones de seguridad.
En Directiva, seleccione Criptografía de sistema: utilice algoritmos compatibles con FIPS para el cifrado, las operaciones hash y las firmas; después, presione Entrar para abrir su cuadro de diálogo.
En la pestaña Configuración de seguridad local, seleccione Habilitado o Deshabilitado y, a continuación, elija Aceptar para guardar los cambios.
Advertencia
Al habilitar el modo FIPS, es posible que algunas aplicaciones se interrumpan o se comporten de forma inesperada. Para obtener más información, consulte la entrada de blog sobre por qué ya no se recomienda el "modo FIPS".
Recursos adicionales
Documentación de Microsoft sobre la validación de FIPS 140
FIPS 140-2: requisitos de seguridad para módulos criptográficos (de NIST)
Programa de validación de algoritmos criptográficos: notas de validación (de NIST)
Entrada de blog de Microsoft sobre por qué ya no se recomienda el "modo FIPS"
SSH Server Configuration (Configuración del servidor SSH)
Consulte también
Configuración de un proyecto de Linux
Configuración de un proyecto de CMake en Linux
Conexión al equipo remoto de Linux
Implementación, ejecución y depuración del proyecto de Linux
Configuración de sesiones de depuración de CMake