OPENVPN - The Easy Tutorial - Průvodce OpenVPN

openmaniak openvpn square little blue OpenVPN openmaniak openvpn arrow right little blue Průvodce OpenVPN
Last Update: Mar 12 2008


Nástroj
Instalace
Ergonomie
Fórum



Podrobnosti Co je OpenVPN?
Ukázky
Předpoklady a instalace
Průvodce OpenVPN
-----Bezpečný režim-----------
Transparentní tunel
Statické klíče
SSL a PKI (certifikáty)
-----Případová studie-----------
VPN přes IP (TUN)
VPN přes Ethernet (TAP)
Rozšířené nastavení VPN
----------------
Přepínání
Směrování

Czech translation by Ivo Raisr.



⚠️⚠️⚠️
Please check our page about COVID-19!!
100 Questions and answers about Coronavirus.

⚠️⚠️⚠️
Merci de consulter notre page sur la COVID-19 !!
227 questions et réponses sur le Coronavirus.



openmaniak openvpn square little blue Instalace OpenVPN:

Dle průvodce instalací OpenVPN.

openmaniak openvpn square little blue Architektura klient - server:

Jsou-li dány dva stroje s OpenVPN, musí být jeden prohlášen za server a druhý za klienta. V některých případech může být každý stroj prohlášen za server nebo za klienta, ale v jiných případech je třeba přímo říci, že jeden bude server a druhý klient. Podívejme se na to podrobněji.
Před vytvořením VPN přes SSL se klient nejdříve připojí na daný port serveru, zatímco server ke klientovi přistupovat nepotřebuje. Ukažme si to na příkladu, ve kterém chceme vytvořit VPN mezi pracovním prostředím a zařízením přímo připojeným k internetu - řekněme počítačem u tebe doma.
V takovémto případě může klient přistoupit k serveru ale ne naopak. Je to proto, že klient je umístěn v lokální síti a přistupuje k internetu přes proxy nebo firewall. Proxy nebo firewall totiž použije svoji vlastní IP adresu nebo nějakou jinou (tzv. skrývání adres - hide NAT) místo zdrojové adresy klienta. Jakmile je ale tunel vytvořen, je samozřejmě v jeho rámci možné navazovat spojení oběma směry.

openmaniak openvpn tutorial hide nat

openmaniak openvpn square little blue Konfigurační soubor:

Vytvoříme soubor, ve kterém bude uložena konfigurace OpenVPN.
V našem příkladě se bude soubor nazývat config.txt a bude uložen v adresáři /home/user nebo "C:\Program Files\OpenVPN\config\" v závislosti na tom, zda je použit operační systém Linux/UNIX nebo Microsoft Windows.

Konfigurační parametry jsou vysvětleny v následujících odstavcích.

openmaniak openvpn square little blue Určení klient nebo server:

SERVER KLIENT
# IP ADRESA SERVERU
# IP adresa klienta není třeba
# IP ADRESA SERVERU
remote 100.0.0.1
#
openmaniak openvpn square little blue Tunelový režim:

Můžeš si vybrat mezi tunelem na bázi IP (ovladač TUN) a na bázi Ethernet (ovladač TAP).
Tunelování na bázi IP je také nazýváno směrovaným režimem a tunelování na bázi Ethernetu jako přepínaný režim.
Doporučuje se upřednostnit tunelování na bázi IP (implicitní nastavení), pokud nepotřebuješ tunelem posílat Ethernetová data jako například NetBIOS.

openmaniak openvpn square little blue Tunelový port:

Implicitní zdrojový a cílový port tunelu je UDP 1194. Měl bys zachovat implicitní nastavení, pokud jej nepotřebuješ změnit kvůli firewallu. Upřednostni UDP porty.
Použití TCP může vést k nižší výkonnosti.

Většina aplikací používá TCP. Pokud použiješ tunel na bázi TCP, vytvoříš spojení TCP v rámci TCP tunelu. Není to doporučováno, protože jakmile dojde k opětovnému poslání paketů ve vnitřním TCP tunelu, k přepočítávání dojde v obou spojeních, což má za následek nižší výkonnost - vyšší přenosové časy. K tunelování svých aplikací dej tedy přednost UDP, které na rozdíl od TCP netrpí režií mechanismu kontroly chyb.
Více detailů o problémech s tunely TCP přes TCP.

SERVER a KLIENT
# TCP nebo UDP TUNEL
# TCP tunel

proto tcp
# Doporučený je UDP tunel
proto udp
# použij TCP nebo UDP ale ne obojí
#
# TCP NEBO UDP PORT

