Użytkownik MikroTik VPN sięga za daleko: ogranicz do jednego hosta i jednego portu
Profil PPP może umieścić przypisany adres tunelu na liście adresów, a jeden łańcuch skoku może przed odrzuceniem zezwolić na jeden host i port.
Tunel wstaje, logowanie się udaje, a każdy host w sieci odpowiada. To nie zepsuty VPN; to VPN bez modelu uprawnień. RouterOS uwierzytelnia konto, a następnie trasuje jego pakiety jak pakiety wszystkich innych, więc zaporze pozostaje dostarczyć ograniczenie. Dodanie tego ograniczenia bez psucia logowania to cała praca.
Uwierzytelnianie kończy się tam, gdzie zaczyna się uprawnienie
Gdy sesja PPP jest już podniesiona, pakiety klienta wchodzą do łańcucha forward jak ruch z dowolnego innego interfejsu. Jeśli polityka forward routera jest pobłażliwa, konsultant dziedziczy tę pobłażliwość przy logowaniu. Konto nigdy nie niosło zakresu, więc na koncie nie ma czego zmieniać. Zestaw reguł napisano dla pracowników, a nowa sesja po prostu do niego dołączyła.
Sprawdź, której ścieżki dotyczy żądanie, zanim cokolwiek napiszesz. Ruch do hostów za routerem przechodzi przez forward, natomiast ruch do samego routera, w tym winbox i SSH, przechodzi przez input. Zakres obejmujący tylko forward zostawia urządzenie otwarte dla tego samego klienta.
Oba łańcuchy potrzebują decyzji, nawet jeśli decyzją jest pozostawienie input zamkniętego. Ten wybór należy do wniosku o dostęp, a nie do późniejszej myśli.
Przypisz sesję do nazwanej listy
Profil PPP może przy starcie sesji umieścić przydzielany adres na nazwanej liście adresów. To zamienia przejściowy adres tunelu w coś, co zapora może dopasować po nazwie, a wpis znika po zakończeniu sesji. Konto dziedziczy wtedy zakres ze swojego profilu, a nie z reguły, która zaszywa adres na stałe.
Najpierw utwórz profil, potem wyraźnie powiąż z nim secret. Secret nadal wskazujący na profil domyślny odtwarza pierwotny problem.
Nazwij profil i listę tak, by ich zadania były oczywiste, i skomentuj oba odwołaniem do wniosku. Jeden profil może obsłużyć kilka osób o tym samym zakresie, a lista wciąż identyfikuje każdą żywą sesję. To tańsze w przeglądzie niż reguła na osobę.
/ppp profile add name=scoped-consultant remote-address=consultant-pool address-list=vpn-scoped-clients
/ppp secret add name=consultant password=... service=ovpn profile=scoped-consultant
Zapisz dozwoloną usługę na jednej liście
Umieść dozwolony serwer na jego własnej liście adresów, zamiast wplatać adres w regułę filtra. Listę można audytować, rozszerzać i komentować, a reguła, która jej używa, nie zmienia się, gdy serwer się przenosi. Jeden wpis wygląda na przesadę, dopóki nie pojawi się drugi host, co zwykle następuje.
Dopasowuj listę, gdy adres jest dynamiczny lub rozłożony, a dopasowuj adres bezpośrednio, gdy jest zarezerwowany i stabilny. Oba wybory czytają się jasno, jeśli komentarz wymienia usługę i właściciela.
Ogranicz protokół i port tak samo jak hosta. Accept dla hosta bez ograniczenia portu otwiera każdą usługę, którą host uruchamia, co jest szersze, niż zamierza większość wniosków o dostęp. Port jest częścią uprawnienia, a nie szczegółem dodawanym później.
/ip firewall address-list add list=vpn-targets address=10.0.0.10 comment="consultant RDP target"
Ustaw skok przed każdym szerokim accept
Reguła skoku wysyła przekazywany ruch z ograniczonej listy do prywatnego łańcucha, w którym cała polityka mieści się w trzech wierszach. Pierwsza reguła akceptuje dozwolone miejsce docelowe i port, a ostatnia odrzuca wszystko inne. Skok musi stać nad każdym szerokim accept w forward, bo wcześniejszy accept oznacza, że skok nigdy się nie wykona. Trzymaj accept dla established i related przed skokiem, aby ruch powrotny nadal płynął.
Sprawdź, czy żadna reguła fasttrack nie może przenieść tego ruchu obok ograniczonego łańcucha. Fasttrack omija resztę ścieżki filtra, a ograniczona sesja objęta fasttrackiem wcale nie jest ograniczona.
Powtórz decyzję dla łańcucha input, jeśli usługi samego routera mają być nieosiągalne. Zakres, który blokuje przekazywany ruch i zostawia winbox otwarty, jest tylko w połowie gotowy.
/ip firewall filter
add chain=forward action=jump jump-target=scoped-vpn src-address-list=vpn-scoped-clients
add chain=scoped-vpn action=accept protocol=tcp dst-address-list=vpn-targets dst-port=3389
add chain=scoped-vpn action=drop
Zweryfikuj licznikami i przynależnością do listy
Z klienta przetestuj dozwoloną usługę i taką, która musi zawieść, a potem odczytaj statystyki reguł na routerze. Liczniki accept i drop pokazują, którą ścieżką poszedł każdy pakiet, czego klient nie widzi. Potwierdź też, że adres żywej sesji pojawił się na ograniczonej liście.
Pusta lista oznacza, że konto jest na innym profilu albo profil stracił ustawienie listy adresów. Rosnący licznik drop przy zawodzącej dozwolonej usłudze oznacza, że miejsce docelowe lub port nie zgadzają się z tym, co wysyła klient.
Przetestuj tę samą usługę po nazwie i po adresie, zanim cokolwiek stwierdzisz. Błąd rozwiązywania nazw wygląda po stronie klienta dokładnie jak zablokowany port. Następnie zapisz profil, obie listy i jedyną dozwoloną usługę we wniosku o dostęp, aby następny przegląd porównywał, a nie odtwarzał.
/ip firewall filter print stats where chain=scoped-vpn
/ip firewall address-list print where list=vpn-scoped-clients