Dlaczego współdzielony TAP VPN nadal wymaga HTTPS w portalu
TAP VPN uwierzytelnia peera, a nie usługę za nim. Zachowaj walidację nazwy hosta w portalu i izoluj sąsiadów, którym nie ufasz.
Dwa urządzenia mają ważne dane logowania VPN i współdzielą jeden mostkowany segment Ethernet. Tylko jedno z nich powinno odpowiadać za portal biurowy, a drugie nadal może rościć sobie prawo do adresu portalu w tym segmencie. Tunel wykonał swoją pracę: uwierzytelnił oba peery i zaszyfrował każdą ścieżkę do serwera. Nie zrobił jednego: nie poświadczył, które z nich posiada nazwę usługi, i właśnie ta luka jest powodem, dla którego portal nadal potrzebuje ważnego certyfikatu.
Co VPN faktycznie uwierzytelnia
Uścisk dłoni VPN odpowiada na jedno pytanie: który peer ukończył ten tunel i z jakim materiałem klucza. Ta odpowiedź dotyczy każdego peera i każdego połączenia i nie mówi nic o usługach, które ten peer później udostępnia. W segmencie TAP peer nie jest nawet jednym adresem, ponieważ może przedstawić dowolny MAC i dowolny IP, którego most jest gotów się nauczyć. Uwierzytelnianie kończy się na końcu tunelu, a nie w aplikacji.
Rozdziel trzy pytania, zamiast scalać je w jedno. Każde ma własny mechanizm i własny tryb awarii.
| Question | Answered by |
|---|---|
| Which peer sent this packet? | VPN transport authentication |
| Which device owns this IPv4 address? | ARP, trusted only as far as the segment |
| Which service am I talking to? | Application TLS and hostname validation |
Wdrożenie może mieć doskonale uwierzytelniony tunel i całkowicie nieuwierzytelnioną usługę za nim. Może też mieć zwalidowany certyfikat na hoście, którego adres drugiej warstwy inny peer sobie rości, dlatego obie kontrole należą do projektu, a nie jedna zamiast drugiej. Tabela to cały argument w trzech wierszach.
ARP w współdzielonym segmencie nie jest katalogiem
ARP mapuje adres IPv4 na MAC w łączu lokalnym i akceptuje odpowiedzi od kogokolwiek w tym łączu. W permisywnym mostkowanym segmencie peer może rościć sobie adres należący do innego urządzenia, a most przekazuje ramki temu, kto odpowiedział ostatnio. Szyfrowanie każdej ścieżki klienta do serwera tego nie zmienia, ponieważ ramki są odszyfrowywane, zanim dotrą do mostu. Granicą zaufania ARP jest segment, a nie tunel.
Zobacz, czego host faktycznie się nauczył: ip neigh show wyświetla bieżące mapowania i ich stan, a wpis, który podczas normalnej pracy przeskakuje między dwoma adresami MAC, jest objawem wartym zbadania, a nie zignorowania. W zdrowym małym segmencie takie wpisy pozostają stabilne przez długi czas.
Izolacja peerów i polityka mostu istnieją dokładnie dla tego przypadku. Projekt routowany jest zwykle lepszą odpowiedzią, gdy usługa jest tylko IP, a urządzenia nie mają żadnego powodu, by widzieć wzajemnie swoje ramki.
Zachowaj walidację certyfikatu tam, gdzie jest usługa
TLS aplikacji odpowiada na pytanie, na które tunel nie potrafi: czy to jest usługa, do której chciałem dotrzeć. Przeglądarka sprawdza nazwę hosta względem certyfikatu, i to sprawdzenie jest jedyną częścią łańcucha, która nazywa portal, a nie peera.
Sprawdź, co prezentuje serwer, zanim uznasz ostrzeżenie za kosmetyczne. openssl s_client -connect portal.example.internal:443 -servername portal.example.internal wypisuje łańcuch i alternatywne nazwy podmiotu. Jeśli wpisanej nazwy nie ma na tej liście, ostrzeżenie jest poprawne i to certyfikat wymaga naprawy. Uczenie użytkowników, by je klikali, zamienia działającą kontrolę w dekorację.
Przewodnik po mostkowaniu OpenVPN opisuje model Ethernet i opcje polityki wokół niego, i jest właściwym źródłem tego, co segment powinien dopuszczać. Przeczytaj go, zanim poluzujesz regułę mostu, ponieważ opisany tam model jest tym, co zakłada każde sprawdzenie powyżej.
Zdecyduj, czy te peery powinny w ogóle współdzielić segment
Najtańszym rozwiązaniem jest zwykle zaprzestanie współdzielenia drugiej warstwy, gdy wymaganiem jest tylko osiągalność IP. Routowany VPN daje każdemu klientowi własny adres, usuwa współdzieloną domenę rozgłoszeniową i zamienia ruch między peerami w decyzję polityki zamiast wartości domyślnej. Portal ma wtedy jeden adres do ochrony i żadnych sąsiadów, którzy mogliby się o niego ubiegać.
Jeśli segment musi zostać, sprawdź ustawienie po stronie serwera, które pozwala klientom sięgać się wzajemnie: grep -n client-to-client /etc/openvpn/server.conf. Gdy jest wyłączone, ruch klientów przechodzi przez serwer i można go tam filtrować. Gdy jest włączone, peery wymieniają ramki bezpośrednio przez most, a twoimi punktami filtrowania są most i zapora hosta.
Zapisz, na jakich zabezpieczeniach każdy host faktycznie polega: uwierzytelnianie tunelu, izolacja segmentu lub TLS aplikacji. Host, który polega na wszystkich trzech, jest w porządku. Host, który polega na pierwszym i zakłada, że pozostałe dwa przyszły razem z nim, to ten, który ostatecznie serwuje niewłaściwą treść.