Ten profil został napisany w 2016 roku, a nadal się importuje i nadal się łączy. Właśnie dlatego nikt w niego nie zagląda. Klient, który kiedyś czytał te dyrektywy, dawno zniknął, a bieżąca kompilacja może kilka z nich interpretować inaczej.

To, że plik przetrwał, nie oznacza, że konfiguracja jest aktualna. Rozdzielenie tych dwóch pojęć to większość pracy.

Dowiedz się, który klient napisał profil

Zacznij od wydawcy i wersji. Znaczenie dyrektywy definiuje implementacja, która ją czyta. Wiersz, który kiedyś wybierał algorytm, może stać się listą zapasową, ostrzeżeniem albo twardym błędem. To, która wersja go interpretuje, decyduje o wyniku.

OpenVPN jest najjaśniejszym przykładem. Wersja 2.5 wprowadziła data-ciphers i zmieniła sposób, w jaki starsza dyrektywa cipher uczestniczy w negocjacjach. Profil zawierający tylko cipher AES-128-CBC daje teraz znacznie węższą propozycję, niż zamierzał jego autor.

Przeczytaj informacje o wydaniu dla ustawienia, które teraz ostrzega lub zawodzi. Ostrzeżenie w logu jest faktem o bieżącej kompilacji i waży więcej niż czyjekolwiek wspomnienie, dlaczego dodano ten wiersz.

Zobacz, co faktycznie wynegocjowano

Udany import dowodzi parsowania, a nie polityki. Wynegocjowany wynik pojawia się w logu klienta po nawiązaniu połączenia. Może różnić się od obu końców pliku konfiguracji.

# OpenVPN: what did this session agree on?
sudo journalctl -u openvpn-client@office --since '5 min ago' | grep -i 'cipher\|Data Channel'

# which directives does the profile actually carry?
grep -n -E 'cipher|auth|tls-|dh ' office.ovpn

Zaakceptowany import, który po cichu odrzuca dyrektywę, pozostawia profil, który czyta się w jeden sposób, a zachowuje w inny. Ta luka wyjaśnia, jak dokument oznaczony jako utwardzony negocjuje coś słabszego, niż twierdzi jego własny tekst. Log to jedyne miejsce, w którym różnica się ujawnia. Przeczytaj go, zanim zaufasz plikowi.

Zaktualizuj układ, nie wiersz

Weź profil utrzymywany przez operatora zamiast składać nazwy algorytmów, aż import przestanie narzekać. Dodawanie wierszy metodą prób odwraca kierunek poprawki. Dostosowuje klienta do nieznanego serwera zamiast ustalić, co serwer obsługuje.

Serwer też może potrzebować skoordynowanej aktualizacji. Bieżący klient nie może stworzyć obsługi propozycji, której druga strona nigdy nie oferuje. Żadna opcja po stronie klienta nie zastąpi bramy, której nie zaktualizowano.

Tym, czego nie wolno poświęcić, jest weryfikacja. Usuwanie kontroli certyfikatów, wyłączanie kontroli nazwy hosta albo wyłączanie aktualizacji, aby utrzymać stary profil przy życiu, zamienia problem zgodności w problem zaufania. Zwykle dzieje się to po jednej małej zmianie.

Potwierdź wynik i zapisz wyjątek

Po zmianie ponownie sprawdź wynegocjowany zestaw i przetestuj zasób, dla którego istnieje tunel. Profil, który wynegocjuje to, co zamierzałeś, a mimo to nie dociera do usługi, ma problem z routingiem albo tożsamością. Nie ma problemu kryptograficznego.

Przechowuj poprzednią znaną dobrą konfigurację w chronionym miejscu. Porównanie jest możliwe tylko dopóki stary plik jeszcze istnieje.

Udokumentuj każdy wyjątek zgodności z właścicielem i datą przeglądu. Tymczasowe rozwiązanie bez właściciela staje się trwałą polityką. Następna osoba, która przeczyta plik, założy, że wybrano je celowo.

Powiązane artykuły