26 sie

Jak skonfigurować serwer OpenVPN na Ubuntu 16.04

Jak skonfigurować OpenVPN na Ubuntu 16
Chcesz uzyskać bezpieczny dostęp do Internetu ze smartfonu lub laptopa po podłączeniu do niezaufanych sieci, takich jak Wi-Fi w hotelu lub w kawiarni? Virtual Private Network (VPN) pozwala na korzystanie z niezaufanych sieci prywatnie i bezpiecznie tak, gdyby były w sieci prywatnej. Ruch wychodzi z VPN serwera i kontynuuje swoją drogę do miejsca przeznaczenia.

Różnicę pomiędzy VPS a VPN opisaliśmy tu 🙂

W połączeniu z połączeniem HTTPS, ta konfiguracja pozwala zabezpieczyć bezprzewodowe loginy i transakcje. Można obejść ograniczenia geograficzne i cenzurę, a chronić swoją lokalizację i wszelkie niezaszyfrowane ruchy HTTP z sieci niezaufanej.

OpenVPN jest w pełni funkcjonalne open source Secure Socket Layer (SSL)  VPN rozwiązanie, które mieści w sobie szeroki zakres konfiguracji. W tym tutorialu będziemy konfigurować serwer OpenVPN na Droplet, a następnie skonfigurujemy do niego dostęp z Windows, OS X, iOS i Android. Ten tutorial będzie utrzymywać instalację i czynności konfiguracyjnych tak proste, jak to możliwe dla tych ustawień.

Przedstartowe sprawdzenie

Gdy jesteś gotowy, aby rozpocząć należy zalogować się do swojego serwera Ubuntu jako sudo użytkownik i wykonać nastepne kroki.

Krok #1: Instalacja OpenVPN

Na początek instalujemy OpenVPN na naszym serwerze. OpenVPN jest dostępny w domyślnych repozytoriach Ubuntu, więc możemy użyć apt do instalacji. Będziemy również instalować easy-rsa pakiet, który pomoże nam skonfigurować CA (centrum certyfikacji) do korzystania z naszego VPN.

Aby zaktualizować pakiety serwera i zainstalować niezbędne pakiety należy użyć polecenia:

sudo apt-get update

sudo apt-get install openvpn easy-rsa

Wymagane oprogramowanie już dostępne na serwerze i gotowe do skonfigurowania.

Krok #2: Konfigurowanie katalogu CA

OpenVPN jest TLS / SSL VPN. Oznacza to, że on wykorzystuje certyfikaty w celu szyfrowania ruchu między serwerem a klientami. W celu wydania zaufanych certyfikatów, musimy założyć własny prosty certyfikat (CA).

Aby rozpocząć, możemy skopiować easy-rsa katalog szablonów w nasz katalog domowy za pomocą polecenia make-cadir:

make-cadir ~/openvpn-ca

Przejdź do nowo utworzonego katalogu, aby rozpocząć konfigurowanie CA:

cd ~/openvpn-ca

Krok #3: Konfiguracja zmiennych CA

Aby skonfigurować zmienne naszego CA które będą używane, musimy edytować vars plik w katalogu. Otwórz ten plik w edytorze tekstu:

nano vars

Wewnątrz pliku znajdziesz kilka zmiennych, które mogą być dostosowane do określenia w jaki sposób certyfikaty zostaną utworzone. Musimy się martwić tylko o kilku z nich.

W dolnej części pliku, znajdź ustawienia domyślne, które wyznaczają obszar nowych certyfikatów. Powinno to wyglądać mniej więcej tak:

~/openvpn-ca/vars
. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"

. . .

Edytuj wartości na czerwono, na jakie chcesz, ale nie zostawiaj ich puste:

~/openvpn-ca/vars
. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York City"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="admin@example.com"
export KEY_OU="Community"

. . .

Dopóki tu jesteśmy, będziemy również edytować wartość KEY_NAME w tej sekcji, która wypełnia pole tematu. Aby to zrobić łatwo, będziemy nazywać go server w tym tutorialu:

~/openvpn-ca/vars
export KEY_NAME="server"

Gdy skończysz, zapisz i zamknij plik.

Krok #4: Budowanie Certificate Authority

Teraz możemy używać zmiennych, ktore mamy skonfigurowane oraz easy-rsa narzędzia do budowania naszego centrumu certyfikacji (CA).

Nasi administratorzy bez problem za darmo mogą zainstalować OpenVPN na naszych VPS w Polsce lub za granicą

Upewnij się, że jesteś w katalogu CA, a następnie podłączamy vars plik ktory był edytowany:

cd ~/openvpn-ca

source vars