port 1194
openmaniak openvpn square little blue Nastavení firewallu:

Je nanejvýše důležité se ujistit, že se podaří vytvořit UDP nebo TCP spojení mezi IP adresou tvého klienta OpenVPN a IP adresou serveru OpenVPN na předem nakonfigurovaném portu.
Zde je příklad bezpečnostního pravidla, které může být nastaveno na firewallu:



Vzhledem k jednoduchosti konfigurace OpenVPN jsou problémy s vytvořením spojení nejčastěji díky omezením IP adres nebo portů na straně klienta nebo serveru.

openmaniak openvpn square little blue Ethernetový nebo IP tunel:

Můžeš si vybrat mezi sítěmi VPN na bázi Ethernetu (přepínané) nebo IP (směrované) s použitím síťových ovladačů TAP nebo TUN. Tyto ovladače jsou dostupné na všech platformách a jsou již součástí Linuxového kernelu 2.4 a vyšší.
Upřednostni TUN (implicitní nastavení), pokud nepotřebuješ sítí VPN posílat Ethernetová data jako například NetBIOS.

Takto se zjistí, zda jsou ovladače TUN a TAP správně nahrány:

#lsmod | grep tun
tun 12672 1

Pozor: modul "tun" je zároveň i ovladačem TAP.
Pokud nedostaneš žádnou odpověď, můžeš modul do kernelu zavést takto:

#modprobe tun
SERVER a KLIENT
# ETHERNETOVÝ NEBO IP TUNEL
# "dev tun" vytvoří směrovaný IP tunel

dev tun
# "dev tap" vytvoří přepínaný Ethernetový tunel
dev tap
# použij "dev tun" nebo "dev tap" ale
# ne obojí
openmaniak openvpn square little blue BEZPEČNOSTNÍ ARCHITEKTURA OpenVPN:

openmaniak openvpn arrow right little blue Transparentní tunel:

OpenVPN pouze tuneluje data bez jakékoliv autentizace, utajení nebo zajištění celistvosti. Jinými slovy, pokud nenakonfiguruješ OpenVPN podle následujících pokynů, mohou být data přenášená tunelem kýmkoli přečtena a modifikována.

SERVER a KLIENT
# konfigurace klienta A serveru
# bez zajištění celistvosti (hašovací
# funkce)

auth none
# bez kryptování (šifrování)
cipher none
openmaniak openvpn arrow right little blue Statické klíče:

Tajný a trvalý klíč je sdílen mezi bránami VPN.

Nejprve vytvoř statické klíče podle průvodce vytvářením statických klíčů.
SERVER a KLIENT
# STATICKÉ KLÍČE
# Linuxový systém
static /home/user/openvpn/key.txt
# systém s Windows
static "C:\\Program Files\\OpenVPN\\config\\key.txt"
#openvpn /home/teddybear/openvpn/config.txt
>openvpn "C:\Program Files\OpenVPN\config\config.txt"

openmaniak openvpn arrow right little blue SSL/TLS:

- Server nebo klient SSL/TLS:

SERVER KLIENT
# SERVER SSL/TLS
tls-server
# KLIENT SSL/TLS
tls-client
- Certifikáty a veřejné klíče:

Každé zařízení musí mít svůj privátní a veřejný klíč; veřejný klíč je součástí certifikátu.
Certifikát certifikační autority (CA) musí být také dostupný každému zařízení s OpenVPN.

K pochopení certifikátů a veřejných klíčů se podívej se do průvodce PKI. Nalezneš tam také návod, jak vytvořit privátní a veřejné klíče a certifikáty.
SERVER KLIENT
# CERTIFIKÁTY A PRIVÁTNÍ KLÍČ
# certifikát autority (veřejný klíč CA)

ca ca.key
# certifikát serveru (veřejný klíč serveru)
cert server.crt
# privátní klíč serveru
key server.key
# CERTIFIKÁTY A PRIVÁTNÍ KLÍČ
# certifikát autority (veřejný klíč CA)

ca ca.key
# certifikát klienta (veřejný klíč klienta)
cert client.crt
# privátní klíč klienta
key client.key
- Nastavení Diffie-Hellmann (DH):

Jakmile jsou si obě strany OpenVPN jisté svojí vzájemnou identitou, může být DH použito k vytvoření sdíleného tajného klíče pro hašovací funkci a šifrovací algoritmus.
Kombinací privátního klíče vytvořeného algoritmem DH s veřejným klíčem vytvořeným DH na druhé straně OpenVPN je možné odvodit sdílené tajemství, které znají pouze tyto dvě strany OpenVPN.

