NetworkManager może przechowywać hasło VPN, aby połączenie wstawało bez czyjegokolwiek wpisywania, i może ponownie pokazać tę wartość w edytorze lub przez nmcli --show-secrets. Dostępne są trzy modele własności, a zachowanie przy wyświetlaniu jest tylko objawem tego, który wybrano. Najpierw wybierz model, a potem ustaw pasującą do niego flagę, zamiast ukrywać pole tekstem zastępczym, który zdezorientuje następną osobę.

Trzy modele własności

Pierwszy model pyta za każdym razem. Nic nie jest zapisywane, sekret istnieje tylko na czas aktywacji, a każdy, kto uruchamia połączenie, musi znać hasło. To najmniej wygodna opcja i najłatwiejsza do obrony.

Drugi przekazuje sekret do pęku kluczy należącego do użytkownika. Agent odblokowuje się przy starcie sesji i dostarcza wartość na żądanie, co trzyma ją poza plikiem połączenia, ale wiąże połączenie z sesją tego użytkownika. Wynikają z tego dwa warunki: agent musi działać i musi być odblokowany.

Trzeci przechowuje chronione dane uwierzytelniające dla połączenia systemowego. Przetrwa restarty i działa, zanim ktokolwiek się zaloguje, a w zamian wartość leży na dysku chroniona uprawnieniami pliku, a nie szyfrowaniem.

Każdy model jest rozsądny w odpowiednim kontekście. Błędem jest ich mieszanie, i tak laptop kończy z sekretem w dwóch miejscach i bez jasnej odpowiedzi, który jest nadrzędny. Zapisz, którego modelu używa profil. Jedna linia w podręczniku zespołu oszczędza następnej osobie wymyślania czwartego miejsca do sprawdzenia.

Przeczytaj bieżący stan, zanim go zmienisz

Spójrz na profil i na stan sekretu jako użytkownik zarządzający połączeniem. Drugie polecenie mówi, czy wartość jest naprawdę czytelna.

nmcli connection show "Office VPN"
nmcli --show-secrets connection show "Office VPN"
sudo stat -c '%U %a %n' /etc/NetworkManager/system-connections/*.nmconnection

Plik klucza w tym katalogu zwykle należy do roota z trybem 600. To trzyma zwykłych użytkowników na zewnątrz i nie trzyma na zewnątrz roota, co ma znaczenie, gdy ta sama maszyna jest współdzielona lub gdy kopia zapasowa działa jako root.

Uprawnienia pliku to granica, a nie szyfrowanie. Kto może przeczytać plik jako root, ma hasło w czystym tekście. To akceptowalna wymiana dla serwera bez nadzoru i zła dla współdzielonej stacji roboczej. Jednorazowy zapis zapobiega długiej kłótni o to, czy wartość jest chroniona.

Co robi każda wartość flagi

Sekret VPN ma właściwość flags, a wartości nie są intuicyjne wyłącznie z liczb.

ValueMeaningPractical effect
0No special flagSecret is typically saved with the connection
1Agent-ownedA keyring or secret agent supplies it
2Not savedPrompted at each activation
4Not requiredConnection proceeds without asking

Rzeczywiste zachowanie zależy też od wtyczki i od tego, czy działa agent, więc traktuj tabelę jako umowę, a obserwowane zachowanie jako to, co weryfikujesz. Wartość, która działa na jednym pulpicie, może zachowywać się inaczej na serwerze bez sesji. Właśnie w tej luce żyje większość mylących zgłoszeń.

Ustaw właściwość jawnie, zamiast usuwać linię i mieć nadzieję. Brakująca flaga nie jest polityką, a następna aktualizacja pakietu może ją wypełnić czymś, czego nie zamierzałeś.

Dopasuj model do momentu, w którym połączenie się zaczyna

Jeśli połączenie startuje tylko wtedy, gdy użytkownik jest zalogowany, własność agenta pasuje i trzyma sekret poza plikiem. Jeśli startuje przy rozruchu, zanim istnieje jakakolwiek sesja, agent ci nie pomoże.

To cała decyzja dla większości maszyn. Wyjaśnia też klasę mylących zgłoszeń, w których połączenie działa interaktywnie i zawodzi po restarcie. Flaga nigdy się nie zmieniła; zmienił się kontekst.

W przypadku bez nadzoru praktyczną odpowiedzią jest ograniczony plik należący do roota lub zatwierdzone źródło danych uwierzytelniających. Trzymaj go poza profilem połączenia, jeśli ten profil kiedykolwiek zostanie wyeksportowany lub skopiowany na inną maszynę.

Jeśli wartość była już widoczna, wymień ją

Zmiana flagi nie dotyka samego hasła. Wartość, która pojawiła się na zrzucie ekranu, w historii powłoki, w pakiecie wysłanym do pomocy technicznej lub w pliku, który mogli otworzyć inni użytkownicy, należy uznać za ujawnioną.

Zmień ją na serwerze, potem napraw klienta i zakończ każdą sesję, która uwierzytelniła się starym hasłem. Usunięcie lokalnego połączenia niczego nie odwołuje po drugiej stronie, i właśnie to ludzie pomijają.

Potem przestań umieszczać hasło w wierszu poleceń. Trafia do historii powłoki i może pojawić się na liście procesów; użyj interaktywnego monitu albo agenta.

Zweryfikuj, łącząc się ponownie

Powtórz polecenie, które pokazało sekret, i potwierdź, że pole nie jest już wypisywane. Następnie rozłącz się i połącz ponownie, a jeśli połączenie startuje automatycznie, zrestartuj system, bo ciekawa awaria pojawia się dopiero przy zmianie kontekstu sesji.

Jeśli sekret nadal się pojawia, dostarcza go inny profil lub inny agent. Sprawdź aktywne połączenie i pęk kluczy, zamiast usuwać pliki, aż objaw się przesunie.

Powiązane artykuły