Configuración del desarrollo de Linux remoto seguro compatible con FIPSSet up FIPS-compliant secure remote Linux development

La compatibilidad con Linux está disponible en Visual Studio 2017 y versiones posteriores.Linux support is available in Visual Studio 2017 and later. El desarrollo remoto seguro de Linux compatible con FIPS está disponible en Visual Studio 2019, versión 16.5 y posteriores.FIPS-compliant secure remote Linux development is available in Visual Studio 2019 version 16.5 and later.

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.Federal Information Processing Standard (FIPS) Publication 140-2 is a U.S. government standard for cryptographic modules. NIST valida las implementaciones del estándar.Implementations of the standard are validated by NIST. Windows ofrece soporte técnico validado para los módulos criptográficos compatibles con FIPS.Windows has validated support for FIPS-compliant cryptographic modules. 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.In Visual Studio 2019 version 16.5 and later, you can use a secure, FIPS-compliant cryptographic connection to your Linux system for remote development.

Aquí se muestra cómo configurar una conexión segura compatible con FIPS entre Visual Studio y el sistema Linux remoto.Here's how to set up a secure, FIPS-compliant connection between Visual Studio and your remote Linux system. Esta guía es aplicable al compilar proyectos de CMake o MSBuild de Linux en Visual Studio.This guide is applicable when you build CMake or MSBuild Linux projects in 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.This article is the FIPS-compliant version of the connection instructions in Connect to your remote Linux computer.

Preparación de una conexión compatible con FIPSPrepare a FIPS-compliant connection

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.Some preparation is required to use a FIPS-compliant, cryptographically secure ssh connection between Visual Studio and your remote Linux system. Para el cumplimiento con FIPS-140-2, Visual Studio solo admite claves RSA.For FIPS-140-2 compliance, Visual Studio only supports RSA keys.

En los ejemplos de este artículo se usa Ubuntu 18.04 LTS con el servidor OpenSSH, versión7.6.The examples in this article use Ubuntu 18.04 LTS with OpenSSH server version 7.6. No obstante, las instrucciones deben ser iguales para cualquier distribución que use una versión bastante reciente de OpenSSH.However, the instructions should be the same for any distro using a moderately recent version of OpenSSH.

Para configurar el servidor SSH en el sistema remotoTo set up the SSH server on the remote system

  1. En el sistema Linux, instale e inicie el servidor OpenSSH:On the Linux system, install and start the OpenSSH server:

    sudo apt install openssh-server
    sudo service ssh start
    
  2. Si desea que el servidor SSH se inicie automáticamente al arrancar el sistema, habilítelo mediante systemctl:If you’d like the ssh server to start automatically when the system boots, enable it using systemctl:

    sudo systemctl enable ssh
    
  3. Abra /etc/ssh/sshd_config como raíz.Open /etc/ssh/sshd_config as root. Edite las líneas siguientes (o agréguelas si no existen):Edit (or add, if they don’t exist) the following lines:

    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 e el único algoritmo de claves de host compatible con FIPS que VS admite.ssh-rsa is the only FIPS compliant host key algorithm VS supports. Los algoritmos aes*-ctr también son compatibles con FIPS, pero la implementación en Visual Studio no está aprobada.The aes*-ctr algorithms are also FIPS compliant, but the implementation in Visual Studio isn't approved. Los algoritmos de intercambio de claves de* ECDH son conformes a FIPS, pero Visual Studio no los admite.The ecdh-* key exchange algorithms are FIPS compliant, but Visual Studio doesn't support them.

    No está limitado a estas opciones.You're not limited to these options. Puede configurar SSH para usar cifrados adicionales, algoritmos de claves de host, etc.You can configure ssh to use additional ciphers, host key algorithms, and so on. Algunas otras opciones de seguridad importantes que se pueden considerar son PermitRootLogin, PasswordAuthentication y PermitEmptyPasswords.Some other relevant security options you may want to consider are PermitRootLogin, PasswordAuthentication, and PermitEmptyPasswords. Para obtener más información, consulte la página man de sshd_config o el artículo sobre la configuración del servidor SSH.For more information, see the man page for sshd_config or the article SSH Server Configuration.

  4. Después de guardar y cerrar sshd_config, reinicie el servidor SSH para aplicar la nueva configuración:After saving and closing sshd_config, restart the ssh server to apply the new configuration:

    sudo service ssh restart
    

A continuación, creará un par de claves RSA en el equipo Windows.Next, you'll create an RSA key pair on your Windows computer. A continuación, copiará la clave pública en el sistema Linux remoto para que la use SSH.Then you'll copy the public key to the remote Linux system for use by ssh.