Průvodce SSL ti poskyte více informací ohledně nastavení DH.


SERVER KLIENT
# nastavení Diffie-Hellman
dh dh1024.pem
# na klientu žádné nastavení
#
Toto sdílené tajemství, vytvořené algoritmem DH, je srovnatelné se statickými klíči. Ovšem s tím rozdílem, že statické klíče se vytvoří a vymění pouze jednou, kdežto sdílené tajemství při každém vytvoření VPN. Tyto klíče jsou dále používány symetrickými šifrovacími algoritmy a hašovacími funkcemi, jak je ukázáno v dalších dvou odstavcích.

openmaniak openvpn square little blue Šifrovací algoritmy

SERVER a KLIENT
# ŠIFROVACÍ ALGORITMUS
cipher AES-256-CBC
- Utajení (ochrana dat před přečtením) je zajištěno symetrickými šiframi jako například 3DES nebo AES.
Implicitním šifrovacím algoritmem OpenVPN je Blowfish.
Zjištění dostupných algoritmů:

#openvpn --show-ciphers
DES-CBC 64 bit default key (fixed)
IDEA-CBC 128 bit default key (fixed)
RC2-CBC 128 bit default key (variable)
DES-EDE-CBC 128 bit default key (fixed)
DES-EDE3-CBC 192 bit default key (fixed)
DESX-CBC 192 bit default key (fixed)
BF-CBC 128 bit default key (variable)
RC2-40-CBC 40 bit default key (variable)
CAST5-CBC 128 bit default key (variable)
RC5-CBC 128 bit default key (variable)
RC2-64-CBC 64 bit default key (variable)
AES-128-CBC 128 bit default key (fixed)
AES-192-CBC 192 bit default key (fixed)
AES-256-CBC 256 bit default key (fixed)


CBC (jako Cipher Block Chaining - zřetězený šifrovací blok) je pracovní režim šifrovacího algoritmu, který šifruje bloky dat (AES, DES nebo Blowfish). CBC šifruje malé kousky dat namísto zpracovávání celého bloku najednou. Další pracovní režimy šifrovacích algoritmů jsou EBC, OFB, CFB. Doporučený je režim CBC.

openmaniak openvpn square little blue Hašovací funkce

- Algoritmy založené na hašovací funkci se používají k zajištění celistvosti a ochrany dat proti změnám.
Častým algoritmem je HMAC ve spojení se SHA1 nebo MD5.
OpenVPN implicitně používá algoritmus HMAC-SHA1.
Zjištění dostupných algoritmů:

#openvpn --show-digests
MD2 128 bit digest size
MD5 128 bit digest size
RSA-MD2 128 bit digest size
RSA-MD5 128 bit digest size
SHA 160 bit digest size
RSA-SHA 160 bit digest size
SHA1 160 bit digest size
RSA-SHA1 160 bit digest size
DSA-SHA 160 bit digest size
DSA-SHA1-old 160 bit digest size
MDC2 128 bit digest size
RSA-MDC2 128 bit digest size
DSA-SHA1 160 bit digest size
RSA-SHA1-2 160 bit digest size
DSA 160 bit digest size
RIPEMD160 160 bit digest size
RSA-RIPEMD160 160 bit digest size
MD4 128 bit digest size
RSA-MD4 128 bit digest size


SERVER a KLIENT
# hašovací funkce
auth MD5
"openvpn --show-tls" zobrazí autentizační kód (MAC) použitý k šifrování a označování zpráv používaných během vyjednávání parametrů spojení SSL/TLS. Neměl by být zaměňován s autentizačním kódem použitým k vytvoření tunelu OpenVPN.

openmaniak openvpn arrow right little blue IP ADRESY:

Zvol si IP adresy, které mají být použity uvnitř tunelu.

openmaniak openvpn arrow right little blue Statické IP adresy:

Ve směrovaném režimu musí být zvoleny dvě IP adresy (lokální a vzdálená) v rozmezí 30 bitové síťové masky.
V přepínaném režimu musí být zvolena jedna IP adresa pro lokální stroj OpenVPN a dále síťová maska zahrnující IP adresu serveru.

SERVER KLIENT
# ADRESACE IP
# příklad pro režim IP:
# IP serveru: 10.8.0.1
# IP klienta: 10.8.0.2

ifconfig 10.8.0.1 10.8.0.2
# příklad pro přepínaný režim:
# IP serveru: 10.8.0.1

