Samouczek OpenVPN: Instalacja, konfiguracja serwera VPN i połączenie

OpenVPN jest platformą wieloplatformową VPN (wirtualna sieć prywatna) klient / serwer. Jest kompatybilny z Microsoft Windows, GNU / Linux, systemy operacyjne macOS, a nawet darmowe aplikacje dla Android i iOS. Kolejną mocną stroną OpenVPN jest to, że niektórzy producenci routerów włączają go do swoich urządzeń, więc będziemy mieli możliwość skonfigurowania serwera OpenVPN na naszym routerze. Innym godnym uwagi aspektem jest to, że na przykład zaporazorientowane systemy operacyjne również go zawierają, PFsense i OPNSense to dwie wysoce zalecane dystrybucje do korzystania z OpenVPN i pozostałych opcji konfiguracyjnych.

Co to jest?

OpenVPN to oprogramowanie oparte na darmowym oprogramowaniu, które pozwala nam budować wirtualną sieć prywatną (VPN), aby łączyć się zdalnie z serwerem. To oprogramowanie pozwala nam skonfigurować dwa typy architektur VPN:

Samouczek OpenVPN

  • Dostęp zdalny VPN: Mamy centralny serwer VPN i kilku klientów VPN z oprogramowaniem zainstalowanym na komputerze, smartfonie, tablecie lub innym urządzeniu, a wszyscy oni łączą się centralnie z serwerem VPN.
  • Site-to-Site VPN: ta architektura umożliwia nam komunikację między różnymi witrynami w celu udostępniania zasobów za pośrednictwem bezpiecznej sieci, chronionej szyfrowaniem typu end-to-end. Ten rodzaj VPN pozwala nam komunikować się między biurami, centralami firm itp.

Niektóre bardzo ważne cechy OpenVPN to obsługa rozbudowanej konfiguracji, zarówno w celu poprawy wydajności, jak i bezpieczeństwa. Opiera się na SSL / TLS, dzięki czemu możemy tworzyć cyfrowe certyfikaty do uwierzytelniania klientów VPN, dodatkowo moglibyśmy również uwierzytelniać się certyfikatami plus nazwa użytkownika / hasło, które dodajemy do systemu. OpenVPN jest znacznie łatwiejszy w konfiguracji niż IPsec, a dzięki świetnemu wsparciu społeczności będziemy mogli znaleźć OpenVPN na wszystkich komputerowych systemach operacyjnych, serwerach, a nawet na smartfonach i tabletach.

Po co to jest?

Jeśli utworzymy serwer OpenVPN w naszym domu, pomoże nam to połączyć się z Internetem w formacie bezpieczny sposób z dowolnej sieci, czy to przewodowej, czy WiFi, z szyfrowaniem WEP / WPA lub bez szyfrowania. Cały ruch będzie zaszyfrowane przez tunel z naszego komputera, na którym łączymy się z naszym domem, a stamtąd trafia do Internetu, to tak, jakbyśmy mieli połączenie z Internetem w domu. Musimy wziąć pod uwagę kilka czynników, takich jak dobra prędkość wysyłania (30 Mb / s lub więcej) oraz posiadanie publicznego adresu IP w naszym domu, ponieważ jeśli mamy CG-NAT, nie będziemy mogli się połączyć, ponieważ nie będziemy w stanie wykonać przekierowanie portów w routerze.

Montując serwer OpenVPN w naszym domu, możemy również uzyskać dostęp do wszystkich współdzielonych zasobów, takich jak serwery Samba, FTP, a nawet uzyskać dostęp do drukarki, podłączonych kamer IP itp. Wszystkie uprawnienia dostępu byłyby tak, jakbyśmy byli fizycznie w naszym domu. OpenVPN to rozwiązanie dla VPN, które implementuje połączenia warstwy 2 lub 3, w zależności od wybranego trybu połączenia, będzie działać w taki czy inny sposób, ponadto ważnym szczegółem jest to, że zdecydowana większość dzisiejszych systemów operacyjnych obsługuje OpenVPN, chociaż nie jest zwykle stosowany przez producentów sprzętu do zapór lub routerów.

OpenVPN korzysta z zestawu protokołów SSL / TLS, które działają w warstwie transportowej i mamy dwa typy operacji:

  • TUN : the TUN kontroler emuluje urządzenie typu punkt-punkt, służy do tworzenia wirtualne tunele działające w protokole IP . W ten sposób wszystkie pakiety, które są przez niego przesyłane, mogą być hermetyzowane jako segmenty TCP lub datagramy UDP (później zobaczysz, że wybieramy UDP zamiast TCP i zapytasz dlaczego, skoro TCP jest łączny, niezawodny i zorientowany na Połączenie ). Maszyny znajdujące się za każdym końcem łącza będą należeć do różnych podsieci.
  • TAP : Symuluje interfejs sieci Ethernet, bardziej znany jako tryb mostu lub mostu, te wirtualne tunele bezpośrednio hermetyzować pakiety Ethernet . Taka sytuacja umożliwia pakowanie innych tkanin niż IP. Maszyny znajdujące się za każdym końcem łącza mogą działać jako część tej samej podsieci (jeśli używany jest protokół IP). Tryb pracy mostu jest szczególnie przydatny do łączenia zdalnych użytkowników, ponieważ mogą łączyć się z tym samym serwerem i praktycznie być częścią sieci głównej, jednak jeśli sieć prywatna, do której jest podłączone źródło, pokrywa się z miejscem docelowym, będziemy mieli problemy z routingiem a komunikacja nie będzie działać.

W podręczniku użyjemy TUN i zobaczymy, jak tworzymy wirtualną podsieć 10.8.0.0/24, w której klienci OpenVPN będą się łączyć. W ten sposób znacznie łatwiej będzie zidentyfikować klientów VPN, których połączyliśmy w sieci lokalnej.

W tej instrukcji wyjaśnię, jak to zrobić w GNU / Linux (w Debianie 10) chociaż w istocie dotyczy to tego samego Windows , tylko polecenia w konsoli (cmd.exe), certyfikaty i klucze zmieniają się, są takie same dla obu to znaczy, że możesz stworzyć WSZYSTKO w programie GNU / Linux a następnie przekaż go Windows Aby z niego skorzystać (klient lub serwer), wystarczy zmienić plik klient / serwer rozbudowa .conf do .ovpn chociaż w najnowszych wersjach OpenVPN dla Windows już pozwala nam rozpoznawać i używać pliki konfiguracyjne .conf, więc nie będziemy musieli zmieniać rozszerzenia.

W tym podręczniku pokażę, jak wykonać bardzo bezpieczną konfigurację OpenVPN, dostosowując algorytmy szyfrowania symetrycznego, asymetrycznego i haszującego. W ten sposób możemy uzyskać najlepsze możliwe szyfrowanie komunikacji.

