Stworzenie własnego serwera VPN jest bardzo przydatnym rozwiązaniem kiedy łączymy się do własnej infrastruktury. Dzięki temu, że jest to rozwiązanie które możemy ustawić, dostosować oraz udostępniać we własnym zakresie, poziom prywatności oraz bezpieczeństwa jest w tym wypadku bardzo wysoki.

Aby rozpocząć konfigurację serwera OpenVPN na zaporze OPNsense należy w pierwszej kolejności przejść przez początkową konfigurację. Poradnik w jaki sposób można tego dokonać znajduje się w tym artykule na naszej stronie.

Po poprawnym skonfigurowaniu podstawowych ustawień zapory, pierwszym krokiem konfiguracji jest utworzenie certyfikatów dla serwera. Dzięki nim jesteśmy w stanie włączyć szyfrowanie transmisji pomiędzy klientem końcowym a serwerem VPN.
Aby tego dokonać, w panelu konfiguracyjnym zapory przechodzimy do zakładki System > Trust > Authorities

Tutaj możemy zarządzać tzw. urzędami certyfikacji (CA). Utworzenie nowego urzędu certyfikacji pozwala zagwarantować, że wydawane przez niego certyfikaty są tymi które pochodzą z naszej zapory. Poza tym jest on wymagany do utworzenia nowych certyfikatów potrzebnych do uruchomienia serwera OpenVPN.
W celu utworzenia nowego urzędu klikamy na ikonę plusa w prawej części ekranu która przeniesie nas do strony na której będziemy mogli tego dokonać.

Tutaj pierwszą opcją którą musimy zmienić, jest wybranie metody. Domyślnie jest to import już istniejącego, jednak w naszym wypadku chcemy utworzyć nowy, dlatego wybieramy utworzenie nowego urzędu certyfikacji.

Poniżej pojawiły się w tym momencie nowe opcje. Opcjami które musimy ustawić są:
– Nazwa dla CA – wybrana przez nas nazwa która pozwoli na jego późniejszą identyfikację.
– Typ klucza – do wyboru dostajemy klucz RSA lub klucz oparty o krzywe eliptyczne. W tym wypadku użyjemy tego pierwszego ze względu na wydajność takiego typu szyfrowania.
-Długość klucza – zazwyczaj im dłuższy klucz, tym trudniej jest go odszyfrować, dlatego w tym wypadku wybieramy długość 8192 bitów.
– Funkcja skrótu (Digest algorithm) – nie należy używać funkcji SHA-1 ponieważ nie uważa się jej już za bezpieczną. W tym przypadku używamy funkcji SHA-256.
– Czas życia – jest to ustawienie odpowiedzialne za długość ważności CA. Po jego wygaśnięciu serwer wymaga wygenerowania nowego ponieważ to dotychczasowe przestaje działać.
– Wszystkie pozostałe wartości wypełniamy zgodnie z nazwą własnej organizacji, miasta, regionu, itd..

Po zakończeniu wypełniania danych zatwierdzamy je przyciskiem Save. Jeżeli konfiguracja została wpisana poprawnie, zostaniemy przeniesieni do poprzedniej strony gdzie pokaże się nowo utworzony urząd certyfikacji.

Kolejnym krokiem do utworzenia serwera VPN jest wygenerowanie nowego certyfikatu używanego przez serwer do komunikacji z klientami. Aby takowy wygenerować wchodzimy w zakładkę obok, czyli Trust > Certificates.

Tutaj dostępny jest już jeden certyfikat utworzony przez bramę na potrzeby komunikacji przez protokół HTTPS, jednak my dla serwera utworzymy nowy. Klikamy na plus w prawej górnej części ekranu który przenosi nas do ekranu tworzenia nowego certyfikatu.

Oczywiście w tym przypadku także należy zmienić metodę na tworzenie nowego certyfikatu do użytku wewnętrznego.

Poniżej wpisujemy nową nazwę a następnie wybieramy parametry szyfrowania: Klucz RSA, długość 4096 bit, SHA256, długość życia 3650 dni. Reszta parametrów zostanie zaczytana z urzędu certyfikacji który przed chwilą został utworzony. Warto także w polu „Common name” wpisać jakąś nazwę która pozwoli na łatwą identyfikację certyfikatu w późniejszych krokach. Ważnym krokiem jest także zmiana typu certyfikatu na „Server certificate” aby móc z niego skorzystać podczas tworzenia serwera OpenVPN.

Dalszym krokiem przygotowującym jest utworzenie listy CRL do której w razie potrzeby można dodać certyfikat który nie może już więcej identyfikować się z naszym CA. Wchodzimy w zakładkę Trust > Revocation gdzie dodanie nowej listy do już istniejącego CA wymaga kliknięcia w ikonę plusa przy jego nazwie.

Po nadaniu nazwy wystarczy kliknąć zapisz, bez większych zmian w domyślnej konfiguracji.

W tym momencie możemy przejść wreszcie do konfiguracji serwera OpenVPN. Wchodzimy w zakładkę VPN > OpenVPN > Servers i klikamy tam na symbol plusa aby wejść do ekranu konfiguracji.

