Szybki OpenVPN [OPNsense]

OpenVPN – popularny protokół VPN dostępny na wielu systemach operacyjnych.

Wstęp

VPN – czyli wirtualne sieci prywatne zapewniają bezpieczeństwo szyfrowanych połączeń pomiędzy rożnymi lokalizacjami lub systemami oraz umożliwiają bezpieczną zdalną pracę użytkownikom. Jednym z takich protokołów jest otwarto źródłowy OpenVPN. Znalazł on zastosowanie w wielu systemach operacyjnych oraz urządzeniach. W przypadku OPNsense można skonfigurować przy pomocy wbudowanego OVPN połączenie pomiędzy dwoma lokalizacjami lub jako serwer dostępowy dla pracowników zdalnych. Zalety OVPN to, to że korzysta z jednego portu UDP lub TCP do komunikacji, dobrze radzi sobie w sytuacji gdy klient OVPN znajduje się za NATem. Także łatwość instalacji po stronie klienta i przekazania konfiguracji za pomocą jednego pliku.

Tworzenie lokalnego CA.

Konfiguracja OpenVPN serwera wymaga utworzenia lokalnego urzędu certyfikacji CA (ang. Certificate Authority), który będzie mógł wystawiać certyfikaty dla serwerów i użytkowników. Aby utworzyć CA na OPNsense przejdź do menu System -> Trust -> Authorities .

W kolejnym kroku po kliknięciu na plusik otworzy się okno do wpisania parametrów generowanego CA. Na liście rozwijanej Method wybierz Create an Internal Certficate Authority.

obraz.png

Po zapisaniu jeżeli nie ma błędów pojawi się nowo utworzone lokalne centrum certyfikacji. Tych centrów można dodać więcej.

Zwróć uwagę na czas życia wystawionego CA (ang. Lifetime). Domyślnie to nieco ponad dwa lata. Aby w przyszłości nie mieć problemów z wygasającymi certyfikatami można wydłużyć ten okres. 

Tworzenie certyfikatu dla serwera OVPN.

Teraz możesz przystąpić do wystawienia certyfikatu dla serwera OVPN czyli wystarczy kliknąć w bocznym menu na System -> Trust -> Certficates i plusik na prawej ramce dla certyfikatów.

Po kliknięciu w plusik pojawi się okno w którym wybierz w polu “Method” “Create an Internal Certificate“.  W polu “Descriptive name” wpisz nazwę dla tworzonego certyfikatu tak żeby go łatwo zidentyfikować. Na liście rozwijanej “Certificate authority” wybierz uprzednio utworzony urząd certyfikacji oraz w polu “Type” “Server Certificate“. Proponuję długość klucza ustawić “Key length (bits)” na 4096;  “Digest Algorithm” SHA256 i “Life time” na 10 lat czyli na 3650 dni. Pozostałe dane pozostaw bez zmian za wyjątkiem “Common Name:” gdzie możesz podać nazwę np. “Alternative Names” wybrać DNS lub IP odpowiednio dla serwera np. DNS openvpn.netadminpro.pl .

Przykładowe okno z certyfikatami.

Na samej górze znajduje się certyfikat tworzony automatycznie podczas instalacji wykorzystywany do interfejsu webowego do zarządzania OPNsense.

Tworzenie grup i użytkowników.

Na tym etapie lub wcześniej warto utworzyć grupę lub grupy użytkowników, którzy będą korzystać z OpenVPNa.

Możesz to zrobić przechodząc do menu System -> Access -> Groups i plusikiem utwórz nowa grupę . Grup może być kilka dla kilku różnych serwerów OVPN.

Użytkowników dodaj w System -> Access -> Users i przypisz odpowiednio do wcześniej dodanych grup.

Tu zwróć uwagę na dodanie użytkownika do wcześniej utworzonej grupy i tak, żeby nie znalazł się w grupie adminów. Druga ważna rzecz to zaznaczenie opcji Certifacate i Click to create a user certicate. Jest to konieczne aby wygenerować certyfikat dla nowego użytkownika. Następnie kliknij Save and go back . Otworzy się okno tworzenia certyfikatu dla użytkownika. Zwróć uwagę na: Method – tworzysz certyfikat wewnętrzny; w Certificate authority wybierz uprzednio utworzony przez Ciebie urząd certyfikacji; potem Type – powinien to certyfikat klienta. Lifetime proponuję ustawić na klika lat.

Po zapisaniu certyfikatu wrócisz do tworzenia użytkownika. Zobaczysz nowo wygenerowany certyfikat. Zapisz te konfigurację.

Tworzenie serwera OpenVPN.

Po tych czynnościach przejdź do podmenu VPN -> OpenVPN -> Servers [legacy]

Mamy tu kilka trybów pracy serwera do wyboru. Jeżeli ma być to OVPN do dostępu użytkowników pracujących zdalnie to są to 3 opcje. Remote Access (SSL/TLS), (User Auth) oraz (SSL/TLS + User Auth) . Opcja (SSL/TLS) to autoryzacja użytkowników certyfikatem. (User Auth) – autoryzacja loginem i hasłem. Najbezpieczniejsza opcja to (SSL/TLS + User Auth) czyli autoryzacja certyfikatem, loginem i hasłem użytkownika. Najwygodniejsza jest opcja (SSL/TLS). W tej opcji wystarczy przekazać użytkownikowi jedynie plik konfiguracyjny, który zawiera certyfikat użytkownika i wszystkie niezbędne dane do zestawienia połączenia. W powyższym oknie jest tez ustawienie Interfejsu i portu na którym nasłuchuje serwer OVPN. Interfejs do wyboru to będzie oczywiście WAN w podstawowej konfiguracji. Portem domyślnym jest 1194. Warto go ustawić na inną wartość. Zwróć przy tym uwagę aby nie pokrył się z innymi usługami udostępnianymi na tym routerze.