Podsumowanie kryptografii do wykorzystania

  • Certyfikaty cyfrowe : Użyjemy EC (krzywe eliptyczne) do tworzenia Infrastruktura klucza publicznego . Stworzymy zarówno certyfikaty CA (Certification Authority), jak i certyfikaty serwera i klientów VPN, którzy chcą się połączyć. Zastosowany algorytm EC to secp521r1, chociaż dostępnych jest wiele innych. Algorytm skrótu, którego będziemy używać, będzie SHA512 . Ważnym szczegółem jest to, że nie wszyscy klienci / serwery OpenVPN go obsługują, musimy zaktualizować nasze biblioteki OpenVPN i kryptograficzne, ale w dzisiejszych czasach rzadko można znaleźć się w scenariuszu, który nie jest kompatybilny.
  • Kanał sterujący OpenVPN : użyjemy co najmniej TLS 1.2 i zawsze będziemy używać PFS (Perfect Forward Secrecy) w oparciu o Diffie-Hellmann z krzywymi eliptycznymi (ECDHE). Oznacza to, że użyjemy szeregu bezpiecznych pakietów kryptograficznych, takich jak TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384. Jeśli chcesz sprawdzić, czy Twój serwer lub klient obsługuje ten typ szyfrowania, należy ustawić w konsoli „openvpn –show-tls”.
  • Kanał danych OpenVPN : Będziemy używać AES-256-GCM symetryczny algorytm szyfrowania, obecnie najbezpieczniejszy, który został włączony do OpenVPN 2.4 i nowszych. Jeśli chcesz sprawdzić, czy Twój serwer lub klient obsługuje ten typ szyfrowania, musisz umieścić w konsoli « openvpn – szyfry pokazowe «. Jeśli używamy AES-256-GCM jako szyfrowania kanału danych, nie będziemy używać żadnego algorytmu HASH, ponieważ jest to AEAD, jednak jeśli użyjemy AES-256-CBC, użyjemy SHA512.

Oprócz tych środków bezpieczeństwa, dodamy dodatkową sygnaturę HMAC do pierwszej negocjacji TLS, w ten sposób zabezpieczymy system przed możliwymi atakami typu „odmowa usługi”, atakami UDP Port Flooding, a także atakami TCP SYN. Podczas łączenia się z serwerem, jeśli klient nie ma poprawnego podpisu HMAC, zostanie zablokowany. We wcześniejszych wersjach OpenVPN 2.4 była to dyrektywa uwierzytelnianie tls , który był odpowiedzialny tylko za uwierzytelnianie klucza współdzielonego wygenerowanego przez sam OpenVPN. Teraz w wersjach wyższych niż OpenVPN 2.4 to się nazywa tls-krypt , główna różnica polega na tym, że oprócz uwierzytelniania również szyfruje kanał, tak że nikt nie jest w stanie przechwycić wspomnianego wstępnie udostępnionego klucza. Konfiguracja jest bardzo podobna, generacja klucza jest dokładnie taka sama w obu.

Wreszcie użyjemy protokołu UDP zamiast TCP, ponieważ jest on silniejszy przeciwko atakom typu „odmowa usługi”, musimy pamiętać, że UDP nie łączy się, jest zawodny i zorientowany na połączenie. Możemy jednak bez problemu używać TCP, aby zapewnić VPN wszystkie zalety tego protokołu.

Kroki, które należy wykonać, aby pracować z OpenVPN

Poniżej będziesz mógł szczegółowo zobaczyć, jak zainstalować to oprogramowanie, a także wszystko, czego potrzebujesz, aby je uruchomić z najlepszymi możliwymi zabezpieczeniami zapewnianymi przez to rozwiązanie, aby stworzyć wirtualną sieć prywatną.

Pobierz i zainstaluj

Pierwszą rzeczą, którą musimy zrobić, jest zainstalowanie OpenVPN na naszym komputerze, z systemem Windows lub Linux. Jeśli używasz systemu Windows, musisz przejść do oficjalna witryna pobierania OpenVPN i zainstaluj wszystko w kreatorze instalacji. Jeśli używasz systemu operacyjnego takiego jak Debian (w tym podręczniku będziemy używać Debiana 10), będziesz musiał wprowadzić następujące polecenie:

sudo apt update

sudo apt zainstaluj openvpn

Łatwe pobieranie RSA 3 dla certyfikatów

Po zainstalowaniu musimy pobrać pakiet oprogramowania Easy-RSA 3, ten pakiet oprogramowania służy do łatwego i szybkiego tworzenia certyfikatów cyfrowych. Możemy modyfikować długość klucza, typ klucza, jeśli chcemy wprowadzić hasło do kluczy prywatnych itp. oficjalna strona projektu Easy-RSA 3 na GitHub masz wszystkie informacje i możliwość pobrania .zipa ze wszystkim.

Jeśli korzystasz z systemu Linux, zalecamy użycie polecenia wget, aby pobrać plik .zip:

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz

Następnie musimy rozpakować ten pobrany plik i wejść do folderu, aby rozpocząć konfigurację pliku vars.

tar -zxvf EasyRSA-3.0.8.tgz

Skonfiguruj Easy-RSA 3 «vars»

Połączenia vars.przykład plik jest centrum całej konfiguracji certyfikatów, to tutaj musimy zdefiniować, czy chcemy tworzyć certyfikaty w oparciu o RSA czy w oparciu o EC. Pozwoli nam to również podpisać certyfikaty między innymi za pomocą SHA256 lub SHA512. Oznacza to, że musimy poprawnie skonfigurować ten plik konfiguracyjny, aby później utworzyć certyfikaty cyfrowe.

Pierwszą rzeczą jaką musimy zrobić jest skopiowanie pliku vars.example do tego samego folderu o nazwie „vars”, jeśli nie mamy go o tej nazwie „vars” to nie zadziała. Mamy również możliwość zmiany nazwy pliku vars.example na „vars”, ale zalecamy wykonanie kopii zapasowej na wypadek, gdybyś coś usunął, a wtedy to nie zadziała.

Przechodzimy do głównego folderu Easy-RSA3 i kopiujemy plik w ten sposób:

cp vars.example vars

Gdy już mamy plik „vars”, musimy go edytować w dowolnym edytorze plików za pośrednictwem konsoli lub interfejsu graficznego, będziemy używać nano ze względu na jego łatwość. W poniższym pliku konfiguracyjnym «vars» możesz zobaczyć, jak wyglądałoby EC z algorytmem secp521r1, podpisanym za pomocą SHA512 i użyliśmy DN (Distinguished Name), umieszczając CN (Common Name) zamiast typowych «danych organizacji». robiliśmy to zawsze wcześniej, w ten sposób ułatwiamy tworzenie certyfikatów, jednak mogliśmy to również zrobić wskazując typowe dane organizacji.

W samym pliku znajdują się oryginalne komentarze w języku angielskim, natomiast w języku hiszpańskim umieściliśmy nasze, aby ułatwić lokalizację tego, co należy zmodyfikować. Bardzo ważny szczegół, WordPress automatycznie umieszcza te symbole << i >>, gdy powinien po prostu wstawić podwójne cudzysłowy: »

# Ustawienia parametrów Easy-RSA 3

# UWAGA: Jeśli zainstalowałeś Easy-RSA z menedżera pakietów swojej dystrybucji, nie edytuj
# ten plik na miejscu - zamiast tego powinieneś skopiować cały katalog easy-rsa
# do innej lokalizacji, aby przyszłe aktualizacje nie wymazały zmian.

# JAK KORZYSTAĆ Z TEGO PLIKU
#
# vars.example zawiera wbudowane przykłady ustawień Easy-RSA. MUSISZ nazwać
# ten plik „vars”, jeśli chcesz, aby był używany jako plik konfiguracyjny. Jeśli zrobisz
# nie, NIE BĘDZIE automatycznie odczytywana po wywołaniu poleceń easyrsa.
#
# Nie ma potrzeby używania tego pliku konfiguracyjnego, chyba że chcesz zmienić
# domyślne ustawienia operacyjne. Te wartości domyślne powinny wystarczyć do wielu zastosowań bez rozszerzenia
# trzeba skopiować i edytować plik „vars”.
#
# Wszystkie edytowalne ustawienia są komentowane i zaczynają się od polecenia
# 'set_var' - oznacza to, że każde niekomentowane polecenie set_var zostało
# zmodyfikowane przez użytkownika. Jeśli jesteś zadowolony z wartości domyślnej, nie ma takiej potrzeby
# zdefiniować wartość domyślną.

