Jaki VPN? - OpenVPN

Jaki VPN? Własny – OpenVPN w 5 minut

Jaki VPN wybrać – to często pojawiające się pytanie wśród osób, które chciałyby zadbać o swoją prywatność korzystając z Internetu. Dostawcy płatnych usług VPN zapewniają nas, że własną piersią będą bronić naszej prywatności, nie będą nas śledzić i nikomu nie udostępnią logów z naszej aktywności. Często jednak okazuje się, że rzeczywistość jest zgoła inna, a logi na żądanie organów ścigania udostępniają nawet ci, którzy zarzekali się, że w ogóle tych logów nie przechowują. Polecam w tym temacie świetny webinar Adama Haertle z Z3S, który rozprawia się z obietnicami dostawców VPN.

Mając na uwadze powyższe postanowiłem pokazać Wam w jaki sposób można uruchomić własny serwer VPN, nad którym to my będziemy mieli kontrolę. Tytułowe 5 min. zajmie nam instalacja i konfiguracja serwera VPN bazującego na Linuksie i oprogramowaniu OpenVPN. Musimy jednak mieć już jakiś serwer linuksowy działający w chmurze. Jeśli takowego nie posiadacie, poniżej podpowiem również jak sobie z tym poradzić.

Jaki serwer do VPN?

Możecie skorzystać z dowolnego dostawcy usług chmurowych, który pozwoli Wam w prosty sposób uruchomić serwer z Linuksem. Osobiście polecam Amazon AWS, ponieważ jako nowy klient dostajemy na rok darmową pulę zasobów do wykorzystania (tzw. free tier). W jej ramach możemy wykorzystać 750 godzin pracy serwera typu t2.micro miesięcznie (czyli może on pracować 24 godz. na dobę jeśli nie uruchamiamy innych serwerów). Maszyna typu t2.micro posiada 1 procesor oraz 1GB RAM-u, co w zupełności wystarczy na nasze potrzeby. Uruchamiając ją możemy wybrać jeden z wielu obrazów systemu. Osobiście preferuję Debiana lub Ubuntu. Po upływie roku koszt pracy maszyny t2.micro będzie wynosił około 1 centa na godzinę, czyli w dużym przybliżeniu 1zł / dzień. Możemy go zoptymalizować wyłączając np. serwer na noc lub włączając go tylko wybierając się w podróż, podczas której będziemy używać VPN-a. Możemy też założyć nowe konto w AWS korzystając z innego maila i karty 🙂

Jaki system do OpenVPN?

Sposób instalacji, który opisuję poniżej najlepiej sprawdzi się na systemach z rodziny Debian i Ubuntu, ale powinien też zadziałać dla Fedory i CentOS-a. Ja własną instalację przeprowadziłem na Kali Linux, ponieważ taki serwer miałem już uruchomiony w AWS i wymagało to tylko jednej drobnej poprawki, o czym wspomnę niżej.

Instalacja i konfiguracja OpenVPN

OpenVPN w każdej chyba popularnej dystrybucji Linuksa dostępny jest do instalacji z pakietów lub nawet preinstalowany w systemie. Jeśli go nie mamy, to w przypadku Debiana / Ubuntu / Kali wystarczy jedno polecenie:

apt-get install openvpn

Nieco więcej zachodu wymaga konfiguracja serwera oraz wygenerowanie kluczy dzięki którym będziemy się mogli logować z użyciem certyfikatu, bez podawania loginu i hasła. Na szczęście z pomocą przychodzi nam tutaj gotowy skrypt, który wykona całą pracę za nas. Musimy go jedynie pobrać z Githuba, zapisać:

wget https://git.io/vpn -O openvpn.sh

a następnie nadać atrybut wykonywalności i uruchomić jako root:

chmod a+x openvpn.sh
sudo ./openvpn.sh

W pierwszej fazie skrypt zapyta nas o kilka parametrów, które w większości przypadków wystarczy zatwierdzić z wartością domyślną wciskając enter:

Welcome to this OpenVPN road warrior installer!

This server is behind NAT. What is the public IPv4 address or hostname?
Public IPv4 address / hostname [x.x.x.x]: 

Which protocol should OpenVPN use?
   1) UDP (recommended)
   2) TCP
Protocol [1]: 1

What port should OpenVPN listen to?
Port [1194]: 

Select a DNS server for the clients:
   1) Current system resolvers
   2) Google
   3) 1.1.1.1
   4) OpenDNS
   5) Quad9
   6) AdGuard
DNS server [1]: 2

Enter a name for the first client:
Name [client]: kuba

OpenVPN installation is ready to begin.
Press any key to continue...

Uwaga: jeśli uruchamiacie skrypt na Kali Linux, musicie na chwilę zmienić zawartość pliku /etc/debian_version tak, by w jego pierwszej linii pojawiła się wartość „9”. Skrypt sprawdza po prostu czy używana wersja Debiana jest wyższa od 9 i nie wie, że Kali Linux ten wymóg spełnia.

Po potwierdzeniu, że chcemy kontynuować skrypt pobierze pakiet easy-rsa, przy pomocy którego wygeneruje klucze i certyfikaty, a następnie stworzy pliki konfiguracyjne dla serwera i klienta. Całą operację zakończy informując gdzie został zapisany plik konfiguracyjny klienta:

Finished!

The client configuration is available in: /root/kuba.ovpn
New clients can be added by running this script again.

Powyższy plik musimy przekopiować na swój komputer aby móc go zaimportować podczas konfiguracji klienta. Pozostałe pliki konfiguracyjne i klucze umieszczone zostaną w katalogu /etc/openvpn/server. Pozostaje nam więc tylko uruchomienie serwera OpenVPN:

