19 lut

Jak skonfigurować serwer OpenVPN na Debian 8? – część 2

Blog - OpenVPN Debian 8
Aby wrócić do pierwszej części tutorialu – Jak skonfigurować serwer OpenVPN na Debian 8? – część 1.

Krok #6 – Generowanie certyfikatu i klucza dla serwera

W tym kroku będziemy instalować i uruchamiać nasz serwer OpenVPN.

Po pierwsze, nadal pracujemy z /etc/openvpn/easy-rsa, utwórz swój klucz z nazwą serwera. To było ustalone wcześniej jak KEY_NAME w pliku konfiguracyjnym. Wartością domyślną tego tutorialu jest server.

./build-key-server server

Znowu musisz potwierdzić Distinguished Name. Naciśnij ENTER, aby zaakceptować zdefiniowane wartości domyślne. Tym razem pojawią się dwa dodatkowe monity.

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Obie powinny być puste, więc wystarczy nacisnąć klawisz ENTER, aby przejść przez każdy z nich.

Dwa dodatkowe pytania na końcu wymagają pozytywne (y) odpowiedzi:

Sign the certificate? [y/n]
1 out of 1 certificate requests certified, commit? [y/n]

Następnie zostanie wyświetlony następujący monit, wskazując na sukces.

Output
Write out database with 1 new entries
Data Base Updated

Krok #7 – Przeniesienie certyfikatów serwera i kluczy

Będziemy teraz kopiować certyfikat i klucz do /etc/openvpn, OpenVPN będzie szukać w tym katalogu dla CA certyfikat i klucz serwera.

cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn

Można sprawdzić, czy kopia została wykonana:

ls /etc/openvpn

Powinieneś zobaczyć certyfikat i pliki kluczy na serwerze.

W tym momencie serwer OpenVPN jest gotowy do pracy. Uruchom go i sprawdź stan.

service openvpn start

service openvpn status

Polecenie status wyświetla:

Output
* openvpn.service - OpenVPN service
Loaded: loaded (/lib/systemd/system/openvpn.service; enabled)
Active: active (exited) since Thu 2015-06-25 02:20:18 EDT; 9s ago
Process: 2505 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 2505 (code=exited, status=0/SUCCESS)

Co najważniejsze z wyświetlanego powyżej, należy znaleźć  Active: active (exited) since... zamiast Active: inactive (dead) since....

Twój serwer OpenVPN jest teraz gotowy do pracy. Jeśli komunikat pokazuje że VPN nie jest uruchomiony, poszukaj w pliku /var/log/syslog błędów, takich jak:

Options error: --key fails with 'server.key': No such file or directory

Ten błąd wskazuje że server.key nie został skopiowany do /etc/openvpn poprawnie. Skopiuj plik jeszcze raz i spróbuj ponownie.

Krok #8 – Generowanie certyfikatów i kluczy dla klientów

Do tej pory zainstalowaliśmy i skonfigurowaliśmy serwer OpenVPN, stworzyłyśmy Certificate Authority, własny certyfikat serwera i klucz. W tym kroku używamy CA serwera do generowania certyfikatów i kluczę dla każdego urządzenia klienckiego, które będą łączyć się z siecią VPN.

Klucz i budowanie certyfikatu

Jest to idealne rozwiązanie dla każdego klienta łączącego się z siecią VPN, aby mieć swój własny, unikalny certyfikat i klucz. Najlepiej jest generować jeden wspólny certyfikat i klucz do użycia spośród wszystkich urządzeń klienckich.

Uwaga: Domyślnie, OpenVPN nie pozwala jednoczesnych połączeń do serwera przez klienta, przy użyciu tego samego certyfikatu i klucza.(Patrz duplicate-cn w /etc/openvpn/server.conf).

Aby utworzyć osobne uwierzytelnienie dla każdego urządzenia, które zamierza połączyć się z siecią VPN, należy wykonać ten krok dla każdego urządzenia, ale zmienić nazwę client1 poniżej na coś innego, naprzykład client2 albo iphone2. Za pomocą indywidualnych danych logowania na jednym urządzeniu, później mogą być wyłączone na serwerze osobno, o ile zajdzie taka potrzeba. W pozostałych przykładach w tym tutorialu będziemy używać client1 jako przykładowa nazwa urządzenia klienckiego.

Jak to zrobiliśmy z kluczem serwera, teraz budujemy przykład dla naszego client1. Nadal pracujemy z plikiem /etc/openvpn/easy-rsa.

./build-key client1

Po raz kolejny, zostaniesz poproszony, aby zmienić lub potwierdzić zmienne Distinguished Name i te dwa monity powinny być puste. Naciśnij ENTER, aby zaakceptować ustawienia domyślne.

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Jak poprzednio, te dwa potwierdzenia na końcu procesu wymagają (y):

Sign the certificate? [y/n]
1 out of 1 certificate requests certified, commit? [y/n]

Następnie otrzymasz następujący komunikat potwierdzający pomyślne zbudowanie kluczy.

Write out database with 1 new entries.
Data Base Updated

Dalej będziemy kopiować wygenerowany klucz do katalogu Easy-RSA keys, który stworzyliśmy wcześniej. Należy pamiętać, że możemy zmienić rozszerzenie z .conf na .ovpn. Jest to dopasowanie konwencji.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn

Można powtórzyć ten krok ponownie dla każdego klienta, zastępując client1 odpowiednią nazwą klienta.

