OpenVPN pro mírně pokročilé

Dan Ohnesorg 4. 2. 2015

Generoval jsem klíče na jedné 10 let staré instalaci OpenVPN a přemýšlel jsem při tom, kolik toho mezitím umí nového a přitom je často používána tím deset let starým způsobem. Je možné, že o některých nových vlastnostech vůbec nevíte, nebo jste se je báli použít. Možná vás pár novinek zaujme.

První je moje oblíbené vkládání klíčů přímo do konfiguračního souboru. Tím dosáhneme toho, že uživatel dostává jeden jediný soubor (typicky s příponou .ovpn) a může se připojit velmi jednoduše bez vymýšlení, kam soubor dal, a jestli není potřeba nastavit nějaké cesty k ostatním souborům. Syntaxe je následující:

<ca>
-----BEGIN CERTIFICATE-----
.......
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
.....
-----END PRIVATE KEY-----
</key>

Jinak řečeno místo parametrů ca, cert a key, které odkazují na soubory vložíte obsah souboru přímo do konfiguračního souboru OpenVPN. Zvláště pro uživatele na Microsoft Windows je to velké zjednodušení.

Není problém tyto parametry různě kombinovat, pokud např. chcete mít privátní klíč lépe chráněný v zvláštním souboru a nebo pokud vložíte do konfiguračního souboru jen certifikát certifikační autority a necháte v souborech klíče uživatelů. Podporovány jsou následující parametry: ca, cert, dh, extra-certs, key, pkcs12, secrettls-auth.

Když zmiňuji Microsoft Windows, tam můžete klíče uživatelů vložit do systémového úložiště certifikátů, které je přeci jen chráněno lépe než soubory na disku a certifikát odkázat z konfiguračního souboru pomocí jeho otisku a nebo jména následujícím způsobem:

cryptoapicert "THUMB:<cert_thumb>"

nebo

cryptoapicert "SUBJ:<cert_subject>"

Hodnotu pro THUMB lze získat asi jen po importu certifikátu do úložiště a zobrazení jeho vlastností (v češtině se položka jmenuje „Kryptografický otisk“). Pokud použijeme SUBJ, je situace jednodušší. Ten si můžeme zobrazit přes příkaz openssl:

$ openssl x509 -in certifikat.crt -noout -subject

Lomítka a názvy položek ve výpise nahradit čárkami, např.:

/C=CZ/ST=Czech Republic/L=Prague/O=Root.cz/CN=root1

převedeme na

CZ, Czech Republic, Prague, Root.cz, root1

a do konfiguračního souboru tedy vložíme

cryptoapicert "SUBJ:CZ, Czech Republic, Prague, Root.cz, root1"

Dodatek: Jak správně podotkl Ind v diskuzi pod článkem, THUMB lze zjistit i bez klikání následujícím způsobem:

$ openssl x509 -sha1 -fingerprint -in cert.pem \
-out /dev/null | sed 's/:/ /g' | tr '[:upper:]' '[:lower:]'

Jedná se o SHA1 otisk zbavený dvojteček a převedený na malé znaky.

Další konfigurační volba připomínající HTML tag se používá pro sdružování parametrů pro spojení s vzdáleným serverem. Můžeme totiž narazit na sítě, které blokují různé porty a tak si připravíme na straně serveru více OpenVPN démonů s různými konfiguracemi. A uživatele pak vyšleme do světa s konfiguračním souborem, který umí všechna připojení najednou a postupně je vyzkouší, dokud spojení neproběhne úspěšně. Může to vypadat např. takto:

<connection>
remote vpn.firma.cz 1194 udp
</connection>

<connection>
remote vpn.firma.cz 443 tcp
</connection>

<connection>
remote 1.1.1.1 443 tcp
</connection>

V tomto případě se použije v první řadě klasické spojení na port 1194 protokolem udp, pokud není úspěšné, tak se zkusí port pro https a tcp spojení a na závěr se pro klienty, kteří nemají přístup k DNS zkusíme spojit na IP adresu naší brány bez použití DNS. Vždy je ale dobré tam mít jako preferovanou variantu s použitím DNS, protože pokud přestěhujete VPN server, nebudete muset hned obíhat všechny klienty a odpadnou vám jen ti, kteří se z nějakého důvodu spojují přímo na IP adresu.

widgety

Na závěr snad ještě osobní zkušenost, OpenVPN už umí IPv6 a opravdu to funguje. Jen krátká ukázka konfigurace:

tun-ipv6
server-ipv6 2a01:ffff:aaaa:bbbb::/64
push "route-ipv6 2000::/3"
push "tun-ipv6"

Routu 2000::/3 klientům posílám, protože jsou často v síti, kde IPv6 nefunguje na 100 %, takže je lepší jim stáhnout všechen IPv6 provoz do tunelu. Je to obdobné řešení jako redirect-gateway pro IPv4 provoz.

Našli jste v článku chybu?
Vitalia.cz: Dostal malý pivovar ze Slovenska do Tesca

Dostal malý pivovar ze Slovenska do Tesca

Vitalia.cz: Tohle jsou nejlepší česká piva podle odborníků

Tohle jsou nejlepší česká piva podle odborníků

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

Podnikatel.cz: Babišovi se nedá věřit, stěžovali si hospodští

Babišovi se nedá věřit, stěžovali si hospodští

120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

DigiZone.cz: O2 Sport zbrojí na derby pražských S

O2 Sport zbrojí na derby pražských S

Vitalia.cz: Jaký je rozdíl mezi brambůrky a chipsy?

Jaký je rozdíl mezi brambůrky a chipsy?

Podnikatel.cz: Instalatér, malíř a elektrikář. "Vymřou"?

Instalatér, malíř a elektrikář. "Vymřou"?

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Vitalia.cz: Inspekce našla nelegální sklad v SAPĚ. Zase

Inspekce našla nelegální sklad v SAPĚ. Zase

Vitalia.cz: Jak Ondra o astma přišel

Jak Ondra o astma přišel

Lupa.cz: Hackeři mají data z půlmiliardy účtů Yahoo

Hackeři mají data z půlmiliardy účtů Yahoo

Vitalia.cz: Jsou vegani a vyrábějí nemléko

Jsou vegani a vyrábějí nemléko

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019

DigiZone.cz: Funbox 4K v DVB-T2 má ostrý provoz

Funbox 4K v DVB-T2 má ostrý provoz

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

DigiZone.cz: Numan Two: rozhlasový přijímač s CD

Numan Two: rozhlasový přijímač s CD

120na80.cz: Hrbatá prsa aneb mýty o implantátech

Hrbatá prsa aneb mýty o implantátech