Hasło-fraza klucza SSH chroni plik, a nie trasę
Hasło-fraza szyfruje plik klucza prywatnego; nie unieważnia tożsamości i nie zabezpiecza trasy. Osobne przechowywanie, czas życia agenta i praca bez nadzoru.
Dysk kopii zapasowej ze starego laptopa wciąż zawiera prywatny klucz SSH, a ktoś pyta, czy VPN go chroni. Nie chroni i nigdy nie chronił. VPN chroni ścieżkę między dwiema sieciami; hasło-fraza chroni plik; agent chroni działającą sesję. Trzy różne mechanizmy, trzy różne tryby awarii, a skradziona kopia interesuje się tylko dwoma pierwszymi.
Hasło-fraza należy do pliku
Hasło-fraza klucza SSH szyfruje materiał klucza prywatnego w spoczynku. To nie hasło konta wysyłane do serwera i nie dane logowania używane do dołączenia do VPN. Mylenie ich prowadzi do zmian, które nie rozwiązują ekspozycji.
Podręcznik ssh-keygen OpenSSH opisuje obsługę haseł-fraz, w tym przełącznik -p, który ustawia nowe hasło-frazę na już istniejącym kluczu.
Dla istniejącego klucza forma polecenia jest prosta i przepisuje plik:
ssh-keygen -p -f ~/.ssh/id_ed25519
Użyj zatwierdzonego procesu utrzymania i odzyskiwania właściciela klucza, ponieważ jest to zapis, a nie inspekcja. Nie publikuj pliku prywatnego i nie umieszczaj prawdziwego hasła-frazy we współdzielonej linii poleceń. Zmiana hasła-frazy nie szyfruje ponownie kopii wykonanej wcześniej. Zapisz lokalizację starej kopii w zgłoszeniu, aby właściciel mógł zdecydować, czy ją zniszczyć.
Kopia przeżywa laptopa i tunel
Gdy plik klucza zostanie skopiowany, aktywne połączenie VPN laptopa nic już o nim nie mówi. Ważne jest, jak dobrze chroniony jest sam plik, i które serwery nadal ufają pasującemu kluczowi publicznemu.
Zmiana hasła-frazy w bieżącym pliku nie dotyka kopii i nie usuwa tego samego klucza publicznego z authorized_keys na serwerze. Unieważnienie i ponowne szyfrowanie to osobne działania.
Traktuj więc wyciekły klucz prywatny jako zdarzenie tożsamości, a nie zdarzenie sieciowe. Usuń lub wymień zaakceptowany klucz przez serwery i proces rejestracji, które go posiadają. Zatrzymanie VPN ogranicza jedną trasę w jednej chwili; to nie unieważnienie.
Odblokowanie przenosi sekret do agenta
Agent przechowuje odszyfrowane tożsamości do późniejszego uwierzytelniania, więc użytkownik nie wpisuje hasła-frazy przy każdym połączeniu. To udogodnienie z własną granicą bezpieczeństwa.
ssh-agent może ograniczyć, jak długo tożsamość pozostaje załadowana, poprzez opcję -t, a ustawienie dla pojedynczej tożsamości może ten limit przekroczyć. Wybierz politykę dla agenta, którego naprawdę uruchamiasz, zamiast zakładać, że rozłączenie VPN zapomina każdy załadowany klucz.
Proces przejęty po odblokowaniu klucza to inny problem niż skradziony zaszyfrowany plik. Przekazywanie agenta do innego hosta deleguje zdolność uwierzytelniania bez kopiowania pliku klucza, więc włączaj je tylko dla zatwierdzonej potrzeby.
Wypisz, co agent obecnie przechowuje, przed zmianą i po niej:
ssh-add -l
Zadania bez nadzoru potrzebują własnego planu
Zaplanowane zadanie nie może odpowiedzieć na monit. Potrzebuje zatwierdzonego rozwiązania dla poświadczeń maszynowych, a trzymanie sekretu odblokowania w tym samym katalogu co klucz, czytelnego dla tego samego konta, nie tworzy drugiej granicy.
Współpracuj z właścicielem usługi przy obsługiwanym dostarczaniu sekretów lub pracy opartej na sprzęcie i obejmij odnowienie, awarię oraz odzyskiwanie. Chęć, by człowiek był przy klawiaturze, zmienia wygląd awarii w porównaniu z hostem, który uruchamia się bez nadzoru.
Zachowaj także kontrolę tożsamości hosta na serwerze i jego ograniczenia konta. Trasa VPN daje prywatną ścieżkę; nie dowodzi, że każdy osiągalny odbiornik SSH jest hostem, o który chodziło. Zapisz odbiornik i odcisk klucza hosta w tym samym spisie co sam klucz.
Weryfikuj granice osobno
Przetestuj każdą granicę własnym pytaniem. Czy plik otwiera się bez hasła-frazy? Czy agent nadal trzyma tożsamość po rozłączeniu? Czy serwer nadal akceptuje klucz publiczny?
Dwa polecenia odpowiadają na pierwsze i trzecie:
ssh-keygen -y -f ~/.ssh/id_ed25519
ssh -v [email protected]
Zapisz ochronę pliku, dozwolone użycie klucza i usunięcie po stronie serwera jako trzy osobne pozycje. Tunel, hasło-fraza i agent strzegą każdy innej części relacji, a tylko jeden z nich dotyczy sieci.