# UWAGI DLA UŻYTKOWNIKÓW WINDOWS
#
# Ścieżki dla Windows * MUSZĄ * używać ukośników lub, opcjonalnie, podwójnych znaków ESS
# odwróconych ukośników (zalecane są pojedyncze ukośniki). Oznacza to ścieżkę do
# plik binarny openssl może wyglądać tak:
# „C: / Program Files / OpenSSL-Win32 / bin / openssl.exe”

# Trochę sprzątania: NIE EDYTUJ TEJ SEKCJI
#
# Easy-RSA 3.x nie dostarcza źródła bezpośrednio do środowiska.
# Złóż skargę, jeśli użytkownik spróbuje to zrobić:
if [-z „$ EASYRSA_CALLER”]; następnie
echo „Wygląda na to, że pozyskujesz plik Easy-RSA 'vars'.” > & 2
echo «Nie jest to już konieczne i jest zabronione. Zobacz sekcję »> & 2
echo „„ ​​Jak używać tego pliku ”w górnej części komentarzy, aby uzyskać więcej informacji.” > & 2
zwróć 1
fi

# ZRÓB SWOJE ZMIANY PONIŻEJ TEGO PUNKTU

# Ta zmienna jest używana jako podstawowa lokalizacja plików konfiguracyjnych wymaganych przez
# easyrsa. Bardziej szczegółowe zmienne dla określonych plików (np. EASYRSA_SSL_CONF)
# może zastąpić to ustawienie domyślne.
#
# Domyślną wartością tej zmiennej jest lokalizacja skryptu easyrsa
#, który jest również miejscem, w którym znajdują się pliki konfiguracyjne w
# drzewo easy-rsa.

#set_var EASYRSA „$ {0% / *}”

# Jeśli twojej komendy OpenSSL nie ma w systemowej PATH, będziesz musiał zdefiniować
# ścieżka do niego tutaj. Zwykle oznacza to pełną ścieżkę do pliku wykonywalnego, w przeciwnym razie
# mogłeś zostawić to tutaj niezdefiniowane i użyte zostaną pokazane wartości domyślne.
#
# Użytkownicy systemu Windows, pamiętajcie, aby używać ścieżek z ukośnikami (lub znakami ucieczki
# back-slashes.) Użytkownicy systemu Windows powinni zadeklarować pełną ścieżkę do pliku openssl
# binarny tutaj, jeśli nie ma go w ich systemowej ŚCIEŻCE.

#set_var EASYRSA_OPENSSL „openssl”
#
# Ten przykład jest w składni Windows - edytuj go dla swojej ścieżki, jeśli nie używasz PATH:
#set_var EASYRSA_OPENSSL „C: / Program Files / OpenSSL-Win32 / bin / openssl.exe”

# Edytuj tę zmienną, aby wskazywała na katalog kluczy, który wkrótce ma zostać utworzony. Przez
# domyślnie będzie to „$ PWD / pki” (tj. podkatalog „pki” pliku
# katalog, w którym aktualnie się znajdujesz).
#
# OSTRZEŻENIE: init-pki wykona rm -rf w tym katalogu, więc upewnij się, że zdefiniowałeś
# to poprawnie! (Tryb interaktywny wyświetli monit przed wykonaniem czynności).

#set_var EASYRSA_PKI „$ PWD / pki”

# Zdefiniuj tryb X509 DN.
# Służy do dostosowania elementów zawartych w polu Temat jako nazwa wyróżniająca
# (to jest «Nazwa wyróżniająca»)
# Zwróć uwagę, że w trybie cn_only poniższe pola organizacyjne nie są używane.
#
# Dostępne opcje:
# cn_only - użyj tylko wartości CN
# org - użyj „tradycyjnego” kraju / prowincji / miasta / organizacji / jednostki organizacyjnej / E-mail / CN

#ELEGIMOS cn_only DO TWORZENIA CERTYFIKATÓW

set_var EASYRSA_DN „cn_only”

# Pola organizacyjne (używane w trybie „org” i ignorowane w trybie „cn_only”).
# To są domyślne wartości pól, które zostaną umieszczone w
# certyfikat. Nie zostawiaj żadnego z tych pól pustych, chociaż interaktywnie
# możesz pominąć dowolne określone pole, wpisując «.» symbol (nie dotyczy
# e-mail.)

#set_var EASYRSA_REQ_COUNTRY „US”
#set_var EASYRSA_REQ_PROVINCE „Kalifornia”
#set_var EASYRSA_REQ_CITY „San Francisco”
#set_var EASYRSA_REQ_ORG „Copyleft Certificate Co”
#set_var EASYRSA_REQ_EMAIL „me@example.net”
#set_var EASYRSA_REQ_OU „Moja jednostka organizacyjna”

# Wybierz rozmiar w bitach dla swoich par kluczy. Zalecana wartość to 2048. Używanie
# 2048-bitowe klucze są uważane za więcej niż wystarczające przez wiele lat w
# przyszłość. Większe rozmiary kluczy spowalniają negocjacje TLS i tworzą parametr klucz / DH
# generacja trwa znacznie dłużej. Większość powinna akceptować wartości do 4096
# oprogramowanie. Używane tylko wtedy, gdy krypto alg to rsa (patrz poniżej).

#set_var EASYRSA_KEY_SIZE 2048

# Domyślnym trybem kryptograficznym jest rsa; ec może włączyć obsługę krzywych eliptycznych.
# Należy pamiętać, że nie wszystkie programy obsługują funkcję ECC, więc należy zachować ostrożność podczas jej włączania.
# Wybory dla kryptowalut to: (każdy z małych liter)
# * rs
# * we

# WYBIERAMY KRZYWĄ ELIPTYCZNĄ DO TWORZENIA CERTYFIKATÓW, DOMYŚLNIE JEST TO RSA.

set_var EASYRSA_ALGO ec

# DEFINIUJEMY NAZWĘ WYBRANEJ KRZYWEJ ELIPTYCZNEJ

set_var EASYRSA_CURVE secp521r1

# KONFIGURUJEMY TERMIN WAŻNOŚCI AC

set_var EASYRSA_CA_EXPIRE 3650

# KONFIGUROWUJEMY TERMIN WAŻNOŚCI TWORZONYCH CERTYFIKATÓW.

set_var EASYRSA_CERT_EXPIRE 1080

# Ile dni pozostało do następnej daty publikacji listy CRL? Zwróć uwagę, że lista CRL nadal może być
# przeanalizowane po upływie tego czasu. Jest używany tylko do oczekiwanego następnego
# Data publikacji.

# Ile dni przed datą wygaśnięcia certyfikat może być
# odnowiony?
#set_var EASYRSA_CERT_RENEW 30

#set_var EASYRSA_CRL_DAYS 180

# Obsługa wycofanych rozszerzeń „Netscape”? (do wyboru „tak” lub „nie”). Wartość domyślna
# to „nie”, aby zniechęcić do używania przestarzałych rozszerzeń. Jeśli tego potrzebujesz
# funkcja do użycia z –ns-cert-type, ustaw ją tutaj na „tak”. To wsparcie
# należy zastąpić nowszą funkcją –remote-cert-tls. Jeśli zrobisz
# nie używaj –ns-cert-type w swoich konfiguracjach, opuścić (i zalecane) jest bezpieczne
# to zdefiniowano jako „nie”. Po ustawieniu na „tak” certyfikaty podpisane na serwerze otrzymują rozszerzenie
# nsCertType = atrybut serwera, a także pobierz dowolny NS_COMMENT zdefiniowany poniżej w pliku
Pole # nsComment.

#set_var EASYRSA_NS_SUPPORT „nie”