Jeśli on został podłączony poprawnie powinieneś zobaczyć następujący wynik:

Output
NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

Upewnij się, że pracujesz w czystym środowisku poprzez wpisywanie:

./clean-all

Teraz możemy budować nasz główny CA wpisując:

./build-ca

To będzie inicjować proces tworzenia klucza głównego centrumu certyfikacji i certyfikat. Ponieważ wypełniliśmy plik vars, wszystkie wartości powinny być wypełniane automatycznie. Wystarczy nacisnąć ENTER przez podpowiedzi, aby potwierdzić wybór:

Output
Generating a 2048 bit RSA private key
..........................................................................................+++
...............................+++
writing new private key to 'ca.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) [US]:
State or Province Name (full name) [NY]:
Locality Name (eg, city) [New York City]:
Organization Name (eg, company) [DigitalOcean]:
Organizational Unit Name (eg, section) [Community]:
Common Name (eg, your name or your server's hostname) [DigitalOcean CA]:
Name [server]:
Email Address [admin@email.com]:

Teraz mamy centrum certyfikacji, który może być używany, aby utworzyć pozostałe pliki które są nam potrzebne.

Krok #5: Tworzenie certyfikatu serwera, kluczy i szyfrowanie plików

Następnie będziemy generować nasz certyfikat serwera oraz parę kluczy, również kilka dodatkowych plików używanych podczas procesu szyfrowania.

Zacznijmy od generowania certyfikatu serwera OpenVPN i parę kluczy. Możemy to zrobić poprzez wpisanie:

Uwaga: jeśli wybierzesz inną nazwę niż server, będziesz musiał dostosować niektóre instrukcje poniżej. Na przykład, podczas kopiowania wygenerowanych plików do katalogu /etc/openvpn , trzeba podstawić odpowiednie nazwy. Należy również zmodyfikować plik /etc/openvpn/server.conf, aby wskazać na prawidłowe pliki .crt i .key.

./build-key-server server

Zaakceptuj wartości domyślne, naciskając klawisz ENTER . Nie należy wprowadzać hasła połączenia dla tej konfiguracji. Pod koniec, trzeba będzie wprowadzić y na dwa pytania, aby podpisać i zrobić certyfikat:

Output
. . .

Certificate is to be certified until May  1 17:51:16 2026 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

Następnie będziemy generować kilka innych elementów. Możemy generować silne klucze Diffie-Hellman do użytku podczas wymiany kluczy, wpisując:

./build-dh

Może to potrwać kilka minut.

Następnie możemy wygenerować podpis HMAC dla wzmocnienia TLS możliwości weryfikacji integralności serwera:

openvpn --genkey --secret keys/ta.key

Krok #6: Generowanie Certyfikatu klienta i parę kluczy

Następnie możemy wygenerować certyfikat klienta i parę kluczy. Chociaż można to zrobić na komputerze klienckim, a następnie podpisać przez serwer / CA dla celów bezpieczeństwa, w tym tutorialu będziemy generować podpisany klucz na serwerze dla uproszczenia.

W tym tutorialu będziemy generować pojedynczy klucz / certyfikat klienta, ale jeśli masz więcej niż jeden klient, można powtórzyć ten proces tyle razy, ile chcesz. Korzystaj z unikalnej wartości do skryptu dla każdego klienta.

Można wrócić do tego kroku później, będziemy ponownie podawać źródło dla pliku vars.  Będziemy wykorzystywać  client1  jako wartość dla naszej pierwszej pary kluczy / certyfikatów do dzisiejszego tutorialu:

Aby uzyskać konto danych bez hasła dla automatycznych połączeń, należy użyć polecenie build-key w następujący sposób:

cd ~/openvpn-ca

source vars

./build-key client1

Jeśli zamiast tego chcesz utworzyć zabezpieczone hasłem konto danych, należy użyć polecenia build-key-pass:

cd ~/openvpn-ca

source vars

./build-key-pass client1

Znowu domyślnie powinno być wypełnione, tak że można po prostu naciśnij klawisz ENTER, aby kontynuować. Pozostaw pole hasła puste i wpisz y, aby wyświetlić zapytanie o tym czy podpisać i zrobić certyfikat.

Krok #7: Konfiguracja usługi OpenVPN

Następnie możemy rozpocząć konfigurowanie usługi OpenVPN korzystając z danych i plików które stworzyliśmy.

Kopiowanie plików do katalogu OpenVPN

Aby rozpocząć, musimy skopiować pliki, które potrzebujemy do katalogu konfiguracyjnego /etc/openvpn.

Możemy zacząć od wszystkich plików, które utworzyliśmy. Zostały one umieszczone w katalogu ~/openvpn-ca/keys. Musimy przenieść nasz CA certyfikat i klucz, nasz certyfikat serwera i klucz, podpis HMAC oraz plik Diffie-Hellman:

cd ~/openvpn-ca/keys

sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

Następnie musimy skopiować i rozpakować OpenVPN przykładowy plik konfiguracyjny do katalogu konfiguracji, dzięki czemu możemy użyć go jako podstawy dla naszej konfiguracji:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

Dostosowanie konfiguracji OpenVPN

Teraz kiedy nasze pliki są na swoim miejscu, możemy zmodyfikować plik konfiguracyjny serwera:

sudo nano /etc/openvpn/server.conf

Podstawowa konfiguracja

Najpierw znajdź sekcję HMAC szukając dyrektywy tls-auth. Usuń “ ; ” aby odkomentować wiersz tls-auth . Poniżej tego należy dodać key-direction parametr ustawiony na “0“:

/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret

key-direction 0

Następnie znajdź sekcję szyfrów kryptograficznych, szukając wykomentowanych cipher wiersze. Szyfr AES-128-CBC oferuje dobry poziom szyfrowania i jest dobrze obsługiwany. Usuń ” ; ” aby odkomentować wiersz cipher AES-128-CBC:

/etc/openvpn/server.conf
cipher AES-128-CBC

 

Poniżej dodaj linię auth dla wyboru HMAC wiadomości opanowania algorytmu. Do tego SHA256 jest dobrym wyborem:

/etc/openvpn/server.conf
auth SHA256

Wreszcie, znajdź user i group ustawienia i usuń “ ; ” na początku:

/etc/openvpn/server.conf
user nobody
group nogroup

(Opcjonalnie) Włącz zmiany DNS w celu przekierowania całego ruchu przez VPN

Ustawienia powyżej tworzą połączenie VPN pomiędzy dwoma komputerami, ale nie ma żadnego połączenia dla użycia tunelu. Jeśli chcesz korzystać z VPN, aby przekierować wszystkie ruchy, musisz zmienić ustawienia DNS na komputerach klienckich.

Aby to zrobić, odkomentuj kilka dyrektyw, które będą konfigurować klienckie komputery, aby przekierować cały ruch internetowy za pośrednictwem VPN. Znajdź redirect-gateway sekcję i usuń średnik “ ; ” od początku redirect-gateway wierszu, aby odkomentować:

/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"

Tuż poniżej tego, znajdź sekcję dhcp-option. Ponownie usuń “ ; ” przed wierszami, aby ich odkomentować:

/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222"

push "dhcp-option DNS 208.67.220.220"

To powinno pomóc klientom w rekonfiguracji ich ustawień DNS, aby korzystać z tunelu VPN jako bramy domyślnej.

(Opcjonalnie) Ustaw port i protokół

Domyślnie serwer OpenVPN wykorzystuje port 1194 i UDP do przyjmowania połączeń klienckich. Jeżeli chcesz użyć innego portu z powodu ograniczonych środowisk sieciowych, w których klienci mogą być, można zmienić ustawienie port. Jeżeli nie zarządzasz  web zawartością serwera OpenVPN, port 443 jest popularnym wyborem, ponieważ zazwyczaj jest dozwolony przez reguły zapory.

/etc/openvpn/server.conf
# Optional!

port 443

Często protokół może być ograniczony do tego portu. Żeby to poprawić, należy zmienić proto z UDP TCP:

/etc/openvpn/server.conf
# Optional!

proto tcp

Jeżeli nie ma potrzeby korzystania z innego portu, najlepiej pozostawić te dwa ustawienia jako domyślne.

(Opcjonalnie) Wybierz niedomyślne dane dostępu

Jeśli wybrałeś inną nazwę dla ./build-key-server , zmodyfikuj linie cert i key, które widzisz, aby wskazać odpowiednie .crt i .key pliki. Jeżeli jest używany domyślny serwer,  to muszą być ustawione poprawnie:

/etc/openvpn/server.conf
cert server.crt

key server.key

 

Gdy skończysz, zapisz i zamknij plik.

Krok #8: Regulacja Configuration Networking

Następnie musimy dostosować niektóre  aspekty sieciowego serwera tak, że OpenVPN zmoże poprawnie kierować ruch.

Pozwolenie IP Forwarding

Po pierwsze, musimy zezwolić serweru do przekazania ruchu. Ma to dość istotne znaczenie dla funkcjonalności którą chcemy zapewnić serweru VPN.

Możemy zmienić to ustawienie poprzez modyfikację pliku /etc/sysctl.conf:

sudo nano /etc/sysctl.conf

Wewnątrz należy zwrócić uwagę na wiersz, który wyznacza net.ipv4.ip_forward. Usunąć “ # ” od początku wierszu, aby odkomentować to ustawienie:

/etc/sysctl.conf
net.ipv4.ip_forward=1

Zapisz i zamknij plik po zakończeniu.

Aby odczytać plik i ustawić wartość dla bieżącej sesji, należy wpisać:

sudo sysctl –p

Dostosowanie zasad UFW do Masquerade Client Connections

Jeśli korzystałeś z tutorialu o wstępnej konfiguracji serwera z Ubuntu 16.04, już masz zaporę UFW. Niezależnie od tego, czy korzystasz z zapory do blokowania niechcianego ruchu (co prawie zawsze powinien zrobić), w tym tutorialu zapora jest potrzebna do manipulowania niektórych ruchów przychodzących do serwera. Musimy zmodyfikować plik z zasadami utworzenia maskowania, to iptables pojęcie, które zapewnia na bieżąco dynamiczny NAT do prawidłowego routingu  połączenia klienta.

Zanim otworzyć plik konfiguracyjny zapory, aby dodać maskarady, musimy znaleźć  publiczny interfejs sieciowy  naszego urządzenia. Aby to zrobić, należy wpisać:

ip route | grep default

Twój interfejs publiczny będzie wyświetlany po “dev“. Na przykład, wynik ten pokazuje interfejs o nazwie wlp11s0, który jest przedstawiony poniżej:

Output
default via 203.0.113.1 dev wlp11s0  proto static  metric 600

Otwórz plik /etc/ufw/before.rules, aby dodać odpowiednią konfigurację:

sudo nano /etc/ufw/before.rules

Gdy masz interfejs związany z trasą domyślną, otwórz plik /etc/ufw/before.rules , aby dodać odpowiednią konfigurację:
sudo nano /etc/ufw/before.rules

Plik ten obsługuje konfigurację, która powinna być wprowadzona do pobrania zwykłych zasad UFW. W górnej części pliku dodaj zaznaczone poniżej wiersze. Spowoduje to ustawienie domyślne zasady dla POSTROUTING łańcucha w nat tabeli i zamaskuje każdy ruch wychodzący z sieci VPN:

Uwaga: Pamiętaj, aby w wierszu -A POSTROUTING zastąpić eth0, interfejsem który znajdziesz w powyższym poleceniu.
/etc/ufw/before.rules
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#
 
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
 
# Don't delete these required lines, otherwise there will be errors
*filter
. . .

Zapisz i zamknij plik po zakończeniu.

Musimy umożliwić dla UFW przekazywanie pakietów domyślnie. Aby to zrobić, będziemy otwierać plik /etc/default/ufw :

sudo nano /etc/default/ufw

Wewnątrz znaleźć dyrektywę DEFAULT_FORWARD_POLICY. Będziemy zmieniać wartości od DROP do ACCEPT:

/etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

Zapisz i zamknij plik po zakończeniu.

Otwieranie portu OpenVPN i włączanie zmian

Następnie będziemy konfigurować zaporę, aby umożliwić ruch do OpenVPN.

Jeśli nie zmieniałeś port i protokół w pliku /etc/openvpn/serwer.conf , należy otworzyć ruch UDP na porcie 1194. Jeśli zmieniałeś port i / lub protokół, podstaw wartości wybrane tutaj.

Będziemy również dodawać port SSH, jeśli zapomniałeś dodać wcześniej:

sudo ufw allow 1194/udp

sudo ufw allow OpenSSH

Teraz możemy wyłączyć i ponownie włączyć UFW, aby załadować zmiany ze wszystkich plików które były modyfikowane:

sudo ufw disable

sudo ufw enable

Nasz serwer został skonfigurowany poprawnie dla obsługiwania ruchu OpenVPN.

Krok #9: Uruchomienie i włączenie usługi OpenVPN

Jesteśmy już gotowi, aby uruchomić usługę OpenVPN na naszym serwerze. Możemy to zrobić za pomocą systemd.

Musimy uruchomić serwer OpenVPN wskazując w naszej konfiguracji nazwę pliku jako zmienna instancyjna po systemd w bloku nazwy pliku. Nasz plik konfiguracyjny dla naszego serwera jest nazywany /etc/openvpn/server.conf, więc dodamy @server do końca nazwy naszego pliku podczas wywoływania go:

sudo systemctl start openvpn@server

Dokładnie sprawdź, czy usługa została uruchomiona pomyślnie, wpisując:

sudo systemctl status openvpn@server

Jeżeli wszystko poszło dobrze, twój wynik powinien wyglądać podobnie do tego:

● openvpn@server.service - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
  Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta
 Main PID: 5856 (openvpn)
    Tasks: 1 (limit: 512)
   CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
           └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid

May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip route add 10.8.0.0/24 via 10.8.0.2
May 03 15:30:05 openvpn2 ovpn-server[5856]: GID set to nogroup
May 03 15:30:05 openvpn2 ovpn-server[5856]: UID set to nobody
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link local (bound): [undef]
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link remote: [undef]
May 03 15:30:05 openvpn2 ovpn-server[5856]: MULTI: multi_init called, r=256 v=256
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL LIST
May 03 15:30:05 openvpn2 ovpn-server[5856]: Initialization Sequence Completed

Można również sprawdzić, czy OpenVPN tun0 interfejs jest dostępny, wpisując:

ip addr show tun0

Powinieneś zobaczyć skonfigurowany interfejs:

Output
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever

Jeśli wszystko poszło dobrze, włącz usługę tak, aby ona była uruchamiana automatycznie podczas uruchamiania systemu:

sudo systemctl enable openvpn@server

Krok #10: Tworzenie konfiguracji infrastruktury klienta

Następnie musimy stworzyć system, który pozwoli nam na łatwe tworzenie plików konfiguracyjnych klienta.

Tworzenie konfiguracji struktury katalogów klienta

Stworzymy strukturę katalogów w domowym katalogu do przechowywania plików:

mkdir -p ~/client-configs/files

Ponieważ pliki konfiguracyjne klienta będą mieć wbudowane klienckie klucze , musimy zablokować dostęp do naszego wewnętrznego katalogu:

chmod 700 ~/client-configs/files

Tworzenie konfiguracji podstawowej

Następnie, skopiujemy przykładową konfigurację klienta do naszego katalogu, aby użyć jako naszej konfiguracji podstawowej:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Otwórz ten nowy plik w edytorze tekstu:

nano ~/client-configs/base.conf

Wewnątrz musimy dokonać kilku edycji.

Najpierw zlokalizuj remote dyrektywę. Wskazuje to klientu na nasz adres serwera OpenVPN. To powinien być publiczny adres IP serwera OpenVPN. Jeżeli zmieniłeś port, z którego korzysta serwer OpenVPN, zmień 1194 na port który wybrałeś:

~/client-configs/base.conf
. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote server_IP_address 1194
. . .

Upewnij się, że protokół odpowiada wartości którą używasz w konfiguracji serwera:

~/client-configs/base.conf
proto udp

Następnie, odkomentuj user oraz group dyrektywy usuwając ” ; “:

~/client-configs/base.conf
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

Znajdź dyrektywy ca, cert i key, które należy zakomentowaać, ponieważ będziemy dodawać certyfikaty i klucze w pliku:

~/client-configs/base.conf
# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key client.key

Ustawienia cipher i auth, które ustawiliśmy w pliku /etc/openvpn/server.conf :

~/client-configs/base.conf
cipher AES-128-CBC
auth SHA256

Wreszcie, należy dodać key-direction dyrektywę gdzieś w pliku. To musi być ustawione jako wartość “1” do pracy z serwerem:

~/client-configs/base.conf
key-direction 1

Na koniec dodamy kilka wykomentowanych wierszy. Chcemy je umieścić w każdym config, ale powinniśmy umożliwić ich tylko dla klientów systemu Linux, które dostarczane są z pliku /etc/openvpn/update-resolv-conf . Skrypt ten wykorzystuje narzędzie  resolvconf do aktualizacji informacji DNS dla klientów Linux.

~/client-configs/base.conf
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

Jeśli klient działa na systemie Linux i posiada plik /etc/openvpn/update-resolv-conf należy odkomentować te wiersze z wygenerowanego pliku konfiguracyjnego OpenVPN.

Zapisz plik po zakończeniu.

Tworzenie konfiguracji skryptu do generowania

Następnie stworzymy prosty skrypt do kompilacji naszej konfiguracji bazowej z odpowiednimi plikami certyfikatów, kluczy i szyfrowaniem. Będzie to wygenerowane w katalogu ~/client-configs/files.

Stwórz i otwórz plik o nazwie make_config.sh w katalogu ~/client-configs:

nano ~/client-configs/make_config.sh

Wewnątrz wklej następujący skrypt:

~/client-configs/make_config.sh
#!/bin/bash
# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '< ca >') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '< /ca >\n< /cert >') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '< /cert >\n< /key >') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '< /key >\n< /tls-auth >') \
    ${KEY_DIR}/ta.key \
    <(echo -e '< /tls-auth >') \
    > ${OUTPUT_DIR}/${1}.ovpn

Zapisz i zamknij plik po zakończeniu.

Oznacz plik jako plik wykonywalny, wpisując:

chmod 700 ~/client-configs/make_config.sh

Krok #11: Generowanie konfiguracji klienta

Teraz możemy łatwo wygenerować pliki konfiguracyjne klienta.

Jeżeli korzystałeś z tutorialu, został utworzony certyfikat klienta i klucz o nazwie client1.crt i client1.key odpowiednio uruchamiając polecenie ./build-key client1 w kroku 6. Możemy wygenerować config dla tych poświadczeń, przenosząc do naszego katalogu ~/client-configs i przy użyciu skryptu zrobiliśmy:

cd ~/client-configs

./make_config.sh client1

Jeśli wszystko poszło dobrze, powinniśmy mieć client1.ovpn plik w naszym katalogu ~/client-configs/files:

ls ~/client-configs/files

Output
client1.ovpn

Przesyłanie konfiguracji do urządzeń klienckich

Musimy przenieść plik konfiguracyjny klienta do odpowiedniego urządzenia. Na przykład, może to być lokalny komputer lub urządzenie przenośne.

Chociaż używane aplikacje do wykonania tego przenoszenia zależą od wyboru systemu operacyjnego i urządzenia, oraz czy chcesz korzystać z SFTP (SSH File Transfer Protocol) lub SCP (Secure Copy) na serwerze. Będzie to transportować VPN pliki uwierzytelniania klienta przez połączenie szyfrowane.

Oto przykład polecenia SFTP za pomocą naszego client1.ovpn. Polecenie to może być uruchamiane z komputera lokalnego (OS X lub Linux). Wystarczy  umieścić .ovpn plik w katalogu domowym:

local$ sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

Krok #12: Instalacja profilu klienta

Teraz omówimy jak zainstalować profil VPN klienta w systemie Windows, OS X, iOS i Android. Żadna z tych instrukcji klienckich nie są od siebie zależne, dlatego zachęcamy  wybrać instrukcję która pasuje Tobie.

Połączenie OpenVPN będzie nazwane odpowiednio do nazwy pliku .ovpn. W naszym przykładzie oznacza to, że połączenie zostanie nazwane client1.ovpn odpowiednio do pierwszego pliku klienta, który wygenerowaliśmy.

Windows

Instalacja

Aplikacja klienta OpenVPN dla systemu Windows można znaleźć na stronie  OpenVPN’s Downloads. Wybierz odpowiednią wersję instalatora dla danej wersji systemu Windows.

Uwaga: OpenVPN wymaga uprawnień administratora do zainstalowania.

Po zainstalowaniu OpenVPN, skopiuj .ovpn plik:

C:\Program Files\OpenVPN\config

Po uruchomieniu OpenVPN zostanie automatycznie widoczny profil co sprawia ją dostępną.

OpenVPN należy uruchamiać jako administrator za każdym razem, gdy jest używany, nawet konta administracyjne. Aby to nie robić bez konieczności, prawym przyciskiem myszy wybierz polecenie Uruchamiaj jako administrator za każdym razem korzystając z VPN, to można zaprogramować, ale musi to być zrobione z konta administracyjnego. Oznacza to również, że zwykli użytkownicy będą musieli wprowadzić hasło administratora do korzystania OpenVPN. Z drugiej strony, użytkownicy standardowe nie mogą prawidłowo połączyć się z serwerem, chyba że aplikacja OpenVPN na kliencie ma uprawnienia administratora, więc podwyższone uprawnienia nie są konieczne.

Aby ustawić aplikację OpenVPN zawsze uruchamianą jako administrator, kliknij prawym przyciskiem myszy na jego ikonę skrótu i przejdź do Właściwości . Na dole w zakładce Zgodność, kliknij przycisk Zmień ustawienia dla wszystkich użytkowników. W nowym oknie zaznacz Uruchom ten program jako administrator.

Połączenie

Za każdym razem, gdy chcesz uruchomić program GUI OpenVPN, Windows zapyta, czy chcesz zezwolić programowi na dokonanie zmian w komputerze. Kliknij Tak. Uruchamianie aplikacji klienckiej OpenVPN dodaje jedynie aplet w zasobniku systemowym tak, że VPN można łączyć i rozłączać zgodnie z potrzebami; faktycznie nie nawiązywać połączenie VPN.

Gdy OpenVPN jest uruchomiony, inicjujemy połączenie za pomocą apletu w zasobniku, a następnie klikając prawym przyciskiem myszy na ikonę apletu  OpenVPN. To otwiera menu kontekstowe. Wybierz client1 w górnej części menu (to nasz client1.ovpn profil) i wybierz Połącz.

Okno stanu otworzy pokaz wyświetlania dziennika w czasie, gdy połączenie jest aktywne, komunikat pojawi się, jak tylko klient jest podłączony.

Odłączenie od sieci VPN w taki sam sposób: Przejdź do apletu w zasobniku systemowym, a następnie kliknij prawym przyciskiem myszy ikonkę apletu OpenVPN, wybierz profil klienta i kliknij przycisk Wyłącz.

OS X

Instalacja

Tunnelblick to darmowy open source OpenVPN klienta dla Mac OS X. Możesz pobrać najnowszy obraz dysku od strony Tunnelblick Downloads. Dwukrotnie kliknij pobierz .dmg plik i postępuj zgodnie z instrukcjami, aby zainstalować.

Pod koniec procesu instalacji Tunnelblick zapyta, czy masz jakieś pliki konfiguracyjne. Będzie łatwiej odpowiedzieć Nie i niech Tunnelblick zakończy instalację. Otwórz okno Findera i dwukrotnie kliknij client1.ovpn. Tunnelblick zainstaluje profil klienta. Wymagane są uprawnienia administratora.

Połączenie

Uruchom Tunnelblick klikając dwukrotnie Tunnelblick w folderze Applications. Jak tylko Tunnelblick zostanie uruchomiony, w pasku menu w górnej prawej części ekranu będzie ikonka Tunnelblick do kontroli połączeń.  Kliknij na ikonkę, a następnie Połącz element menu, aby zainicjować połączenie VPN. Wybierz połączenie client1.

Linux

Instalacja

Jeśli używasz systemu Linux, istnieje wiele narzędzi, które można wykorzystać w zależności od dystrybucji.  Środowisko graficzne lub menedżer okien mogą również zawierać narzędzia połączeń.

Najbardziej uniwersalnym sposobem podłączenia jest jednak to, aby po prostu korzystać z oprogramowania OpenVPN.

Na Ubuntu lub Debian można zainstalować go tak samo, jak na serwerze wpisując:

client$ sudo apt-get update
client$ sudo apt-get install openvpn

Na CentOS można można dodać repozytorium EPEL, a następnie zainstalować go, wpisując:

client$ sudo yum install epel-release
client$ sudo yum install openvpn

Konfiguracja

Sprawdź, czy Twoja dystrybucja zawiera skrypt /etc/openvpn/update-resolv-conf :

client$ ls /etc/openvpn

Output
update-resolve-conf

Następnie edytujemy plik konfiguracyjny klienta OpenVPN, który był przekazany:

client$ nano client1.ovpn

Odkomentuj trzy wierszy,  które umieściliśmy w ustawieniach DNS, jeśli Jesteś w stanie znaleźć plik update-resolv-conf:

client1.ovpn
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Jeśli używasz CentOS, zmień group z nogroup aby nobody dopasować do istniejących grup dystrybucji:

client1.ovpn
group nobody

Zapisz i zamknij plik.

Teraz możesz połączyć się z siecią VPN, po prostu wpisując polecenie openvpn dla pliku konfiguracyjnego klienta:

client$ sudo openvpn --config client1.ovpn

To powinno połączyć się z serwerem.

iOS

Instalacja

Z iTunes App Store wyszukaj i zainstaluj OpenVPN Connect, oficjalną aplikację kliencką iOS OpenVPN. Aby przesłać konfigurację klienta iOS na urządzenie, należy podłączyć go bezpośrednio do komputera.

Zakończenie transferu z iTunes zostaną przedstawione tutaj. Otwórz program iTunes na komputerze i kliknij na iPhone > apps. Przewiń w dół do sekcji File Sharing i kliknij aplikację OpenVPN. Puste okno sprawa OpenVPN Documents jest do wymiany plików. Przeciągnij .ovpn plik do okna OpenVPN Documents.img1

Teraz uruchom aplikację na iPhone OpenVPN. Tam będzie uwiadomienie, że nowy profil jest gotowy do importu. Kliknij na zielony znak plus, aby go zaimportować.img2

Połączenie

OpenVPN teraz jest gotowy do korzystania z nowego profilu. Rozpocząć połączenie przesuwając przycisk Connect  do pozycji On. Aby odłączyć przesuń ten sam przycisk na Off.

Uwaga: VPN przełącznik w ustawieniach nie może być używany do łączenia się z siecią VPN. Jeśli spróbujesz, otrzymasz powiadomienie, że podłączenie możliwe tylko za pomocą aplikacji OpenVPN.

img3

Android

Instalacja

Otwórz Google Play Store. Wyszukaj i zainstaluj OpenVPN Connect, oficjalną aplikację kliencką Android OpenVPN.

Profil .ovpn można przesyłać poprzez podłączenie urządzenia z Androidem do komputera przez USB i kopiując plik. Ewentualnie, jeśli masz czytnik kart SD, można wyjąć kartę SD urządzenia i skopiować profil na nią, a następnie włożyć kartę z powrotem do urządzenia z systemem Android.

Uruchom aplikację OpenVPN i naciśnij przycisk menu, aby zaimportować profil.img4

Następnie przejdź do lokalizacji zapisanego profilu (zrzut ekranu używa /sdcard/Download/) i zaznacz swój plik. Aplikacja zauważy, że profil został zaimportowany.5

Połączenie

Aby nawiązać połączenie, wystarczy dotknąć przycisk Connect. Zostaniesz zapytany, czy ufasz aplikacji OpenVPN. Wybierz OK , aby zainicjować połączenie. Aby odłączyć się od sieci VPN, wróć do aplikacji OpenVPN i wybierz Disconnect.6

Krok #13: Testowanie połączenia VPN

Gdy wszystko jest zainstalowane, proste sprawdzenie potwierdzi, że wszystko działa poprawnie. Bez włączonego połączenia VPN, otwórz przeglądarkę i przejdź do DNSLeakTest.

Witryna zwróci adres IP przypisany przez dostawcę usług internetowych. Aby sprawdzić ustawienia DNS za pośrednictwem tej samej strony, kliknij na Extended Test i on pokaże Ci, jakie serwery DNS używasz.

Teraz podłącz klienta OpenVPN do swojej Droplet VPN i odśwież przeglądarkę. Zupełnie inny adres IP serwera VPN powinien się pojawić. To jest teraz, w jaki sposób pojawiają się na całym świecie. Znowu DNSLeakTest.com Extended Test sprawdzi ustawienia DNS i potwierdzi że obecnie korzystasz z DNS przesunięte przez VPN.

Krok #14: Odwołanie certyfikatów klienta

Niekiedy trzeba odwołać certyfikat klienta, aby zapobiec dalszemu dostępu do serwera OpenVPN.

Aby to zrobić, wpisz swój katalog CA i plik źródłowy vars:

cd ~/openvpn-ca

source vars

Następnie wywołujemy polecenie  revoke-full używając nazwy klienta, którego chcesz anulować:

./revoke-full client3

To pokaże jakiś output, kończąc na błędzie 23. Jest to normalne i proces powinien pomyślnie generować niezbędną odwoływalną informacje, która jest przechowywana w pliku o nazwie crl.pem w podkatalogu keys.

Przenieśmy ten plik do katalogu konfiguracyjnego /etc/openvpn:

sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn

Następnie otwórz plik konfiguracyjny serwera OpenVPN:

sudo nano /etc/openvpn/server.conf

W dolnej części pliku należy dodać opcję crl-verify , aby serwer OpenVPN sprawdzał listę odwołanych certyfikatów, które mamy utworzone za każdą próbą wykonanego połączenia:

/etc/openvpn/server.conf
crl-verify crl.pem

Zapisz i zamknij plik.

Wreszcie, uruchom ponownie OpenVPN dla realizacji odwołania certyfikatów:

sudo systemctl restart openvpn@server

Klient powinien być w stanie skutecznie połączyć się z serwerem przy użyciu starych danych logowania.

Aby odwołać dodatkowych klientów, należy wykonać ten proces:

  • Wygenerować nową listę odwołania certyfikatów poprzez pozyskiwanie pliku vars w katalogu ~/openvpn-ca, a następnie wywołać skrypt revoke-full na imię klienta.
  • Skopiuj nową listę odwołania certyfikatów do katalogu /etc/openvpn, aby zastąpić starą listę.
  • Uruchom ponownie usługę OpenVPN.
  • Ten proces może być używany, aby odwołać wszystkie certyfikaty, które wcześniej zostały wydane dla Twojego serwera.

Wniosek

Gratulacje! Teraz możesz bezpiecznie korzystać z Internetu, chroniącego twoją tożsamość, lokalizację i ruchu od szpiegów i cenzorzy.

Aby skonfigurować więcej klientów, wystarczy wykonać kroki 6 i 11-13 dla każdego dodatkowego urządzenia. Aby zablokować dostęp do klientów, wykonaj krok 14 .

Jeżeli nie chcesz walczyć z tą instalacją i konfiguracją – pomożemy z tym na naszych serwerach w ramach darmowego Premium Wsparcia