Dwie maszyny, które rozmawiają tylko ze sobą, mogą zachować tę topologię i mimo to otrzymać wynegocjowane klucze ruchu. Kształt sieci i tryb ochrony to niezależne wybory, a to właśnie ich mieszanie sprawia, że ludzie próbują rotować statyczny sekret przez podmianę pliku, podczas gdy oba demony nadal działają. Wymiana pliku klucza pod działającą parą niczego nie rotuje. Tryb klucza statycznego, który OpenVPN 2.6 oznacza jako przestarzały, trzyma jeden klucz przez cały czas życia tunelu, więc plik na dysku i klucz w pamięci znów się zgadzają dopiero po ponownym uruchomieniu obu końców. Jeśli wymogiem jest automatyczne odnowienie, tryb ochrony musi się zmienić.

Czego tryb klucza statycznego nie potrafi

W trybie tajnym oba węzły dzielą wcześniej współdzielony klucz, który bezpośrednio szyfruje i uwierzytelnia tunel. Nie ma uścisku dłoni, więc nie ma mechanizmu, dzięki któremu którakolwiek strona mogłaby zaproponować nowy materiał klucza, dowieść tożsamości albo odzyskać spójność bez interwencji operatora. Obie właściwości wynikają z braku kanału sterowania, a nie z brakującej opcji, i żadna flaga konfiguracji nie dodaje go do tego trybu.

Podręcznik OpenVPN 2.6 mówi wprost, że klucz trwa do wygenerowania nowego. Jest to dopuszczalne dla łącza laboratoryjnego lub stałej pary urządzeń z udokumentowaną procedurą rotacji, a niedopuszczalne tam, gdzie długotrwały sekret jest realnym ryzykiem. Podmiana pliku nie tworzy nowego klucza dla działającej pary; tworzy dwa węzły, które się nie zgadzają. Zastąpienie pliku dodaje więc przerwę, nie dodając rotacji.

Nie ma też pojęcia tożsamości węzła poza posiadaniem pliku. Kto ma klucz, jest węzłem, a nic w tunelu nie zapisuje, która strona jest która, więc odwołanie jest wszystkim albo niczym.

Przejście na TLS bez przeprojektowania łącza

Tryb TLS dodaje kanał sterowania, a wraz z nim możliwość negocjowania kluczy kanału danych. We wdrożeniu punkt-punkt jedna strona przyjmuje rolę serwera, a druga klienta, ale topologia pozostaje łączem między dwoma węzłami: każda strona zna punkt końcowy drugiej i nie pojawia się żadna pula ani usługa wieloużytkownikowa. Role są szczegółem uścisku dłoni, a nie nową architekturą.

Nadaj każdej maszynie własną tożsamość. Każda strona potrzebuje certyfikatu i klucza prywatnego, kotwicy zaufania, która waliduje drugą stronę, oraz reguły weryfikacji węzła, która wskazuje, kogo się oczekuje. Nie używaj ponownie klucza prywatnego jednego węzła na drugim, aby zaoszczędzić czas; to czyni z dwóch tożsamości jedną i usuwa możliwość odwołania każdej strony osobno. Rejestracja to miejsce, w którym trzeba to zrobić dobrze, bo późniejsze poprawianie oznacza ponowne wystawienie certyfikatów.

Utrzymuj umowę sieciową bez zmian, podczas gdy ochrona się zmienia. Te same adresy tunelu, trasy i dozwolone usługi powinny obowiązywać przed i po, aby awaria podczas migracji była problemem ochrony, a nie zakamuflowaną niespodzianką routingu. Zapisz adresy i trasy przed zmianą; porównanie ich później jest szybsze niż odtwarzanie z pamięci.

Niektóre wdrożenia chronią też kanał sterowania własnym kluczem statycznym, który nie rotuje razem z kanałem danych. Ten klucz strzeże uścisku dłoni, a nie ładunku, więc jego kompromitacja ujawnia negocjacje, a nie ruch. Przechowuj go osobno od materiału kanału danych i nadaj mu datę wymiany, za którą odpowiada wskazana osoba. Jego rotacja oznacza ponowne uruchomienie obu węzłów w skoordynowanym oknie, dlatego zasługuje na wpis w kalendarzu, a nie na pamięć.

Kto co odnawia i kiedy

W trybie TLS odnowienie jest sterowane skonfigurowanymi limitami: interwałem czasu, liczbą bajtów lub liczbą pakietów. Udokumentowana kontrola czasu jest tym, na czym opiera się większość wdrożeń, a niższa efektywna wartość na obu węzłach może rozpocząć wymianę, więc podniesienie jej tylko po jednej stronie nie powstrzyma zdarzenia. Limity oparte na objętości istnieją, ponieważ zajęte łącze może wyczerpać klucz znacznie wcześniej niż zegar. Żaden z limitów nie jest kontrolą stanu i żaden nie mówi, że odnowienie się powiodło.

Dlatego diagnozowanie powracającej renegocjacji z jednego pliku konfiguracji jest mylące. Przeczytaj ustawienia na obu węzłach, a potem spójrz na przejście w logu, zamiast zakładać awarię. Odnowienie, które kończy się czysto, wygląda jak krótki wybuch ruchu kanału sterowania, a nie jak rozłączenie.

Trzymaj obiekty osobno w głowie. Certyfikat dowodzi tożsamości długoterminowej i jest wymieniany według harmonogramu, który kontrolujesz. Klucz kanału danych jest odświeżany automatycznie, a osobna wymiana uwierzytelniania, jeśli wdrożenie jej wymaga, podlega polityce konta i może potrzebować własnych ustaleń dla późniejszych wymian.

Całkowite wyłączenie odnowienia przez ustawienie interwału na zero nie jest rozwiązaniem hałaśliwego logu. Zamienia zdrowe zdarzenie cyklu życia w trwały klucz, co przywraca cię do właściwości, którą próbowałeś zostawić za sobą.

Akceptacja zmiany

Zbuduj nową konfigurację ze wspieranego przykładu zainstalowanego wydania, a nie ze starego minimalnego fragmentu, którego algorytmy i ścieżki plików odziedziczono skądinąd. Skoordynuj przełączenie tak, aby oba węzły zmieniły się razem, i utrzymuj zatwierdzoną ścieżkę odzyskiwania, gdyby jedna strona nie wystartowała. Świadomie opuść łącze, zamiast czekać na awarię, aby przetestować wycofanie. Wycofanie, które przećwiczyłeś, jest warte więcej niż wycofanie, które opisałeś.

Przetestuj trzy rzeczy: początkowa weryfikacja tożsamości się udaje, zamierzony przepływ aplikacji działa, a kontrolowane odnowienie następuje bez utraty ruchu. Potem odczytaj przejście w logu pod kątem tego, co naprawdę dowodzi: nowy identyfikator klucza oznacza, że węzły zakończyły wymianę, a nie że tunel połączył się ponownie. Traktuj to jako dowód jednego kroku i sprawdź liczniki ruchu, zanim ogłosisz migrację zakończoną.

To, co obietnica zerowej przerwy by ukryła, to awaria, której jeszcze nie widziałeś. Nieudane odnowienie, wygasający certyfikat lub usterka ścieżki nadal mogą zakłócić łącze, i żadnej z nich nie wyklucza czysty przebieg testu. Właściwość, dla której warto projektować, jest węższa i użyteczniejsza: rutynowa wymiana kluczy przestaje być ręczną podmianą pliku.

Powiązane artykuły