Przykład powyższy to nowy serwer OVPN przewidziany do dostępu zdalnego dla użytkowników z wykorzystaniem autoryzacji za pomocą certyfikatu, z wykorzystaniem protokołu UDP na porcie 1199 jako tunel na interfejsie WAN.

Opcje kryptograficzne ustaw TLS Authentication jako Enabled – Authentication & encryption , żeby zarówno proces autentykacji jak i same przesyłane dane były szyfrowane. W Certficate Depth ustaw na One (Client + server) aby występowało sprawdzenie certyfikatu serwera i klienta przed połączeniem.

W powyższym formularzu uzupełnij dane IPv4 Tunnel Network. Podaj tu adres sieci, która będzie używana w tunelu tak żeby ta adresacja nie była wykorzystywana na routerze lub u klientów korzystających z OVPN. Do IPv4 Local Network wstaw adres sieci w OPNsense do której powinni mieć dostęp użytkownicy OVPN, zwróć uwagę, że może to być również jeden komputer lub serwer. Wystarczy wstawić adres z maską 32 bitową (255.255.255.255.255) np.192.168.100.100/32 i spowoduje to, że użytkownik VPNa będzie mógł się łączyć jedynie z hostem o powyższym adresie.

Dodatkowe opcje

Zaznaczenie opcji Redirect Gateway spowoduje przekierowanie całego ruchu poprzez OVPN z połączonego komputera. W sytuacji zdalnego dostępu nie jest wymagane konfigurowanie IPv4 i IPv6 Remote Network. Jeżeli ustawisz Concurent connections na zero to spowoduje że nie będzie ograniczeń co do ilości połączonych użytkowników do danego serwera OVPN. Compression najlepiej ustaw na Legacy – Disabled … Daje to wyższe bezpieczeństwo i zapobiega przechwyceniu i odszyfrowaniu ruchu .

Przy prostej konfiguracji wszystkie te pola możesz zostawić nie zaznaczone. Natomiast jeśli Twoi użytkownicy OVPN będą się łączyć do sieci z domeną Windows® warto ustawić opcje DNS. Ustaw odpowiednio serwery DNS oraz wymuś czyszczenie pamięci podręcznej DNS po połączeniu . Umożliwi to pełny dostęp do Active Directory. Opcja Prevent DNS leaks spowoduje, że wszystkie zapytania DNS będą kierowane tylko do uprzednio zdefiniowanych serwerów DNS w Twojej sieci lokalnej.

Pozostałe opcje nie wymagają konfiguracji.

Serwer OpenVPN gotowy. Ikona trójkąta na zielono to serwer włączony.

Konfiguracja wirtualnego interfejsu sieciowego dla OpenVPN.

VPNy tworzone na OPNsense wymagają uruchomienia wirtualnego interfejsu sieciowego. Znajdziesz go i uruchomisz w Interfaces -> Assignments .

Nadaj mu nazwę, najlepiej zaczynając od OVPN_ w celu łatwego rozróżnienia. Dodaj go przyciskiem Add i zapisz konfigurację. Po zapisaniu kliknij na ten nowy interfejs. Zobaczysz jego opcje konfiguracji. Tu należy go włączyć i zaznaczyć opcje Prevent interface removal . Poza tym nic więcej nie trzeba konfigurować.

Firewall – reguły dla interfejsu OpenVPN.

Domyślnie w OPNsense przy dodawaniu nowych interfejsów sieciowych ruch na nich jest zablokowany. Ponieważ utworzyłeś nowy wirtualny interfejs wymaga on dodania reguł. Po utworzeniu pierwszego serwera OVPN na liście reguł w Firewallu pojawi się ogólna reguła dla serwerów OVPN oraz reguła z nazwa pochodząca od utworzonego przez Ciebie serwera OVPN. Ogólna reguła jako nadrzędna będzie miała zastosowanie do wszystkich serwerów OVPN.

Jeżeli w tym miejscu klikniesz na plusik to utworzy się automatycznie reguła przepuszczają ruch bez ograniczeń na wszystkich interfejsach OVPN tych które są i będą utworzone. Wystarczy potem zapisać i zastosować konfigurację.

Poniżej przykładowa konfiguracja umożliwiająca ruch z sieci tunelu OVPN do hosta o adresie 192.168.100.100 .

Firewall – reguła dla interfejsu WAN.

Pozostaje otworzyć port na firewallu od strony portu WAN. Na naszym OPNsense ustawiliśmy na port UDP 1199, więc taki otwieramy.

Instalacja i uruchomienie klienta OpenVPN.

Wystarczy teraz pobrać stąd i zainstalować klienta OVPN . Jeśli już masz dodanych użytkowników to możesz pobrać dla nich pliki konfiguracyjne. A zrobisz to przechodząc do VPN -> OpenVPN -> Client Export.

Jak widzisz powyżej w Remote Access Server jest lista rozwijana, więc należy wybrać odpowiedni serwer jeśli jest ich więcej. Export Type wybierz File Only otrzymasz wtedy plik z rozszerzeniem ovpn. Znajdź na liście poniżej użytkownika dla którego zrobiłeś uprzednio konfigurację i kliknij na chmurkę aby pobrać plik. Przy zainstalowanym kliencie na Windows wystarczy kliknąć i konfiguracja połączenia zostanie zaimportowana.

Teraz możesz tworzyć kolejne serwery OVPN i użytkowników. Wykorzystaj do tego różne porty. Możesz również tworzyć połączenia pomiędzy lokalizacjami korzystając z tuneli OVPN.