auth-nocache z plikiem poświadczeń: pomaga czy szkodzi?
auth-nocache odrzuca żądane poświadczenia z pamięci. Gdy hasło leży w pliku, ostrzeżenie znaczy mniej, a opcja może zepsuć ponowne negocjowanie.
OpenVPN wypisuje przy starcie ostrzeżenie, które sugeruje auth-nocache, a kuszącą reakcją jest dodanie opcji i patrzenie, jak linia znika. Ta rada zakłada logowanie interaktywne. Gdy nazwa użytkownika i hasło żyją w pliku, porównanie się zmienia: opcja przestaje chronić trwałą kopię, a na kliencie, który zrzeka się uprawnień, może później zepsuć ponowne negocjowanie. Dwa modele przechowywania warto trzymać osobno, zanim zmienisz profil.
Dwa sposoby odpowiedzi na prośbę o poświadczenia
Pierwszy model to człowiek wpisujący poświadczenia w terminalu albo interfejs zarządzania, który trzyma je przez sesję. OpenVPN zachowuje tę kopię, aby odpowiedzieć na kolejne ponowne negocjowanie bez pytania jeszcze raz, i właśnie o tym jest ostrzeżenie. Nic na dysku nie jest zaangażowane, więc jedyne, co trzeba chronić, to proces trzymający wartość. Zamknij klienta, a kopia znika razem z nim.
Drugi model to auth-user-pass wskazujący na plik, gdzie plik jest magazynem, a klient czyta go, gdy potrzebna jest wartość. Ważnym tu zagrożeniem nie jest pamięć procesu, lecz uprawnienia i właściciel tego pliku. Ostrzeżenie przy starcie pochodzi z dyrektyw w konfiguracji, nie z kontroli sposobu dostarczania hasła, więc pojawia się w obu modelach i nie wskazuje żadnego z nich.
Reszta tego porównania wynika z tego podziału: obsługa pamięci dla jednego modelu, obsługa pliku i tożsamość procesu dla drugiego.
Co auth-nocache naprawdę odrzuca
Przy logowaniu interaktywnym --auth-nocache usuwa zapisaną kopię z pamięci po jej użyciu. Kosztem jest nowa prośba przy każdym interwale ponownego negocjowania, bo następna runda nie może użyć ponownie tego, co odrzucono.
Przy logowaniu opartym na pliku klient może przeczytać plik ponownie, więc odrzucenie jest przeważnie niewidoczne. Staje się widoczne w jednym miejscu, którego ludzie się nie spodziewają: po zrzeczeniu się uprawnień przez demona, jeśli plik poświadczeń nie jest czytelny dla konta, pod którym teraz działa.
Dodaj opcję, bo rozumiesz tę wymianę, nie dlatego że pojawiło się ostrzeżenie. Opcja dodana, aby log był cichszy, jest opcją, której efektu nikt nie zmierzył.
Gdzie łamie się ścieżka oparta na pliku
Klient, który startuje jako root, aby otworzyć urządzenie tunelu, a potem przechodzi na user i group , czyta plik poświadczeń dwa razy: raz przed przejściem, raz przy następującym ponownym negocjowaniu. Jeśli plik ma tryb 600 i należy do roota, drugi odczyt zawodzi, a błąd ujawnia się godzinę później jako błąd uwierzytelniania wyglądający jak problem serwera. Sprawdź log klienta wokół interwału ponownego negocjowania, a potem sprawdź konto i plik razem.
stat -c '%a %U:%G' /etc/openvpn/client.creds
ps -o user:12,args -C openvpn | headObie linie są ważne. Pierwsza mówi, kto może czytać plik, druga mówi, kim naprawdę jest działający demon, a rozbieżność między nimi wyjaśnia awarię, której żadne przepisywanie hasła nie naprawi.
Praktyczne poprawki nie są efektowne: przenieś plik do katalogu i właściciela, których konto demona może czytać, albo zachowaj uprzywilejowany odczyt i potwierdź, że twój klient czyta tylko raz. Nie rozwiązuj tego, czyniąc plik czytelnym dla wszystkich.
Przypadek, który naprawdę chce tej opcji
Logowanie z jednorazowym kodem chce auth-nocache z innego powodu. Kod jednorazowy zużywa pierwsze uwierzytelnienie, więc kopia w pamięci podręcznej jest bezużyteczna przy następnym ponownym negocjowaniu, a nieaktualna wartość mogłaby nawet zostać odtworzona.
To pytanie o typ poświadczeń, nie o to, gdzie są przechowywane. Statyczne hasło w chronionym pliku ma przeciwny profil: musi być czytelne przy każdym ponownym negocjowaniu, a ochrona, której potrzebujesz, jest na pliku.
Trzymaj te dwa powody osobno w komentarzach profilu, inaczej następny administrator uzna, że opcja jest tam z powodu, który sam by wybrał.
Porównanie w jednej decyzji
Wybierz model interaktywny, gdy jest obecny człowiek i liczy się świeżość, i zaakceptuj powtarzaną prośbę jako jego koszt. Wybierz model pliku, gdy klient działa bez nadzoru, a wysiłek włóż w własność, tryb i zrzeczenie się uprawnień.
Żaden model sam nie czyni zapisanego hasła bezpiecznym i żaden nie czyni ostrzeżenia przy starcie znaczącym.
Jeśli ostrzeżenie było jedynym powodem otwarcia profilu, zapisz decyzję zamiast niewyjaśnionej opcji: poświadczenia pochodzą z pliku, który konto demona może czytać, ponowne negocjowanie widziano jako udane, a sekcja o ponownym negocjowaniu w podręczniku OpenVPN 2.6 została przeczytana przed zmianą jej interwału. Ta notatka przeżyje każdą pojedynczą flagę.