Použití OpenVPN s vlastní PKI a OpenSSL



Podobné dokumenty
OpenVPN. Ondřej Caletka.

OpenVPN. Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko. Ondřej Caletka (CESNET, z.s.p.o.) OpenVPN 3. března / 16

Šifrování (2), FTP. Petr Koloros p.koloros [at] sh.cvut.cz.

SSL Secure Sockets Layer

Rozdělení šifer Certifikáty a jejich použití Podání žádosti o certifikát. Martin Fiala digri@dik.cvut.cz

OpenVPN a dynamické směrování

Bezpečnost a bezpečné programování

Postup pro vytvoření žádosti o digitální certifikát pro ověřovací a produkční prostředí Základních registrů

Josef Hajas.

WireGuard. nová a jednoduchá linuxová VPN. Petr Krčmář. 3. listopadu 2018

OpenSSL a certifikáty

NAS 323 NAS jako VPN Server

9. Sítě MS Windows. Distribuce Windows. Obchodní označení. Jednoduchý OS pro osobní počítače, pouze FAT, základní podpora peer to peer sítí,

Postup pro vytvoření žádosti o digitální certifikát pro produkční prostředí Základních registrů

České vysoké učení technické v Praze FAKULTA INFORMAČNÍCH TECHNOLOGIÍ katedra počítačových systémů. Digitální důvěra. Jiří Smítka

Šifrování ve Windows. EFS IPSec SSL. - Encrypting File System - Internet Protocol Security - Secure Socket Layer - Private Point to Point Protocol

Asymetrická kryptografie a elektronický podpis. Ing. Mgr. Martin Henzl Mgr. Radim Janča ijanca@fit.vutbr.cz

VZDÁLENÉ PŘIPOJENÍ - OpenVPN. Popis a vlastnosti služby

Vytvoření certifikační autority v programu XCA

Testovací protokol. 1 Informace o testování. 2 Testovací prostředí. 3 Vlastnosti generátoru klíčů. Příloha č. 13

Value - Powerline ethernet adaptér, 85Mbps Katalogové číslo:

Jen správně nasazené HTTPS je bezpečné

Testovací protokol. webový generátor PostSignum. sada PIIX3; 1 GB RAM; harddisk 20 GB IDE OS: Windows Vista Service Pack 2 SW: Internet Explorer 9

Postup pro vytvoření žádosti o digitální certifikát pro přístup k Základním registrům

Administrace služby - GTS Network Storage

Semestrální projekt do předmětu SPS

TheGreenBow IPSec VPN klient

Implementace protokolů IPSec na OS Linux, FreeS/WAN. Martin Povolný

Desktop systémy Microsoft Windows

Digitální důvěra osnova přednášky

SPARKLAN WX-7800A - návod k obsluze Verze 1.2

Připojení k bezdrátové síti eduroam na VFU Brno s počítačem se systémem Windows

1. Administrace služby Bezpečný Internet přes webovou aplikaci WebCare GTS

Certifikáty a jejich použití

Bezpečnostní problémy VoIP a jejich řešení

SPARKLAN WX-7615A - návod k obsluze. Verze i4 Portfolio s.r.o.

Pˇ ríruˇ cka uživatele Kerio Technologies

Útoky na HTTPS. PV210 - Bezpečnostní analýza síťového provozu. Pavel Čeleda, Radek Krejčí

DŮLEŽITÉ INFORMACE, PROSÍM ČTĚTE!

Testovací protokol. 1 Informace o testování. 2 Testovací prostředí. 3 Vlastnosti generátoru klíčů. Příloha č. 11. Testovaný generátor: Portecle 1.

Instrukce pro vzdálené připojení do učebny 39d

Metody zabezpečeného přenosu souborů

Triky s OpenSSH. 4. listopadu Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.

Bezpečnost vzdáleného přístupu. Jan Kubr

Projekt 2 - Nejčastější chyby. Ing. Dominik Breitenbacher

a autentizovaná proxy

Kerio VPN Client. Kerio Technologies

Rocrail. Nejprve: Obecný úvod. Instalace

FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV TELEKOMUNIKACÍ

Návod pro připojení k síti VŠPJ prostřednictvím VPN Vysoká škola polytechnická Jihlava

Administrace služby IP komplet premium

Analýza aplikačních protokolů

Manuál na vystavení certifikátu umožňující přístup do aplikace MoneyWeb

Administrace služby IP komplet premium

DWL-2000AP+ Než začnete. Kontrola obsahu dodávky

Počítačové sítě Systém pro přenos souborů protokol FTP

DI GHz bezdrátový směrovač AirPlus G+

