VPN

Table of Contents

1.          Úvod

2.          Bezpečnost VPN

2.1     Firewall

2.2     Šifrovanie

2.3     IPSec

2.4     AAA Server

3.          Implementácia VPN

   3.1  Porovnanie rôznych iplementácií

   3.2  OpenVPN

4.          Inštalácia

4.1     Download

4.2     Kompilácia

4.3     TUN/TAP

5.          Nastavenie

5.1     Firewall

5.2     Tunel bez zabezpečenia

5.3     Tunel zabezpečený pevným klúčom

6.          TLS/SSL

7.          Záver

 

 

 

 

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

 

 

 

 

Úvod

 

 

VPN je privátna sieť, ktorá používa verejnú sieť (obvykle Internet) k pripojeniu vzdialených bodov(sietí) alebo užívateľov navzájom. Namiesto použitia zdieľaného pripojenia ako prenajatá linka, VPN používa „virtuálne“ pripojenia smerované cez Internet z firemnej privátnej sieti k vzdialenej servru alebo zamestnancovi.

 

Bezpečnosť VPN

 

 

        Dobre postavená VPN-ka využíva k zabezpečeniu dát a pripojenia tieto technológie:

·        Firewall

·        Šifrovanie

·        IPSec

·        AAA Server

Firewall

 

        Poskytuje bariéru medzi vašou súkromnou sieťou a Internetom. Môžete nastaviť aké pakety, na akých portoch, má prepúšťať  a aké nie.

 

   Šifrovanie

 

        Šifrovanie je proces keď vezmeme dáta, ktoré vysiela jeden počítač a zakódujú sa dáta tak aby iba cieľový počítač(e) vedel(i) rozkódovať dané dáta.

   IPSec

 

Internet Protocol Security Protocol (IPSec) umožňuje zvýšiť úroveň zabezpečenia siete za použitia lepších kódovacích algoritmoch a viac algoritmov zlepšujúcich bezpečnosť.

        IPSec ma dva módy kódovania: tunelové a transportné. Tunelové kóduje hlavičku a telo každého paketu zatiaľ čo transportné kóduje len telo. Avšak tento protokol môžu využívať iba systémy, ktoré sú kompatibilné s týmto protokolom.

        IPSec vie šifrovať dáta medzi rozdielnymi zariadeniami, ako:

·        Router vs Router

·        Firewall vs Router

·        PC vs Router

·        PC vs Server

   AAA Server

 

        AAA(z angl. Authentication, Authorization and Accounting) servre sa používajú na viac zabezpečení prístup, ktorý v prostredí VPN kde je vzdialený prístup nutnosťou, ďalšie plus k bezpečnosti. Ak vznikne požiadavok na  zahájenie pripojenia od dial-up klienta, požiadavok je preposlaný na AAA server. AAA server potom skontroluje nasledujúce veci:

·        Kto si (Autentifikácia)

·        K čomu si oprávnený (Autorizácia)

·        Čo práve robíš (Accounting = Kontrola)

 

Kontrolné informácie sa hodia hlavne pri stopovaní klienta kvôli bezpečnostním auditom alebo vystavovaní správ.

 

Implementácia VPN

 

 

 

            Existujú rôzne implementácie tohto protokolu a v tejto časti by som chcel aspoň v krátkosti ukázať prečo som si vlastne vybral OpenVPN a v čom je lepší ako jeho konkurent.

 

