System OPNsense poza spełnianiem swojej funkcji jako brama dostępowa do sieci dla serwerów które znajdują się za nim, posiada także funkcję serwera OpenVPN. Dzięki takiemu rozwiązaniu możemy w bezpieczny sposób łączyć się do naszych maszyn bez konieczności wystawiania ich na sieć publiczną i narażania ich na ataki.

Należy pamiętać, że połączenia OpenVPN zużywają zasoby fizyczne proporcjonalnie do ilości klientów. Jeżeli zamierzamy utworzyć wiele połączeń, warto rozważyć zwiększenie ilości zasobów na danej maszynie.

Abyśmy mogli połączyć się z serwerem VPN z każdej lokalizacji, wymagany jest publiczny adres IP.

W tym artykule przedstawimy w jaki sposób można utworzyć własny serwer OpenVPN na zaporze OPNsense.

Aby utworzyć nowy serwer OpenVPN, logujemy się do panelu sterowania OPNsense i przechodzimy do zakładki VPN > OpenVPN > Servers

Następnie uruchamiamy kreator tworzenia nowego serwera poprzez kliknięcie w ikonę różdżki po prawej stronie ikony plusa.

W pierwszym kroku, zostawiamy domyślną opcję „Local User Access” i przechodzimy dalej.

Kolejny krok polega na utworzeniu nowego „Urzędu certyfikacji” dla naszego serwera. Wypełniamy w nim pola tak aby znalazły się w nich wszystkie potrzebne dane.

Po uzupełnieniu wszystkich pól, zatwierdzamy nasze dane przyciskiem u dołu strony.

Następna strona to utworzenie certyfikatu dla naszego serwera VPN. Wybieramy opcję „Utwórz nowy certyfikat” a następnie nadajemy mu odpowiednią nazwę i zmieniamy długość klucza na 4096 bitów. Resztę ustawień możemy zostawić jako domyślne i zaakceptować utworzenie nowego certyfikatu.

Kolejny krok to wprowadzenie ustawień dla serwera VPN. W pierwszej części dotyczącej głównych ustawień, możemy zostawić wszystko jako domyślne a jedyne co musimy wprowadzić to nazwę dla naszego serwera. Jeżeli jednak chcemy udostępnić nasz VPN na własnym wybranym porcie, należy wpisać go w polu „Local Port”. Jeżeli zostawimy to pole puste, zostanie wybrany port domyślny (1194) bądź kolejny jeżeli posiadamy już jakiś serwer.

Kolejna część ustawień dotyczy szyfrowania. Ustawienia dotyczące klucza TLS możemy zostawić jako domyślne, natomiast dla zwiększenia bezpieczeństwa, warto zmienić używany algorytm szyfrowania na AES-256-CBC oraz algorytm uwierzytelniania na SHA256.

W następnej części wprowadzamy ustawienia dotyczące generowanego tunelu. Ustawiamy w tym miejscu jakie adresy sieciowe mają być przyznawane klientom VPN w polu „IPv4 Tunnel Network”, natomiast pole „IPv4 Local Network” pozwala nam na wydzielenie dostępu do którejś z lokalnych podsieci. Aby tego dokonać, wpisujemy jej adres wraz z maską do tego pola.

Dalej, możemy ustalić ile maksymalnie klientów może być podłączone w tym samym momencie a także dostajemy możliwość zmiany potencjalnie niebezpiecznych ustawień, takich jak włączenie kompresji ruchu VPN, zezwolenie na komunikację między klientami czy zezwolenie na połączenie jednego klienta z kilku miejsc jednocześnie.

Następna część to ustawienia klienta. Wszystkie ustawienia można tam pozostawić nieuzupełnione, bądź jako domyślne.

Sprawdzamy jeszcze raz czy wszystkie dane zostały uzupełnione według naszego upodobania a następnie zatwierdzamy je przyciskiem „Next” u dołu strony.

Ostatni krok to utworzenie reguł w zaporze ogniowej które zezwolą na komunikację pomiędzy klientami a serwerem VPN.

Po zatwierdzeniu dostajemy komunikat, że nasza konfiguracja jest zakończona co potwierdzamy przyciskiem „Finish”. W tej chwili system tworzy naszą konfigurację aby po chwili przeładować stronę gdzie naszym oczom ukazuje się serwer VPN który właśnie utworzyliśmy.

Teraz, aby mieć sposób na połączenie do serwera, musimy dodać nowych użytkowników którzy będą mieli do niego dostęp. W tym celu przechodzimy do zakładki System > Access > Users

Po przejściu na stronę, klikamy przycisk plus w celu utworzenia nowego użytkownika. Uzupełniamy tam jego nazwę logowania, hasło a także po zjechaniu na dół zaznaczamy opcję utworzenia certyfikatu użytkownika.

Po kliknięciu przycisku „Save” zostaniemy przekierowani do strony na której tworzymy certyfikat dla użytkownika. Aby to zrobić musimy:
-Wybrać metodę utworzenia nowego certyfikatu wewnętrznego,
-Wybrać „Urząd certyfikacji” którym go podpiszemy, jest to ten sam który utworzyliśmy we wcześniejszych krokach,
-Warto także zmienić długość klucza na 4096 bit dla większego bezpieczeństwa,
Reszta ustawień może zostać domyślna.

Po utworzeniu certyfikatu zostajemy przeniesieni do poprzedniej strony gdzie musimy zatwierdzić użytkownika jeszcze raz.

Kiedy użytkownik jest już gotowy, możemy przejść do ostatniego etapu jakim jest eksport gotowego pliku, który będzie można zaimportować do klienta OpenVPN. Aby tego dokonać, przechodzimy do zakładki VPN > OpenVPN > Client Export

Po jej otworzeniu musimy ustawić kilka rzeczy, tak aby eksport został wykonany poprawnie. Po pierwsze musimy wybrać serwer VPN który dopiero co utworzyliśmy, następnie wybrać sposób eksportu oraz wpisać naszą nazwę hosta bądź adres IP.
Co do sposobów eksportu, mamy do wyboru 4 różne, jednak nas w tym przypadku będzie interesował Samodzielny plik („File Only”).

Po uzupełnieniu danych, możemy kliknąć w przycisk pobierania obok nazwy użytkownika którego właśnie utworzyliśmy w celu pobrania pliku.

Po pobraniu na nasz komputer, plik importujemy do klienta OpenVPN a następnie łączymy się za jego pomocą. Podczas połączenia dostaniemy komunikat o potrzebie wpisania nazwy użytkownika oraz hasła. Wpisujemy poświadczenia które ustanowiliśmy wcześniej i zatwierdzamy połączenie.

Jeżeli cała konfiguracja została wykonana poprawnie, powinniśmy ujrzeć komunikat.

Dla potwierdzenia poprawności konfiguracji możemy wykonać komendę ping na adres serwera VPN.