Configurare lo sviluppo Linux remoto sicuro conforme con FIPS

Il supporto per Linux è disponibile in Visual Studio 2017 e versioni successive. Lo sviluppo sicuro di Linux remoto conforme a FIPS è disponibile in Visual Studio 2019 versione 16.5 e successive.

La pubblicazione FIPS (Federal Information Processing Standard) 140-2 è uno standard governativo statunitense per i moduli crittografici. Le implementazioni dello standard vengono convalidate da NIST. Windows ha convalidato il supporto per i moduli crittografici conformi a FIPS. In Visual Studio 2019 versione 16.5 e successive è possibile usare una connessione crittografica sicura e conforme a FIPS al sistema Linux per lo sviluppo remoto.

Ecco come configurare una connessione sicura e conforme a FIPS tra Visual Studio e il sistema Linux remoto. Questa guida è applicabile quando si compilano progetti CMake o MSBuild Linux in Visual Studio. Questo articolo è la versione conforme a FIPS delle istruzioni di connessione in Connettersi al computer Linux remoto.

Preparare una connessione conforme a FIPS

È necessaria una preparazione per usare una connessione SSH sicura e conforme a FIPS tra Visual Studio e il sistema Linux remoto. Per la conformità FIPS-140-2, Visual Studio supporta solo le chiavi RSA.

Gli esempi in questo articolo usano Ubuntu 18.04 LTS con il server OpenSSH versione 7.6. Tuttavia, le istruzioni devono essere le stesse per qualsiasi distribuzione che usa una versione moderatamente recente di OpenSSH.

Per configurare il server SSH nel sistema remoto

  1. Nel sistema Linux installare e avviare il server OpenSSH:

    sudo apt install openssh-server
    sudo service ssh start
    
  2. Se si vuole che il ssh server venga avviato automaticamente all'avvio del sistema, abilitarlo usando systemctl:

    sudo systemctl enable ssh
    
  3. Aprire /etc/ssh/sshd_config come radice. Modificare (o aggiungere, se non esistono) le righe seguenti:

    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 è l'unico algoritmo di chiave host conforme a FIPS supportato da Visual Studio. Gli aes*-ctr algoritmi sono conformi anche a FIPS, ma l'implementazione in Visual Studio non è approvata. Gli algoritmi di scambio delle ecdh-* chiavi sono conformi a FIPS, ma Visual Studio non li supporta.

    Queste opzioni non sono limitate. È possibile configurare per usare altre crittografie ssh , algoritmi di chiave host e così via. Alcune altre opzioni di sicurezza rilevanti da considerare sono PermitRootLogin, PasswordAuthenticatione PermitEmptyPasswords. Per altre informazioni, vedere la man pagina relativa sshd_config a o l'articolo Configurazione del server SSH.

  4. Dopo aver salvato e chiuso sshd_config, riavviare il server SSH per applicare la nuova configurazione:

    sudo service ssh restart
    

Successivamente, creerai una coppia di chiavi RSA nel computer Windows. Si copierà quindi la chiave pubblica nel sistema Linux remoto per l'uso da parte di ssh.

Per creare e usare un file di chiave RSA

  1. Nel computer Windows generare una coppia di chiavi RSA pubblica/privata usando questo comando:

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

    Il comando crea una chiave pubblica e una chiave privata. Per impostazione predefinita, le chiavi vengono salvate in %USERPROFILE%\.ssh\id_rsa e %USERPROFILE%\\.ssh\\id_rsa.pub. (In PowerShell usare $env:USERPROFILE invece della macro %USERPROFILE%cmd ) Se si modifica il nome della chiave, usare il nome modificato nei passaggi seguenti. È consigliabile usare una passphrase per una maggiore sicurezza.

  2. Da Windows copiare la chiave pubblica nel computer Linux:

    scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
    
  3. Nel sistema Linux aggiungere la chiave all'elenco delle chiavi autorizzate e assicurarsi che il file disponga delle autorizzazioni corrette:

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  4. È ora possibile verificare se la nuova chiave funziona in ssh. Usarlo per accedere da Windows:

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

È stata configurata sshcorrettamente, sono state create e distribuite chiavi di crittografia e sono state testate la connessione. A questo momento è possibile configurare la connessione di Visual Studio.