Porovnanie rôznych implementácií

           

            OpenVPN popisujem bližšie v ďalšej kapitole a tak sa zastavím iba pri stručno opise L2TP. Táto magicka skratka znamená Layer 2 Tunnel Protocol a ako už názov napovedá je to protokol, ktorý nám umožnuje tunelovať cez druhú vrstvu. V podstate tento protokol je nadstavbou nad PPP (Point-to-Point Protocol), ktorý však umožnuje iba spojenie medzi prístupovým zariadením a klientom a taktiež neobsahuje žiadne bezpečnostné rutiny. L2TP narozdiel od PPP dokáže spojiť akékoĺvek dva body v sieti a taktiež ak sa stavia nad IPSec dokáže poskytnúť aj adekvátnu bezpečnosť. V linuxu sa L2TP používa tak že L2TP vrstva sa dohodne na parametroch protokolu a spojenie už potom opäť realizuje ppp démon. Existuje ešte podobná varianta k L2TP a to PPTP, čize Point-to-Point Tunnel Protocol, ktorý ako aj L2TP umožnuje užívateľom bezpečne a nenáročne sa pripájať k VPN sieti. Avšak tento protokol nie je obstaraný až takou mierou zabezpečenia, akú by sme v niektorých sietuáciách potrebovali a tak sa doporučujú iné protokoly. Ovšem ak vam na bezpečnosti až tak nezáleží a uvítate ľahkú nastaviteľnosť tak potom PPTP môže byť práve to čo hľadáte, ale aj tu by som uprednosťnoval to používať len na homogénnych sieťach kde klientské stanice tvoria OS Windows, a to sú aj hlavné dôvody prečo tieto dva posledné protokoly nemajú až tak veľke rozšírenie a taktiež nie sú udržiavané a rozširované do vhodnej mieri a ostávajú ochudobené o nové vlastnosti, ktoré sebou doba prináša. A teraz sa pozrieme na stručný prehľad OpenVPN a L2TP/IPSec(MSL2TP) riešenia:

 

 

OpenVPN

L2TP/IPSec

Cena

Zdarma, GNU/GPL

Šírený zdarma ale nie je to úplný free software a ešte k tomu sú problémy s patentmi

Inštalácia

Jednoduchá

Jednoduchá

Konfigurovateľnosť

Umožnuje spústu nastavení, ktoré vám pomôžu postaviť VPNku na mieru

Neobsahuje až toľko nastavení, čo je viac user-friendly ale neposkytuje tým veľký rozsah nastavenia  pre správcu

Bezpečnosť

Zaistená cez IPSec, šifrovanie a pod.

Taktiež sa využíva IPSec

Výbava

Za ten čas čo je táto implentácia na svete stihla na seba nabaliť spústu užitočných vecí.

Neobsahuje žiadny veľký arzenál a tak tam chýba napríklad aj AES a pod.

Výkon

Obsahuje radu optimalizácií, ktoré z neho robia silný nástroj

Vďaka nabaľovaniu paketov a neefektívnemu handlovaniu paketov, je táto implementácia slabšia

           

Takže suma sumárum vychádza jednoznačne z tohto porovnania implementácií, OpenVPN ako víťaz a preto sa v ďaľsom texte budem zaoberať len ním. Ovšem L2TP/IPSec sa môže uplatniť a to hlavne na Microsoft staniciach, kde sú klienti pre toto rozhranie zabudované priamo v OS a tak nie je problém zapojiť nejakú MS sieť do tejto siete.

OpenVPN

 

OpenVPN je jednoducho použiteľná, robustná a veľmi konfigurovateľná implementácia VPN umožňujúca bezpečne prepojiť dve a viac sieti. Komunikácia cez OpenVPN je šifrovaná pomocou SSL.

Projekt OpenVPN je Open Source a je šírený pod licenciou GNU/GPL.

