Twój darmowy, prywatny i samodzielnie skonfigurowany serwer VPN

dodał 4 kwietnia 2016 o 19:14 w kategorii Info  z tagami:
Twój darmowy, prywatny i samodzielnie skonfigurowany serwer VPN

Korzystacie z otwartych sieci WiFi? Boicie się, że dostawca internetu podsłuchuje Wasz ruch sieciowy? Nie chcecie każdemu serwerowi pokazywać swojego prawdziwego adresu IP? Pokażemy, jak te problemy rozwiązać.

Poniższy poradnik jest kontynuacją cyklu artykułów przygotowywanych wspólnie z firmą Aruba, która jest dużym europejskim dostawcą rozwiązań chmurowych. Kilka tygodni temu pokazaliśmy Wam jak skonfigurować swoją własną usługę kopii bezpieczeństwa w chmurze. Dzisiaj zabierzemy się za postawienie własnego, prywatnego serwera VPN. Dzięki promocji trwającej w Aruba będziecie mogli za darmo przetestować jej usługi, a kupon z promocji wystarczy na 10 miesięcy funkcjonowania VPNa.

Zalety i ograniczenia prywatnego VPNa

Na początku warto przypomnieć, że VPN nie jest magiczną pigułką dającą gwarancję anonimowości i bezpieczeństwa w sieci. W zależności od wybranego modelu zagrożeń może nam dać pewien rozsądny poziom bezpieczeństwa. Używanie VPNa pozwala nam ukryć własny adres IP (przynajmniej przed np. administratorami serwerów, które odwiedzamy) i pozwala zaszyfrować nasz ruch między urządzeniem końcowym a serwerem VPN, dzięki czemu nie widzi go np. nasz dostawca internetu czy sieci WiFi, z której akurat korzystamy.

Prywatny serwer VPN, jaki skonfigurujemy za chwilę, daje nam też większą gwarancję, że operator usługi nie będzie podsłuchiwał naszego ruchu lub np. wykorzystywał naszego łącza do dystrybucji cudzego ruchu (jak to bywa w przypadku „darmowych” VPNów). Minusem tego rozwiązania jest fakt, że nasza tożsamość powiązana będzie z jednym – choć innym niż domowy – adresem IP. Korzystanie z komercyjnej usługi VPN najczęściej oznacza, że z tego samego adresu IP korzysta wielu użytkowników a my mamy do dyspozycji różne bramki wyjściowe, dzięki którym możemy swobodnie skakać po całym świecie. Jedno i drugie rozwiązanie ma swoich zwolenników. Bez wątpienia zaletą opisywanego przez nas wariantu może być także satysfakcja z własnoręcznego uruchomienia usługi na własnym serwerze.

Startujemy

Jeśli macie już konto w Aruba Cloud (np. po naszym poprzednim artykule) to możecie od razu skoczyć do kolejnego akapitu pt. Uruchomienie serwera. Jeśli nie, to zapraszamy do jego założenia i wystąpienia o kupon rabatowy. W tym celu wchodzimy na stronę promocji i wypełniamy wniosek o voucher o wartości 43 PLN.  Voucher jest przyznawany ręcznie, ale proces ten nie powinien trwać dłużej niż kilka godzin. Kod przychodzi SMSem i gdy go już otrzymamy trzeba zarejestrować nowe konto klienta aby go aktywować. Kolejne kroki wyglądają następująco – zaczynamy od formularza rejestracyjnego, gdzie podajemy swoje dane.

aruba00

Po jego wypełnieniu na podany adres email otrzymujemy wygenerowany login i hasło (które oczywiście warto zmienić). Wchodzimy zatem na stronę logowania po czym odwiedzamy Strefę Klienta, w zakładce Konto zmieniamy hasło i wracamy do składania naszego pierwszego zamówienia.

aruba01

Na tym ekranie wystarczy kliknąć Dalej.

aruba02

