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.