Certifikační autorita EET Modelové postupy vytvoření souboru žádosti o certifikát

Kryptografie, elektronický podpis. Ing. Miloslav Hub, Ph.D. 27. listopadu 2007

I.CA SecureStore Uživatelská příručka

SMART KARTY V LINUXU A PROČ BY VÁS MĚLY ZAJÍMAT JAKUB JELEN, RED HAT

registrace Fyzické (tj. MAC) adresy

Testovací SSL certifikát THAWTE

Uživatelský modul. Modem Bonding


PROGRAMOVATELNÉ AUTOMATY FATEK

POPIS TUN TAP. Vysvetlivky: Modre - překlad Cervene - nejasnosti Zelene -poznamky. (Chci si ujasnit o kterem bloku z toho schematu se mluvi.

Analýza síťového provozu. Ing. Dominik Breitenbacher Mgr. Radim Janča

Certifikační autorita EET. Veřejný souhrn certifikační politiky

Elektronický podpis. Marek Kumpošt Kamil Malinka

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

Střední odborná škola a Střední odborné učiliště, Hořovice

Nastavení DCOM. Uživatelský manuál

12. Bezpečnost počítačových sítí

Stručný návod k obsluze Instalace ovladače WLAN USB adaptéru GW- 7200U pro Windows 98SE, ME, 2000 a XP

Stručný návod pro nastavení routeru COMPEX NP15-C

ANALÝZA TCP/IP 2 ANALÝZA PROTOKOLŮ DHCP, ARP, ICMP A DNS

Knot DNS Resolver. Modulární rekurzivní resolver. Karel Slaný

WL-5480USB. Quick Setup Guide

INSTALACE DATABÁZE ORACLE A SYSTÉMU ABRA NA OS WINDOWS

Protokol TELNET. Schéma funkčních modulů komunikace protokolem TELNET. Telnet klient. login shell. Telnet server TCP/IP.

Model: Mbps Wireless 11G+ Access Point UŽIVATELSKÝ MANUÁL

GTS internet DSL. Návod nastavení modemu a spuštění služby. (platné pro Zyxel Prestige 870HN-53b)

Desktop systémy Microsoft Windows

Quido - Telnet. Popis konfigurace modulů Quido protokolem Telnet. 3. srpna 2007 w w w. p a p o u c h. c o m

Elektronický podpis. Základní princip. Digitální podpis. Podpis vs. šifrování. Hashování. Jednosměrné funkce. Odesílatel. Příjemce

1 Správce licencí Správce licencí Správce licencí Start > Všechny programy > IDEA StatiCa > Správce licencí Soubor > Správce licencí Licence

Možnosti IPv6 NAT. Lukáš Krupčík, Martin Hruška KRU0052, HRU0079. Konfigurace... 3 Statické NAT-PT Ověření zapojení... 7

GTS internet DSL. Návod nastavení modemu a spuštění služby. (platné pro Zyxel Prestige VMG1312-B30B)

Alcatel-Lucent VitalQIP DNS/DHCP & IP Management Software

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Získání certifikátu pro přístup do informačního systému základních registrů

GTS internet DSL. Návod nastavení modemu a spuštění služby. (platné pro P-660HN-T3A )

BEZPEČNOST SLUŽEB NA INTERNETU

STUDIJNÍ MATERIÁL PRO TECHNICKOU CERTIFIKACI ESET Business Edition, ESET Remote Administrator

Audit bezpečnosti počítačové sítě. Předmět: Správa počítačových sítí Jiří Kalenský

Audit bezpečnosti počítačové sítě

Od Enigmy k PKI. principy moderní kryptografie T-SEC4 / L3. Tomáš Herout Cisco. Praha, hotel Clarion dubna 2013.

Postup pro vytvoření žádosti o digitální certifikát pro přístup k Základním registrům

Informatika / bezpečnost

Transkript:

Použití OpenVPN s vlastní PKI a OpenSSL Pavel Hruška (hru354), Michal Němec (nem374) Abstrakt: Tato semestrální práce se zaměřuje na popis OpenVPN jako nástroje pro tvorbu VPN s využitím PKI (Public Key Infrastructure) a realizací pomocí OpenSSL. Díky této kombinaci je možné velmi efektivně vytvářet VPN se zajištěním všech požadavků na bezpečnost. Klíčová slova: VPN, OpenVPN, PKI, SSL/TLS, OpenSSL, RSA 1 Úvod...2 1.1 Úvod do VPN...2 1.2 User-space SSL VPN...2 1.3 TUN/TAP virtuální síťové adaptéry...2 1.4 SSL/TLS...2 2 OpenVPN...2 2.1 Krátce o OpenVPN...3 2.1.1 Varianty VPN tunelů (nejen v OpenVPN)...3 2.1.2 Možnosti autentizace v OpenVPN...3 2.1.3 Další možnosti zabezpečení OpenVPN...3 3 OpenSSL...4 4 Public Key Infrastructure PKI...4 4.1 Co je PKI?...4 4.2 OpenVPN a PKI...4 4.3 Tvorba vlastní PKI...4 4.3.1 Easy-rsa...4 4.3.2 Inicializace PKI...5 4.3.3 Klíč pro server OpenVPN...6 4.3.4 Klíče pro klienty...7 4.3.5 Parametry Diffie-Hellman...8 4.3.6 Soubory PKI...8 4.3.7 Revokace (zneplatnění) certifikátu...8 4.3.8 Jemnější konfigurace parametrů PKI a easy-rsa...9 4.3.9 Easy-rsa CRL bug...9 5 Konfigurace serveru...9 6 Konfigurace klientů...11 7 Výstupy...11 7.1 Server...11 7.2 Klient...12 8 Odkazy...12 9 Reference...12 listopad 2009 1/12

1 Úvod V první části práce se soustředíme na úvod do problematiky VPN, dále pak na krátké představení OpenVPN a jeho možností. Následuje popis vytvoření vlastní PKI infrastruktury pomocí OpenSSL (resp. pomocí skriptů easy-rsa dodávaných s instalací OpenVPN). V závěru práce pak ukazujeme konkrétní konfigurace serveru a klientů využívajících vytvořenou PKI. Veškeré informace zde uvedené se týkají OpenVPN verze 2.x, jako testovací prostředí byly použity linuxová distribuce Fedora Core 8 a MS Windows XP. 1.1 Úvod do VPN Virtual Private Netvork, zkráceně VPN, představuje sadu nástrojů, které umožňují navzájem zabezpečeně propojit sítě v různých lokalitách, kde k samotnému propojení je využita veřejná síť jako transportní vrstva. Virtuální privátní sítě začaly vznikat s rozmachem internetu (který nabídl levnou konektivitu, ale obecně nedůvěryhodnou), v kontrastu s drahými (ale důvěryhodnými) pronajímanými datovým okruhy. Obr.1: Příklad VPN propojující dva segmenty 192.168.1.0/24 a 192.168.2.0/24 1.2 User-space SSL VPN User-space SSL VPN využívají SSL/TLS protokol k vytváření VPN tunelů a k šifrování dat. User-space označení znamená, že se jedná o aplikaci, která běží ve svém uživatelském prostoru a s operačním systémem komunikuje pomocí virtuálních síťových adaptérů TUN či TAP. 1.3 TUN/TAP virtuální síťové adaptéry Jak bylo již zmíněno, důležitým prvkem v user-space VPN jsou virtuální síťové adaptéry označované jako TUN a TAP: TAP simuluje síťové zařízení, pracující na druhé vrstvě (pracuje např. s ethernetovými rámci). Slouží k vytváření mostů (bridge). TUN simuluje síťové zařízení, pracující na třetí vrstvě (pracuje např. s IP pakety). Slouží při použití routování. Podpora TUN/TAP adaptérů je implementována v jádrech operačních systémů. Pakety zapsané do těchto adaptérů jsou operačním systémem doručeny do user-space aplikace, která se k danému virtuálnímu adapteru připojí. Obdobně, pakety zapsané aplikací do adaptéru jsou skrze něj doručeny do operačního systému. 1.4 SSL/TLS SSL/TLS je standardizovaný a velmi rozšířený protokol pro šifrování dat v prostředí internetu. 2 OpenVPN V následující kapitole si představíme projekt OpenVPN. listopad 2009 2/12

2.1 Krátce o OpenVPN OpenVPN představuje open-source řešení user-space SSL VPN. V tuto chvíli je zřejmě nejpopulárnější nástroj v dané kategorii. OpenVPN je oblíbený především díky velmi široké škále možností konfigurace, ale také díky velmi snadnému ovládáním (konfiguraci). Je rozšířen na všechny populární operační systémy (Linux, Windows, Mac OS, Solaris, ). 2.1.1 Varianty VPN tunelů (nejen v OpenVPN) Dle konkrétního nasazení infrastruktury můžeme (obecně) VPN rozlišit na dvě kategorie: 1:1 (statické) jedná se typicky o propojení dvou sítí různých lokalit, kde spojení bývá stálé, resp. bývá navazováno v závislosti na stavu připojení jednotlivých lokalit do internetu. 1:N (dynamické) připojení, kdy se jednotlivé VPN tunely vytváří na požádání klienta. V rámci této kategorie od systému většinou očekáváme další služby, jako je přidělování IP adres klientům apod. Obě varianty je možné realizovat s OpenVPN. 2.1.2 Možnosti autentizace v OpenVPN Virtuální privátní sítě vytvářejí šifrované spojení mezi dvěma body, kde důležitou fází při vytváření tunelu je autentizace. OpenVPN nabízí dva módy autentizace: Statické klíče jedná se o konfiguraci, kdy obě strany používají sdílené klíče. Statický klíč obsahuje jak autentizací HMAC klíče tak i šifrovací/dešifrovací klíče. Tyto klíče jsou vygenerovány a sdíleny ještě před prvotním vytvořením tunelu. Výhoda jednoduchost, rychlost nasazení. Nevýhoda problém s bezpečnou distribucí klíčů na zúčastněné strany. SSL/TLS použití SSL/TLS a certifikátů pro autentizaci a výměnu klíčů. V tomto módu dochází k vytvoření SSL spojení s oboustrannou autentizací (každá strana poskytne svůj certifikát a ověří protistranu). Pokud je autentizace úspěšná, jsou vygenerovány náhodné HMAC a šifrovací/dešifrovací klíče a přes zabezpečené SSL/TLS spojení navzájem vyměněny. Výhoda flexibilní. Nevýhoda složitější a časově náročnější nasazení vlastní PKI infrastruktury. 2.1.3 Další možnosti zabezpečení OpenVPN Další úroveň zabezpečení, kterou OpenVPN nabízí, je možnost autentizace paketů v rámci úvodního navazování TLS spojení (TLS Handshake). Jedná se o direktivu: tls-auth key X. Kde key je cesta ke sdílenému klíči, a X může nabývat jedné ze dvou numerických hodnot: 0 pokud tls-auth konfigurujeme na serveru 1 pokud tls-auth konfigurujeme na klientovi. V tomto režimu se přidává ke každému TLS handshake paketu HMAC signatura. Jakékoliv jiné pakety, které tuto signaturu neobsahují, mohou být zahozeny bez hlubšího zkoumání. Jedná se tedy o doplňkové zabezpečení vedle vlastního RSA. Díky tomu je možné zamezit těmto útokům: DoS útokům na otevřený UDP port OpenVPN. Navazování SSL/TLS spojení (handshake) z neoprávněných strojů (umožní detekci mnohem dříve, než samotné SSL/TLS). Buffer-overflow v implementaci SSL/TLS (bez HMAC nelze vůbec iniciovat TLS Handshake). Sdílený klíč je nutné vygenerovat pomocí příkazu OpenVPN, konkrétně např.: openvpn --genkey --secret ta.key Nevýhoda nutnost distribuovat sdílený klíč ke všem klientům a serveru (nutno provést přes zabezpečený kanál). listopad 2009 3/12

3 OpenSSL OpenSSL je open source implementace SSL/TLS. Základní knihovna napsaná v jazyce C implementuje základní kryptografické funkce. OpenSSL je multiplatformní a je dostupné pro všechny běžné operační sytémy.[5] OpenSSL podporuje množství kryptografických algoritmů: Šifry: AES, Blowfish, Camellia, CAST-128, DES, IDEA, RC2, RC4, RC5, Triple DES Hashovací funkce: MD5, MD2, SHA, MDC-2 Asymetrická kryptografie: RSA, DSA, Diffie-Hellman, Elliptic curve OpenSSL je licencováno pod modifikovanou Apache licencí takže je ho možné použít i pro komerční projekty avšak nekompatibilní s GPL licencí. 4 Public Key Infrastructure PKI Před tím, než je možné zprovoznit OpenVPN s PKI, je nutné tuto infrastrukturu veřejných klíčů vytvořit. 4.1 Co je PKI? PKI se skládá z těchto dvou částí: Certifikáty (veřejné klíče) a soukromé klíče zvlášť pro každého klienta a server. Certifikační autority (CA), která podepisuje jednotlivé certifikáty (klienta i serveru). 4.2 OpenVPN a PKI OpenVPN využívá obousměrnou autentizaci, to znamená, že server musí autentizovat klientský certifikát a naopak klient musí autentizovat certifikát serveru. Během autentizace probíhá především zjištění, zda daný certifikát byl podepsán certifikační autoritou (CA), dále pak dochází ke zjišťování dalších parametrů certifikátu (common name, ). Tento model má tyto výhody: Server akceptuje pouze certifikáty podepsané CA. Server nemusí mít k dispozici veškeré certifikáty klientů, kteří se k němu mohou připojit. Jednotlivé certifikáty je možné zneplatnit (revokovat) např. v případě zneužití privátního klíče některého z klientů. 4.3 Tvorba vlastní PKI Pro vytvoření vlastní PKI v rámci OpenVPN můžeme postupovat dvěma způsoby: Ručně pomocí OpenSSL. S využitím předdefinovaných skriptů (easy-rsa), které se instalují spolu s OpenVPN. 4.3.1 Easy-rsa Easy-rsa je balíček skriptů, které usnadňují vytvoření a správu vlastní PKI (nejen) pro OpenVPN. Využívají služeb OpenSSL. Skripty z balíčku easy-rsa se nacházejí v závislosti na operačním systému v různých umístěních. Na našem testovacím systému (Fedora 8) se jedná konkrétně o umístění: /usr/share/openvpn/easy-rsa/2.0/ Celý adresář je vhodné zkopírovat do jiného umístění, aby nedošlo k přepsání změn, které provedeme při příští aktualizaci balíčku (pokud používáme rpm/yum/...). Zkopírujeme jej tedy do nového umístění, např.: /etc/openvpn/easy-rsa/ Od této chvíle se budeme pohybovat v tomto adresáři. Jako první věc je nutné nakonfigurovat základní parametry budoucí PKI. Editujeme tedy soubor vars. Důležité jsou tyto proměnné: EASY_RSA = " pwd " KEY_COUNTRY = "CZ" KEY_PROVINCE = "Czech Republic" KEY_CITY = "Mesto" listopad 2009 4/12

KEY_ORG = "Organizace" KEY_EMAIL = "mail@organizace.cz" Jedná se o základní parametry CA, tyto parametry je nutné vyplnit, samozřejmě s údaji odpovídající konkrétnímu nasazení. Parametr EASY_RSA představuje kořenový adresář budoucí PKI (výchozí aktuální adresář ( pwd )). 4.3.2 Inicializace PKI Nyní můžeme spustit inicializaci PKI pomocí série těchto příkazů: source./vars./clean-all./build-ca Poslední příkaz build-ca vytvoří certifikační autoritu. Jedná se o interaktivní příkaz, ve kterém je nutné zadat požadované údaje. Výstup: [root@localhost easy-rsa]#./build-ca server Generating a 1024 bit RSA private key...++++++...++++++ writing new private key to 'server.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) [CZ]: State or Province Name (full name) [Czech Republic]: Locality Name (eg, city) [Mesto]: Organization Name (eg, company) [Organizace]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [server]: Email Address [mail@organizace.cz]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryname :PRINTABLE:'CZ' stateorprovincename :PRINTABLE:'Czech Republic' localityname :PRINTABLE:'Mesto' organizationname :PRINTABLE:'Organizace' commonname :PRINTABLE:'server' emailaddress :IA5STRING:'mail@organizace.cz' Certificate is to be certified until Nov 11 10:12:44 2019 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 Jak je patrné, většina údajů je již přednastavena (díky editaci souboru vars), lze je tedy pouze potvrdit. Po dokončení inicializace PKI dojde k vygenerování ca.crt a ca.key, tedy certifikátu a privátního klíče listopad 2009 5/12

certifikační autority. Oba soubory nalezneme v adresáři keys (pokud nedošlo ke změně konfigurace v souboru vars). Platnost certifikátu je nastavena na 3650 dní, tedy 10 let. Bezpečnostní upozornění: nejdůležitějším souborem od tohoto okamžiku a to po celou dobu fungování vlastní PKI je privátní klíč certifikační autory, pomocí něhož jsou podepisovány budoucí vystavované certifikáty pro klienty a servery. Je velice důležité udržet tento soubor v bezpečí před zneužitím, jinak dojde ke kompromitaci celé PKI. 4.3.3 Klíč pro server OpenVPN Dále vygenerujeme certifikát a privátní klíč pro server:./build-key-server server Výstup: [root@localhost easy-rsa]#./build-key-server server Generating a 1024 bit RSA private key...++++++...++++++ writing new private key to 'server.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) [CZ]: State or Province Name (full name) [Czech Republic]: Locality Name (eg, city) [Mesto]: Organization Name (eg, company) [Organizace]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [server]: Email Address [mail@organizace.cz]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryname :PRINTABLE:'CZ' stateorprovincename :PRINTABLE:'Czech Republic' localityname :PRINTABLE:'Mesto' organizationname :PRINTABLE:'Organizace' commonname :PRINTABLE:'server' emailaddress :IA5STRING:'mail@organizace.cz' Certificate is to be certified until Nov 11 10:12:44 2019 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 V tuto chvíli máme k dispozici certifikát serveru (server.crt, server.key). 4.3.4 Klíče pro klienty Nyní můžeme vygenerovat certifikáty a klíče pro klienty. Podle toho, zda přístup k certifikátu chceme chránit heslem, či nikoliv, můžeme použít jeden z těchto skriptů:./build-key klient #bez hesla listopad 2009 6/12

nebo./build-key-pass klient #chráněno heslem Certifikáty chráněné heslem poskytují větší bezpečnost pro případ zneužití certifikátu neoprávněnou osobou, nicméně nelze je použít u služeb, jejichž start vyžadujeme bezobslužný (služby, servery,...). Výstup generování klíče chráněného heslem: [root@localhost easy-rsa]#./build-key-pass klient1 Generating a 1024 bit RSA private key......++++++...++++++ writing new private key to 'klient1.key' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- 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) [CZ]: State or Province Name (full name) [Czech Republic]: Locality Name (eg, city) [Mesto]: Organization Name (eg, company) [Organizace]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [klient1]: Email Address [p.hruska@tekro.cz]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryname :PRINTABLE:'CZ' stateorprovincename :PRINTABLE:'Czech Republic' localityname :PRINTABLE:'Mesto' organizationname :PRINTABLE:'Organizace' commonname :PRINTABLE:'klient1' emailaddress :IA5STRING:'mail@organizace.cz' Certificate is to be certified until Nov 11 10:28:37 2019 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 4.3.5 Parametry Diffie-Hellman Pro server je nutné vygenerovat Diffie-Hellman parametry. Diffie-Hellman protokol slouží k bezpečné výměně klíčů přes nezabezpečené médium a to bez nutnosti jakéhokoliv předchozího zabezpečení výměny dat na tomto médiu[2]. Diffie-Hellman parametry vygenerujeme pomocí tohoto skriptu:./build-dh listopad 2009 7/12

Výstup: [root@localhost easy-rsa]#./build-dh Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time... +... +...+...++*++*++* 4.3.6 Soubory PKI Pokud se podíváme do adresáře certifikační autority (viz parametr EASY_RSA v souboru vars), uvidíme zde několik souborů. Výchozí umístění souborů je v podadresáři keys. Co zde nalezneme: Vygenerované certifikáty a klíče certifikační autority a serveru Soubor index.txt, který obsahuje seznam doposud vygenerovaných certifikátů touto autoritou. Soubor serial, který obsahuje číselnou hodnotu (např. 02), což udává sériové číslo příštího generovaného certifikátu. Klíče a certifikáty vygenerované pro klienty Následující tabulka shrnuje vygenerované soubory s jejich popisem: Soubor Kdo jej potřebuje Popis Tajné? ca.crt Server + klienti Kořenový certifikát CA Ne ca.key Pouze stroj podepisující certifikáty Kořenový klíč CA ANO!!! Dh1024.pem Pouze server Diffie Helmann parametry Ne server.crt Pouze server Certifikát serveru Ne server.key Pouze server Privátní klíč serveru Ano klient1.crt Pouze klient 1 Certifikát klienta 1 Ne klient1.key Pouze klient 1 Privátní klíč klienta 1 Ano klient2.crt Pouze klient 2 Certifikát klienta 2 Ne Klient2.key Pouze klient 2 Privátní klíč klienta 2 Ano 4.3.7 Revokace (zneplatnění) certifikátu Revokace certifikátu je proces, při kterém dojde k zneplatnění certifikátu dříve podepsaného certifikační autoritou. Zneplatnění certifikátu může být požadováno např. v těchto případech: Certifikát (jeho privátní klíč) byl zneužit cizí osobou Je nutné vygenerovat nový certifikát pro uživatele (ztráta hesla apod.) Je nutné zabránit uživateli přistupovat do VPN. Pro revokaci certifikátu můžeme opět použít skript ze sady easy-rsa, resp. posloupnost dvou skriptů. Následující příklad předpokládá, že chceme zneplatnit certifikát klienta č.2: source./vars./revoke-full klient2 Výstup: [root@localhost easy-rsa]#./revoke-full klient2 Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Revoking Certificate 04. Data Base Updated listopad 2009 8/12

Using configuration from /etc/openvpn/easy-rsa/openssl.cnf klient2.crt: /C=CZ/ST=Czech Republic/L=Mesto/O=Organizace/CN=klient2/emailAddress=mail@organizace.cz error 23 at 0 depth lookup:certificate revoked Chybové hlášení na posledním řádku error 23 at 0 depth lookup:certificate revoked nám dává informaci o již zneplatnění certifikátu (tedy o úspěchu požadované operace). Při prvním použití tohoto příkazu dojde k vygenerování souboru crl.pem, který představuje seznam revokovaných certifikátů (Certificate Revocation List). K tomu, aby docházelo v rámci OpenVPN ke kontrole revokovaných certifikátů, je nutné doplnit konfiguraci o direktivu: crl-verify crl-verify-file Kde crl-verify-file je cesta k soboru crl.pem. 4.3.8 Jemnější konfigurace parametrů PKI a easy-rsa Pokud potřebujeme změnit některé z parametrů PKI (např. doba platnosti generovaných certifikátů apod.), můžeme editovat konfigurační soubor OpenSSL, který se využívá při práci s easy-rsa skripty: /etc/openvpn/easy-rsa/openssl.cnf 4.3.9 Easy-rsa CRL bug V některých distribucích Linuxu, včetně námi testované Fedory 8, uživatel může narazit na chybu při revokaci certifikátu (skript revoke-full). Chyba se projeví následující chybovou hláškou: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf error on line 282 of config file '/etc/openvpn/easy-rsa/openssl.cnf' 23924:error:0E065068:configuration file routines:str_copy:variable has no value:conf_def.c:629:line 282 Řešení: zakomentovat v openssl.cnf sekci [ pkcs11_section ]. Více podrobností např.viz [3]. 5 Konfigurace serveru V okamžiku, kdy máme vytvořenou vlastní PKI, můžeme přistoupit ke konfiguraci serveru OpenVPN. Konfigurace, kterou si předvedeme, bude splňovat následující parametry: Využijeme virtuální tun0 adaptér (umožní routování) Transportní protokol UDP, port 1194 Aktivní komprese (comp-lzo) Aktivní logování s postupným zápisem na konec log souboru. Keepalive zprávy každých 10 sekund, po 120 sekundách usuzujeme, že je klient nedostupný. Pro vyšší bezpečnost poběží démon OpenVPN pod neprivilegovaným oprávněním (uživatel/skupina openvpn/openvpn, může být i nobody/nobody). S tím úzce souvisí direktivy persit-key a persit-tun, ty zajišťují udržení zdrojů (klíče, adaptér) pro případ restartu, kdy již nemá OpenVPN přístup k daným zdrojům (běží pod nižším oprávněním). Popsaná konfigurace v řeči OpenVPN: # Tunnel mode dev tun0 proto udp comp-lzo port 1194 user openvpn listopad 2009 9/12

group openvpn persist-key persist-tun # logging log-append /var/log/openvpn0 # Keepalive directive keepalive 15 120 # Run as a single instance server mode server Další část konfigurace se týká parametrů, které budou získávat klienti v okamžiku, kdy se připojí do VPN. Jedná se v podstatě jistou variantu DHCP serveru. Konfigurované parametry: rozsah dynamicky přidělovaných IP adres defaultní brána další routovací informace (např. pro přístup do dalších segmentů sítě) další dhcp-parametry (DNS servery, WINS servery, ) Konfigurace: # Server endpoint appears first, folllowed by the gw interace ip ifconfig 192.168.5.1 192.168.5.2 # Range of IP addresses reserved for clients ifconfig-pool 192.168.5.10 192.168.5.99 # route setup on server route 192.168.5.0 255.255.255.0 # example route command pushed to client push "route 192.168.5.1 255.255.255.255" push "route 192.168.11.0 255.255.255.0" push "dhcp-option DNS 192.168.11.1" push "dhcp-option WINS 192.168.11.1" Závěr konfigurace se týká PKI certifikáty, klíče atd. Následující příklad: Rozšířená autentizace (TLS-Handshake) pomocí sdíleného klíče ta.key Certifikáty a klíče včetně parametrů diffie-hellman z adresáře vlastní PKI Kontrola revokovaných certifikátů PKI v adresáři /etc/openvpn/easy-rsa/keys. Konfigurace: # Specifi tls-server for certificate exchange tls-server # More security with ta.key (0 for server, 1 for client) tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 # Diffie-Hellman Parameters (tls-server only) dh /etc/openvpn/easy-rsa/keys/dh1024.pem # Root certificate ca /etc/openvpn/easy-rsa/keys/ca.crt # Server certificate cert /etc/openvpn/easy-rsa/keys/server.crt # Server private key key /etc/openvpn/easy-rsa/keys/server.key # Check for revoked client certificates crl-verify /etc/openvpn/easy-rsa/keys/crl.pem listopad 2009 10/12

6 Konfigurace klientů Nyní můžeme přistoupit na konfiguraci klientů. Následující příklad bude demonstrovat konfiguraci klienta s těmito parametry: Připojení k serveru host_addr (IP adresa nebo DNS jméno). Transportní protokol UDP, port 1194. Virtuální adaptér tun0. Kontrola common name serverového certifikátu na hodnotu server (tls-remote) ochrana proti útoku Man-In-The-Middle (více viz [4]). Rozšířená autentizace (TLS-Handshake) pomocí sdíleného klíče ta.key. Aktivní komprese (comp-lzo). Získání parametrů z DHCP serveru OpenVPN (pull). Konfigurace: # OpenVPN client config file remote host_addr proto udp port 1194 dev tun0 tls-client tls-remote server tls-auth ta.key 1 ca ca.crt cert klient1.crt key klient1.pem comp-lzo pull Tato konfigurace předpokládá umístění potřebných souborů u klienta (sdílené klíče, certifikáty a privátní klíče) a v dosahu démona OpenVPN. Tajné klíče je nutné distribuovat přes zabezpečené kanály (osobní instalace, HTTPS, ). 7 Výstupy Na závěr ukázky výstupů démona OpenVPN (logy). 7.1 Server Spuštění OpenVPN serveru: Sun Nov 15 19:35:47 2009 OpenVPN 2.1_rc2 i386-redhat-linux-gnu [SSL] [LZO2] [EPOLL] built on Mar 3 2007 Sun Nov 15 19:35:47 2009 Control Channel Authentication: using 'ta.key' as a OpenVPN static key file Sun Nov 15 19:35:47 2009 TUN/TAP device tun0 opened Sun Nov 15 19:35:47 2009 /sbin/ip link set dev tun0 up mtu 1500 Sun Nov 15 19:35:47 2009 /sbin/ip addr add dev tun0 local 192.168.5.1 peer 192.168.5.2 Sun Nov 15 19:35:47 2009 GID set to openvpn Sun Nov 15 19:35:47 2009 UID set to openvpn Sun Nov 15 19:35:47 2009 UDPv4 link local (bound): [undef]:1194 Sun Nov 15 19:35:47 2009 UDPv4 link remote: [undef] Sun Nov 15 19:35:47 2009 Initialization Sequence Completed Požadavek připojení klienta do VPN: Sun Nov 15 18:39:27 2009 213.192.22.4:1194 Re-using SSL/TLS context Sun Nov 15 18:39:27 2009 213.192.22.4:1194 LZO compression initialized Sun Nov 15 18:39:29 2009 213.192.22.4:1194 [hruska] Peer Connection Initiated with 213.192.22.4:1194 listopad 2009 11/12

7.2 Klient Úspěšné připojení klienta (konkrétně z MS Windows XP) do VPN: Sun Nov 15 18:39:27 2009 OpenVPN 2.1_beta7 Win32-MinGW [SSL] [LZO2] built on Nov 12 2005 Sun Nov 15 18:39:29 2009 Control Channel Authentication: using 'ta.key' as a OpenVPN static key file Sun Nov 15 18:39:29 2009 LZO compression initialized Sun Nov 15 18:39:30 2009 UDPv4 link local (bound): [undef]:1194 Sun Nov 15 18:39:30 2009 UDPv4 link remote: xx.xx.xxx.xx:1194 Sun Nov 15 18:39:32 2009 [test.addr.cz] Peer Connection Initiated with xx.xx.xx.xx:1194 Sun Nov 15 18:39:40 2009 TAP-WIN32 device [OpenVPN] opened: \\.\Global\{178087B0-3DB3-47FD-886B-F6E6C4FCA51F}.tap Sun Nov 15 18:39:40 2009 Notified TAP-Win32 driver to set a DHCP IP/netmask of 192.168.5.38/255.255.255.252 on interface {178087B0-3DB3-47FD-886B-F6E6C4FCA51F} [DHCP-serv: 192.168.5.37, lease-time: 31536000] Sun Nov 15 18:39:40 2009 Successful ARP Flush on interface [3] {178087B0-3DB3-47FD- 886B-F6E6C4FCA51F} Sun Nov 15 18:39:46 2009 Initialization Sequence Completed 8 Odkazy OpenVPN home (open-source projekt): http://openvpn.net/index.php/open-source.html OpenVPN klient pro Windows (nejznámější): http://openvpn.se/ 9 Reference [1] OpenVPN 2.x HOWTO http://openvpn.net/index.php/open-source/documentation/howto.html [15.11.2009] [2] RSA Labs http://www.rsa.com [3] bugs.launchpad.net https://bugs.launchpad.net/ubuntu/+source/openvpn/+bug/231199 [15.11.2009] [4] Man-in-the-Middle Attack (Wikipedia) http://en.wikipedia.org/wiki/man-in-the-middle_attack [15.11.2009] [5] OpenSSL (Wikipedia) http://en.wikipedia.org/wiki/openssl [15.11.2009] listopad 2009 12/12