Tutaj oczywiście wybieramy opcję Posiadasz voucher.

aruba03

Podajemy kod vouchera.

aruba04

Podajemy dane kontaktowe.

aruba05

Akceptujemy regulaminy i warunki (czytaliśmy, nie ma niczego strasznego).

aruba06

I na naszym nowym koncie ląduje 43 PLN. Po chwili do naszej skrzynki przychodzi kolejny login i hasło, tym razem już do właściwych usług.

Uruchomienie serwera

Logujemy się w panelu administracyjnym. Jeśli to pierwsze logowanie to hasło zmieniamy. Następnie wybieramy naszą usługę.

aruba07

Interesuje nas opcja Cloud Computing.

aruba08

Wybieramy region, w którym chcemy mieć swojego VPNa. My polecamy Niemcy – blisko i bardzo silne przepisy ochrony prywatności użytkowników. Po przejściu do niemieckiego Datacenter klikamy Zarządzaj. Na kolejnym ekranie klikamy +Server Cloud.

Dodajemy nowy serwer

Dodajemy nowy serwer

Wybieramy opcję Serwer Cloud Smart za 4 PLN miesięcznie i klikamy Kontynuuj. Na następnym ekranie musimy nazwać swój nowy serwer, wybrać rodzaj systemu operacyjnego (poniższa instrukcja oparta jest na systemie CentOS 7 w wersji 64-bitowej, zatem jeśli chcecie być prowadzeni za rękę w procesie instalacji to taki właśnie system wybierzcie) oraz podajemy hasło roota (i lepiej by nie było zbyt proste).

Konfiguracja serwera

Konfiguracja serwera

Pozostaje już tylko kliknąć Utwórz Serwer Cloud i poczekać kilka minut na zakończenie procesu instalacji. Gdy serwer będzie już zainstalowany na ekranie pojawi się jego adres IP – przyda się nam na kolejnym etapie.

Konfiguracja na serwerze

Logujemy się na nasz serwer przez SSH (używamy np. klienta PuTTy). Przydzielony adres IP widzimy w panelu, login to root, hasło ustawione wcześniej w panelu tworzenia serwera. Przy pierwszym logowaniu musimy potwierdzić prawidłowość klucza SSH serwera. Raczej nikt nam go nie podmienił, zatem klikamy OK.

Osobom chcącym przeprowadzić wzorową konfigurację serwera polecamy wyłączenie możliwości logowania za pomocą loginu i hasła oraz przejście na logowanie kluczem. Jak to zrobić? Google pomoże. Nie jest to niezbędne do prawidłowego działania VPNa, jednak trochę podnosi poziom bezpieczeństwa serwera.

Zaczynamy od zainstalowania OpenVPN oraz odpowiednich narzędzi do wygenerowania zestawu potrzebnych kluczy i certyfikatów:

yum install openvpn easy-rsa -y

Następnie kopiujemy przykładową konfigurację VPNa do docelowej lokalizacji

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn

Musimy ją teraz wyedytować. Edytorów plików tekstowych jest wiele, więc wybierzcie swój ulubiony. My skorzystamy z kombajnu pod nazwą Midnight Commander.

yum install mc

Zatwierdzamy klawiszem Y i uruchamiamy program:

mc

a następnie w jednym z okien kursorami i klawiszem Enter nawigujemy do katalogu /etc/openvpn oraz pliku server.conf.

Midnight Commander

Midnight Commander

Gdy jesteśmy w odpowiednim miejscu naciskamy F4 by rozpocząć edycję pliku.

W wierszu 32 zmieniamy numer portu. Nie jest to obowiazkowe, ale w razie gdyby kiedyś ktoś znalazł metodę ataku na serwer OpenVPN to naszej usługi nie znajdzie na domyślnym porcie. Zamiast 1194 wpisujemy np. 11194 (wartość musi być większa od 1024, by serwer mógł działać bez uprawnień roota).