# Gdy NS_SUPPORT jest ustawione na «tak», to pole jest dodawane jako pole nsComment.
# Ustaw to pole puste, aby je pominąć. Gdy parametr NS_SUPPORT jest ustawiony na „nie”, to pole jest ignorowane.

#set_var EASYRSA_NS_COMMENT „Wygenerowany certyfikat Easy-RSA”

# Plik tymczasowy używany do wystawiania rozszerzeń certyfikatów podczas podpisywania. Domyślnie powinno
# będzie dobrze dla większości użytkowników; Jednak niektórzy użytkownicy mogą chcieć alternatywy w ramach
# RAM-based FS, taki jak / dev / shm lub / tmp w niektórych systemach.

#set_var EASYRSA_TEMP_FILE „$ EASYRSA_PKI / extensions.temp”

#!!
UWAGA: OPCJE ZAAWANSOWANE PONIŻEJ TYM PUNKTEM
# GRAJ Z NIMI NA WŁASNE RYZYKO
#!!

# Uszkodzone aliasy poleceń powłoki: jeśli masz w dużej mierze zepsutą powłokę
# brakuje któregokolwiek z poleceń wymaganych przez POSIX używanych przez Easy-RSA, będziesz potrzebować
# aby zdefiniować alias do właściwej ścieżki dla polecenia. Objawem będzie
# jakaś forma błędu „nie znaleziono polecenia” z Twojej powłoki. To znaczy twój
# powłoka jest USZKODZONA, ale możesz ją tutaj zhakować, jeśli naprawdę potrzebujesz. estos
# pokazane wartości nie są wartościami domyślnymi: od Ciebie zależy, co robisz, jeśli
# dotykasz tych.
#
#alias awk = "/ alt / bin / awk"
#alias kot = »/ alt / kosz / kot»

Katalog rozszerzeń X509:
# Jeśli chcesz dostosować używane rozszerzenia X509, ustaw katalog tak, aby wyglądał
# dla rozszerzeń tutaj. Każdy podpisywany typ certyfikatu musi mieć pasującą nazwę pliku,
# i opcjonalny plik o nazwie „WSPÓLNE” jest dołączany jako pierwszy, jeśli jest obecny. Zwróć na to uwagę
# jeśli jest tu niezdefiniowane, domyślne zachowanie to najpierw szukanie w $ EASYRSA_PKI
# fallback do $ EASYRSA dla katalogu „x509-types”. Możesz to zmienić
# wykrywanie z jawnym katalogiem tutaj.
#
#set_var EASYRSA_EXT_DIR „$ EASYRSA / x509-types”

# Plik konfiguracyjny OpenSSL:
# Jeśli potrzebujesz użyć konkretnego pliku konfiguracyjnego openssl, możesz odwołać się do niego tutaj.
# Zwykle ten plik jest automatycznie wykrywany z pliku o nazwie openssl-easyrsa.cnf z pliku
# EASYRSA_PKI lub EASYRSA dir (w tej kolejności). UWAGA, że ten plik to Easy-RSA
# specyficzne i nie możesz po prostu użyć standardowego pliku konfiguracyjnego, więc jest to plik
# zaawansowana funkcja.

#set_var EASYRSA_SSL_CONF „$ EASYRSA / openssl-easyrsa.cnf”

# Domyślny numer CN:
# Najlepiej zostawić to w spokoju. Interaktywnie ustawisz to ręcznie, a BATCH
# dzwoniących powinno ustawić to samodzielnie.

#set_var EASYRSA_REQ_CN „ChangeMe”

# Skrót kryptograficzny do użycia.
# Nie zmieniaj tego ustawienia domyślnego, chyba że rozumiesz wpływ na bezpieczeństwo.
# Prawidłowe opcje to: md5, sha1, sha256, sha224, sha384, sha512

# WYBRALIŚMY HASH SHA512

set_var EASYRSA_DIGEST „sha512”

# Tryb wsadowy. Pozostaw to wyłączone, chyba że masz zamiar jawnie wywołać Easy-RSA
# w trybie wsadowym bez udziału użytkownika, potwierdzenie niebezpiecznych operacji,
# lub większość wyników. Ustawienie tego na dowolny niepusty ciąg włącza tryb wsadowy.

#set_var EASYRSA_BATCH «»

Po zmodyfikowaniu wszystkiego zapisujemy plik, ponieważ później będziemy go używać z tymi wartościami.

Tworzenie PKI: certyfikaty CA, serwera i klienta

Kiedy mamy już skonfigurowany plik «vars», przystępujemy do tworzenia infrastruktury klucza publicznego (PKI) za pomocą następującego polecenia (zakładamy, że nadal znajdujesz się w głównym katalogu Easy-RSA3):

./easyrsa init-pki

root @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa init-pki

Uwaga: przy użyciu konfiguracji Easy-RSA z: ./vars

init-pki zakończone; możesz teraz utworzyć urząd certyfikacji lub wnioski.
Twój nowo utworzony katalog PKI to: /home/bron/EasyRSA-v3.0.6/pki

Po zainicjowaniu PKI musimy utworzyć urząd certyfikacji (CA):

./easyrsa build-ca

Po wykonaniu musimy postępować zgodnie z prostym kreatorem generowania CA. Hasło, o które nas pytasz, służy do ochrony klucza prywatnego urzędu certyfikacji, co jest czymś fundamentalnym.

root @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa build-ca

Uwaga: przy użyciu konfiguracji Easy-RSA z: ./vars

Korzystanie z SSL: openssl OpenSSL 1.1.1d 10 września 2019 r

Wprowadź nowe hasło klucza CA:
Wprowadź ponownie nowe hasło klucza urzędu certyfikacji:
przeczytaj klucz EC
pisanie klucza EC
Nie można załadować /home/bron/EasyRSA-v3.0.6/pki/.rnd do RNG
139864421569664: błąd: 2406F079: generator liczb losowych: RAND_load_file: nie można otworzyć pliku: ../ crypto / rand / randfile.c: 98: nazwa_pliku = / home / bron / EasyRSA-v3.0.6 / pki / .rnd
Zostaniesz poproszony o wprowadzenie informacji, które zostaną włączone
do żądania certyfikatu.
To, co zamierzasz wprowadzić, to tak zwana nazwa wyróżniająca lub nazwa wyróżniająca.
Istnieje sporo pól, ale możesz zostawić trochę pustych
Dla niektórych pól będzie wartość domyślna,
Jeśli wpiszesz „.”, Pole pozostanie puste.
-
Nazwa zwyczajowa (np. Nazwa użytkownika, hosta lub serwera) [Easy-RSA CA]: AUTHORITY-CERTIFICATION

Tworzenie urzędu certyfikacji zostało ukończone i możesz teraz importować i podpisywać żądania certyfikatów.
Twój nowy plik certyfikatu CA do publikacji znajduje się pod adresem:
/home/bron/EasyRSA-v3.0.6/pki/ca.crt

Jeśli nie chcemy wpisywać hasła w kluczu prywatnym CA (nie jest to zalecane ze względów bezpieczeństwa), musimy wpisać to polecenie:

./easyrsa build-ca nopass

Po utworzeniu urzędu certyfikacji musimy utworzyć certyfikat serwera i certyfikaty klienta. Następnie musimy podpisać go z CA.

Utwórz certyfikat serwera i podpisz go w urzędzie certyfikacji

Tworząc certyfikaty serwera i klienta, możemy podać im hasło do klucza prywatnego, jednak nie jest to zalecane, aby robić to na serwerze, ponieważ przy każdym uruchomieniu poprosi nas o hasło, aby go użyć. Jeśli nie chcemy hasła, za każdym zamówieniem, które zobaczysz poniżej, umieścimy „nopass”.