Para crear y usar un archivo de clave RSATo create and use an RSA key file

  1. En la máquina Windows, genere un par de claves RSA pública y privada mediante este comando:On the Windows machine, generate a public/private RSA key pair by using this command:

    ssh-keygen -t rsa -b 4096
    

    Este comando creará una clave pública y una clave privada.The command creates a public key and a private key. De forma predeterminada, las claves se guardan en %USERPROFILE%\.ssh\id_rsa y %USERPROFILE%\.ssh\id_rsa.pub.By default, the keys are saved to %USERPROFILE%\.ssh\id_rsa and %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.(In Powershell, use $env:USERPROFILE instead of the cmd macro %USERPROFILE%) If you change the key name, use the changed name in the steps that follow. Se recomienda usar una frase de contraseña para aumentar la seguridad.We recommend you use a passphrase for increased security.

  2. En Windows, copie la clave pública en la máquina Linux:From Windows, copy the public key to the Linux machine:

    scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
    
  3. En el sistema Linux, agregue la clave a la lista de claves autorizadas y asegúrese de que el archivo tiene los permisos correctos:On the Linux system, add the key to the list of authorized keys, and ensure the file has the correct permissions:

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  4. Ahora, puede realizar una prueba para ver si la nueva clave funciona en SSH.Now, you can test to see if the new key works in ssh. Úsela para iniciar sesión desde Windows:Use it to sign in from Windows:

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

Ha configurado correctamente SSH, creado e implementado claves de cifrado y probado la conexión.You've successfully set up ssh, created and deployed encryption keys, and tested your connection. Ya está preparado para configurar la conexión de Visual Studio.Now you're ready to set up the Visual Studio connection.

Conexión al sistema remoto en Visual StudioConnect to the remote system in Visual Studio

  1. En Visual Studio, elija Herramientas > Opciones en la barra de menús para abrir el cuadro de diálogo Opciones.In Visual Studio, choose Tools > Options on the menu bar to open the Options dialog. A continuación, seleccione Multiplataforma > Administrador de conexiones para abrir el cuadro de diálogo Administrador de conexiones.Then select Cross Platform > Connection Manager to open the Connection Manager dialog.

    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.If you haven't set up a connection in Visual Studio before, when you build your project for the first time, Visual Studio opens the Connection Manager dialog for you.

  2. En el cuadro de diálogo Administrador de conexiones, elija el botón Agregar para agregar una nueva conexión.In the Connection Manager dialog, choose the Add button to add a new connection.

    Administrador de conexiones

    Se muestra la ventana Conectar con el sistema remoto.The Connect to Remote System window is displayed.

    Conectar con el sistema remoto

  3. En el cuadro de diálogo Conectar con el sistema remoto , escriba los detalles de conexión de la máquina remota.In the Connect to Remote System dialog, enter the connection details of your remote machine.

    EntradaEntry DescripciónDescription
    Nombre de hostHost Name Nombre o dirección IP del dispositivo de destinoName or IP address of your target device
    PuertoPort Puerto en el que se ejecuta el servicio SSH, normalmente 22Port that the SSH service is running on, typically 22
    Nombre de usuarioUser name Usuario como el que se autenticaUser to authenticate as
    Tipo de autenticaciónAuthentication type Elección de la clave privada para una conexión compatible con FIPSChoose Private Key for a FIPS-compliant connection
    Archivo de clave privadaPrivate key file Archivo de clave privada creado para la conexión sshPrivate key file created for ssh connection
    Frase de contraseñaPassphrase Frase de contraseña usada con la clave privada seleccionada anteriormentePassphrase used with private key selected above

    Cambie el tipo de autenticación a Clave privada.Change the authentication type to Private Key. Escriba la ruta de acceso a la clave privada en el campo Archivo de clave privada.Enter the path to your private key in the Private key file field. Puede usar el botón Examinar para ir al archivo de clave privada en su lugar.You can use the Browse button to navigate to your private key file instead. A continuación, escriba la frase de contraseña usada para cifrar el archivo de clave privada en el campo Frase de contraseña.Then, enter the passphrase used to encrypt your private key file in the Passphrase field.

  4. Seleccione el botón Conectar para intentar la conexión con el equipo remoto.Choose the Connect button to attempt a connection to the remote computer.

    Si la conexión se realiza correctamente, Visual Studio configura IntelliSense para usar los encabezados remotos.If the connection succeeds, Visual Studio configures IntelliSense to use the remote headers. Para más información, consulte IntelliSense para los encabezados en sistemas remotos.For more information, see IntelliSense for headers on remote systems.

    Si se produce un error en la conexión, se marcan en rojo los cuadros de entrada que deben cambiarse.If the connection fails, the entry boxes that need to be changed are outlined in red.

    Error del Administrador de conexiones

    Para obtener más información sobre la solución de problemas de conexión, consulte Conexión al equipo remoto Linux.For more information on troubleshooting your connection, see Connect to your remote Linux computer.

