Czy HTTP w ZeroTier jest szyfrowane? Sprawdź, gdzie kończy się overlay
ZeroTier szyfruje przeskoki peer-to-peer, a nie odcinek LAN za routerem lub mostem. Sprawdź, gdzie kończy się overlay, zanim uznasz zwykłe HTTP za bezpieczne.
Przejdź te kontrole po kolei i zatrzymaj się na pierwszej, która zawiedzie, ponieważ każda odpowiedź zmienia znaczenie następnego kroku. Prawdziwe pytanie jest wąskie: czy zwykłe HTTP w sieci ZeroTier podróżuje jawnym tekstem przez internet? Między dwoma peerami ZeroTier zwykle nie, ponieważ overlay szyfruje ten przeskok. To jednak stwierdzenie o dwóch punktach końcowych, a nie o każdym segmencie, przez który przechodzi żądanie. Router, most lub reverse proxy przesuwa punkt końcowy, a jawny tekst zaczyna się ponownie po jego drugiej stronie.
Kontrola 1: znajdź adres, pod który dzwoni przeglądarka
Porównaj URL z tym, co maszyna faktycznie ma. ip -brief addr show pokazuje interfejs zt i adres overlaya nadany przez kontroler sieci; jeśli URL używa tego adresu, gniazdo przeglądarki wchodzi do overlaya.
Gdy nazwa zamiast tego rozwiązuje się do adresu LAN, overlay może w ogóle nie brać udziału, cokolwiek sugeruje wskaźnik stanu klienta. ip route get 10.147.20.5 wypisuje interfejs i adres źródłowy, który wybrałby kernel, więc interfejs zt w tym miejscu oznacza, że pakiet wchodzi do overlaya, a nazwa twojej fizycznej karty sieciowej oznacza, że nie. Nazwy dodają kolejną warstwę: rekord wskazujący na adres overlaya zachowuje się inaczej niż ten wskazujący na adres LAN, a sufiks wyszukiwania lub wpis w pliku hosts może po cichu zdecydować, który dostaniesz.
Kontrola 2: potwierdź, że oba końce to peery, a nie deszyfrujący relay
ZeroTier szyfruje między peerami, a tam, gdzie nie ma bezpośredniej ścieżki, pakiety są przekazywane przez root, który przesyła je dalej wciąż zaszyfrowane. zerotier-cli peers oznacza ścieżkę każdego peera jako DIRECT lub RELAY wraz z liczbą opóźnienia. Przekazywana ścieżka kosztuje rundy, nie poufność.
Odpowiedź zmienia natomiast członek, który nie jest tak naprawdę punktem końcowym. Gdy druga strona to członek ZeroTier routujący lub mostkujący do fizycznego LAN, overlay kończy się na tym członku, a następny przeskok to zwykły Ethernet.
Kontrola 3: obserwuj, gdzie żądanie staje się czytelne
Na hoście, który twoim zdaniem serwuje stronę, przechwyć interfejs overlaya podczas przeładowania: sudo tcpdump -i ztxxxxxxx -A -c 5 'tcp port 80'. Czytelna linia żądania w tym wyjściu dowodzi, że ruch dotarł odszyfrowany na ten host, i to jest granica, której szukasz.
Następnie przechwyć na interfejsie skierowanym w stronę reszty LAN. Jeśli to samo żądanie pojawi się tam jawnie, opuściło overlay przed dotarciem do aplikacji i każde urządzenie w tym segmencie może je odczytać. Jeśli po stronie LAN nic się nie pojawia, a strona nadal się ładuje, aplikacja kończy połączenie na samym hoście ZeroTier.
Przechwytywanie loopbacku też ma znaczenie, gdy z przodu stoi reverse proxy, ponieważ proxy, które przyjmuje HTTPS i przekazuje HTTP, przenosi granicę do własnego backendu.
Kontrola 4: uwzględnij każdy przeskok za routerem lub mostem
Członek skonfigurowany do routowania między overlayem a LAN to zwykły projekt i miejsce, w którym większość tych założeń się łamie. Overlay chroni odcinek od przeglądarki do routera i nic po nim. Most opowiada tę samą historię innym mechanizmem: overlay i segment fizyczny stają się jedną domeną rozgłoszeniową, więc żądanie z mostkowanego laptopa przechodzi zwykłym Ethernetem, nawet jeśli ten laptop siedzi w sieci ZeroTier.
Prześledź to zamiast zakładać. traceroute z klienta do adresu usługi wraz z tablicą routingu na członku bramy pokazuje, czy ostatni przeskok to zt, czy eth.
ZeroTier oferuje też tryb trusted-path, który może porzucić bezpieczeństwo transportu na wyznaczonych ścieżkach lokalnych dla wydajności. Sieć, która go używa, nie dziedziczy zwykłego założenia o zaszyfrowanej ścieżce, więc przeczytaj konfigurację sieci, zanim taką przytoczysz. Dokumentacja protokołu opisuje zarówno szyfrowanie między peerami, jak i ten wyjątek.
Kontrola 5: zdecyduj, co aplikacja musi jeszcze zrobić
Członkostwo w overlayu uwierzytelnia urządzenie w sieci i nic nie mówi o tym, czy usługa po drugiej stronie to ta, do której chciałeś dotrzeć. HTTPS odpowiada na inne pytanie, wiążąc nazwę hosta z kluczem, więc obie ochrony nakładają się, nie zastępując się nawzajem. Upoważniony peer nadal może być niewłaściwą usługą, a przejęty punkt końcowy czyta żądanie zarówno przed szyfrowaniem, jak i po odszyfrowaniu. Żaden z mechanizmów nie audytuje tego, co rejestruje aplikacja.
Dla wszystkiego z sesją wielokrotnego użytku lub hasłem zakończ TLS w aplikacji albo w proxy, które kontrolujesz, i zostaw włączoną walidację certyfikatu. Gdy starsza usługa musi zostać na zwykłym HTTP, zapisz dokładną ścieżkę od hosta do hosta, której może używać, kto może do niej dotrzeć i który segment pozostaje niechroniony; ta notatka to właśnie to, czego potrzebuje przyszły recenzent.
"VPN jest połączony" nie jest oceną żadnej z tych rzeczy. Uczciwa wersja nazywa oba punkty końcowe, ścieżkę między nimi i pierwszy przeskok, który nie jest objęty.
Trzymaj wynik przechwytywania i listę peerów obok dokumentacji usługi, aby każdy, kto zmienia trasę lub dodaje most, widział, które założenie zaraz złamie.