./easyrsa gen-req servidor-openvpn-redeszone nopass

Wyjście terminala jest następujące:

root @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa gen-req serwer-openvpn-redeszone nopass

Uwaga: przy użyciu konfiguracji Easy-RSA z: ./vars

Korzystanie z SSL: openssl OpenSSL 1.1.1d 10 września 2019 r
Generowanie klucza prywatnego WE
zapisywanie nowego klucza prywatnego do „/home/bron/EasyRSA-v3.0.6/pki/private/server-openvpn-redeszone.key.bHJsAFg0KR”
-
Zostaniesz poproszony o wprowadzenie informacji, które zostaną włączone
do żądania certyfikatu.
To, co zamierzasz wprowadzić, to tak zwana nazwa wyróżniająca lub nazwa wyróżniająca.
Istnieje sporo pól, ale możesz zostawić trochę pustych
Dla niektórych pól będzie wartość domyślna,
Jeśli wpiszesz „.”, Pole pozostanie puste.
-
Nazwa zwykła (np. Nazwa użytkownika, hosta lub serwera) [server-openvpn-redeszone]:

Prośba o parę kluczy i certyfikat zakończona. Twoje pliki to:
wymaganie: /home/bron/EasyRSA-v3.0.6/pki/reqs/server-openvpn-redeszone.req
klucz: /home/bron/EasyRSA-v3.0.6/pki/private/servidor-openvpn-redeszone.key

Po utworzeniu certyfikatu musimy podpisać go u CA w trybie „serwera”:

./easyrsa sign-req server servidor-openvpn-redeszone

root @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa serwer znak-req serwer-openvpn-redeszone

Uwaga: przy użyciu konfiguracji Easy-RSA z: ./vars

Korzystanie z SSL: openssl OpenSSL 1.1.1d 10 września 2019 r

Masz zamiar podpisać następujący certyfikat.
Sprawdź szczegóły pokazane poniżej, aby uzyskać dokładność. Zwróć uwagę, że ta prośba
nie został zweryfikowany kryptograficznie. Upewnij się, że pochodzi od zaufanego
źródło lub zweryfikowałeś sumę kontrolną żądania u nadawcy.

Temat żądania, który ma być podpisany jako certyfikat serwera na 1080 dni:

temat =
commonName = serwer-openvpn-redeszone

Wpisz słowo „tak”, aby kontynuować, lub inne dane wejściowe, aby przerwać.
Potwierdź szczegóły wniosku: tak
Korzystanie z konfiguracji z /home/bron/EasyRSA-v3.0.6/pki/safessl-easyrsa.cnf
Wprowadź frazę hasła dla /home/bron/EasyRSA-v3.0.6/pki/private/ca.key:
Sprawdź, czy żądanie jest zgodne z podpisem
Podpis ok
Nazwa wyróżniająca podmiotu jest następująca
commonName: ASN.1 12: „server-openvpn-redeszone”
Certyfikat ma być poświadczony do 23 grudnia 11:40:22 2022 GMT (1080 dni)

Wypisz bazę danych z 1 nowymi wpisami
Zaktualizowano bazę danych

Certyfikat utworzony pod adresem: /home/bron/EasyRSA-v3.0.6/pki/issued/servidor-openvpn-redeszone.crt

Utworzyliśmy już plik .crt, którego użyjemy później w pliku konfiguracyjnym OpenVPN.

Utwórz certyfikaty klienta i podpisz je w urzędzie certyfikacji

Kroki, które zobaczysz poniżej, będziemy musieli wykonać raz DLA KAŻDEGO KLIENTA, którego będziemy tworzyć. Oznacza to, że jeśli mamy zamiar utworzyć 2 klientów, musimy dwukrotnie wykonać kroki tworzenia i podpisywania. W tej części wskazane jest tworzenie certyfikatów klienta z hasłem, dzięki czemu mamy pewność, że w przypadku utraty certyfikatu nikt nie będzie mógł z niego korzystać. Nie będziemy wprowadzać żadnego hasła w instrukcji (nopass umieścimy na końcu).

./easyrsa gen-req cliente1-openvpn-redeszone nopass

root @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa gen-req klient1-openvpn-redeszone nopass

Uwaga: przy użyciu konfiguracji Easy-RSA z: ./vars

Korzystanie z SSL: openssl OpenSSL 1.1.1d 10 września 2019 r
Generowanie klucza prywatnego WE
zapisywanie nowego klucza prywatnego do '/home/bron/EasyRSA-v3.0.6/pki/private/cliente1-openvpn-redeszone.key.YflrPvFgdV'
-
Zostaniesz poproszony o wprowadzenie informacji, które zostaną włączone
do żądania certyfikatu.
To, co zamierzasz wprowadzić, to tak zwana nazwa wyróżniająca lub nazwa wyróżniająca.
Istnieje sporo pól, ale możesz zostawić trochę pustych
Dla niektórych pól będzie wartość domyślna,
Jeśli wpiszesz „.”, Pole pozostanie puste.
-
Nazwa zwykła (np. Nazwa użytkownika, hosta lub serwera) [client1-openvpn-redeszone]:

Prośba o parę kluczy i certyfikat zakończona. Twoje pliki to:
wymaganie: /home/bron/EasyRSA-v3.0.6/pki/reqs/cliente1-openvpn-redeszone.req
klucz: /home/bron/EasyRSA-v3.0.6/pki/private/cliente1-openvpn-redeszone.key

Po utworzeniu musimy go podpisać:

./easyrsa sign-req client cliente1-openvpn-redeszone

root @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa sign-req klient klient1-openvpn-redeszone

Uwaga: przy użyciu konfiguracji Easy-RSA z: ./vars

Korzystanie z SSL: openssl OpenSSL 1.1.1d 10 września 2019 r

Masz zamiar podpisać następujący certyfikat.
Sprawdź szczegóły pokazane poniżej, aby uzyskać dokładność. Zwróć uwagę, że ta prośba
nie został zweryfikowany kryptograficznie. Upewnij się, że pochodzi od zaufanego
źródło lub zweryfikowałeś sumę kontrolną żądania u nadawcy.

Temat żądania, który ma być podpisany jako certyfikat klienta na 1080 dni:

temat =
commonName = klient1-openvpn-redeszone

Wpisz słowo „tak”, aby kontynuować, lub inne dane wejściowe, aby przerwać.
Potwierdź szczegóły wniosku: tak
Korzystanie z konfiguracji z /home/bron/EasyRSA-v3.0.6/pki/safessl-easyrsa.cnf
Wprowadź frazę hasła dla /home/bron/EasyRSA-v3.0.6/pki/private/ca.key:
Sprawdź, czy żądanie jest zgodne z podpisem
Podpis ok
Nazwa wyróżniająca podmiotu jest następująca
commonName: ASN.1 12: „client1-openvpn-redeszone”
Certyfikat ma być poświadczony do 23 grudnia 11:41:36 2022 GMT (1080 dni)

Wypisz bazę danych z 1 nowymi wpisami
Zaktualizowano bazę danych

Certyfikat utworzony pod adresem: /home/bron/EasyRSA-v3.0.6/pki/issued/cliente1-openvpn-redeszone.crt

Gdybyśmy chcieli stworzyć i podpisać certyfikat numer 2 dla innego klienta, powinniśmy umieścić coś takiego:

./easyrsa gen-req cliente2-openvpn-redeszone nopass ./easyrsa sign-req client cliente2-openvpn-redeszone

Pamiętaj, że jeśli chcesz podać hasło, musimy usunąć „nopass”.

Zorganizuj certyfikaty .crt i .key serwera i klienta

