Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Sieci i Aplikacje TCP/IP Ćwiczenie nr 7 Temat: Konfiguracja i badanie wirtualnych sieci prywatnych w oparciu o program OpenVPN. Opracował: dr inż. A. Holiczer Białystok, 2013 1
I. Cel ćwiczenia W obecnych czasach coraz większy nacisk kładzie się na bezpieczeństwo sieci komputerowych. Coraz bardziej rozwijający się Internet wszechrzeczy nakłada konieczność autoryzacji dostępu do zasobów oraz urządzeń przyłączonych do globalnej sieci. Początkowo problem ten dotyczył głównie przedsiębiorstw o rozproszonej strukturze, gdzie występowała konieczność wymiany informacji pomiędzy oddziałami. Obecnie zagadnienie to zaczyna również gościć również wśród użytkowników prywatnych. Do standardowej wymiany informacji w postaci plików wystarczy e-mail (POP3, SMTP) lub protokół FTP i HTTP. Występują one również w odmianach szyfrowanych za w technologii SSL / TLS, co zapewnia poufność przesyłanych danych. Jednak w przypadku, gdy mamy do czynienia z rosnącą ilością usług i urządzeń sieciowych należało stworzyć standard, który umożliwi połączenie rozproszonych użytkowników w jednej sieci prywatnej, w taki sposób, aby mogli się ze sobą porozumiewać za pomocą protokołu TCP/IP. Oczywiście połączenie takie powinno być szyfrowane w sposób uniemożliwiający przechwycenie i odczytanie danych przez osoby nieuprawnione. Tak właśnie powstały wirtualne sieci prywatne VPN (Virtual Private Network). Początkowo najbardziej popularnym protokołem był PPTP (Point-To-Point Tunneling Protocol) jednak z uwagi na dużą liczbę błędów i potwierdzoną wrażliwość na podsłuchanie informacji przez osoby nieuprawnione jest on sukcesywnie wypierany przez protokół OpenVPN. OpenVPN jest protokołem typu open-source, korzystającym z bibliotek openssl i umożliwiającym wybór sposobu szyfrowania za pomocą kluczy statycznych, dynamicznych, a także uwierzytelniania na podstawie certyfikatu. Do stworzenia sieci wystarczą dwie stacje robocze oparte o system Linux lub Windows i zainstalowany pakiet OpenVPN. Celem ćwiczenia jest zapoznanie się z pakietem OpenVPN, nauka jego konfiguracji oraz generowania kluczy i certyfikatów. Dzięki poprawnie skonfigurowanej sieci możemy w wysoce bezpieczny sposób uzyskać dostęp do sieci domowej lub firmowej i administrować znajdujące się tam urządzenia. Wirtualne sieci prywatne mogą być obsługiwane przez system w dwojaki sposób. Chodzi tu głównie o aspekt rozgłaszania sieci wirtualnej do rzeczywistej lokalnej, w której znajdują się inne urządzenia. Można to zrobić poprzez mostkowanie (bridging) lub routing. Wiąże się to bezpośrednio z trybem pracy urządzenia sieciowego obsługiwanego przez program OpenVPN. W przypadku mostkowania urządzenie to pracuje w trybie TAP (2 warstwa OSI) i otrzymuje adres IP należący do sieci lokalnej. Rozwiązanie to jest przydatne w przypadku, gdy chcemy przekazywać ruch niezgodny z protokołem IP lub chcemy, aby klienci sieci wirtualnej i lokalnej posiadali tą samą domenę rozgłoszeniową. Bardziej popularnym i uniwersalnym rozwiązaniem jest praca w trybie TUN (3 warstwa OSI). Nie zapewnia ona co prawda wymienionych powyżej usług, ale wymaga o wiele mniejszej przepustowości kanału do przesyłania danych. Poniżej przedstawiono tabelę porównawczą trybu TUN i TAP. Tryb TAP TUN Zalety zachowuje się jak rzeczywista karta sieciowa; znacznie zmniejszone zapotrzebowanie na przepustowość (w tunelu są przesyłane może przenosić dowolne protokoły jedynie te ramki, które mają od- sieciowe (IPv4, IPv6, Netalk, IPX, itd.); pracuje na warstwie 2, przez co przenoszone są wszystkie ramki ethernetowe; biorcę po drugiej stronie); przesyła jedynie pakiety IP na 3 warstwie; może być używane w trybie mostkowania. 2
Wady wymaga większej przepustowości tunelu VPN; dodaje nagłówki do każdej ramki ethernetowej występującej w sieci; nie jest skalowalny w prosty sposób; nie może być używany przez urządzenia oparte na Androidzie i iosie. dane rozgłoszeniowe nie są w naturalny sposób przesyłane, może przesyłać protokół jedynie w wersji IPv4 (OpenVPN 2.3 implementuje również IPv6); nie może być używany do mostkowania. W ćwiczeniu będziemy używać jedynie trybu TUN, gdyż jest on optymalny do większości standardowych zastosowań i usług sieciowych (łącznie z NetBIOSem). II. Program ćwiczeń 1. Przed przystąpieniem do ćwiczenia należy zainstalować program OpenVPN na dwóch stacjach roboczych. W przypadku, gdy program został już wcześniej zainstalowany należy usunąć zawartość katalogu C:\Program Files\OpenVPN\config. Należy również sprawdzić, czy w systemie występuje wirtualna karta obsługująca VPN o nazwie TAP-Windows Adapter. 2. Kolejnym krokiem jest wygenerowanie kluczy kryptograficznych oraz certyfikatów za pomocą zestawu EasyRSA (C:\Program Files\OpenVPN\easy-rsa). W tym celu należy uruchomić linię poleceń cmd w trybie administracyjnym oraz stworzyć plik vars.bat według poniższego wzoru: set HOME=%ProgramW6432%\OpenVPN\easy-rsa set KEY_CONFIG="%ProgramW6432%\OpenVPN\easy-rsa\openssl-1.0.0.cnf" set KEY_DIR=keys set KEY_SIZE=2048 set KEY_COUNTRY=PL set KEY_PROVINCE=podlaskie set KEY_CITY=Bialystok set KEY_ORG=PB set KEY_EMAIL=none set KEY_CN=SiST2 set KEY_NAME=SiST2 set KEY_OU=LAB set PKCS11_MODULE_PATH=changeme set PKCS11_PIN=1234 3. Następnie należy wykonać polecenie clean-all.bat w celu wyczyszczenia wszystkich dotychczasowych certyfikatów oraz kluczy. 4. Pierwszym krokiem jest wygenerowanie certyfikatu CA (Certificate of Authority). Oczywistym jest, że wygenerowane przez nas klucze będą podpisane właśnie przez ten certyfikat. Z uwagi na to, że wydanie CA przez zaufany urząd jest kosztowne możemy wygenerować taki certyfikat we własnym zakresie, jednak w rozumieniu użytkowników zewnętrznych będzie on niezaufany. W przypadku OpenVPN możemy zastosować certyfikat klasy self-signed i nie będzie to traktowane jako błąd lub ostrzeżenie. W celu generacji klucza i certyfikatu posługujemy się poleceniem build- -ca.bat. Pola o które zapyta nas skrypt możemy pozostawić bez zmian lub je zmodyfikować. Należy pamiętać, iż w przypadku modyfikacji najlepiej jest użyć pliku vars.bat, tak aby wszystkie klucze i certyfikaty miały te same dane. W katalogu keys powinny pojawić się dwa pliki ca.key oraz ca.crt. Zawierają one klucz i certyfikat jednostki podpisującej certyfikaty kluczy klienckich. C:\Program Files\OpenVPN\easy-rsa>build-key-server VPNServer Generating a 2048 bit RSA private key..+++...+++ writing new private key to 'keys\vpnserver.key' You are about to be asked to enter information that will be incorporated 3
into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. Country Name (2 letter code) [PL]: State or Province Name (full name) [podlaskie]: Locality Name (eg, city) [Bialystok]: Organization Name (eg, company) [PB]: Organizational Unit Name (eg, section) [LAB]: Common Name (eg, your name or your server's hostname) [SiST2]:SRV Name [SiST2]:SRV Email Address [none]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from C:\Program Files\OpenVPN\easy-rsa\openssl-1.0.0.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryname :PRINTABLE:'PL' stateorprovincename :PRINTABLE:'podlaskie' localityname :PRINTABLE:'Bialystok' organizationname :PRINTABLE:'PB' organizationalunitname:printable:'lab' commonname :PRINTABLE:'SRV' name :PRINTABLE:'SRV' emailaddress :IA5STRING:'none' Certificate is to be certified until May 3 20:11:48 2025 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated 5. W podobny sposób generujemy klucz i certyfikat klienta podpisane przez tą samą jednostkę certyfikującą (CA): C:\Program Files\OpenVPN\easy-rsa>build-key VPNClient Generating a 2048 bit RSA private key...+++...+++ writing new private key to 'keys\vpnclient.key' You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. Country Name (2 letter code) [PL]: State or Province Name (full name) [podlaskie]: Locality Name (eg, city) [Bialystok]: Organization Name (eg, company) [PB]: Organizational Unit Name (eg, section) [LAB]: Common Name (eg, your name or your server's hostname) [SiST2]: Name [SiST2]:CLIENT Email Address [none]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from C:\Program Files\OpenVPN\easy-rsa\openssl-1.0.0.cnf 4
Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryname :PRINTABLE:'PL' stateorprovincename :PRINTABLE:'podlaskie' localityname :PRINTABLE:'Bialystok' organizationname :PRINTABLE:'PB' organizationalunitname:printable:'lab' commonname :PRINTABLE:'CLIENT' name :PRINTABLE:'CLIENT' emailaddress :IA5STRING:'none' Certificate is to be certified until May 3 20:17:53 2025 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated 6. Na koniec generujemy liczby Diffiego-Hellmana: C:\Program Files\OpenVPN\easy-rsa>build-dh Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time...+...+......+......+...+......+...+......+......+..+......+... +...++*++* 7. Klucze prywatne i certyfikaty umieszczamy odpowiednio w katalogach config serwera i klienta OpenVPN. Należy zewrócić szczególną uwagę, czy certyfikaty zostały poprawnie wygenerowane i poprawnie podpisane przez CA. Plik z liczbami DH umieszczamy w katalogu konfiguracyjnym serwera. 8. Ostatnim krokiem jest stworzenie pliku konfiguracyjnego program OpenVPN. Może on pracować w dwóch trybach: serwera lub klienta. Główna różnica polega na tym, że serwer nasłuchuje na określonym porcie i może rozgłaszać dołączone rzeczywiste sieci prywatne, a klient nawiązuje połączenie z serwerem i pobiera z niego tabelę routingu (w przypadku, gdy wirtualna karta sieciowa pracuje w trybie TUN). Tryb TUN nakłada na obie strony konieczność wykonywania routingu, lecz znacznie zmniejsza natężenie ruchu w tunelu VPN. Konfiguracja serwera OpenVPN może wyglądać w następujący sposób: local 212.33.95.X port 1194 proto udp dev tun ca ca.crt cert VPNServer.crt key VPNServer.key dh dh2048.pem server 192.168.105.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 212.33.95.X 255.255.255.0" route 192.168.105.0 255.255.255.0 client-to-client 5
keepalive 10 60 comp-lzo adaptive max-clients 5 user nobody group nobody persist-key persist-tun status openvpn-status.log log openvpn.log verb 5 Należy pamiętać, aby w miejsce adresu IP 212.33.95.X wpisać prawdziwy adres stacji roboczej. Plik należy zapisać do katalogu config pod nazwą SERVER.ovpn. Konfiguracja klienta będzie bardzo podobna z pewnymi drobnymi różnicami: client dev tun proto udp remote 212.33.95.X 1194 float resolv-retry infiniti nobind persist-key persist-tun ca "CA.crt" cert "VPNClient.crt" key "VPNClient.key" comp-lzo adaptive verb 5 explicit-exit-notify 3 Podobnie jak w poprzednim przypadku należy wpisać poprawny adres IP serwera i zapisać plik jako CLIENT.ovpn. 9. Ostatnim krokiem jest uruchomienie programu OpenVPN GUI w trybie administratora i za pomocą zasobnika systemowego uruchomienie serwera oraz wywołanie połączenia przez klienta. 10. Po poprawnym uruchomieniu poleceń i zestawieniu sieci VPN należy dokonać jej diagnostyki poprzez protokół ICMP. III. Zawartość sprawozdania Sprawozdanie powinno zawierać: schemat zestawionej sieci z uwzględnieniem sieci wirtualnej i rzeczywistej, fragmenty wygenerowanych certyfikatów do kluczy, pliki konfiguracyjne serwera i klienta VPN, logi programu OpenVPN, rezultaty badań protokołem ICMP. IV. Wymagania BHP W trakcie realizacji programu ćwiczenia należy przestrzegać zasad omówionych we wstępie do ćwiczeń, zawartych w: Regulaminie porządkowym w laboratorium oraz w Instrukcji obsługi urządzeń elektronicznych znajdujących się w laboratorium z uwzględnieniem przepisów BHP. Regulamin i instrukcja są dostępne w pomieszczeniu laboratoryjnym w widocznym miejscu. 6