Każdy przepis na bezobsługowe ponowne połączenie prędzej czy później napotyka to samo pytanie: gdzie mieszka hasło. Popularna odpowiedź to sama akcja zadania, która jest też najgorszym dla niego miejscem. Istnieją dwa inne projekty. Który pasuje, zależy od tego, czy maszyna może uwierzytelnić się bez osoby i czy serwer akceptuje certyfikaty.

Co akcja zadania pozostawia czytelne

Argumenty w zaplanowanym zadaniu są częścią jego definicji, a nie ukrytą wartością czasu wykonania. Każdy, kto może odczytać zadanie, przywrócić jego kopię zapasową lub wyeksportować jego XML, widzi ciąg dokładnie tak, jak go wpisałeś. Podczas uruchomienia ten sam ciąg pojawia się na liście procesów. Agent monitorujący może skopiować go do dziennika, którego nigdy nie przeglądasz.

schtasks /query /tn "VPN Reconnect" /xml
cmdkey /list

Sprawdź, zanim założysz coś przeciwnego. Pierwsze polecenie wypisuje pełną definicję, w tym akcję i jej argumenty. Drugie pokazuje, jakie poświadczenia bieżące konto ma w pamięci podręcznej, co ma znaczenie dla alternatywnych projektów poniżej. Jeśli hasło pojawia się w XML zadania, jego rotacja to tylko połowa naprawy, ponieważ zadanie nadal przechowuje starą wartość.

Co naprawdę daje zapisany wcześniej współdzielony klucz

Add-VpnConnection -L2tpPsk zapisuje klucz we wpisie książki telefonicznej połączenia, a nie w zadaniu. To mniejsza powierzchnia ekspozycji niż akcja zadania. Wciąż jest to możliwy do odzyskania sekret, ponieważ administrator na maszynie może odczytać książkę telefoniczną.

Dla łącza laboratoryjnego między dwiema maszynami, które kontrolujesz, ta wymiana może być akceptowalna. Dla poświadczeń użytkownika na współdzielonym punkcie końcowym nie jest. Nazywanie tego szyfrowanym magazynem nie zmienia tego, kto może to odczytać. Książka telefoniczna to plik konfiguracyjny. Planuj dla osoby, która może go otworzyć, a nie tylko dla osoby, która może zalogować się jako użytkownik.

Poświadczenia Winlogon usuwają sekret i dodają zależność

-UseWinlogonCredential wybiera inną drogę. Połączenie uwierzytelnia się przez MSCHAPv2 wobec poświadczeń zalogowanego użytkownika. Dla tego konta nic dodatkowego nie jest przechowywane.

Dodawana zależność jest znacząca. Musi istnieć interaktywne logowanie, z którego można pożyczyć, co wyklucza konto usługi i zadanie przed logowaniem. Połączenie dziedziczy też wszystko, do czego poświadczenia tego użytkownika mogą dotrzeć na serwerze. Czytaj przełącznik jako stwierdzenie o tym, skąd pochodzi poświadczenie, a nie jako ustawienie zabezpieczeń. Zmienia źródło i nic w tym, jak serwer później autoryzuje sesję.

Uwierzytelnianie certyfikatem skaluje się, bo nic nie jest przechowywane

Tam, gdzie serwer obsługuje EAP-TLS, certyfikat maszyny całkowicie usuwa współdzielony sekret, a unieważnienie odbywa się na warstwie certyfikatu. Zadanie działające jako SYSTEM może przedstawić ten certyfikat bez interaktywnego logowania. Potwierdź, że serwer akceptuje uwierzytelnianie certyfikatem, zanim zaczniesz na nim budować. Projekt zależny od nieobsługiwanej metody jest planem, a nie rozwiązaniem. Następnie zdecyduj, gdzie mieszka klucz prywatny: magazyn maszyny dla tożsamości urządzenia, magazyn użytkownika dla osoby.

Tam, gdzie nie da się uniknąć nazwy użytkownika i hasła, zapisz je w Credential Manager, ograniczone do własnego konta zadania. Pozwól klientowi czytać je stamtąd, a nie z argumentu. Sekret, który zadanie może pobrać bez drukowania go, jest mniejszym problemem niż ten zapisany w jego definicji.

Przejrzyj artefakty przed następną rotacją

Patrz na to, co jest przechowywane, a nie na to, co zamierzałeś. Sprawdź książkę telefoniczną dla każdego użytkownika, kopię dla wszystkich użytkowników, XML zadania i każdy skrypt wywołujący polecenie wybierania. Następnie potwierdź, że certyfikat lub buforowane poświadczenia są ograniczone do konta używanego przez zadanie, ponieważ poświadczenia zapisane dla Twojego konta interaktywnego są niewidoczne dla SYSTEM.

Zapisz metodę uwierzytelniania i konto w notatkach samego zadania. Następna osoba, która zmieni zasady serwera, musi wiedzieć, który projekt jest w grze. Ta odpowiedź nie jest widoczna wyłącznie z zachowania przy ponownym łączeniu. Zapisz ją tam, gdzie następna rotacja spojrzy najpierw.

Powiązane artykuły