Bardzo ważnym jest uporządkowanie certyfikatów serwera i klienta według folderów. Certyfikaty serwera i klienta znajdują się w ścieżce „/ pki / issuer /”, a klucze prywatne w „/ pki / private”, a ca.crt znajduje się w katalogu głównym folderu „pki”. Musimy utworzyć trzy foldery z następującą zawartością (na razie):

  • serwer: ca.crt, server-openvpn-redeszone.crt, server-openvpn-redeszone.key
  • klient1: ca.crt, klient1-openvpn-redeszone.crt, klient1-openvpn-redeszone.key
  • klient2: ca.crt, klient2-openvpn-redeszone.crt, klient2-openvpn-redeszone.key

Utwórz parametry Diffiego-Hellmanna i klucz tls-crypt (tls-auth w starszych systemach)

Po utworzeniu i podpisaniu certyfikatów, wcześniej musieliśmy utworzyć parametry Diffie-Hellmanna, aby umieścić je w folderze „serwer”, aby je wygenerować, użyliśmy „./easyrsa gen-dh”, ale w przypadku korzystania z ECDHE nie jest to konieczne aby utworzyć lub wskazać go w pliku konfiguracyjnym serwera. To, co musimy utworzyć, to klucz tls-crypt o nazwie ta.key lub cokolwiek chcemy. Kolejność, którą musimy ułożyć, jest następująca:

openvpn --genkey --secret ta.key

Ten klucz ta.key musi być umieszczony na serwerze i na WSZYSTKICH klientach.

Gdy już tu dotrzemy, nasze foldery z certyfikatami powinny mieć następujące elementy:

  • serwer: ca.crt, server-openvpn-redeszone.crt, server-openvpn-redeszone.key, dh.pem (Diffie-Hellmann, OPCJONALNIE, ponieważ nie będziemy go używać z ECDHE), ta.key (tls-crypt)
  • klient1: ca.crt, klient1-openvpn-redeszone.crt, klient1-openvpn-redeszone.key, ta.key (tls-crypt)
  • klient2: ca.crt, klient2-openvpn-redeszone.crt, klient2-openvpn-redeszone.key, ta.key (tls-crypt)

Jeśli mamy zamiar używać tls-auth zamiast tls-crypt (ponieważ na przykład nie jest obsługiwany), musimy wziąć to pod uwagę:

W Konfiguracja serwera (server.conf lub server.ovpn) musimy umieścić:

tls-auth ta.key 0 (0 z Incoming)

W konfiguracja klienta (client.conf lub client.ovpn) musimy umieścić:

tls-auth ta.key 1 (1 z poczty wychodzącej)

Następnie umieszczamy tabelę z tym, czym jest każdy certyfikat (nazwy są różne).

Kiedy wszystko jest uporządkowane w folderach, teraz musimy utworzyć plik konfiguracyjny (.conf dla systemów Linux i .ovpn dla systemów Windows). Tam są przykłady plików konfiguracyjnych na oficjalnej stronie OpenVPN , a także w ścieżce „/ usr / share / doc / openvpn / examples / examples-config-files /”.

Pierwszą rzeczą, którą musimy zweryfikować, jest to, czy nasz serwer i klienci obsługują szyfry symetryczne, tls-ciphersuites (TLS 1.3) i tls-cipher (TLS 1.2) oraz skonfigurowane krzywe eliptyczne. Musimy to wziąć pod uwagę, ponieważ w przeciwnym razie spowoduje to błąd. Aby przeprowadzić te weryfikacje, musimy wykonać:

  • openvpn – szyfry pokazowe
  • openvpn –show-tls (pokaże nam, czy obsługuje TLS 1.3 i które, na przykład TLS 1.2)
  • openvpn – pokaż krzywe

Skonfiguruj serwer OpenVPN i uruchom go

Konfiguracja serwera OpenVPN jest niezbędna, aby nadać klientom uprawnienia dostępu do naszej sieci lokalnej, skonfigurować negocjacje TLS. Ponieważ mamy setki dostępnych konfiguracji, zamierzamy umieścić naszą konfigurację z komentarzami wyjaśniającymi każdy parametr, możesz bez problemu skopiować i wkleić konfigurację. Pamiętaj, że dla Linuksa musi mieć rozszerzenie .conf, a dla Windows .ovpn.

#PORT DO UŻYCIA PRZEZ TCP LUB UDP, DOMYŚLNIE JEST 1194.
#PROTOCOL, ABY KORZYSTAĆ Z TCP LUB UDP
# TRYB TUNELOWANIA
Port 11949
proto udp
dev tun

# CERTYFIKATY
# JEŻELI MAMY .CONF W TYM SAMYM FOLDERZE, NIE BRAKUJE MIERNIKA TRASY, TYLKO NAZWĘ.
# JEŚLI SĄ NA INNEJ TRASIE, POWINNIŚMY PRZETESTOWAĆ TRASĘ WSZYSTKICH

ca ca.crt
serwer certyfikatu-openvpn-redeszone.crt
klucz server-openvpn-redeszone.key
#dh dh.pem (OPCJONALNIE PONIEWAŻ UŻYWAMY ECDHE)
dh żaden
klucz tls-crypt

# SPRAWDZAMY CERTYFIKATY KLIENTÓW (WIĘKSZE BEZPIECZEŃSTWO)
zdalny klient cert-tls

# MODYFIKUJEMY SYMETRYCZNE SZYFROWANIE KANAŁU DANYCH, KANAŁU STEROWANIA TLS ORAZ ALGORYTMU W CELU WERYFIKACJI INTEGRALNOŚCI.
# JEŚLI UŻYWAMY AES-256-GCM, WPROWADZANIE AUTORYZACYJNEJ DYREKTYWY NIE JEST KONIECZNE, PONIEWAŻ NIE JEST UŻYWANA.

szyfr AES-256-GCM
tls-ciphersuites TLS_AES_256_GCM_SHA384: TLS_CHACHA20_POLY1305_SHA256
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384: TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256
krzywa ecdh secp521r1
tls-wersja-min 1.2
reneg-sek 0
autoryzacja SHA512

# TOPOLOGIA SIECI (ZALECANA PODSIECI) I PODSIEC WIRTUALNY, W KTÓRYM BĘDĄ KLIENCI.

topologia podsieci
serwer 10.8.0.0 255.255.255.0

# KONFIGURUJEMY SERWER, ABY KLIENCI MIAŁY TEN SAM IP ZAWSZE, PO POŁĄCZENIU.
ifconfig-pool-persist ipp.txt

# ZAPEWNIAMY KLIENTOWI DOSTĘP DO SIECI DOMOWEJ, REALIZUJEMY PRZEKIEROWANIE INTERNETU I DOSTARCZAMY OTWARCIE DNS. WordPress automatycznie umieszcza te symbole << i >>, gdy powinien po prostu wstawić podwójne cudzysłowy: »
push „route 192.168.2.0 255.255.255.0”
push "redirect-gateway def1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

# UMOŻLIWIAMY KOMUNIKACJĘ MIĘDZY KLIENTAMI, POZWALAMY WIEDZIEĆ, CZY TUNEL SIĘ UPADŁ, WŁĄCZAMY KOMPRESJĘ I MAKSYMALNIE 100 KLIENTÓW JEDNOCZEŚNIE
klient-klient
keepalive 10 120
maksymalna liczba klientów 100

# BRAK ZEZWOLEŃ UŻYTKOWNIKA W OPENVPN, DLA BEZPIECZEŃSTWA SERWERA
użytkownik nobody
grupa bez grupy

# KLUCZOWY I STAŁY TUNEL
persist-key
persist-tun

# SERWER ZALOGUJE SIĘ W TYM PLIKU, KONFIGURACJA VERB 3 DLA DZIENNIKÓW.
status openvpn-status.log
czasownik 3
jawne wyjście powiadomienie 1