Popis inštalácia a nastavení OpenVPN píšu vzhľadom k OS Linux, ale podporované operační systémy sú i MS Windows 2000/XP, MacOS X, OpenBSD, FreeBSD NetBSD a také Solaris. Kompletní výpis vlastností OpenVPN je k nahliadnutiu na stránkách projektu (http://openvpn.net/).

 

Inštalácia

 

 

Download

OpenVPN je k stiahnutiu na adrese http://prdownloads.sourceforge.net/openvpn/, použil som verziu 2.0_beta10, ktorú stiahnete na http://prdownloads.sourceforge.net/openvpn/openvpn-2.0_beta10.tar.gz a preložil som si ju zo zdrojových súborov. Aplikácia závisí na knihovni LZO a tiež potrebujete hlavičkové súbory OpenSSL.

Kompilácia

Skompilujte a nainštalujte knihovňu LZO (klasika: ./configure --prefix=/usr/local && make && checkinstall), potom spustite ako užívateľ root ldconfig.

Preklad OpenVPN je tiež veľmi jednoduchý:

tar -xjf openvpn-2.0_beta10.tar.gz
cd openvpn-2.0_beta10
./configure --prefix=/usr/local
make
checkinstall
 

Pred tím ako nainštalujete do systému balíček vytvorený checkinstallom, otestujte funkčnosť šifrovania (stále sme v adresári so zdrojovými kódmi OpenVPN):

./openvpn --genkey --secret key
./openvpn --test-crypto --secret key

Ďalej otestujeme naviazanie spojenie pomocou TLS/SSL:

V jednom terminálu spustíme:

./openvpn --config sample-config-files/loopback-client

V druhom terminálu spustíme:

./openvpn --config sample-config-files/loopback-server

 

TUN/TAP

OpenVPN používa pre komunikáciu virtuálne sieťové zariadenia tun alebo tap.

Podpora pre tun/tap je v linuxu súčasťou jadra, pokiaľ používate jadro z distribúcie tak sa nemusíte báť. Ak si prekladáte jadro sami, nezabudnite na voľbu(pre jadra rady 2.6):

Device Drivers --->
    Networking support  --->
        <M>   Universal TUN/TAP device driver support

Minimálne v distribúcii Slackware budete musieť vyrobiť zariadenia /dev/net/tun:

mknod /dev/net/tun c 10 200

a naloadovať modul sprístupňujúci funkcie tun do jadra:

modprobe tun

 

 

Nastavenie

 

 

Firewall

Nastavte si maškarádu a treba ešte povoliť forwardovanie paketu.

Tunel bez zabezpečenia

Tento tunel nieje nijak zabezpečený, komunikácia prebieha protokolom UDP na portu 5000.

Na servru 1 spustíme:

openvpn --remote server2.sk --dev tun1\
 --ifconfig 192.168.2.1 192.168.2.2 --verb 9

Na servru 2 spusťte:

openvpn --remote server1.sk --dev tun1\
 --ifconfig 192.168.2.2 192.168.2.1 --verb 9

Funkčnosť otestujete pomocou pingu na druhou stranu tunelu:

server 1: ping 192.168.2.2
server 2: ping 192.168.2.1

 

Tunel zabezpečený pevným kľúčom

Najskôr si vygenerujeme kľúč, ktorým zabezpečíme spojení:

openvpn --genkey --secret klic.key

Kľúč musíte mať na oboch počítačoch na ktorých končí tunel, prenos kľúča by mal prebiehať nejakým bezpečným spôsobom.

Prví počítač:

openvpn --remote server2.sk --dev tun1 \
--ifconfig 192.168.2.1 192.168.2.2 --verb 5 --secret kluc.key

 

Druhý počítač:

openvpn --remote server1.sk --dev tun1 \
--ifconfig 192.168.2.2 192.168.2.1 --verb 5 --secret kluc.key

 

 

 

 

TLS/SSL

 

 

SSL certifikáty

Pre to aby sme mohli používať nasledujúce nastavenia potrebujeme SSL certifikáty a kľúče podpísané od jednej CA. Balíček OpenVPN obsahuje skripty s jednoduchou CA (adresár easy-rsa/), ktorú použijeme.

V adresári easy-rsa/ nájdete súbor vars, ktorý si musíte upraviť v závislosti na tom kam ste si easy-rsa/ nakopírovali. Doporučujem aby ste si prečítali README, ktoré je v tom adresári, je tam totiž kompletní popis výroby kľúča.

Nastavenie

Nastavenie OpenVPN pre použití TLS/SSL mám v konfiguračných súboroch, samozrejme že to ide napísať ako parametri programu tak ako v minulých príkladoch.

/etc/openvpn/

Všetky súbory, ktoré tu budem popisovať sú v adresári /etc/openvpn, ktorý má práva 700 a majiteľa root.

SSL certifikáty - Server

Na server si umiestnime certifikát CA (ca.crt) a certifikát a kľúč serveru (server.crt a server.key), ktoré sme si vygenerovali podľa README v adresári easy-rsa/, taktiež by ste nemali zabudnúť na súbor dh1024.pem alebo dh2048.pem, záleží ktorý ste si vyrobili.

server.conf

Tento súbor obsahuje nastavenia OpenVPN na strane serveru(keď sa pozriete do dokumentácie k OpenVPN, zistíte čo ktorá položka znamená.):

dev tun
ifconfig 192.168.2.1 192.168.2.2
up ./server.up
tls-server
dh dh2048.pem  
#alebo dh dh1024.pem
ca ca.crt
cert server.crt
key server.key
port 5000
comp-lzo
ping 15
ping-restart 45
ping-timer-rem
persist-tun
persist-key
verb 3

Parametri ifconfig-u sú ifconfig <lokalna IP> <vzdialena IP>, sú to koncové adresy tunelu. Server beží na UDP portu 5000.

server.up

Soubor server.up je shell skript, pridáva záznám do route pre VPN-ku.

route add -net 192.168.2.0 netmask 255.255.255.0 add gw $5

 

start.sh

start.sh je skript, ktorý nahadzuje VPN-ku, pre vypnutí VPN stačí killnúť proces openvpn

#!/bin/bash
dir=/etc/openvpn
echo 1 > /proc/sys/net/ipv4/ip_forward
openvpn --cd $dir --daemon --config server.conf

 

SSL certifikáty - Klient

Na klientský počítač umiestnime certifikát CA (ca.crt) a certifikát a kľúč klienta (klient.crt a klient.key), ktorý sme si vygenerovali podľa README v adresári easy-rsa/.

klient.conf

dev tun
remote 147.32.119.186   # VPN server
ifconfig 192.168.2.2 192.168.2.1
up ./klient.up
tls-client
ca ca.crt
cert klient.crt
key klient.key
port 5000
#user nobody
#group nobody
comp-lzo
ping 15
ping-restart 45
ping-timer-rem
persist-tun
persist-key
verb 3

 

klient.up

Súbor klient.up je shell skript, ktorý po nahodení VPN-ky upravuje routovaciu tabuľku klienta, musíte si napišať svoj vlastný v závislosti na vašich podmienkach na sieti. Ako príklad ukážem svoj skript, ktorým sa pripojujem keď sieťujem cez modem:

#!/bin/bash
route add 147.32.119.186 ppp0       # route na VPN server
route del default                   # zmažem východziu gw
route add default gw 192.168.2.1    # budem routovať cez VPNku

V prípade, že chcete všetok traffic tlačiť cez VPN-ku, musíte pridať do route tabuľky pravidlo na VPN server.

start.sh

Ako klientský počítač mám notebook, ktorý má vypnutý syslog a snažím sa aby čo najmenej zapisoval na disk. Preto mám /tmp namountovaný ako tmpfs a OpenVPN nechávam logovať do súboru /tmp/openvpn.log

#!/bin/bash
dir=/etc/openvpn
modprobe tun
echo 1 > /proc/sys/net/ipv4/ip_forward
openvpn --log /tmp/openvpn.log --cd $dir --daemon --config klient.conf

 

 

 

Záver

 

Záverom by som už len chcel spomenúť, že v dnešnej dobe sa čoraz častejšie kladie dôraz na zabezpečenie a spájanie sietí a tým vytváranie korporátných sietí kde sa ľudia nemusia báť zdieľať veci a tým zvýšiť efektivitu práce zamestnancov ako aj jednotlivcov, ktorý využívajú VPN aj na zvýšenie komfortu, keďže sa odbijú veci, ktoré by pri normálnej komunikácii cez otvorený kanál na Internete prekážali. Preto VPN bude podľa mňa čoraz viac a viac populárnejšie a nasadzované aj do oblastí, kde sú teraz uprednostňované iné technológie, ktoré sú však nekomfortné a taktiež zvyšujú riziko napadnutia siete.

 

Links:

 

http://openvpn.net/

http://www.osnews.com/story.php?news_id=5803

http://www.jacco2.dds.nl/networking/freeswan-l2tp.html

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/TechRef/2a2f7792-5a4a-438b-8711-23694ae56e3a.mspx

http://www.ipsec-howto.org/

http://www.osnews.com/story.php?news_id=5803

http://www.poptop.org/

http://prdownloads.sourceforge.net/openvpn/openvpn-2.0_beta10.tar.gz