ifconfig 10.8.0.1 255.255.255.0
# použij nastavení pro přepínaný
# nebo směrovaný režim ale ne obojí
# klient a server musí mít nastaven
# shodný tunelový režim
# ADRESACE IP
# příklad pro režim IP:
# IP serveru: 10.8.0.1
# IP klienta: 10.8.0.2

ifconfig 10.8.0.2 10.8.0.1
# příklad pro přepínaný režim:
# IP klienta: 10.8.0.2

ifconfig 10.8.0.2 255.255.255.0
# použij nastavení pro přepínaný
# nebo směrovaný režim ale ne obojí
# klient a server musí mít nastaven
# shodný tunelový režim
openmaniak openvpn arrow right little blue Dynamické IP adresy:

V tomto případě server vlastní statickou IP adresu a klientům poskytuje dynamické IP adresy jako DHCP server.

SERVER KLIENT
# NASTAVENÍ DHCP
# rozmezí DHCP
# server zvolí první IP adresu
server 10.8.0.0 255.255.255.0
# KLIENT PŘIJÍMÁ NASTAVENÍ SERVERU
# klient by měl přijímat nastavení serveru
# posílaná serverem

pull
openmaniak openvpn square little blue Volitelná nastavení:

OpenVPN nabízí velké množství volitelných nastavení.
Odkazuji tě na manuálovou stránku OpenVPN.

openmaniak openvpn square little blue Nastavení logování:

Úroveň logování se konfiguruje od 0 (minimální) do 15 (maximální). Úrovně "2" a "4" při normálním používání již poskytují slušnou dávku informací.

# Úrovně logování.
# 0 -- tiché s výjimkou velmi závažných chyb.
# 1 -- většinou tiché, zobrazuje i nezávažné síťové chyby.
# 3 -- střední úroveň, dobrá pro normální použití.
# 9 -- rozvláčné, dobré pro odhalování chyb.

SERVER a KLIENT
# ÚROVEŇ LOGOVÁNÍ
# nastavení úrovně logování, 0=min
# 15=max

verb 3


openmaniak openvpn square little blue Uživatel OpenVPN:

Z bezpečnostních důvodů je vždy lepší spouštět program bez administrátorských práv.
Můžeš snížit práva procesu OpenVPN po jeho inicializaci tak, aby běžel jako uživatel "nobody".
Další zajímavý bezpečnostní prvek je omezení práva přístupu OpenVPN k souborům díky vlastnosti "chroot".

Pozor: tato dvě bezpečnostní nastavení jsou dostupná pouze pro systémy Linux/UNIX, ne pro Windows. Další důvod k přechodu na nástroje open-source jako je OS Linux...

SERVER a KLIENT
# BEZPEČNOST OPENVPN - pouze pro
# UNIX

# efektivní uživatel OpenVPN
user nobody
# po inicializaci může OpenVPN
# přistupovat k souborům
# pouze v tomto adresáři
# (adresář může být prázdný)

chroot /etc/openvpn/
openmaniak openvpn square little blue Spuštění OpenVPN:

Ke spuštění OpenVPN slouží následující příkaz:

#openvpn cesta-ke-konfiguračnímu-souboru
Zde jsou dva příklady pro Linux a Windows. Konfigurační soubor se jmenuje "config.txt":

#openvpn /home/teddybear/openvpn/config.txt
>openvpn "C:\Program Files\OpenVPN\config\config.txt"
openmaniak openvpn square little blue Kontrola logu:

Log by měl končit následující řádkou:

Initialization Sequence Completed

To značí, že OpenVPN úspěšně vytvořilo tunel.

openmaniak openvpn square little blue Test spojení:

Běžným nástrojem k testování IP spojení je ping.
Pomocí nástroje ping by brána VPN měla mít přístup k tunelové IP adrese druhé brány.
V našem případě například testujeme tunelovou IP adresu klienta ze serveru:

ping 10.8.0.2
openmaniak openvpn square little blue Kontrola procesu OpenVPN:

Již brzy...


openmaniak openvpn square little blue Některá implicitní nastavení OpenVPN:

NASTAVENÍ: HODNOTA:
zdrojový a cílový port: UDP 1194
tunelový režim: IP tunel (ovladač TUN)
symetrická šifra: Blowfish - CBC (128 bitů)
hašovací funkce: HMAC - SHA1 (160 bitů)
komprese: NE
MTU tunelu: 1500 bytů
úroveň logování: 0
Nahoru