Konfiguracja OpenVPN w AS30GSM200P Informator Techniczny Strona 1 z 11
1. Czym jest VPN? VPN (Virtual Private Network) tłumacząc dosłownie Wirtualna Sieć Prywatna - tunel, przez który płynie ruch w ramach sieci prywatnej pomiędzy klientami końcowymi za pośrednictwem publicznej sieci (takiej jak Internet) w taki sposób, że węzły tej sieci są przezroczyste dla przesyłanych w ten sposób pakietów. Można opcjonalnie kompresować lub szyfrować przesyłane dane w celu zapewnienia lepszej jakości lub większego poziomu bezpieczeństwa. Rozwiązania oparte na VPN stosowane są np. w sieciach korporacyjnych firm, których zdalni użytkownicy pracują ze swoich domów na niezabezpieczonych łączach. Wirtualne Sieci Prywatne charakteryzują się dość dużą efektywnością, nawet na słabych łączach (dzięki kompresji danych) oraz wysokim poziomem bezpieczeństwa (ze względu na szyfrowanie). Rozwiązanie to sprawdza się w firmach, których pracownicy często podróżują lub korzystają z możliwości telepracy. OpenVPN pakiet oprogramowania, który implementuje techniki tworzenia bezpiecznych połączeń punkt-punkt (VPN) lub strona-strona w sieciach routowanych lub mostkowanych. Umożliwia on tworzenie zaszyfrowanych połączeń między hostami przez sieć publiczną Internet (tunel) używa do tego celu biblioteki OpenSSL. OpenVPN używa bibliotek OpenSSL do szyfrowania danych i kanałów kontrolnych. Może również korzystać z HMAC by stworzyć dodatkową warstwę zabezpieczenia połączenia. Pakiet jest w stanie również wykorzystać możliwości sprzętowe, by polepszyć stopień i jakość szyfrowania. OpenVPN oferuje kilka metod uwierzytelnienia użytkowników: poprzez klucze, certyfikaty lub nazwę użytkownika i hasło. Aby korzystać z powyższej funkcjonalności, należy zapoznać się z protokołami SSL oraz TLS oraz odpowiadającej im implementacji w postaci OpenSSL. UWAGA! Urządzenie konfigurujemy z poziomu przeglądarki: Adres : 192.168.1.234 Login: admin Hasło:12345 Po zalogowaniu się na urządzenie, możemy dokonać modyfikacji tych wartości. Informator Techniczny Strona 2 z 11
2. Konfiguracja OpenSSL Aby być w stanie korzystać z uwierzytelniania za pomocą certyfikatów w oparciu o SSL, potrzebna jest znajomość zawartości klucza prywatnego urządzenia oraz certyfikatów urządzenia oraz urzędu certyfikującego a także plik z parametrami protokołu Diffiego-Hellmana. Wszystko to będziemy zapisywać do pól zamieszczonych poniżej w zakładce OpenVPN: 1.Do wygenerowania wspomnianych rzeczy, potrzebny jest nam pakiet programów OpenSSL, który dla systemu Windows możemy pobrać pod adresem http://gnuwin32.sourceforge.net/packages/openssl.htm. 2.Po zainstalowaniu plików, należy zapamiętać ich położenie, w szczególności pliku openssl.cnf. 3. Należy skonfigurować nową zmienną środowiskową OPENSSL_CONF, której poprawna konfiguracja jest niezbędna do dalszej pracy z OpenSSL. Aby to zrobić należy wejść: Komputer->Właściwości->Zaawansowane ustawienia systemu->zmienne środowiskowe Informator Techniczny Strona 3 z 11
Pod zmiennymi użytkownika tworzymy nową zmienną, która będzie wskazywać na plik openssl.cnf, która po dodaniu widnieje w polu zmiennych użytkownika: 4. W pliku openssl.cnf wskazujemy na lokalizację, gdzie będą znajdować się wszystkie klucze oraz pliki pomocnicze związane z generowanymi certyfikatami. 5. Następnie konfigurujemy zmienną systemową Path, aby mieć możliwość korzystania z OpenSSL w każdej możliwej lokalizacji. Aby to zrobić należy wejść: Komputer->Właściwości->Zaawansowane ustawienia systemu->zmienne środowiskowe Następnie edytujemy Zmienną Path, po średniku dodanej lokalizację folderu, w którym znajduje się plik openssl.exe: 6. Tworzymy plik tekstowy index.txt, w którym będą zapisywane kolejne certyfikaty wydawane dla kolejnych klientów czy też serwerów. 7. Tworzymy plik serial (nie posiada rozszerzenia), w którym nadpisujemy pustą zawartość, wpisując dwa zera ( 00 ). Zapisujemy plik. 8. Przechodzimy w wierszu poleceń do lokalizacji, w której zostaną generowane klucze oraz certyfikaty. Informator Techniczny Strona 4 z 11
W lokalizacji, w której będziemy chcieli generować nowe pliki, tworzymy 4 foldery: private, certs, new certs, crl 9. Rozpoczynamy od wygenerowania klucza prywatnego dla urzędu certyfikującego, którego zadaniem będzie uwierzytelnianie kluczy publicznych kolejnych użytkowników, podpisując certyfikaty. Robimy to poleceniem: openssl genrsa -des3 -out private/cakey.pem 1024 Należy zapamiętać hasło, którym zabezpieczony jest owy klucz prywatny, ponieważ jest on niezbędny do kolejnych czynności! 10. Tworzymy certyfikat dla urzędu certyfikującego: openssl req -new -x509 -days 365 -key private/cakey.pem -out cacert.pem Uzupełnianie pól jest opcjonalne, ważne, aby każdy z certyfikatów posiadał unikatowy Common Name. Jeżeli wszystko przebiegło w sposób poprawny, posiadamy własny urząd certyfikujący, dzięki któremu możemy wydawać certyfikaty dla innych urządzeń. Nim jednak to nastąpi, każde z urządzeń musi posiadać swój własny klucz prywatny. W celu konfiguracji najprostszej sieci, wystarczą 2: 1 dla serwera oraz 1 dla klienta. 11. Generujemy klucz prywatny dla serwera(należy zapamiętać hasło dla klucza): openssl genrsa -des3 -out private/server.pem 12. Generujemy wniosek o wystawienie certyfikatu: openssl req -new -key private/server.pem -out server_req.pem 13. Jako urząd certyfikujący podpisujemy certyfikat: openssl ca -notext -in server_req.pem -out servercert.pem 14. W przypadku korzystania z klucza na urządzeniu AS30GSM200P, należy zdjąć hasło z klucza: openssl rsa -in private/server.pem out private/server.pem_bezhasla 15. Należy powtórzyć czynności 9-11 w celu wygenerowania kolejnego zestawu klucza oraz certyfikatu dla klienta: openssl genrsa -des3 -out private/client.pem openssl req -new -key private/klient.pem -out klient_req.pem openssl ca -notext -in klient_req.pem -out klientcert.pem Ściąganie hasła z klucza prywatnego dla klienta jest opcjonalne, nie trzeba tego robić. 16. Na koniec należy wygenerować plik z parametrami Diffiego-Hellmana: Informator Techniczny Strona 5 z 11
openssl dhparam -out dh1024.pem 1024 17. Po wygenerowaniu owych plików możemy przystąpić do konfiguracji serwera oraz klienta. Po stronie serwera należy wkleić całą zawartość pliku(łącznie z nagłówkami BEGIN--), w podanej kolejności: Informator Techniczny Strona 6 z 11
3. Konfiguracja OpenVPN serwer - AS30GSM200P Po podaniu odpowiednich certyfikatów i kluczy w zakładce OpenVPN po stronie urządzenia AS30GSM200P, możemy przejść do finalizacji owej konfiguracji. Przykładowe poprawne skonfigurowanie serwera OpenVPN zostało przedstawione powyżej: 1. Wybieramy 1 z tuneli OpenVPN, po czym ustawiamy OpenVPN mode w tryb serwer, zgodnie z naszymi oczekiwaniami. 2. W zakładce Connection mode wybieramy jeden z dwóch wariantów: - tryb bridge(tap) -tryb routera(tun) W tym przykładzie zostanie zaprezentowane połączenie w trybie TAP. Należy zapamiętać tryb, ponieważ ta informacja jest niezbędna do dalszej konfiguracji klienta! Informator Techniczny Strona 7 z 11
3. W zakładce VPN wybieramy GSM. 4. Deklarujemy na którym porcie będzie obsługiwane połączenie. Standardowo, do tego typu operacji z wykorzystaniem protokołów TCP bądź UDP wykorzystuje się port 1194, lecz można wykorzystać inny, wolny port. Należy zapamiętać wybrany port! 5. Wybieramy protokół: TCP bądź UDP, w tym przykładzie skonfigurowane połączenie po TCP. Należy zapamiętać wybrany protokół! 6. Podajemy sieć i maskę VPNa, zalecane podane wartości: Network:10.1.0.0 Netmask:255.255.255.0 7. Sprawdzamy czy certyfikaty oraz klucze zostały wklejone poprawnie. 8. Jeżeli wszystko zostało wykonane poprawnie, zatwierdzamy wszystkie zmiany! 9. Po załadowaniu nowych informacji, należy sprawdzić czy zostały one poprawnie wgrane na urządzenie. Jest to szczególnie ważne gdy łączymy się poprzez publiczne IP. Informator Techniczny Strona 8 z 11
4. Konfiguracja OpenVPN klient OpenVPN-GUI 1. Po poprawnym skonfigurowaniu serwera, należy skonfigurować urządzenie, które będzie klientem w sieci OpenVPN. Zakładamy, że najczęstszym wyborem w tym wypadku będzie komputer, dlatego w tym celu należy pobrać aplikację klienta OpenVPN GUI ze strony: http://openvpn.se/download.html Jest to zaimplementowany klient OpenVPN z interfejsem graficznym. Po pobraniu instalujemy pobrane pliki. 2. W przypadku korzystania ze środowiska Windows, uruchamiamy program jako administrator, nie zastosowanie się do tego może wpłynąć na poprawność działania! 3. Po uruchomieniu, w prawym dolnym rogu powinna pojawić się ikonka: 4. Aby nawiązać połączenie, należy podać parametry połączenia. Dzięki nim program jest w stanie określić takie informacje jak: klient/serwer, TCP/UDP, który port jest używany, adresy IP. Służą do tego pliki z rozszerzeniem.ovpn, które można znaleźć w folderze /sample-config, który znajduje się w folderze OpenVPN. Konfigurujemy zatem ten plik, zamieszczając w nim informacje, poniżej przedstawiona najprostsza konfiguracja: client #ustawiamy computer jako klienta dev tap # connection mode ustawiamy jako tap proto tcp # wybieramy protokol remote 87.251.253.19 1194 # podajemy publiczny adres ip serwera oraz port ca cacert.pem #nazwa certyfikatu urzędu certyfikującego cert clientcert.pem #nazwa certyfikatu klienta key client.pem_bezhasla #nazwa klucza prywatnego klienta comp-lzo #uzywanie kompresji lzo verb 4 #poziom komunikatów podczas połączenia Informator Techniczny Strona 9 z 11
Poprawna konfiguracja wygląda tak, jak na poniższym rysunku: Zapisujemy ten plik np. jako client.ovpn. 5. Tak skonfigurowany plik przenosimy do folderu /config w miejscu, gdzie został zainstalowany OpenVPN. Umieszczamy tam również wszystkie certyfikaty i klucze, które zostały zawarte w.ovpn. Przeniesienie tych plików do folderu /config jest warunkiem wykrycia przez program konfiguracji, która umożliwia nam połączenie! 6. Po poprawnym przeniesieniu tych plików, przechodzimy do ikonki OpenVPN w prawym dolnym rogu, klikamy na nią prawym przyciskiem, powinniśmy mieć możliwość połączenia się po OpenVPN: Informator Techniczny Strona 10 z 11
7. Klikamy połącz i czekamy na odpowiedź. Na ekranie interfejsu graficznego będą pojawiać się komunikaty. Ich liczba i szczegółowość zależy od parametru verb, który jest umieszczony w pliku client.ovpn. Poniżej obraz opisanej sytuacji: 8. Jeżeli wszystko przebiegło pomyślnie, powinniśmy dostrzec taki komunikat: Oznacza to, iż zostało nawiązanie połączenie, automatyczne zostało nam przydzielony adres IP z puli dostępnych adresów. Od tej pory jesteśmy połączeni pomiędzy komputerem a urządzeniem za pomocą OpenVPN. Informator Techniczny Strona 11 z 11