Stare obejście przeniosło plik wykonywalny OpenVPN w inne miejsce i zostawiło w pierwotnej ścieżce powłokę shell. Miesiące później pojawia się aktualizacja, a wycofanie obejścia staje się zgadywanką, który plik jest naprawdę klientem. Nazwa polecenia, plik wykonywalny skonfigurowany w usłudze i własna lista plików pakietu mogą wskazywać na różne obiekty, a naprawa jednego z nich bez pozostałych daje host, który wygląda na naprawiony i zachowuje się gorzej.

Zacznij od ścieżki, którą uruchamia usługa

Terminal i jednostka systemd nie rozwiązują plików wykonywalnych w ten sam sposób. Powłoka przeszukuje PATH; jednostka nazywa ścieżkę, a nadpisania drop-in mogą ją zastąpić bez dotykania pliku, który czytasz. Ta różnica wyjaśnia większość zamieszania w tym zadaniu. Decyduje też, na który plik musi celować twoja naprawa.

Zapytaj jednostkę, co uruchamia, wraz z nadpisaniami drop-in, które ją zmieniają, i czytaj wynikowy wiersz ExecStart, a nie fragment, który uważasz za wiążący. Następnie prześledź tę ścieżkę przez dowolne dowiązanie symboliczne aż do pliku końcowego. Opakowanie kończące się exec w ukrytym katalogu to częsty układ z tych starych poprawek.

Zapisz rozwiązaną ścieżkę, zanim cokolwiek zmienisz.

systemctl cat [email protected] | grep -n 'ExecStart'
readlink -f "$(command -v openvpn)"

Porównaj nazwę polecenia ze ścieżką usługi

Obie odpowiedzi często się różnią, a ta różnica nie jest automatycznie usterką. Wtyczka NetworkManager może uruchamiać własną ścieżkę, a kontener może montować jeszcze inną.

Ważne jest, aby wiedzieć, który właściciel uruchamia proces obsługujący ruch. Jeśli jednostka uruchamia /usr/local/sbin/openvpn-wrapper, podczas gdy twoja powłoka rozwiązuje /usr/sbin/openvpn, naprawa drugiego pliku niczego nie zmienia w usłudze.

Zapytaj, do którego pakietu należy każdy kandydat, a następnie zdecyduj, czy plikiem zarządza pakiet, czy został umieszczony lokalnie. Plik bez pakietu, który go posiada, to plik, który ktoś umieścił tam celowo, i zasługuje na nazwę, właściciela i powód, zanim zostanie usunięty. Odwrotny błąd też jest częsty: nadpisanie pliku pakietu starym zapisanym binarium, bo wpis na forum używał tego samego katalogu.

Pozwól bazie danych pakietów mówić o plikach pakietu

Gdy oprogramowanie pochodzi z pakietu Debiana, baza danych pakietów może powiedzieć, czy jego pliki nadal odpowiadają temu, co zainstalowano. To wąskie pytanie o integralność, nie werdykt bezpieczeństwa, i ta różnica ma znaczenie, gdy decydujesz, co naprawić. Niezgodność oznacza, że plik zmienił się po instalacji, co może być twoim starym obejściem albo legalną lokalną zmianą. Wynik nie rozstrzyga, które, więc czytaj go jako wskazówkę, a nie wniosek.

Uruchom weryfikację i czytaj wynik, zamiast traktować pusty rezultat jako dowód czegokolwiek.

dpkg -S /usr/sbin/openvpn
dpkg --verify openvpn

Podręcznik dpkg dokumentuje, że weryfikacja porównuje zainstalowane pliki z lokalnie zapisanymi metadanymi, używając zapisanych sum kontrolnych tam, gdzie istnieją. Zauważa zmieniony plik pakietu i nie potrafi powiedzieć, czy zamiast niego uruchamiane jest inne binarium.

Zarejestruj stan przed naprawą

Zbierz rozwiązaną ścieżkę uruchomienia, relację pliku z pakietem, lokalizację opakowania i zapis zmiany, który je wprowadził. Skopiuj opakowanie w chronione miejsce, jeśli zawiera pracę integracyjną, która będzie potrzebna później.

Nie wklejaj zawartości opakowania do wątku pomocy przed jej przeczytaniem, ponieważ te skrypty czasami zawierają dane uwierzytelniające lub szczegóły bramy.

Zapisz, których profili używa usługa i kto jest połączony, gdy pracujesz, ponieważ ponowne uruchomienie tunelu może przerwać sesję, którą administrujesz hostem.

Zweryfikuj uruchomienie, a następnie usuń opakowanie

Po naprawie uruchom usługę i potwierdź, że proces działa na zamierzonej ścieżce. Ręczne zapytanie o wersję dowodzi, że plik działa; nie dowodzi, że jednostka go używa.

Następnie połącz ponownie klienta i sprawdź, czy profil nadal się uwierzytelnia, ponieważ podmiana binarium, która ignoruje oryginalne opcje, zawiedzie w sposób wyglądający jak problem z certyfikatem.

Usuń wyparte opakowanie przez ten sam zapis zmiany, który je wprowadził. Zakończona naprawa mówi, który plik wykonywalny działa, dlaczego i który plik został usunięty; przywrócenie nazwy pliku i nadzieja to nie to samo.

Powiązane artykuły