sudo service openvpn start

Skrypt konfiguracyjny domyślnie dodaje do reguł w lokalnej zaporze (iptables lub firewalld) zgodę na połączenia przychodzące na port i protokół wskazany podczas instalacji (domyślnie UDP/1194). My musimy dodatkowo zadbać o to, aby ta sama reguła została zdefiniowana na poziomie zapory u naszego dostawcy chmury (o ile takowa występuje). W przypadku AWS-a odpowiednią regułę musimy dodać w zakładce Network & Security -> Security Groups:

reguła dla openvpn w security group Amazona
Reguła zezwalająca na połączenia na porcie 1194 UDP

Instalacja i konfiguracja klienta OpenVPN

Jeśli korzystacie z user friendly Linuksa, takiego jak np. Ubuntu, jedyne co musicie zrobić to wejść w ustawienia sieci i dodać nowy profil VPN:

Dodanie nowego profilu VPN w Ubuntu
Dodanie nowego profilu VPN w Ubuntu

A następnie zaimportować plik z konfiguracją klienta, który został wygenerowany podczas konfiguracji serwera:

Import pliku konfiguracyjnego OpenVPN
Import pliku konfiguracyjnego dla klienta OpenVPN

I to wszystko 🙂

W przypadku Windowsa dodatkowo konieczne będzie pobranie i zainstalowanie klienta OpenVPN ze strony: https://openvpn.net/community-downloads/ . Instalacja nie wymaga żadnego komentarza – typowe next, next, next, done. Po uruchomieniu klienta (na pulpicie powinien się pojawić skrót do OpenVPN GUI) w zasobniku systemowym ujrzymy ikonę OpenVPN:

Klient OpenVPN w zasobniku Windows
Klient OpenVPN w zasobniku Windows

Klikając ją prawym przyciskiem myszy za pierwszym razem będziemy musieli wybrać pozycję „Import>” i wskazać plik klienta wygenerowany podczas konfiguracji serwera. A gdy już przeprowadzimy import, w tym samym miejscu będziemy mogli uruchomić nasz VPN wybierając „Połącz”.

Sugeruję jeszcze wejść w ustawienia klienta i zmienić domyślną wartość parametru „Pokaż powiadomienie” na „Przy połączeniu/rozłączeniu”. Dzięki temu będziemy wiedzieć kiedy nasze połączenie VPN zostanie zerwane.

Ustawienia klienta OpenVPN
Ustawienia klienta OpenVPN

A jaki VPN jest najlepszy? – działający

Na koniec warto jeszcze się upewnić, że nasz VPN działa. Po zestawieniu połączenia wejdźmy więc na jakąś stronę weryfikującą adres IP, z którego została ona odwiedzona. Np. https://showmyip.com

Weryfikacja adresu IP, z którego łączymy się z Internetem
Weryfikacja adresu IP, z którego łączymy się z Internetem

Adres IP powinien być zgodny z adresem naszego serwera VPN. W powyższym przykładzie widzimy, że połączenie zostało zidentyfikowane jako wychodzące z Niemiec, a adres IP należy do dostawcy Amazon Technologies.

Zastrzeżenie

Pamiętajcie, że tego typu VPN pozwoli Wam ukryć swoją aktywność przed dostawcą łącza, z którego usług korzystacie w domu, w firmie, czy podczas podróży i łączenia się z hot spotami. Pozwoli też ominąć pewne restrykcje związane z geolokalizacją. Nie zagwarantuje Wam jednak 100% anonimowości. Adres IP waszego serwera w chmurze będzie bowiem powiązany z Waszym kontem klienta u danego dostawcy. Za to konto płacicie zapewne imienną kartą kredytową. Sam VPN (dowolny) to za mało by zapewnić sobie pełną anonimowość i poufność w Internecie.

Natomiast dużą przewagą własnego VPN-a jest to, że połączenia z niego nie będą blokowane przez usługodawców (bądź dyktatorów), którzy nie lubią klientów kryjących się za VPN-em. Serwery znanych dostawców VPN można bowiem zablokować. Gdyby przyszło Wam zwiedzać Rosję bądź Chiny możecie się o tym przekonać na własnej skórze. Połączenia z własnego serwera raczej nikt Wam nie zablokuje. Co więcej, zawsze będziecie mogli wyjaśnić, że łączycie się tylko ze swoją infrastrukturą chmurową – OpenVPN to popularny klient stosowany przez wielu dostawców.


Zostaw e-mail aby otrzymać powiadomienia o nowościach oraz dostęp do wszystkich bonusowych materiałów przygotowanych wyłącznie dla subskrybentów.

4 komentarze

  1. Podobny skrypt jest tez dla wireguarda ktory jest lzejszy i szybszy niz openvpn, mozna o tym tez wspomniec. Angristan chyba jest jego autorem.

    Dodawanie nowych userow QR codem tez jest ciekawe (np klient na telefonie)

    1. AWS nie ma niestety regionu w PL. Ale w wielu innych europejskich miastach tak.

  2. 1. Wpisany na stałe w skrypcie dh.pem nie jest tu jakąś tylną furtką? Ja zawsze zmieniam po kilka bajtów w losowych miejscach.
    2. Należy zwrócić uwagę na ip przyznawane dla końcówek tunelu. Jest ok, o ile nie będziemy używać więcej niż jednego w tym samym czasie. Warto zmieniać przy każdej instalacji na inne podsieci.

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.