Każdy, kto wkleja profil VPN do wątku na forum, wychodzi z tego samego przekonania. Plik zawiera tylko adres serwera i kilka opcji, więc dzielenie się nim przypomina dzielenie się numerem telefonu. Potem ktoś go czyta i znajduje niezaszyfrowany klucz prywatny w czwartej linii.

Profil nie jest dokumentacją tunelu. To tożsamość tunelu, wypisana.

Obiekty w pliku nie mają tego samego poziomu tajności

Publiczny certyfikat CA służy do podróżowania. Klucz prywatny klienta nie. Gdy oba pojawiają się w tym samym pliku, ten nieszkodliwy sprawia, że cały załącznik wygląda bezpiecznie. To jest pułapka.

OpenVPN pogarsza to z założenia. Pozwala osadzać certyfikaty, klucze i materiał uwierzytelniający bezpośrednio. To wygodne przy wdrażaniu i katastrofalne przy udostępnianiu. Plik, który zaczyna się czytelnym blokiem certyfikatu, przechodzi w prywatną połowę.

WireGuard jest bardziej bezpośredni. Sekcja interfejsu niesie klucz prywatny, a każdy peer może dodatkowo nieść klucz wstępnie udostępniony. Nie ma wątpliwości, które linie mają znaczenie. Prawie każda linia je ma.

Zrzut ekranu to ten sam wyciek w innym formacie

Zakodowanie konfiguracji jako kodu QR nie czyni jej podglądem. Kod niesie te same bajty, a dowolny aparat telefonu w pokoju może go odczytać. To samo dotyczy zrzutu ekranu okna konfiguracji klienta, gdzie klucz jest czytelny w rogu.

Pliki uwierzytelniania i wskazane ścieżki kluczy należą do tego samego audytu. Profil wskazujący na plik zewnętrzny nie jest automatycznie bezpieczniejszy, ponieważ ścieżka może prowadzić tam, gdzie dotrze czytelnik. Token w pliku uwierzytelniania jest tak samo użyteczny jak hasło, a rzadko tak wygląda.

Wyślij tekst błędu, nie klucz

Diagnoza potrzebuje tekstu błędu, wersji klienta i nazw wypróbowanych opcji. Nie potrzebuje klucza. Napisz pytanie z tymi trzema rzeczami i zastąp każdy sekret oraz każdy zbędny identyfikator sieciowy, zanim plik opuści twoją maszynę.

Sekcja podręcznika OpenVPN o plikach osadzonych to przydatna mapa, gdzie znajdują się te obiekty. Przypomina też, ile ich może pomieścić jeden profil.

# which lines in this profile look like secrets?
grep -n -E 'PrivateKey|PresharedKey|password|auth-user-pass|BEGIN .*PRIVATE KEY' wg0.conf

# OpenVPN: show the structure without printing key material
awk '/BEGIN/{print NR": "$0} /^[a-z-]+ /{print NR": "$1}' office.ovpn

Następnie przeczytaj końcowy załącznik, zamiast ufać pamięci dotyczącej edycji. Klucze ukrywają się w późniejszych blokach, w niezredagowanym komentarzu i w linii, którą uznałeś za strukturalną.

Po ujawnieniu rotacja jest jedyną naprawą

Usunięcie posta niczego nie unieważnia. Kto otrzymał plik, nadal ma działające poświadczenie, dlatego wystawca musi unieważnić je lub zastąpić przez własny proces usługi. Usunięcie lokalnej kopii niczego nie zmienia na drugim końcu.

Przechowuj działające profile w chroniony sposób i celowo usuwaj nieaktualne zaimportowane wpisy, zamiast zostawiać trzy kopie w folderze pobierania. Profil, którego już nie używasz, nadal jest poświadczeniem, dopóki nie zostanie unieważniony.

Nawyk, który warto zbudować, jest mały. Zanim jakikolwiek profil opuści maszynę, zapytaj, co jeszcze w nim jest poza adresem, i odpowiedz, czytając plik, a nie przypominając go sobie.

Powiązane artykuły