Utilidad de línea de comandos para el Administrador de conexionesCommand-line utility for the Connection Manager

Visual Studio 2019, versión 16.5 o posterior : ConnectionManager.exe es una utilidad de línea de comandos para administrar conexiones de desarrollo remotas fuera de Visual Studio.Visual Studio 2019 version 16.5 or later : ConnectionManager.exe is a command-line utility to manage remote development connections outside of Visual Studio. Resulta útil para tareas como el aprovisionamiento de una nueva máquina de desarrollo.It's useful for tasks such as provisioning a new development machine. O bien, puede usarla para configurar Visual Studio para la integración continua.Or, you can use it to set up Visual Studio for continuous integration. Para obtener ejemplos y una referencia completa al comando ConnectionManager, consulte Referencia de ConnectionManager.For examples and a complete reference to the ConnectionManager command, see ConnectionManager reference.

Opcional: Habilitar o deshabilitar el modo FIPSOptional: Enable or disable FIPS mode

Es posible habilitar el modo FIPS globalmente en Windows.It's possible to enable FIPS mode globally in Windows.

  1. Para habilitar el modo FIPS, presione Windows+R para abrir el cuadro de diálogo Ejecutar y, a continuación, ejecute gpedit.msc.To enable FIPS mode, press Windows+R to open the Run dialog, and then run gpedit.msc.

  2. Expanda Directiva de equipo local > Configuración del equipo > Configuración de Windows > Configuración de seguridad > Directivas locales y seleccione Opciones de seguridad.Expand Local Computer Policy > Computer Configuration > Windows Settings > Security Settings > Local Policies and select Security Options.

  3. En Directiva , seleccione Criptografía de sistema: usar algoritmos que cumplan FIPS para cifrado, firma y operaciones hash y, a continuación, presione Entrar para abrir el cuadro de diálogo correspondiente.Under Policy , select System cryptography: Use FIPS-compliant algorithms for encryption, hashing, and signing , and then press Enter to open its dialog box.

  4. En la pestaña Configuración de seguridad local , seleccione Habilitado o Deshabilitado y, a continuación, elija Aceptar para guardar los cambios.In the Local Security Setting tab, select Enabled or Disabled , and then choose OK to save your changes.

Advertencia

Al habilitar el modo FIPS, es posible que algunas aplicaciones se interrumpan o se comporten de forma inesperada.Enabling FIPS mode may cause some applications to break or behave unexpectedly. Para obtener más información, consulte la entrada de blog Why We’re Not Recommending "FIPS mode" Anymore (Por qué ya no se recomienda el "modo FIPS").For more information, see the blog post Why We’re Not Recommending "FIPS mode" Anymore.

Recursos adicionalesAdditional resources

Documentación de Microsoft sobre la validación de FIPS 140Microsoft documentation on FIPS 140 validation

FIPS 140-2: Security Requirements for Cryptographic Modules (Requisitos de seguridad para los módulos criptográficos), de NISTFIPS 140-2: Security Requirements for Cryptographic Modules (from NIST)

Cryptographic Algorithm Validation Program: Validation Notes (Programa de validación de algoritmos criptográficos: notas de validación), de NISTCryptographic Algorithm Validation Program: Validation Notes (from NIST)

Entrada de blog de Microsoft Why We’re Not Recommending "FIPS mode" Anymore (Por qué ya no se recomienda el "modo FIPS")Microsoft blog post on Why We’re Not Recommending "FIPS mode" Anymore

SSH Server Configuration (Configuración del servidor SSH)SSH Server Configuration

Vea tambiénSee Also

Configuración de un proyecto de LinuxConfigure a Linux project
Configuración de un proyecto de CMake en LinuxConfigure a Linux CMake project
Conexión al equipo remoto LinuxConnect to your remote Linux computer
Implementación, ejecución y depuración del proyecto de LinuxDeploy, run, and debug your Linux project
Configuración de sesiones de depuración de CMakeConfigure CMake debugging sessions