Uwaga: Nazwa powtarzana client.ovpn nie musi być związana z urządzeniem klienckim. Aplikacja po stronie klienta OpenVPN użyje nazwy pliku jako identyfikator do podłączenia samego VPN. Zamiast tego, należy duplikować client.ovpn na jaką chcesz nazwę VPN w systemie operacyjnym. Na przykład: work.ovpn zostanie zidentyfikowany jako work, school.ovpn jako school, itp.

Musimy edytować każdy plik klienta, w tym adres IP serwera OpenVPN, aby on wiedział że trzeba się połączyć. Otwórz client.ovpn za pomocą nano lub ulubionego edytora tekstu.

nano /etc/openvpn/easy-rsa/keys/client.ovpn

Po pierwsze, edytuj linię wiersz zaczynający z remote. Zmień my-server-1 na your_server_ip.

/etc/openvpn/easy-rsa/keys/client.ovpn
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 1194

Następnie znajdź tekst poniżej i usuń user nobody i group nogroup, podobnie jak robiliśmy to w pliku server.conf w Kroku #1.

Uwaga: Nie dotyczy to systemu Windows, tak, że można go pominąć.

To powinno wyglądać tak:

/etc/openvpn/easy-rsa/keys/client.ovpn
# Downgrade privileges after initialization (non-Windows only)
user nobody
group no group

Przeniesienie certyfikatów i kluczy do urządzeń klienckich

Przypomnijmy, że certyfikaty klienta i kluczy które stworzylismy w powyższych krokach są one przechowywane na serwerze OpenVPN w katalogu /etc/openvpn/easy-rsa/keys.

Dla każdego klienta musimy przenieść pliki certyfikatu klienta, klucz, a pliki template profilu do folderu na naszym lokalnym komputerze lub innym urządzeniu klienckim.

W tym przykładzie, nasze urządzenie client1 wymaga swój certyfikat i klucz, który znajduje się na serwerze w:

  • /etc/openvpn/easy-rsa/keys/client1.crt
  • /etc/openvpn/easy-rsa/keys/client1.key

Pliki ca.crt i client.ovpn są takie same dla wszystkich klientów. Pobierz tę dwa pliki; należy zwrócić uwagę, że plik ca.crt znajduje się w innym katalogu niż pozostale.

  • /etc/openvpn/easy-rsa/keys/client.ovpn
  • /etc/openvpn/ca.crt

Chociaż dokładne aplikacje używane do wykonania tego transferu zależy od wyboru i wersji systemu operacyjnego urządzenia, możesz użyć SFTP (SSH File Transfer Protocol) lub SCP (Secure Copy). To pozwoli transportować pliki uwierzytelniania VPN swojego klienta przez połączenie szyfrowane.

Przykładowe polecenie SCP poprzez nasz przykład client1. Ono umieszcza plik client1.key do katalogu Downloads na komputerze lokalnym.

scp root@your-server-ip:/etc/openvpn/easy-rsa/keys/client1.key Downloads/

Pod koniec, upewnij się, że masz te cztery pliki na urządzeniu klienckim:

  • `client1.crt`
  • `client1.key`
  • client.ovpn
  • ca.crt

Krok #9 – Stworzenie jednolitego profilu OpenVPN dla urządzeń klienckich

Istnieje kilka sposobów zarządzania plikami klientów ale najprostszym jest wykorzystanie jednolitego profilu. To jest tworzone przez modyfikację template  pliku  client.ovpn zawierającego Certificate Authority serwera oraz certyfikat klienta i jego klucz. Po połączeniu, tylko pojedynczy profil  client.ovpn musi być importowany do aplikacji OpenVPN klienta.

W tekscie podanym poniżej trzeba zakomentować trzy wierszy, zamiast nich włączymy certyfikat i klucz bezpośrednio do pliku client.ovpn. Powinno to wyglądać tak:

/etc/openvpn/easy-rsa/keys/client.ovpn
# SSL/TLS parms.
# . . .
;ca ca.crt
;cert client.crt
;key client.key

Zapisz zmiany i wyjdź. Będziemy dodawać certyfikaty za pomocą kodu.

Po pierwsze, należy dodać Certificate Authority.

echo '' >> /etc/openvpn/easy-rsa/keys/client.ovpn

cat /etc/openvpn/ca.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn

echo '' >> /etc/openvpn/easy-rsa/keys/client.ovpn

Po drugie, dodamy certyfikat.

echo '<cert>' >> /etc/openvpn/easy-rsa/keys/client.ovpn

cat /etc/openvpn/easy-rsa/keys/client1.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn

echo '</cert>' >> /etc/openvpn/easy-rsa/keys/client.ovpn

Po trzecie, należy dodać klucz.

echo '<key>' >> /etc/openvpn/easy-rsa/keys/client.ovpn

cat /etc/openvpn/easy-rsa/keys/client1.key >> /etc/openvpn/easy-rsa/keys/client.ovpn

echo '</key>' >> /etc/openvpn/easy-rsa/keys/client.ovpn

Mamy obecnie jednolity profil klienta. Za pomocą scp, można skopiować plik client.ovpn do drugiego systemu.

Krok #10 – Instalacja profilu klienta

Różne platformy mają bardziej wygodne aplikacji do łączenia się z serwerem OpenVPN. Dla szczegółowe instrukcje różnych platform można znaleźć w Kroku 12 w tym tutorialu.

Wniosek

Gratulacje! Teraz masz pracujący serwer OpenVPN.
Z OpenVPN można przetestować połączenie za pomocą Google, aby ujawnić swój publiczny adres IP. Na komputerze klienckim, pobrać go raz przed uruchomieniem połączenia openvpn i zaraz po. Adres IP musi się zmienić.