Aby poprawnie skonfigurować serwer dla wielu klientów łączących się za pomocą certyfikatów, wybieramy tryb działania jako „Remote Access (SSL/TLS)”. Pozwala on nam na generowanie certyfikatów połączenia dla użytkowników i brak konieczności wpisywania np. loginu i hasła podczas łączenia. W efekcie po zaimportowaniu certyfikatu do programu OpenVPN na komputerze użytkownika, jedyne co należy zrobić to kliknąć „Połącz”. Protokół komunikacji w większości przypadków może pozostać jako UDP, port przez który będzie odbywała się komunikacja też można pozostawić jako domyślny (1194).

Poniżej mamy do wyboru opcje szyfrowania. Możemy wybrać czy serwer ma szyfrować tylko identyfikację z użytkownikiem, czy może zaszyfrowany ma być cały ruch. Należy jednak pamiętać, że w przypadku szyfrowania całego ruchu pomiędzy klientem a serwerem, zapora OPNsense staje się przez to bardziej obciążona, dodatkowo zmniejsza się wydajność tunelu VPN.
Kolejne opcje to wybranie utworzonego uprzednio CA, CRL oraz certyfikatu dla serwera. Możemy także wybrać jakie szyfrowanie ma zostać zastosowane podczas połączenia.
Przykład poprawnego ustawienia znajduje się na zdjęciu poniżej.

Kolejne ustawienia odpowiadają za ustawienia tunelu. Najważniejsze z nich są:
– IPv4 Tunnel Network – należy wybrać jakąś podsieć z zakresu sieci prywatnych, np. 10.0.8.0/24. Jest to adresacja na jakiej będą porozumiewali się klienci z serwerem VPN
– IPv4 Local Network – aby móc dostać się do serwerów w sieci prywatnej za bramą, należy tutaj wpisać podsieć w jakiej się znajdują.
– Concurrent Connections – czyli ile klientów może być podłączonych w tym samym czasie. Należy pamiętać, że wartość ta musi odpowiadać ilości dostępnych adresów w podsieci którą wpisaliśmy w pierwszym kroku.
– Inter-client communication – po zaznaczeniu tej opcji pozwala na komunikację pomiędzy klientami w podsieci VPN.
– Duplicate Connections – po zaznaczeniu zezwala na wiele połączeń przy użyciu jednego certyfikatu. Jest to ustawienie niezalecane ze względów bezpieczeństwa.

Kolejne ustawienia pozwalają na dostosowanie parametrów połączenia po stronie klienta, jednak w celu ułatwienia wdrożenia możemy pozostawić je w domyślnej konfiguracji.

W ostatniej części konfiguracji możemy wprowadzić własne konfiguracje, jednak nie zalecamy wprowadzania tam żadnych zmian.

Po wprowadzeniu wszystkich danych, klikamy przycisk zapisz aby utworzyć serwer. Po chwili powinniśmy zobaczyć nasz nowo utworzony serwer na liście.

Aby dokończyć konfigurację, należy dodać jeszcze port który ustawiliśmy dla serwera VPN do wyjątków zapory sieciowej. W tym celu wchodzimy do zakładki Firewall > Rules > WAN i tam kliknąć na znak plusa aby dodać nową regułę. W nowo otwartym oknie, z rzeczy które musimy zmienić to:
– Protocol – wybieramy taki typ protokołu jaki wybraliśmy dla serwera VPN wcześniej.
– Destination – wybieramy tam adres WAN aby to dla niego była aktywna dana reguła.
– Destination port range – dostajemy gotowy port w przypadku jeżeli w konfiguracji zostawiliśmy go z domyślnym 1194. W innym wypadku należy wybrać opcję inny a następnie wpisać go.
– Description – warto dodać opis reguły aby w można ją było łatwo zidentyfikować.

Po wpisaniu poprawnych ustawień, klikamy przycisk zapisz u dołu strony a następnie przechodzimy do drugiej kategorii reguł odpowiedzialnych za ruch wewnątrz tunelu. Po wejściu do zakładki Firewall > Rules > OpenVPN dodajemy regułę która zezwala na cały ruch w tunelu. Do zrobienia tego wystarczy wejść w kreator dodawania nowej reguły i pozostawienie wszystkich ustawień jako domyślnych. Pozwoli to na cały ruch w tunelu bez względu na to od którego klienta pochodzi.

Po zapianiu konfiguracji należy jeszcze zastosować utworzone wcześniej reguły klikając w przycisk „Apply changes” u góry ekranu.

Ostatnim krokiem będzie utworzenie certyfikatu dla użytkownika i wyeksportowanie go.

Utworzenie certyfikatu dla użytkownika wygląda w taki sam sposób jak tworzenie certyfikatu serwera z taką tylko różnicą, że wybieramy typ certyfikaty „User certificate”

Po kliknięciu zapisz, wchodzimy w zakładkę VPN > OpenVPN > Client Export.

Po wejściu należy skonfigurować eksport dla serwera który właśnie utworzyliśmy a także wybrać typ eksportu jako jeden plik. Aby to zrobić, z listy „Remote Access Server” wybieramy serwer który właśnie utworzyliśmy a następnie z listy „Export type” wybrać „File Only”. Warto sprawdzić także czy nazwa hosta (która może być także adresem IP) oraz port zgadzają się ze stanem rzeczywistym.

Po sprawdzeniu poprawności danych powyżej, w dolnej części strony znajduje się lista certyfikatów dla których konfigurację możemy pobrać. Wystarczy znaleźć ten który przed chwilą utworzyliśmy i kliknąć ikonę pobierania z prawej strony.

W taki sposób zaczyna się pobieranie certyfikatu OpenVPN który w tym momencie można zaimportować do klienta OpenVPN na swoim komputerze.