port 11194

W wierszu 192 usuwamy średnik, by wiersz ten wyglądał tak:

push "redirect-gateway def1 bypass-dhcp"

Dzięki temu cały ruch będzie przesyłany dalej za pośrednictwem naszego serwera.

W wierszach 200 i 201 usuwamy średniki, by ustawić serwery DNS (można zostawić wpisane pozycje od OpenDNS, można zamienić na serwery Google DNS 8.8.8.8 i 8.8.4.4). Wiersze powinny wyglądać np. tak:

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

W wierszach 274 i 275 usuwamy średniki, by nasz OpenVPN działał z niższymi uprawnieniami (obniżając ryzyko w razie pojawienia się jakiegoś poważnego błędu). Wiersze powinny wyglądać tak:

user nobody
group nobody

W wierszu 297 usuwamy średnik, by logować to, co dzieje się z naszą usługą (bardzo pomaga przy lokalizowaniu problemów). Wiersz powinien wyglądać tak:

log-append openvpn.log

W wierszu 315 dodajemy średnik:

;explicit-exit-notify 1

To już koniec modyfikacji. Plik zapisujemy przez F2, zamykamy przez F10 i jeszcze raz przez F10 wychodzimy z Midnight Commandera.

Generowanie kluczy i certyfikatów

Czas wygenerować klucze i certyfikaty. Będzie dużo naciskania klawisza Enter. W certyfikatach można podawać wiele danych – w naszym przypadku są one do niczego niepotrzebne, zatem wszystkie pola opcjonalne będziemy omijać.

Tworzymy katalog w którym zapiszemy wyniki operacji:

mkdir -p /etc/openvpn/easy-rsa/keys

Kopiujemy do niego odpowiednie skrypty :

cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa

Teraz ustawimy jedną zmienną środowiskową, by pasowała do naszej konfiguracji OpenVPN. Uruchamiamy znowu Midnight Commandera:

mc

Znajdujemy plik /etc/openvpn/easy-rsa/vars i w wierszu 72 zamieniamu „EasyRSA” na „server”. Wiersz powinien wyglądać tak:

export KEY_NAME="server"

Zapisujemy plik i zamykamy MC.

Kopiujemy też konfigurację OpenSSL:

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

i bierzmy się do generowania kluczy. Wchodzimy do katalogu i ustawiamy zmienne:

cd /etc/openvpn/easy-rsa
source ./vars

Na wszelki wypadek czyścimy ewentualne pozostałości po poprzednich eksperymentach:

./clean-all

Tworzymy swoje CA:

./build-ca

Na wszystkie pytania odpowiadamy klawiszem Enter (8 razy).

Tworzymy klucze i certyfikaty serwera:

./build-key-server server

Ten etap sponsoruje 10 razy klawisz Enter i dwa razy literka Y.

Tworzymy plik do wymiany kluczy Diffiego-Hellmana (potrwa to chwilę):

./build-dh

Kopiujemy wynik naszych prac do docelowego katalogu:

cd /etc/openvpn/easy-rsa/keys
cp dh2048.pem ca.crt server.crt server.key /etc/openvpn

Serwer gotowy. Teraz tworzymy klucze dla klienta:

cd /etc/openvpn/easy-rsa
./build-key client

Znowu 10 razy Enter i dwa razy Y.

Tworzymy katalog w naszym domowym folderze i kopiujemy do niego klucze naszego klienta:

mkdir /root/keys
cd /etc/openvpn/easy-rsa/keys
cp ca.crt client.crt client.key /root/keys/

Uruchamianie usługi

Kluczami zajmiemy się za chwilę, tymczasem na serwerze musimy jeszcze włączyć routing oraz zapisać konfigurację firewall’a. Jako firewall zostanie użyty iptables:

Instalujemy pakiet iptables-services oraz wyłączamy firewalld:

yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables

Dodajemy regułę w iptables aby na kliencie był dostęp do internetu oraz zapisujemy konfigurację:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save

Ostatnim krokeim jest utworzenie nowego pliku /etc/sysctl.d//etc/sysctl.d/98-ipforward.conf oraz wpisujemy w nim następującą linię:

net.ipv4.ip_forward = 1

Pamiętacie już jak zmodyfikować plik, prawda?

Pozostaje zrestartować usługę sieciową:

systemctl restart network.service

Włączyć autostart usługi OpenVPN:

systemctl -f enable [email protected]

oraz ją uruchomić:

systemctl start [email protected]

Serwer OpenVPN powinien już działać. My polecamy jeszcze jedną operację, która pozwoli nam cieszyć się nim bez potrzeby regularnego odwiedzania i aktualizowania oprogramowania.

Instalujemy pakiet yum-cron:

yum install yum-cron

W pliku /etc/yum/yum-cron.conf zmieniamy w wierszu 9

apply_updates = no

na

apply_updates = yes

Pozwoli to na automatyczne instalowanie najważniejszych aktualizacji. Pozostaje uruchomić usługę:

service yum-cron start

i możemy zabrać się za konfigurację po stronie naszego klienta.

Konfiguracja klienta dla Windows

Pobieramy i instalujemy odpowiednią wersję OpenVPN. Następnie musimy stworzyć plik konfiguracyjny. Będziemy potrzebować kilku plików z naszego serwera. Za pomocą klienta FTP (np. Filezilla) pobieramy pliki ca.crt, client.crt i client.key z katalogu /keys (używamy protokołu SFTP, czyli FTP po SSH) i zapisujemy je na lokalnym dysku. W ulubionym edytorze tekstowym tworzymy plik konfiguracyjny nowego połączenia. W środku powinien wyglądać tak:

client
port 1194
remote <ADRES NASZEGO SERWERA W ARUBA CLOUD>
cipher AES-256-CBC
dev tun
proto udp
nobind
auth-nocache
persist-key
persist-tun
verb 2
key-direction 1
<ca>
-----BEGIN CERTIFICATE-----
[tutaj treść certyfikatu z pliku ca.crt]
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
[tutaj treść certyfikatu z pliku client.crt (znajduje się pod koniec pliku)]
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
[tutaj treść klucza prywatnego z pliku client.key]
-----END PRIVATE KEY-----
</key>

Plik o nazwie z rozszerzeniem OVPN np. vpn.ovpn zapisujemy do katalogu C:\Program Files\OpenVPN\config (jeśli program był zainstalowany w domyślnej lokalizacji). Teraz wystarczy tylko uruchomić OpenVPN GUI, połączyć się i po pojawieniu się w konsoli komunikatu „Initialization Sequence Completed” sprawdzić swój adres IP. Jeśli zastosowaliście się do instrukcji to powinniście zobaczyć adres IP swojego serwera VPS i lokalizację gdzieś w okolicach Frankfurtu. Gratulacje!

Konfiguracja klienta dla Androida

VPN na telefonie to prawdziwe zbawienie – niech podniesie rękę ten, kto nigdy telefonu do niezaufanej sieci nie podłączył. Plik konfiguracyjny mamy gotowy, zatem instalacja nie będzie skomplikowana. Zaczynamy od zainstalowania aplikacji OpenVPN Connect i następnie w menu wybieramy Import oraz Import Profile from SD card. Pozostaje już tylko umieścić na telefonie nasz plik vpn.ovpn (np. wysłać sobie na skrzynkę i zapisać w jakimś folderze) a następnie zaimportować go do aplikacji i cieszyć się bezpieczniejszym internetem.

Aktualizacja 2016-04-07 23:00: Aruba obiecuje dokończyć w ciągu 24h wysyłanie kodów z voucherów.

Dla pełnej przejrzystości – za przygotowanie oraz opublikowanie powyższego artykułu otrzymujemy wynagrodzenie.