Einrichten einer FIPS-konformen sicheren Linux-Remoteentwicklung
Die Unterstützung für Linux ist in Visual Studio 2017 und höher verfügbar. Mit FIPS kompatible sichere Linux-Remoteentwicklung ist in Visual Studio 2019 (Version 16.5 oder höher) verfügbar.
Die FIPS-Veröffentlichung (Federal Information Processing Standard) 140-2 ist ein Standard der US-Regierung für kryptografische Module. Implementierungen des Standards werden von NIST überprüft. Windows verfügt über überprüfte Unterstützung für mit FIPS kompatible kryptografische Module. In Visual Studio 2019 (Version 16.5 oder höher) können Sie eine sichere, mit FIPS kompatible kryptografische Verbindung mit Ihrem Linux-System für Remoteentwicklung verwenden.
Im Folgenden wird erläutert, wie Sie eine sichere, mit FIPS kompatible Verbindung zwischen Visual Studio und Ihrem Linux-Remotesystem einrichten. Dieser Leitfaden ist anwendbar, wenn Sie CMake- oder MSBuild-Linux-Projekte in Visual Studio erstellen. Dieser Artikel handelt es sich um die mit FIPS kompatible Version der Verbindungsanweisungen unter Herstellen einer Verbindung mit Ihrem Linux-Remotecomputer.
Vorbereiten einer mit FIPS kompatiblen Verbindung
Einige Vorbereitungsschritte sind erforderlich, um eine mit FIPS kompatible, kryptografisch sichere SSH-Verbindung zwischen Visual Studio und Ihrem Linux-Remotesystem herzustellen. Für Kompatibilität mit FIPS-140-2 unterstützt Visual Studio nur RSA-Schlüssel.
In den Beispielen in diesem Artikel wird Ubuntu 18.04 LTS mit OpenSSH Server Version 7.6 verwendet. Allerdings sollten die Anweisungen für jede Distribution identisch sein, die eine moderate aktuelle Version von OpenSSH verwendet.
So richten Sie den SSH-Server auf dem Remotesystem ein
Installieren und starten Sie auf dem Linux-System den OpenSSH-Server:
sudo apt install openssh-server sudo service ssh start
Wenn Sie möchten, dass der
ssh
-Server beim Start des Systems automatisch gestartet wird, aktivieren Sie ihn mithilfe vonsystemctl
:sudo systemctl enable ssh
Öffnen Sie
/etc/ssh/sshd_config
als Root. Bearbeiten Sie die folgenden Zeilen, oder fügen Sie sie hinzu, sofern nicht vorhanden: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
Hinweis
ssh-rsa
ist der einzige mit FIPS kompatible Hostschlüsselalgorithmus, der von VS unterstützt wird. Dieaes*-ctr
-Algorithmen sind ebenfalls mit FIPS kompatibel, aber die Implementierung in Visual Studio ist nicht genehmigt. Dieecdh-*
-Schlüsselaustauschalgorithmen sind mit FIPS kompatibel, werden aber in Visual Studio nicht unterstützt.Sie sind nicht auf diese Optionen beschränkt. Sie können
ssh
so konfigurieren, dass andere Verschlüsselungsverfahren, Hostschlüsselalgorithmen usw. verwendet werden. Einige andere relevante Sicherheitsoptionen, die Sie möglicherweise in Erwägung ziehen können, sindPermitRootLogin
,PasswordAuthentication
undPermitEmptyPasswords
. Weitere Informationen finden Sie auf der Seiteman
zusshd_config
oder im Artikel Konfiguration des SSH-Servers.Starten Sie nach Speichern und Schließen von
sshd_config
den SSH-Server neu, um die neue Konfiguration zu übernehmen:sudo service ssh restart
Im nächsten Schritt erstellen Sie ein RSA-Schlüsselpaar auf Ihrem Windows-Computer. Anschließend kopieren Sie den öffentlichen Schlüssel zur Verwendung durch ssh
auf das Linux-Remotesystem.
So erstellen und verwenden Sie eine RSA-Schlüsseldatei
Generieren Sie auf dem Windows-Computer mit dem folgenden Befehl ein öffentliches/privates RSA-Schlüsselpaar:
ssh-keygen -t rsa -b 4096 -m PEM
Mit diesem Befehl wird ein öffentlicher und einer privater Schlüssel erstellt. Standardmäßig werden die Schlüssel in
%USERPROFILE%\.ssh\id_rsa
und%USERPROFILE%\\.ssh\\id_rsa.pub
gespeichert. (Verwenden Sie in PowerShell$env:USERPROFILE
anstelle des cmd-Makros%USERPROFILE%
.) Wenn Sie den Schlüsselnamen ändern, verwenden Sie in den folgenden Schritten den geänderten Namen. Es wird empfohlen, eine Passphrase zu verwenden, um die Sicherheit zu erhöhen.Kopieren Sie den öffentlichen Schlüssel aus Windows auf den Linux-Computer:
scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
Fügen Sie den Schlüssel auf dem Linux-System zur Liste der autorisierten Schlüssel hinzu, und stellen Sie sicher, dass die Datei die richtigen Berechtigungen besitzt:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
Nun können Sie testen, ob der neue Schlüssel in
ssh
funktioniert. Verwenden Sie ihn, um sich von Windows aus anzumelden:ssh -i %USERPROFILE%\.ssh\id_rsa user@hostname
Sie haben ssh
erfolgreich eingerichtet, Verschlüsselungsschlüssel erstellt und bereitgestellt und die Verbindung getestet. Jetzt sind Sie bereit, die Visual Studio-Verbindung einzurichten.
Herstellen einer Verbindung mit dem Remotesystem in Visual Studio
Klicken Sie in Visual Studio in der Menüleiste auf Extras > Optionen, um das Dialogfeld Optionen zu öffnen. Wählen Sie dann Plattformübergreifend > Verbindungs-Manager, um das Dialogfeld „Verbindungs-Manager“ zu öffnen.
Wenn Sie zuvor noch keine Verbindung in Visual Studio eingerichtet haben, öffnet Visual Studio das Dialogfeld „Verbindungs-Manager“, wenn Sie das Projekt erstmals erstellen.
Wählen Sie im Dialogfeld „Verbindungs-Manager“ die Schaltfläche Hinzufügen aus, um eine neue Verbindung hinzuzufügen.
Das Fenster Mit Remotesystem verbinden wird angezeigt.
Geben Sie im Dialogfeld Mit Remotesystem verbinden die Verbindungsdetails Ihres Remotecomputers ein.
Eingabe Beschreibung Hostname Name oder IP-Adresse des Zielgeräts Port Port, auf dem der SSH-Dienst ausgeführt wird, in der Regel Port 22 Benutzername Zu authentifizierender Benutzer Authentifizierungstyp Auswählen eines privaten Schlüssels für eine mit FIPS kompatible Verbindung Datei für den privaten Schlüssel Für die SSH-Verbindung erstellte private Schlüsseldatei Passphrase Passphrase mit dem zuvor ausgewählten privaten Schlüssel Ändern Sie den Authentifizierungstyp in Privater Schlüssel. Geben Sie den Pfad zu Ihrem privaten Schlüssel in das Feld Datei des privaten Schlüssels ein. Sie können die Schaltfläche Durchsuchen verwenden, um stattdessen zu Ihrer Datei mit dem privaten Schlüssel zu navigieren. Geben Sie dann die Passphrase in das Feld Passphrase ein, die verwendet wird, um die Datei mit dem privaten Schlüssel zu verschlüsseln.
Klicken Sie auf die Schaltfläche Verbinden, um eine Verbindung mit dem Remotecomputer herzustellen.
Wenn die Verbindung erfolgreich hergestellt wird, konfiguriert Visual Studio IntelliSense für die Verwendung der Remoteheader. Weitere Informationen finden Sie unter IntelliSense für Header auf Remotesystemen.
Wenn die Verbindung nicht erfolgreich hergestellt wird, werden die Eintragsfelder, die geändert werden müssen, rot umrandet.
Weitere Informationen zur Problembehandlung der Verbindung finden Sie unter Herstellen einer Verbindung mit Ihrem Linux-Remotecomputer.
Befehlszeilenhilfsprogramm für den Verbindungs-Manager
Visual Studio 2019, Version 16.5 oder höher: ConnectionManager.exe
ist ein Befehlszeilenhilfsprogramm zum Verwalten von Remoteentwicklungsverbindungen außerhalb von Visual Studio. Es ist gut für Aufgaben wie die Bereitstellung eines neuen Entwicklungscomputers geeignet. Sie können es auch zum Einrichten von Visual Studio für Continuous Integration verwenden. Beispiele für den und eine umfassende Referenz zum ConnectionManager-Befehl finden Sie unter ConnectionManager-Referenz.
Optional: Aktivieren oder Deaktivieren des FIPS-Modus
Es ist möglich, den FIPS-Modus in Windows global zu aktivieren.
Um den FIPS-Modus zu aktivieren, drücken Sie WINDOWS+R, um das Dialogfeld Ausführen zu öffnen, und führen Sie dann
gpedit.msc
aus.Erweitern Sie Lokale Computerrichtlinie > Computerkonfiguration > Windows-Einstellungen > Sicherheitseinstellungen > Lokale Richtlinien, und wählen Sie dann Sicherheitsoptionen aus.
Wählen Sie unter Richtlinie die Option Systemkryptografie: Mit FIPS kompatiblen Algorithmus für Verschlüsselung, Hashing und Signieren verwenden aus, und drücken Sie dann die EINGABETASTE, um das entsprechende Dialogfeld zu öffnen.
Wählen Sie auf der Registerkarte Lokale Sicherheitseinstellung die Option Aktiviert oder Deaktiviert aus, und wählen Sie dann OK aus, um die Änderungen zu speichern.
Warnung
Das Aktivieren des FIPS-Modus kann dazu führen, dass einige Anwendungen nicht mehr funktionieren oder sich unerwartet verhalten. Weitere Informationen finden Sie im Blogbeitrag Why We’re Not Recommending „FIPS mode“ Anymore (Warum wir den „FIPS-Modus“ nicht mehr empfehlen).
Zusätzliche Ressourcen
Microsoft-Dokumentation zur FIPS 140-Überprüfung
FIPS 140-2: Security Requirements for Cryptographic Modules (FIPS 140-2: Sicherheitsanforderungen für Kryptografiemodule) (von NIST)
Cryptographic Algorithm Validation Program: Validation Notes(Kryptografiealgorithmus-Validierungsprogramm: Validierungshinweise) (von NIST)
Microsoft-Blogbeitrag zu Why We’re Not Recommending „FIPS mode“ Anymore (Warum wir den „FIPS-Modus“ nicht mehr empfehlen)
Weitere Informationen
Konfigurieren eines Linux-Projekts
Konfigurieren eines Linux CMake-Projekts
Herstellen einer Verbindung mit Ihrem Linux-Remotecomputer
Bereitstellen, Ausführen und Debuggen Ihres Linux-Projekts
Konfigurieren von CMake-Debugsitzungen