Traktuj plik OVPN jako dane wejściowe dla programu, a nie jako zaświadczenie, że jego zawartość jest nieszkodliwa. Sprawdzenie adresu serwera odpowiada tylko na to, gdzie profil chce się połączyć, i na nic więcej. W tym pliku są dwie odrębne decyzje o zaufaniu: co klient może robić na twoim komputerze i który operator odbiera ruch. Znana nazwa protokołu nie rozstrzyga żadnej z nich.

W jednym pliku ukryte są dwie decyzje

Pierwsza decyzja jest lokalna. Profil to język konfiguracji, a klient, który go czyta, może obsługiwać dyrektywy ładujące wtyczkę, uruchamiające skrypt lub zmieniające sposób stosowania routingu i DNS. Druga decyzja jest zdalna. Cokolwiek zawiera plik, operator wyjścia widzi ruch, który do niego dociera.

Mieszanie obu daje złą radę w obie strony: czysto wyglądający profil od nieznanego operatora albo profil znanego operatora z hakiem, którego nikt nie przeczytał. Profil bezpieczny lokalnie wciąż może oddać twój ruch komuś, kogo byś nie wybrał.

Przeczytaj profil, zanim zrobi to jakikolwiek klient

Przeczytaj plik jako tekst, zanim jakikolwiek klient go przetworzy. Szukaj dyrektyw, które wskazują poza plik, odwołują się do plików wykonywalnych lub zmieniają uprawnienia, i porównaj tę listę z udokumentowanym wsparciem klienta. Krótkie wyszukiwanie nie jest audytem bezpieczeństwa, ale mówi, czy profil to lista serwerów, czy coś więcej.

grep -nE '^(script-security|up|down|plugin|route-up|ipchange)' untrusted.ovpn

Pusty wynik jest pocieszający i nierozstrzygający, ponieważ opcje mogą na siebie oddziaływać lub pochodzić z dołączonego pliku. Traktuj przefiltrowaną listę jako powód, by czytać dalej, a nie jako wyrok.

Instrukcje, które przychodzą razem z profilem, zasługują na takie samo sprawdzenie jak profil. Cztery prośby powinny cię zatrzymać: włączenie skryptów, instalacja pomocnika lub biblioteki, uruchomienie klienta jako administrator albo osłabienie ograniczenia importu. Każda z nich przesuwa granicę zaufania na zewnątrz, a żadna nie jest zwykłą częścią importu listy serwerów.

Przeczytaj też cały plik raz, ponieważ pojedynczą nieznaną linię łatwiej ocenić w kontekście niż na przefiltrowanej liście. Jeśli linia jest nieznana, poszukaj jej w instrukcji swojego klienta, zamiast zgadywać.

Co klient faktycznie wykona

Instrukcja 2.6 Community OpenVPN dokumentuje szczeble script-security: poziom 1 jest domyślny i blokuje skrypty zdefiniowane przez użytkownika, a poziom 2 je dopuszcza. Ładowanie wtyczek to osobny mechanizm z własną dyrektywą. Dlatego ten sam plik może znaczyć różne rzeczy w różnych klientach. Klienci mobilni i producentów mogą akceptować węższy zestaw dyrektyw albo żadnego z haków.

Sposób uruchomienia liczy się tak samo jak klient. Profil uruchomiony przez uprzywilejowanego pomocnika może więcej niż uruchomiony w przestrzeni użytkownika, i ta różnica to powód, by przeczytać monit importu, zamiast go odrzucić.

Wersja też ma znaczenie, bo te poziomy są definiowane dla każdego wydania, a klient kilka wersji w tyle może nie wdrażać tej samej polityki. Czytaj instrukcję zgodną z kompilacją, którą uruchamiasz, a nie najnowszą, jaką znajdziesz. Jeśli klient nigdzie nie pokazuje ciągu wersji, to już powód, by zwolnić.

Porównaj operatora, nie tylko adres

Porównuj operatorów tak, jak porównujesz każdego innego pośrednika. Zapytaj, kto prowadzi wyjście, co rejestrują i jak profil do ciebie trafił. Zweryfikowana strona pobierania i pasujący odcisk palca mówią więcej niż znana nazwa hosta. Osiągalny serwer dowodzi tylko, że coś odpowiedziało.

Dane logowania to część, w której ludzie pod presją się mylą. Nie wpisuj hasła niepowiązanego konta do pobranego profilu, bo nazwa serwera wygląda znajomo. Profil może też jawnie zawierać klucz prywatny, więc opublikowanie całego pliku w wątku recenzji przekazuje ten klucz wątkowi.

Poprawnie zweryfikowana sesja HTTPS wciąż ukrywa treść strony przed każdym, kto tylko przekazuje pakiety, więc wyjście nie widzi automatycznie każdego hasła. Widzi natomiast, do których witryn docierasz, i tę granicę warto opisać dokładnie, a nie przesadnie.

Tam, gdzie pochodzenie pliku pozostaje niejasne albo żądane uprawnienie nie ma wyjaśnienia, które możesz zaakceptować, zastąp profil plikiem ze źródła, które można pociągnąć do odpowiedzialności. W zarządzanym połączeniu służbowym administrator powinien zatwierdzić klienta i konfigurację jako jedną decyzję, a nie dwie. Nic tutaj nie wymaga, byś najpierw udowodnił złą wolę; odmowa dostępu jest uzasadnioną odpowiedzią.

Powiązane artykuły