Konfigurowanie zgodnego ze standardem FIPS, bezpiecznego i zdalnego środowiska tworzenia dla systemu Linux
Obsługa systemu Linux jest dostępna w programie Visual Studio 2017 lub nowszym. Bezpieczne tworzenie zdalnego systemu Linux zgodne ze standardem FIPS jest dostępne w programie Visual Studio 2019 w wersji 16.5 lub nowszej.
Federal Information Processing Standard (FIPS) Publikacja 140-2 to amerykański standard rządowy dla modułów kryptograficznych. Implementacje standardu są weryfikowane przez firmę NIST. System Windows zweryfikował obsługę modułów kryptograficznych zgodnych ze standardem FIPS. W programie Visual Studio 2019 w wersji 16.5 lub nowszej można użyć bezpiecznego, zgodnego ze standardem FIPS połączenia kryptograficznego z systemem Linux na potrzeby programowania zdalnego.
Poniżej przedstawiono sposób konfigurowania bezpiecznego, zgodnego ze standardem FIPS połączenia między programem Visual Studio i zdalnym systemem Linux. Ten przewodnik ma zastosowanie podczas kompilowania projektów CMake lub MSBuild Linux w programie Visual Studio. Ten artykuł to zgodna ze standardem FIPS wersja instrukcji dotyczących połączenia w temacie Nawiązywanie połączenia ze zdalnym komputerem z systemem Linux.
Przygotowywanie połączenia zgodnego ze standardem FIPS
Niektóre przygotowania są wymagane do korzystania ze zgodnego ze standardem FIPS, kryptograficznie bezpiecznego połączenia SSH między programem Visual Studio i zdalnym systemem Linux. W przypadku zgodności ze standardem FIPS-140-2 program Visual Studio obsługuje tylko klucze RSA.
Przykłady w tym artykule używają systemu Ubuntu 18.04 LTS z serwerem OpenSSH w wersji 7.6. Jednak instrukcje powinny być takie same dla każdej dystrybucji przy użyciu umiarkowanie najnowszej wersji protokołu OpenSSH.
Aby skonfigurować serwer SSH w systemie zdalnym
W systemie Linux zainstaluj i uruchom serwer OpenSSH:
sudo apt install openssh-server sudo service ssh start
Jeśli chcesz
ssh
, aby serwer był uruchamiany automatycznie po uruchomieniu systemu, włącz go przy użyciu poleceniasystemctl
:sudo systemctl enable ssh
Otwórz
/etc/ssh/sshd_config
jako katalog główny. Edytuj (lub dodaj, jeśli nie istnieją), następujące wiersze: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
Uwaga
ssh-rsa
jest jedynym algorytmem klucza hosta zgodnego ze standardem FIPS, który obsługuje program VS.aes*-ctr
Algorytmy są również zgodne ze standardem FIPS, ale implementacja w programie Visual Studio nie jest zatwierdzona.ecdh-*
Algorytmy wymiany kluczy są zgodne ze standardem FIPS, ale program Visual Studio ich nie obsługuje.Nie ograniczasz się do tych opcji. Można skonfigurować
ssh
tak, aby używać innych szyfrowania, algorytmów kluczy hosta itd. Niektóre inne istotne opcje zabezpieczeń, które warto wziąć pod uwagę, toPermitRootLogin
,PasswordAuthentication
iPermitEmptyPasswords
. Aby uzyskać więcej informacji, zobaczman
stronęsshd_config
dotyczącą lub artykuł Konfiguracja serwera SSH.Po zapisaniu i zamknięciu
sshd_config
uruchom ponownie serwer SSH, aby zastosować nową konfigurację:sudo service ssh restart
Następnie utworzysz parę kluczy RSA na komputerze z systemem Windows. Następnie skopiujesz klucz publiczny do zdalnego systemu Linux do użycia przez ssh
program .
Aby utworzyć i użyć pliku klucza RSA
Na maszynie z systemem Windows wygeneruj parę kluczy publicznego/prywatnego RSA przy użyciu następującego polecenia:
ssh-keygen -t rsa -b 4096 -m PEM
Polecenie tworzy klucz publiczny i klucz prywatny. Domyślnie klucze są zapisywane w systemach
%USERPROFILE%\.ssh\id_rsa
i%USERPROFILE%\\.ssh\\id_rsa.pub
. (W programie PowerShell użyj$env:USERPROFILE
zamiast makra%USERPROFILE%
cmd ) Jeśli zmienisz nazwę klucza, użyj zmienionej nazwy w kolejnych krokach. Zalecamy użycie hasła w celu zwiększenia bezpieczeństwa.Z systemu Windows skopiuj klucz publiczny na maszynę z systemem Linux:
scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
W systemie Linux dodaj klucz do listy autoryzowanych kluczy i upewnij się, że plik ma odpowiednie uprawnienia:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
Teraz możesz sprawdzić, czy nowy klucz działa w pliku
ssh
. Użyj go, aby zalogować się z systemu Windows:ssh -i %USERPROFILE%\.ssh\id_rsa user@hostname
Pomyślnie skonfigurowano ssh
, utworzono i wdrożono klucze szyfrowania oraz przetestowano połączenie. Teraz możesz przystąpić do konfigurowania połączenia programu Visual Studio.
Nawiązywanie połączenia z systemem zdalnym w programie Visual Studio
W programie Visual Studio wybierz pozycję Narzędzia > Opcje na pasku menu, aby otworzyć okno dialogowe Opcje . Następnie wybierz Menedżer połączeń międzyplatformowe > , aby otworzyć okno dialogowe Menedżer połączeń.
Jeśli wcześniej nie skonfigurowaliśmy połączenia w programie Visual Studio, podczas tworzenia projektu po raz pierwszy program Visual Studio otwiera okno dialogowe Menedżer połączeń.
W oknie dialogowym Menedżer połączeń wybierz przycisk Dodaj, aby dodać nowe połączenie.
Zostanie wyświetlone okno Łączenie z systemem zdalnym.
W oknie dialogowym Łączenie z systemem zdalnym wprowadź szczegóły połączenia maszyny zdalnej.
Wpis opis Nazwa hosta Nazwa lub adres IP urządzenia docelowego Port Port, na którym działa usługa SSH, zazwyczaj 22 Nazwa użytkownika Użytkownik do uwierzytelniania jako Authentication type (Typ uwierzytelniania) Wybieranie klucza prywatnego dla połączenia zgodnego ze standardem FIPS Plik klucza prywatnego Plik klucza prywatnego utworzony na potrzeby połączenia SSH Hasło Hasło używane z kluczem prywatnym wybranym powyżej Zmień typ uwierzytelniania na Klucz prywatny. Wprowadź ścieżkę do klucza prywatnego w polu Plik klucza prywatnego. Możesz użyć przycisku Przeglądaj , aby zamiast tego przejść do pliku klucza prywatnego. Następnie wprowadź hasło używane do szyfrowania pliku klucza prywatnego w polu Hasło .
Wybierz przycisk Połącz, aby spróbować nawiązać połączenie z komputerem zdalnym.
Jeśli połączenie powiedzie się, program Visual Studio skonfiguruje funkcję IntelliSense do korzystania z nagłówków zdalnych. Aby uzyskać więcej informacji, zobacz IntelliSense dla nagłówków w systemach zdalnych.
Jeśli połączenie nie powiedzie się, pola wprowadzania, które należy zmienić, są nakreślane na czerwono.
Aby uzyskać więcej informacji na temat rozwiązywania problemów z połączeniem, zobacz Nawiązywanie połączenia ze zdalnym komputerem z systemem Linux.
Narzędzie wiersza polecenia dla Menedżer połączeń
Program Visual Studio 2019 w wersji 16.5 lub nowszej: ConnectionManager.exe
to narzędzie wiersza polecenia do zarządzania połączeniami programowania zdalnego poza programem Visual Studio. Jest to przydatne w przypadku zadań, takich jak aprowizowanie nowej maszyny deweloperskiej. Możesz też użyć go do skonfigurowania programu Visual Studio na potrzeby ciągłej integracji. Aby zapoznać się z przykładami i pełnym odwołaniem do polecenia ConnectionManager, zobacz ConnectionManager reference (Dokumentacja menedżera połączeń).
Opcjonalnie: Włączanie lub wyłączanie trybu FIPS
Można włączyć tryb FIPS globalnie w systemie Windows.
Aby włączyć tryb FIPS, naciśnij Windows+R , aby otworzyć okno dialogowe Uruchom , a następnie uruchom polecenie
gpedit.msc
.Rozwiń węzeł Zasady komputera lokalnego Konfiguracja > komputera Ustawienia systemu Windows Ustawienia > > zabezpieczeń Zasady lokalne i wybierz opcje zabezpieczeń>.
W obszarze Zasady wybierz pozycję Kryptografia systemu: użyj algorytmów zgodnych ze standardem FIPS do szyfrowania, tworzenia skrótów i podpisywania, a następnie naciśnij Enter, aby otworzyć okno dialogowe.
Na karcie Ustawienia zabezpieczeń lokalnych wybierz pozycję Włączone lub Wyłączone, a następnie wybierz przycisk OK , aby zapisać zmiany.
Ostrzeżenie
Włączenie trybu FIPS może spowodować nieoczekiwane przerwanie lub zachowanie niektórych aplikacji. Aby uzyskać więcej informacji, zobacz wpis w blogu Dlaczego nie zalecamy już "trybu FIPS".
Dodatkowe zasoby
Dokumentacja firmy Microsoft dotycząca weryfikacji standardu FIPS 140
FIPS 140-2: Wymagania dotyczące zabezpieczeń modułów kryptograficznych (from NIST)
Program weryfikacji algorytmów kryptograficznych: uwagi dotyczące walidacji (z NIST)
Wpis w blogu firmy Microsoft na temat tego, dlaczego nie zalecamy już korzystania z trybu FIPS
Zobacz też
Konfigurowanie projektu systemu Linux
Konfigurowanie projektu CMake systemu Linux
Nawiązywanie połączenia ze zdalnym komputerem z systemem Linux
Wdrażanie, uruchamianie i debugowanie projektu systemu Linux
Konfigurowanie sesji debugowania narzędzia CMake