Do tej pory dotarliśmy z konfiguracją serwera, aby go uruchomić będziemy musieli po prostu umieścić „openvpn server.conf” w systemach Linux i uruchomi się on automatycznie, pod koniec bootowania należy wpisać „Initialization Sequence Completed” .

Skonfiguruj klienta (lub klientów)

Następnie możesz zobaczyć konfigurację klienta powiązaną z serwerem, którą widzieliśmy wcześniej. Jedyną różnicą między różnymi klientami .conf jest na przykład ścieżka certyfikatów. Bardzo ważne, aby szyfr, szyfrowanie tls i inne parametry były dokładnie takie same, w przeciwnym razie nie połączy się z serwerem. Pamiętaj, że dla Linuksa musi mieć rozszerzenie .conf, a dla Windows .ovpn.

# KONFIGURUJEMY W TRYBIE KLIENTA, TRYBIE TUN, PROTOKOŁU UDP.

klient
dev tun
proto udp

# NINIEJSZA DYREKTYWA TO POŁĄCZENIE Z PUBLICZNYM IP LUB DOMENĄ SERWERA OPENVPN, MUSIMY RÓWNIEŻ ZŁOŻYĆ TEN SAM PORT SERWERA
zdalne 127.0.0.1 11949

# CIĄGŁE ROZPOZNAWANIE IP LUB DOMENY, ABY POŁĄCZYĆ NAS, KLUCZ I STAŁY TUN JAKO SERWER.
resolv-retry infinite
Nobind
persist-key
persist-tun

#RUTA DE LA CA, CERTYFIKATY KLIENTA I TA.KEY.
# JEŚLI MAMY TO W TYM SAMYM FOLDERZE, NIE JEST KONIECZNE UMIESZCZANIE CAŁEJ TRASY.
ca ca.crt
cert klient1-openvpn-redeszone.crt
klucz client1-openvpn-redeszone.key
klucz tls-crypt

# SPRAWDŹ TOŻSAMOŚĆ SERWERA, UŻYJ SZYFROWANIA SYMETRYCZNEGO GCM, TLS 1.2 I KONFIGURACJI AUTH. Jeśli nasz klient nie obsługuje TLS 1.3.
zdalny serwer cert-tls
szyfr AES-256-GCM
autoryzacja SHA512

kompresować

# Jeśli nasz klient obsługuje TLS 1.3, dodajemy tę dyrektywę:
# tls-ciphersuites TLS_AES_256_GCM_SHA384: TLS_CHACHA20_POLY1305_SHA256

# Jeśli nasz klient obsługuje tylko TLS 1.2, dodajemy tę dyrektywę:
# tls-szyfr TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384: TLS-ECDHE-ECDSA-with-CHACHA20-POLY1305-SHA256

# WŁĄCZ DZIENNIK WERBOSE POZIOMU ​​3

czasownik 3

Jeśli korzystasz z systemu Windows, folder certyfikatów z plikiem konfiguracyjnym w rozszerzeniu .ovpn musi znajdować się w domyślnej ścieżce OpenVPN, czyli domyślnie C: UsersBronOpenVPNconfig, chociaż możemy to zmienić. Gdy to zrobisz, jeśli klikniemy prawym przyciskiem myszy OpenVPN w prawym dolnym pasku, zobaczymy nazwę pliku klienta do pomyślnego połączenia. Pod koniec bootowania należy wpisać „Initialization Sequence Completed”, a my pomyślnie połączymy się ze skonfigurowanym serwerem OpenVPN.

Utwórz trasę statyczną w naszym routerze

Aby mieć łączność z lokalną siecią naszego domu, konieczne jest utworzenie trasy statycznej w naszym domowym routerze. Przy konfiguracji 10.8.0.0/24, którą skonfigurowaliśmy na serwerze OpenVPN, musimy stworzyć trasę statyczną z następującymi informacjami:

  • IP podsieci: 10.8.0.0
  • Maska: 255.255.255.0
  • Gateway: lokalny adres IP, na którym uruchamiamy serwer OpenVPN, jeśli np. Mamy zainstalowany na Raspberry PI o IP 192.168.1.100 to musimy umieścić to IP.

Główne problemy i awarie połączenia podczas łączenia

Kiedy po raz pierwszy konfigurujemy serwer OpenVPN, możemy mieć różne problemy z połączeniem różnych klientów. Przed wypisaniem różnych problemów i awarii połączenia, które mogą się pojawić, musimy powiedzieć, że jeśli postępowałeś zgodnie z samouczkiem krok po kroku, nie powinieneś mieć żadnych błędów podczas łączenia, ponieważ szczegółowo sprawdziliśmy konfigurację. Konfiguracja zarówno serwera jak i klientów odbywa się w „czasowniku 3” czyli zalecanym poziomie rejestracji dla wszystkich użytkowników, w przypadku problemów z połączeniem, jeśli nie znajdziemy awarii będziemy musieli zwiększyć poziom rejestracji i wstaw „czasownik 5”, aby uzyskać więcej szczegółów o wszystkim, co dzieje się w związku.

ROZWIĄZYWANIE: nie można rozwiązać adresu hosta: xxxx.no-ip.org:11949 (nieznany host).

Ten błąd jest spowodowany tym, że nie można znaleźć serwera OpenVPN, musimy sprawdzić, czy domena, którą wstawiliśmy jest poprawna, ten błąd wynika z tego, że nie może znaleźć żadnego publicznego adresu IP skojarzonego z tą domeną. Najczęstsze jest to, że błędnie umieściliśmy domenę w kliencie VPN, że domena, do której wprowadziliśmy, nie istnieje, ponieważ jeszcze jej nie utworzyliśmy lub usługa dynamicznego DNS nie działa poprawnie.

Nie można określić protokołu IPv4 / IPv6

Ten błąd jest powiązany z poprzednim, weszliśmy do domeny, której nie jest w stanie znaleźć, ani przy użyciu protokołu IPv4, ani protokołu IPv6.

Odebrano SIGUSR1 [soft, init_instance], proces restartowania

To ostrzeżenie informuje nas, że proces połączenia z serwerem VPN zostanie zrestartowany, po prostu wskazuje, że wcześniej wystąpił błąd i że spróbuje ponownie nawiązać połączenie.

ZARZĄDZANIE:> STAN: 1603127258, CZEKAJ ,,,,,,

Chociaż nie jest to sam w sobie błąd, jeśli klient OpenVPN stale pozostaje w tej sekcji połączenia, dzieje się tak dlatego, że nie mamy żadnych otwartych portów na naszym routerze lub zaporze ogniowej do serwera VPN, w zależności od tego, czy używaliśmy TCP czy UDP i dla wybranego portu musimy otworzyć jeden lub drugi port. Dzieje się tak, ponieważ klient może bez problemu zlokalizować adres IP, ale czeka na odpowiedź z serwera OpenVPN, która nigdy nie nadejdzie.

Ten błąd zwykle występuje również wtedy, gdy nie mamy uruchomionego serwera VPN, jeśli zapomnieliśmy go uruchomić na początku, będziemy mieli ten problem. Rozwiązaniem jest uruchomienie go i czekanie na pojawienie się pierwszych klientów.

UWAGA: opcja –user nie jest zaimplementowana w systemie Windows

W systemach operacyjnych Windows nie musimy umieszczać dyrektywy „użytkownik nikt”, coś, co w systemach operacyjnych opartych na Linuksie jest wskazane.

UWAGA: opcja –group nie jest zaimplementowana w systemie Windows

W systemach operacyjnych Windows nie musimy umieszczać dyrektywy „group nogroup”, co w systemach operacyjnych opartych na Linuksie jest wskazane.