Connettersi al sistema remoto in Visual Studio

  1. In Visual Studio scegliere Strumenti Opzioni sulla barra dei menu per aprire la finestra di dialogo Opzioni. > Selezionare quindi Gestione connessioni multipiattaforma > per aprire la finestra di dialogo Gestione connessioni.

    Se non è stata configurata una connessione in Visual Studio prima, quando si compila il progetto per la prima volta, Visual Studio apre automaticamente la finestra di dialogo Gestione connessioni.

  2. Nella finestra di dialogo Gestione connessioni scegliere il pulsante Aggiungi per aggiungere una nuova connessione.

    Screenshot che mostra il riquadro delle opzioni nella finestra di dialogo Gestione connessioni. Multipiattaforma > C più > Gestione connessioni è evidenziato.

    Viene visualizzata la finestra Connetti al sistema remoto.

    Screenshot che mostra la finestra Connetti al sistema remoto con caselle di testo per il nome host, la porta, il nome utente, il tipo di autenticazione e la password.

  3. Nella finestra di dialogo Connetti al sistema remoto immettere i dettagli di connessione del computer remoto.

    Movimento Descrizione
    Host Name Nome o indirizzo IP del dispositivo di destinazione
    Porta Porta sui cui è in esecuzione il servizio SSH, solitamente 22
    Nome utente Utente da autenticare
    Tipo di autenticazione Scegliere chiave privata per una connessione conforme a FIPS
    File di chiave privata File di chiave privata creato per la connessione SSH
    Passphrase Passphrase usata con la chiave privata selezionata in precedenza

    Modificare il tipo di autenticazione in Chiave privata. Immettere il percorso della chiave privata nel campo File di chiave privata. È possibile usare il pulsante Sfoglia per passare al file di chiave privata. Immettere quindi la passphrase usata per crittografare il file di chiave privata nel campo Passphrase .

  4. Scegliere il pulsante Connetti per tentare una connessione al computer remoto.

    Se la connessione ha esito positivo, Visual Studio configura IntelliSense per l'uso delle intestazioni remote. Per altre informazioni, vedere IntelliSense per le intestazioni nei sistemi remoti.

    Se la connessione non riesce, le caselle delle voci che devono essere modificate sono evidenziate in rosso.

    Screenshot della finestra Connetti al sistema remoto con il nome host e le caselle di testo della porta evidenziate in rosso per indicare che devono essere modificate.

    Per altre informazioni sulla risoluzione dei problemi di connessione, vedere Connettersi al computer Linux remoto.

Utilità della riga di comando per il Gestione connessioni

Visual Studio 2019 versione 16.5 o successiva: ConnectionManager.exe è un'utilità della riga di comando per gestire le connessioni di sviluppo remoto all'esterno di Visual Studio. È utile per attività come il provisioning di un nuovo computer di sviluppo. In alternativa, è possibile usarlo per configurare Visual Studio per l'integrazione continua. Per esempi e un riferimento completo al comando ConnectionManager, vedere Informazioni di riferimento su ConnectionManager.

Facoltativo: abilitare o disabilitare la modalità FIPS

È possibile abilitare la modalità FIPS a livello globale in Windows.

  1. Per abilitare la modalità FIPS, premere Windows+R per aprire la finestra di dialogo Esegui e quindi eseguire gpedit.msc.

  2. Espandere Criteri > computer locali Configurazione > computer Impostazioni di Windows Impostazioni > locali Criteri > locali e selezionare Opzioni di sicurezza.

  3. In Criteri selezionare Crittografia di sistema: usare algoritmi conformi a FIPS per la crittografia, l'hashing e la firma e quindi premere INVIO per aprire la relativa finestra di dialogo.

  4. Nella scheda Impostazioni di sicurezza locali selezionare Abilitato o Disabilitato e quindi scegliere OK per salvare le modifiche.

Avviso

L'abilitazione della modalità FIPS può causare l'interruzione o il comportamento imprevisto di alcune applicazioni. Per altre informazioni, vedere il post di blog Why We're Not Recommending "FIPS mode" Anymore.

Risorse aggiuntive

Documentazione Microsoft sulla convalida FIPS 140

FIPS 140-2: Requisiti di sicurezza per i moduli crittografici (da NIST)

Programma di convalida dell'algoritmo di crittografia: note di convalida (da NIST)

Post di blog di Microsoft su Why We're Not Recommending "FIPS mode" Anymore

Configurazione del server SSH

Vedi anche

Configurare un progetto Linux
Configurare un progetto CMake per Linux
Connettersi al computer Linux remoto
Distribuire, eseguire e sottoporre a debug il progetto Linux
Configurare le sessioni di debug di CMake