Konfiguracja OpenVPN
Przed rozpoczęciem konfiguracji należy podjąć decyzję w jakim trybie program ma utworzyć tunel. Zasadniczo umożliwia on połączenie zdalnych lokalizacji w warstwie drugiej lub trzeciej modelu ISO, tak więc może on pracować jako:
router - komunikacja w warstwie trzeciej w oparciu o wirtualne podsieci, cyt.”używany w przypadku konfiguracji typu brama + wielu klientów lub brama - brama.[Sieci VPN rodz. 5.2]. Wykorzystanie takigo trybu to np. łączenie dwóch odlełych oddziałów firmy, lub łączenie się z firmą pracowników zdalnych.
most - komunikacja w warstwie drugiej, transmitowane poprzez kanał są adresy typu „broadcast” i z tego względu jest to rozwiązanie niezalecane, może prowadzić do nadmiernego obciązenia kanału VPN niepotrzebnym ruchem. Niemniej jednak jeśli zainstalowane oprogramowanie w danych sieciach wymaga takiej komunikacji stosuje się je np. w przypadku łączenia kilku odległych sieci.
Także uwierzytelnienie można zrealizować na dwa sposoby:
w oparciu o jeden współdzielony przez oba końce tunelu klucz - metoda stosowana do zestawiania połączeń punkt - punkt np. dwóch odległych sieci.
w oparciu o certyfikaty SSL - metoda stosowana do uwierzylelniania dużej, zmieniającej się grupy osób, co wiąże się bezpośrednio funkcjonowaniem listy certyfikatów unieważnionych.
Przed przystąpieniem do właściwej konfiguracji musimy jeszcze zdecydować, który z protokołów OpenVPN będzie stosował do transmisji: TCP czy UDP. Z uwagi na szybkość i brak występowania mogącego się pojawić zjawiska „niekończącej się retransmisji” powinniśmy wybrać protokół UDP.
Następnie musimy utworzyć certyfikaty. Możemy to zrobić za pomocą omówionego w poprzednim rozdziale narzędzia „easy-rsa” lub przy użyciu zainstalowanej w systemie biblioteki OpenSSL. Cała konfiguracja zapisana jest w pliku: „Nazwa_Połączenia.ovpn”, który należy utworzyć w katalogu „config”:
Rysunek 4.2.1. Lokalizacja plików konfiguracyjnych: *.ovpn
Nazwa jest dowolna, powinna jedynie jednoznacznie identyfikować konkretne połączenia jeśli będzie ich wiele. Ważne by rozszerzenie pliku miało postać: „*.ovpn”.
4.2.1 Połączenie punkt - punkt ze współdzielonym kluczem
Do połączeń typu punkt - punkt możemy stworzyć ethernetowy tunel z uwierzytelnieniem opartym o współdzielony klucz na przykład do zabezpieczenia domowej sieci wi-fi ale nie tylko, w której stary access point nie obsługuje szyfrowania WPA2. W tym celu tworzymy plik konfiguracyjny dla serwera (komputer typu desktop). Będzie on miał postać:
Rysunek 4.2.1.1. Plik konfiguracyjny serwera
gdzie, w linii numer 1 słowo kluczowe „local” określa ten koniec tunelu jako serwer, w tym przypadku adres IP desktopa. Linia numer 2 definiuje rodzaj użytego interfejsu, słowo kluczowe „tap” oznacza pracę tunelu jako ethernet. Linia numer 3 definiuje adres IP nowo utworzonego połączenia i maskę podsieci, którą będzie, w której będzie tunel. Istotne jest tu by adres wraz z maską nie pokrywały się z jakąś istniejącą już w systemie. Linia numer 4 wskazuje ścieżkę do pliku klucza współdzielonego. Pozostałe wpisy służą do testowania połączenia przed jego zestawieniem. Konfigurację drugiego końca tunelu przedstawia rysunek:
Rysunek 4.2.1.2. Plik konfiguracyjny klienta
Istotną różnicą jest zawartość linii numer 1, słowo kluczowe „remote”, określa tryb pracy tego końca tunelu jako klient. Adres IP w linii 1 definiuje adres interfejsu access pointa łączący go z internetem, dzięki czemu dostęp do domowych zasobów będzie możliwy nawet z odległej lokalizacji poprzez sieć internet. Oczywiście w ustawieniach access pointa jest włączone stosowne przekierowanie.
W systemach Windows OpenVPN instaluje wirtualny interfejs i opatruje go etykietą: „TAP Win32 Adapter V8” jak na rysunku:
Rysunek 4.2.1.3. Ikona wirtualnego interfejsu programu OpenVPN
Jeśli przed inicjacją naszego tunelu ikonka interfejsu wskazuje stan połączenia jako aktywne, należy go wyłączyć, co ilustruje rysunek:
Rysunek 4.2.1.4. Wyłączanie interfejsu TAP
a następnie włączyć, zgodnie z rysunkiem:
Rysunek 4.2.1.5. Włączanie interfejsu TAP
Przygotowany do pracy w naszym tunelu interfejs powinna reprezentować ikonka jak na rysunku:
Rysunek 4.2.1.6. Interfejs TAP gotowy do pracy
Należy sprawdzić, czy usługa serwera OpenVPN została zainstalowana poprawnie. Najlepiej sposób uruchamiania ustawić na „Automatyczny”, jak na rysunku:
Rysunek 4.2.1.6. Właściwa konfiguracja usługi OpenVPN Service
OpenVPN GUI instaluje się na pasku zadań w postaci ikonki sygnalizującej zmieniającymi się kolorami aktualny stan tunelu i tak: czerwony - tunel nieaktywny, żółty - tunel zainicjowany z jednej strony, zielony - tynel aktywny, w pełni funkcjonalny.
Dodatkowo po kliknięciu prawym przyciskiem myszy na ikonce mamy dostęp do skonfigurowanych przez nas serwerów, bądź klientów, co stanowi wygodne narzędzie do administrowania nimi:
Rysunek 4.2.1.7. Menu nakładki graficznej OpevVPN GUI
Nazwa danego połączenia jest identyczna jak plik „Nazwa_Połączenia.ovpn”. Jeśli nasz tunel ma przechodzić przez jakiś pośredniczący serwer proxy możemy to zdefiniować poprzez powyższe menu. Konfiguracja jest kompltna, można przetestować działanie tunelu. W menu z paska zadań wybieramy nazwę naszego nowego tunelu, klikamy „Connect” i powinniśmy zobaczyć poniższe okienko statusu połączenia:
Rysunek 4.2.1.8. Okno statusu połączenia po stronie serwera w programie OpenVPN, oczekiwanie na połączenie z klientem
Ostatnie trzy linijki informują o prawidłowym działaniu tunelu po naszej stronie i oczekiwaniu na drugi koniec tunelu. Jeśli w tym momencie na drugim końcu tunelu wykonamy czynnośći opisane w tym rozdziale, w oknie statusu zostaną dopisane kolejne trzy linijki jak na rysunku:
Rysunek 4.2.1.9. Okno statusu po stronie serwera pomyślnie nawiązanego połączenia
co świadczy o poprawnym zestawieniu tunelu w oparciu o szyfrowanie za pomocą protokołu SSL.
4.2.2 Uwierzytelnienie z wykorzystaniem certyfikatów SSL
Aby OpenVPN obsługiwał certyfikaty musimy utworzyć nowe pliki konfiguracyjne. Po stronie serwera plik „server_ssl.ovpn” będzie miał postać:
Rysunek 4.2.2.1. Plik konfiguracyjny serwera: server_ssl.ovpn
Konfiguracja serwera
W linii numer trzy słowo kluczowe „tun” definiuje utworzenie tunelu w warstwie trzeciej, tak więc pakiety typu „broadcast” nie będą transmitowane. W linii czwartej definiujemy ścieżkę do stworzonego przez nas certyfikatu urzędu certyfukacji. Linia numer pięć określa ścieżkę do certyfikatu serwera. Linia numer sześć podaje ścieżkę do klucza prywatnego serwera. Linia siódma wskazuje plik z parametrami protokołu Diffiego-Hellmana (faza nawiązania połączenia za pomocą silnych algorytmów RSA). W linii numer osiem definiujemy sieć, zakers adresów jakie będą przydzielane klientom za pomocą wbudowanego w OpenVPN serwera DHCP (serwer zawsze otrzyma pierwszy adres z danego zakresu, czyli dla naszego przypadku 10.8.0.1). W linii jedenastej włączamy kompresję LZO.
Plik konfiguracyjny klienta będzie miał postać:
Rysunek 4.2.2.2. Plik konfiguracyjny klienta: client_ssl.ovpn
Linia pierwsza definiuje tryb pracy koćna tunelu jako „klient”. Linia czwarta jest adresem routera dostępowego, na którym ustawiono odpowiednie przekierowania ruchu na docelową maszynę. Linia piąta wyłącza wyłącza opcję nasłuchiwania na nadchodzące połączenia (charakterystyczne dla serwera). Linia dziewiąta określa ścieżkę do pliku certyfikatu urzędu certyfikacji, dzesiąta wskazuje certyfikat klienta oraz jedenasta określa scieżkę do pliku klucza prywatnego klienta.
Tak przygotowane pliki umieszczamy w katalogu „config” programu OpenVPN jak na rysunku:
Rysunek 4.2.2.3. Lokalizacja plików konfiguracyjnych
identycznie postępujemy na drugim koćnu tunelu z tym, że tam umieszczamy plik konfiguracyjny klienta: „clent_ssl.ovpn”. Po kliknięciu „Connect” zobaczymy okno statysu tunelu jak na rysunku:
Rysunek 4.2.2.4. Okno statusu serwera w oczekiwaniu na połączenie z klientem
Na powyższym rysunku doszło jedynie do zestawienia tunelu po stronie serwera, teraz klikamy „Connect” po stronie klienta a w oknie statusu pojawią się dodatkowe dane co obrazuje poniższy rysunek:
Rysunek 4.2.2.5. Okno statusu pomyślnie nawiązanego połączenia. Weryfikacja certyfikatów SSL, ustalanie symetrycznych algorytmów szyfrujących, przyznanie adresu klientowi
Powyższy rysunek przedstawia nawiązywanie połączenia rejestrowane od strony serwera. Widać tutaj weryfikację certyfikatu klienta, włączenie szyfrowania SSL w wersji 3 oraz przyznanie adresu IP 10.8.0.6 klientowi.
Dodatkowego wyjaśnienia wymaga opcja „push”, którą można sosować w pliku konfiguracyjnym serwera. Służy ona do przesłania klientowi podczas zestawiania połączenia takich danych jak adresy serwerów DNS, WINS, tablice routingu. Istnieje również możliwość przypisywania stałych, zawsze tych samych adresów IP użytkownikom, jeśli jest to wymagane. Sczegółowy opis opcji zawierają przykładowe pliki konfiguracyjne dostępne w katalogu „sample-config” jak pokazano to na rysunku.
Rysunek 4.2.2.6. Lokalizacja przykładowych plików konfiguracyjnych zawierających obszerne komentarze
Pliki te są opatrzone komentarzem w języku angielskim, co bardzo przejrzyście objaśnia wewnętrzne zależności konfiguracyjne w programie.
OpenVPN po odpowiednich modyfikacjach umożliwia obsługę uwierzytelniania przez Active Directory. Dodatkowe pliki można pobrać ze strony: http://amigo4life.googlepages.com/openvpn . Szczegółowe informacje na temat konfiguracji można znaleźć w [Sici Vpn…., rozdział 5.7]. W niniejszej pracy opis ten został pominięty z uwagi na ograniczone zastosowanie takiego rozwiązania. Wymagany jest bowiem, system Windows Server 2003 lub wyższy.