OSTRZEŻENIE: Ignorujesz opcję „dh” w trybie klienta tls, włącz ją tylko do konfiguracji serwera

W kliencie VPN nie musimy umieszczać niczego związanego z Diffie-Hellmannem, ta dyrektywa znajduje się tylko w pliku konfiguracyjnym serwera, w kliencie jest po prostu niepotrzebna.

Błąd rozpakowywania tls-crypt: uwierzytelnianie pakietu nie powiodło się i błąd TLS: rozpakowywanie tls-crypt nie powiodło się z [AF_INET]

Uwierzytelnianie za pomocą dyrektywy tls-crypt nie powiodło się. Dzieje się tak zazwyczaj dlatego, że zawartość pliku ta.key na serwerze i klientach jest inna. Musimy pamiętać, że ta.key musi być dokładnie taki sam zarówno na serwerze, jak i na wszystkich klientach VPN, których będziemy używać.

Błąd TLS: odebrany pakiet sterujący, którego nie można trasować z [AF_INET] i błąd TLS: lokalne / zdalne klucze TLS nie są zsynchronizowane

Klucze TLS, których użyliśmy nie są poprawne na serwerze i / lub kliencie, konieczne jest sprawdzenie konfiguracji certyfikatów, a także ta.key. Ten błąd występuje szczególnie wtedy, gdy mamy niepoprawnie skonfigurowany ta.key.

Błąd TLS: odebrano pakiet sterujący, którego nie można trasować

To jest ogólny błąd połączenia TLS, być może błędnie skopiowałeś CA, certyfikat serwera (w ustawieniach serwera), certyfikat klienta (w ustawieniach klienta). Ten błąd jest spowodowany niepowodzeniem podczas kopiowania różnych certyfikatów.

OSTRZEŻENIE: 'link-mtu' jest używane niespójnie, local = 'link-mtu 1549 ′, remote =' link-mtu 1550 ′

Ten błąd pojawia się, ponieważ konieczne jest, aby MTU było takie samo zarówno na lokalnym (klient), jak i zdalnym (serwer VPN), jeśli MTU jest niepoprawnie skonfigurowane, połączenie zostanie nawiązane, ale będziemy mieli bardzo niską wydajność, i jest możliwe, że połączenie VPN zostanie przerwane w dowolnym momencie.

Ten błąd występuje również wtedy, gdy aktywowaliśmy kompresję danych na serwerze VPN, a nie mamy jej skonfigurowanej na kliencie. Dzieje się tak również, gdy mamy inny algorytm kompresji na serwerze / klientach. Konieczne jest, aby serwer i klienci używali tej samej kompresji lub nie używali kompresji, która jest najbardziej zalecana ze względów bezpieczeństwa.

Aby rozwiązać ten błąd, po prostu umieść dyrektywę: «kompresuj» na kliencie, aby akceptował kompresję wysyłaną przez serwer za pośrednictwem wykonywanego polecenia «PUSH».

OSTRZEŻENIE: „comp-lzo” jest obecny w zdalnej konfiguracji, ale brakuje go w lokalnej konfiguracji, remote = „comp-lzo”

Ten błąd pojawia się, gdy na serwerze VPN aktywowaliśmy kompresję danych za pomocą comp-lzo, a na klientach w ogóle nie mamy kompresji. Konieczne jest, aby zarówno serwer, jak i klienci mieli dokładnie ten sam algorytm kompresji. Aby rozwiązać ten błąd, po prostu umieść dyrektywę: «kompresuj» na kliencie, aby akceptował kompresję wysyłaną przez serwer za pośrednictwem wykonywanego polecenia «PUSH».

Błąd „zapis do TUN / TAP: nieznany błąd (kod = 122)” może również pojawić się z powodu tej funkcji kompresji.

Błąd TLS: nie powiodło się uzgadnianie TLS

Wystąpił błąd podczas negocjowania informacji w kanale kontrolnym, możliwe, że mamy różne zestawy tls-cipher lub tls-ciphersuites i nie ma wspólnego algorytmu kanału sterującego, co powoduje niepowodzenie „uzgadniania” i nie można kontynuować.

Aktualizacje i nowości w nowych wersjach OpenVPN

OpenVPN nie przestaje aktualizować i wydawać nowych wersji z poprawkami błędów, ulepszeniami wydajności, a także ulepszeniami bezpieczeństwa, z ostatecznym celem, aby połączenia VPN były tak bezpieczne, jak to tylko możliwe. Następnie wyjaśnimy niektóre ulepszenia, które wprowadzi OpenVPN 2.5, które pojawią się bardzo szybko, ponieważ znajduje się w fazie „Release Candidate”.

Dodano Tls-crypt-v2

tls-crypt to funkcjonalność, która pozwala nam złagodzić ataki DoS i DDoS na serwery OpenVPN, dzięki tym kluczom, które tworzymy bezpośrednio w OpenVPN, będziemy mogli dokonać wstępnego uwierzytelnienia każdego klienta, aby później wejść z jego certyfikat klienta. Pierwsza wersja tls-crypt wymaga, aby zarówno serwer, jak i wszyscy klienci mieli dokładnie ten sam klucz tls-crypt. Dzięki tls-crypt-v2 możemy sprawić, że każdy klient będzie miał własny klucz tls-crypt, w ten sposób bardzo duże organizacje lub dostawcy OpenVPN mogą odpowiednio chronić swoje serwery, tworząc kilka z tych kluczy.

Obsługa szyfrowania ChaCha20-Poly1305

Obecnie najbezpieczniejszym szyfrowaniem symetrycznym, które można zastosować w kanale danych, jest AES-256-GCM i AES-128-GCM. Dzięki najnowszej wersji OpenVPN 2.5 będziemy mieli również możliwość wyboru popularnego szyfrowania ChaCha20-Poly1305, które wykorzystuje VPN, takie jak WireGuard.

Ulepszona negocjacja szyfrowania w kanale danych

Ściśle związane z poprzednim punktem, mamy to, że w nowej wersji OpenVPN 2.5, opcja ncp-ciphers została przemianowana na data-ciphers, chociaż stara nazwa będzie nadal akceptowana. Zmiana ma na celu uniknięcie dwuznaczności „–cipher” i „–tls-cipher”. Teraz klienci VPN powiedzą serwerowi, jakie typy szyfrów obsługuje, a serwer wybierze pierwszy wspólny szyfr z listy obsługiwanych szyfrów danych, zamiast używać pierwszego z listy, co przyspieszy ustanowienie VPN . Pozwala nam to również na to, że jeśli serwer ma konfigurację „szyfrów danych” ChaCha20-Poly1305: AES-256-GCM, a klient ma ChaCha20-Poly1305, będzie go używał, ponieważ klient go obsługuje.

Wsparcie dla BF-CBC zostało domyślnie usunięte

Teraz domyślna konfiguracja OpenVPN nie pozwala na używanie BF-CBC, najnowsza wersja akceptuje tylko szyfry AES-256-GCM i AES-128-GCM dla kanału danych. Musimy pamiętać, że w OpenVPN mamy BG-CBC, gdy nie mamy w konfiguracji opcji –cipher lub –ncp-ciphers. Jeśli chcesz użyć tego typu szyfrowania, musisz go jawnie włączyć.

Mamy nadzieję, że ta instrukcja była dla Ciebie pomocna. Jeśli masz jakieś pytania, które możesz skomentować, zalecamy odwiedź oficjalne OpenVPN HOWTO gdzie znajdziesz wszystkie informacje o różnych parametrach, których możesz użyć. Plik STRONA MAN OpenVPN 2.4 gdzie masz wszystkie dostępne parametry, jest również bardzo pomocne.