Jak ograniczyć dostęp między dwoma biurami połączonymi przez VPN
Tunel między lokalizacjami nie jest wzajemnym zaufaniem. Zbuduj macierz źródła, celu i usługi, egzekwuj ją na odszyfrowanym ruchu i udowodnij też odmowę.
Tunel między lokalizacjami odpowiada na jedno pytanie, czy oba biura mogą wymieniać pakiety, a to ważne pozostawia otwarte: które urządzenie oddziału może dotrzeć do której centralnej usługi. Traktowanie tunelu jako wzajemnego zaufania to droga, którą laptop gościa trafia na tę samą ścieżkę co serwer finansowy. Rozwiązaniem nie jest lepszy tunel, lecz jawna lista zezwoleń egzekwowana po odszyfrowaniu. Ten przewodnik prowadzi tę listę od definicji do udowodnionej odmowy.
Pracuj w tej kolejności i nie poszerzaj trasy tunelu, dopóki poniższe kroki polityki nie przejdą.
Napisz macierz, zanim dotkniesz bramy
Użyteczny wiersz nazywa trzy rzeczy: grupę źródłową, host lub sieć usługi docelowej oraz protokół i port, których aplikacja faktycznie używa. Oddział i centrum danych nie są wpisami. Prywatny DNS i usługi uwierzytelniania zasługują na własne wiersze tylko wtedy, gdy aplikacja nie może działać bez nich.
Grupuj źródła według roli, a nie według wygody podsieci: pracownicy, goście, administracja. Gdy wszystkie trzy dzielą jedną płaską sieć LAN, brama nie potrafi ich rozróżnić na warstwie sieci, więc kontrola tożsamości lub segmentacja musi przyjść pierwsza. Następnie zapisz macierz na piśmie, z właścicielem i datą przeglądu w każdym wierszu.
| Źródło | Cel | Usługa | Decyzja |
|---|---|---|---|
| pracownicy oddziału | aplikacja rezerwacyjna 10.10.5.10 | TCP 443 | zezwól na bramie odszyfrowującej |
| pracownicy oddziału | VLAN administracji serwerami | dowolny | dorozumiana odmowa |
| Wi-Fi dla gości | dowolny zakres centralny | dowolny | odmów przed tunelem |
| host skoku administracyjnego | VLAN serwerów | TCP 22 i 3389 | zezwól z MFA, zapora hosta zawęża dalej |
Egzekwuj tam, gdzie pakiety są odszyfrowywane
Reguły zezwalające na IKE i ESP budują tylko zewnętrzny tunel. Ruch wewnętrzny przychodzi jawnie na interfejsie tunelu i właśnie tam należy lista zezwoleń: łańcuch przekazywania na urządzeniu odszyfrowującym, domyślne odrzucanie, jedna reguła na wiersz macierzy. Na bramach Linux oznacza to włączone przekazywanie i reguły filtrowania na urządzeniu tunelu, a nie na łączu fizycznym, jak wyjaśnia przewodnik przekazywania strongSwan.
Selektory ruchu to decyzja routingu, a nie autoryzacji. Szeroki selektor obejmujący obie podsieci może być właściwy dla routingu, podczas gdy zapora nadal zezwala tylko na TCP 443 do jednego hosta. Selektor jest negocjowany dla tunelu i opisuje, co może do niego wejść, a nie co może wykorzystać dane urządzenie. Nigdy nie poszerzaj reguły zapory tylko dlatego, że selektor jest szeroki.
iptables -A FORWARD -i tun0 -s 10.20.0.0/24 -d 10.10.5.10 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i tun0 -j DROP
NAT i nakładające się podsieci zmieniają reguły
Gdy brama oddziału tłumaczy każdy host na jeden adres przed tunelem, każdy wiersz oparty na źródle zapada się w ten jeden adres. Albo przestań tłumaczyć ruch tunelu, albo zaakceptuj, że reguły muszą opierać się na czymś innym, na przykład na oryginalnym adresie źródłowym zapisanym przed tłumaczeniem. Drugi koniec ma ten sam problem, bo host docelowy widzi adres po NAT, a nie oryginalny.
Nakładające się zakresy to druga pułapka. Dwóch biur, które oba używają 192.168.1.0/24, nie da się opisać w jednej tabeli polityki bez mapowania jednej strony, a mapowanie nie zastępuje adresacji, która nie koliduje. Popraw plan, zanim napiszesz reguły, które będziesz musiał później rozplątać.
Udowodnij odmowę, nie tylko sukces
Testowanie tylko dozwolonej aplikacji dowodzi bardzo niewiele, bo reguła pobłażliwa gdzieś wyżej daje ten sam wynik.
Z zwykłego urządzenia oddziału dotrzyj do zamierzonej usługi i potwierdź, że cała sesja działa. Potem spróbuj celu, który musi pozostać zamknięty, na przykład portu administracyjnego na serwerze, z którym oddział nie ma nic wspólnego, i odczytaj licznik lub wpis w dzienniku, który go odrzucił. Wyłączenie zestawu reguł, aby sprawdzić, czy działa, unieważnia test i zostawia bramę otwartą, gdy patrzysz.
Utrzymuj listę przy życiu
Aplikacje się przenoszą, a reguła, która przeżyje swoją aplikację, staje się dziurą, której nikt nie posiada. Przypnij datę przeglądu do wiersza i zmień zakres selektora oraz regułę zapory w tym samym kroku konserwacji, gdy usługa zmienia adres.
Ograniczenia na poziomie hosta nadal mają znaczenie za tunelem: własna zapora serwera powinna przyjmować zakres oddziału tylko dla usługi, którą publikuje. Dwie warstwy, które się zgadzają, łatwiej audytować niż jedną, której w pełni się ufa.