VPS – Konfigurácia VPN

V návode popíšem ako nakonfigurovať VPN server a ako nakonfigurovať klienta. Návod je písaný pre serverovú edíciu Ubuntu 14.04, ale použiť je ho možné aj na iné distribúcie občas s drobnými zmenami. VPN klient bude v tomto prípade konfigurovaný v prostredí Windows a Linux. Na VPN som si zvolil program OpenVPN, autentifikácia je riešená vygenerovanými certifikátmi a kľúčmi.

Tento návod je určený skôr pre pokročilých užívateľov. Jedná sa totiž o komplikovanejšiu tému pri ktorej musí mať užívateľ aspoň základný prehľad o fungovaní sietí. Je to návod, v ktorom popíšem ako nakonfigurovať VPN, čo je virtuálna privátna sieť (Virtual Private Network). VPN je sieť, ktorá umožňuje rozšírenie privátnej siete po verejnej sieti napr. internete, pomocou tunelu. Komunikácia cez tento tunel je pritom šifrovaná. Používa sa to hlavne vo firemných sieťach, do ktorých prístup z internetu nie je možný, ale ak máte VPN klienta a prístupové heslá resp. certifikáty, môžete sa do tejto siete dostať aj napríklad z domu.

Pre tento prípad budem mať server s nasledovnými parametrami siete:
IP adresa: 95.85.17.11
Maska siete: 255.255.255.0
Brána (Gateway): 95.85.17.1
Sieť: 95.85.17.0
Broadcast: 95.85.17.255

Klient bude mať dynamickú adresu pridelenú DHCP serverom z rozsahu:
95.85.17.20. až 95.85.17.100

 

Obsah

1 Konfigurácia servera
1.1 Inštalácia bridge-utils
1.2 Konfigurácia sieťového rozhrania
1.3 Inštalácia OpenVPN
1.4 IPv4 Forwarding
1.5 Vygenerovanie serverových kľúčov
1.6 Vygenerovanie klientských certifikátov
1.7 Vytvorenie skriptov
1.8 Konfigurácia OpenVPN
1.9 iptables
1.10 Reštart

2 Konfigurácia klienta vo Windows
2.1 Stiahnutie a inštalácia OpenVPN klienta
2.2 Inštalácia TAP adaptéru
2.3 Úprava konfigurácie
2.4 Nakopírovanie certifikátov a kľúčov
2.5 Pripojenie k serveru

3 Konfigurácia klienta v Linux
3.1 Stiahnutie a inštalácia OpenVPN klienta
3.2 Úprava konfigurácie
3.3 Nakopírovanie certifikátov a kľúčov
3.4 Pripojenie k serveru

4 Test pripojenia

 



1 Konfigurácia servera

Potrebujete konzolový prístup na server, napríklad SSH a heslo na Root užívateľa resp. sudo práva.


1.1 Inštalácia bridge-utils

Tento krok je relatívne jednoduchý, bridge-utils byva vo vacsine standardnych repozitárov, takže stačí zadať do konzoly príkaz:

sudo apt-get install bridge-utils


1.2 Konfigurácia sieťového rozhrania

Následne je nutné nakonfigurovať sieťové rozhrania na servery, tzv. interfaces:

sudo nano /etc/network/interfaces

Takto vyzerá môj súbor interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

#iface eth0 inet static

# address 95.85.17.11

# netmask 255.255.255.0

# gateway 95.85.17.1

# dns-nameservers 8.8.4.4 8.8.8.8 209.244.0.3

# bridge_ports eth0

auto br0

iface br0 inet static

address 95.85.17.11

netmask 255.255.255.0

gateway 95.85.17.1

network 95.85.17.0

broadcast 95.85.17.255

dns-nameservers 8.8.4.4 8.8.8.8 209.244.0.3

bridge_ports eth0

iface eth0 inet manual

up ifconfig $IFACE 0.0.0.0 up

up ip link set $IFACE promisc on

dns-nameservers 8.8.4.4 8.8.8.8

down ip link set $IFACE promisc off

down ifconfig $IFACE down

Obr. 1: interfaces.

Upravte údaje v interface br0, čo je bridge, podľa parametrov vašej siete. Jedná sa o sieť, ktorou sa server pripája do internetu. Takže treba upraviť: address, netmask, gateway, network, broadcast. Za znakom mriežky (#) sa nachádzajú komentáre.

Uložte súbor, v editore Nano je to kombinácia kláves Ctrl+O a následne ho zavrite klávesou Ctrl+X. Treba ale dávať pozor na správnu konfiguráciu v tomto súbore, pretože sa môže stať, že keď ho nesprávne nakonfigurujete, server sa nebude schopný pripojiť na sieť a ak sa jedná o virtuálny server kdesi v inej krajine, je možné, že sa k nemu už nepripojíte. Preto odporúčam zálohovať si ideálne celý server vytvorením snapshotu.


1.3 Inštalácia OpenVPN

Samotná inštalácia je opäť jednoduchá. Stačí zadať príkaz:

sudo apt-get install openvpn


1.4 IPv4 Forwarding

Keďže chceme v našom prípade umožniť VPN klientom prístup na sieť mimo serveru, teda internet, musíme zapnúť preposielanie IPv4 paketov. Editujte teda súbor:

nano /etc/sysctl.conf

A odkomentujte nasledovný riadok:

net.ipv4.ip_forward=1

Po tomto kroku je nutný reštart serveru alebo siete príkazom sysctl -p. Ale stačí, keď server reštartujeme až po ukončení všetkých krokov.

Obr. 2: IPv4 Forwarding.


1.5 Vygenerovanie serverových kľúčov

Budeme potrebovať vygenerovať kľúče.

Ak máte verziu Ubuntu 12.04:

sudo mkdir /etc/openvpn/easy-rsa/

sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

sudo chown -R $USER /etc/openvpn/easy-rsa/

Namiesto $USER zadajte login vášho užívateľa napr. Jozko. V tomto kroku v podstate vytvárame nový priečinok a kopírujeme do neho predpripravené príklady.

Ak máte verziu Ubuntu 14.04:

apt-get install easy-rsa

make-cadir /etc/openvpn/easy-rsa

Ďalej si potrebujeme predpripraviť premenné pre kľúče a certifikáty, ktoré budeme generovať. Editujte teda súbor:

sudo nano /etc/openvpn/easy-rsa/vars

Nájdite v súbore pramater KEY_CONFIG a zmeňte tento riadok nasledovne:

export KEY_CONFIG=/etc/openvpn/easy-rsa/openssl-0.9.6.cnf

Obr. 3: export KEY_CONFIG.

V ďalších parametroch si už môžete vypísať údaje k vlastnému certifikátu. Upravte teda hodnoty nasledovných parametrov, podľa vašej chuti (meňte len údaje v úvodzovkách):

export KEY_COUNTRY=”SR”

export KEY_PROVINCE=”BA”

export KEY_CITY=”Bratislava”

export KEY_ORG=”itnavody”

export KEY_EMAIL=”info@itnavody.sk”

Obr. 4: export KEYs.

Konečne môžeme pristúpiť k samotnému generovaniu. Zdajte tieto príkazy:

cd /etc/openvpn/easy-rsa/

source vars

./clean-all

Tým máme adresár pripravený a vyčistený. Postupne zadajte tieto príkazy:

./build-dh
./pkitool –initca
./pkitool –server server

Chvíľu to potrvá, tak si zatiaľ spravte kávu/čaj/kakavko.

Potom choďte do nového priečinku keys a vygenerujte ešte jeden kľúč:

cd keys

openvpn –genkey –secret ta.key

Všetko čo sa vám vygenerovalo skopírujte do priečinku /etc/openvpn, napríkald týmto príkazom:

sudo cp server.crt server.key ca.crt dh2048.pem ta.key /etc/openvpn/


1.6 Vygenerovanie klientských certifikátov

Teraz potrebujeme vygenerovať certifikáty pre klientov. Opäť choďte do priečinku easy-rsa a pripravte vars skript:

cd /etc/openvpn/easy-rsa/

source vars

Potom už len vygenerovať certifikát pre klienta:

./pkitool klient

Slovo klient môžete nahradiť ľubovoľným textom, napr. ./pkitool Ferko. Vzniknú vám teda nasledovné súbory:

/etc/openvpn/ca.crt
/etc/openvpn/ta.key
/etc/openvpn/easy-rsa/keys/klient.crt
/etc/openvpn/easy-rsa/keys/klient.key

Tieto súbory musíte preniesť na klienta. Bez nich sa klient nebude môcť pripojiť.

Každý klient by mal mať vlastný kľúč a certifikát. Ak budú mať dvaja klienti rovnaký kľúč, môže to spôsobovať odpájanie jedného alebo druhého, prípadne timeouty spojenia.


1.7 Vytvorenie skriptov

Ďalším krokom je vytvorenie dvoch jednoduchých skriptov na zapnutie a vypnutie VPN servera. Zadajte príkaz:

nano /etc/openvpn/up.sh

Otvorí sa vám prázdny dokument, napíšte do neho nasledovné:

#!/bin/sh

BR=$1

DEV=$2

MTU=$3

/sbin/ifconfig $DEV mtu $MTU promisc up

/sbin/brctl addif $BR $DEV

Obr. 5: Skript up.sh.

Potrebujeme ešte vytvoriť jeden skript:

nano /etc/openvpn/down.sh

Vložte do neho:

#!/bin/sh

BR=$1

DEV=$2

/sbin/brctl delif $BR $DEV

/sbin/ifconfig $DEV down

Obr. 6: Skript down.sh.

Tieto skripty musíme nastaviť ako spustiteľné (executable). Príkazom:

sudo chmod 755 /etc/openvpn/down.sh

sudo chmod 755 /etc/openvpn/up.sh


1.8 Konfigurácia OpenVPN

Prvý krok pri samotnej konfigurácii je nakopírovanie sample-config z adresáru openvpn/examples. Napíšte teda príkaz:

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/

Rozbaľte tento zip:

gzip -d /etc/openvpn/server.conf.gz

A otvorte súbor na editáciu v textovom editore:

nano /etc/openvpn/server.conf

V konfigu treba spraviť viacero úprav s odkomentovaním alebo zakomentovaním určitých riadkov. Riadky sa zakomentovávajú pomocou dvojbodky (;). Zmeny som uviedol do nasledovnej tabuľky.

Pôvodná hodnota Nová hodnota Komentár Obrázok
dev tun ;dev tun
;dev tap dev tap0 Tak by sa mal volať váš adaptér. Ak si nieste istý, vyjdite z editora a zadajte príkaz ifconfig, systém vám vypíše adaptéry (interfaces).
dh1024.pem dh2048.pem Máme 2048 bitový kľúč.
server 10.8.0.0 255.255.255.0 ;server 10.8.0.0 255.255.255.0 Pre bridge-nuté spojenie to nepotrebujeme.
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 Server-bridge 95.85.17.11 255.255.255.0 95.85.17.20 95.85.17.100 Prvá IP je IP adresa servera.Druhá IP je maska servera.Tretia sada čísel je začiatočná IP, ktorú bude server prideľovať prihláseným VPN klientom.A posledná IP je konečná IP adresa, posledná ktorú môže server prideliť. Ak chcete mať pripojených súčasne 20 užívateľov, musí v tomto rozmedzí byť aspoň 20 IP adries.
;push “route 192.168.10.0 255.255.255.0” push “route 95.85.17.0 255.255.255.0” Prvá IP je adresa siete servera a druhá je maska siete. V mnohých manuáloch sa NESPRÁVNE udáva, že je to default gateway. Pozor na to.
;push “redirect-gateway def1 bypass-dhcp” push “redirect-gateway def1 bypass-dhcp” Znamená to, že všetok traffic od klienta pôjde cez VPN.
;push “dhcp-option DNS 208.67.222.222” push “dhcp-option DNS 8.8.8.8” Definuje DNS server, odporúčam použiť google, teda 8.8.8.8.
;push “dhcp-option DNS 208.67.220.220” push “dhcp-option DNS 8.8.4.4” Definuje záložný DNS server, odporúčam použiť záložný google, teda 8.8.4.4.
;tls-auth ta.key 0 # This file is secret tls-auth ta.key 0 # This file is secret Implementácia TLS autentifikácie (súbor ta.key).
;cipher AES-128-CBC # AES cipher AES-128-CBC # AES Zapnutie AES šifry.
user nobody ;user nobody Obmedzenie práv VPN služby. Kvôli bezpečnosti.
group nogroup ;group nogroup Obmedzenie práv VPN služby. Kvôli bezpečnosti.
up “/etc/openvpn/up.sh br0” Pridajte tento riadok. Je to náš skript na vytvorenie VPN spojenia.
down “/etc/openvpn/down.sh br0” Pridajte tento riadok. Je to náš skript na zatvorenie VPN spojenia.
script-security 3 Pridajte tento riadok. Parameter script-security OpenVPN. V podstate umožňuje vykonávanie našich dvoch skriptov.

1.9 iptables

Toto je jedna z tých vecí, ktorú snáď v žiadnom manuále nenájdete (okrem tohto 😉 ). A budete sa čudovať, prečo sa vám VPN klient nedokáže pretunelovať na internet, aj napriek tomu, že VPN spojenie je živé. Problém je v tom, že keď dáte dotaz na internetovú adresu napríklad google.com, tento prejde VPN tunelom až na google.com, ale odpoveď z google.com k vám už neprejde, pretože server nevie, ako má takýto paket preroutovať späť k vám a tak ho zahodí.

Riešením je:

iptables -t nat -A POSTROUTING -s 95.85.17.0/24 -o br0 -j MASQUERADE

Pričom 95.85.17.0 by mala byť IP adresa vašej siete, ktorá je na serveri. Týmto príkazom hovoríte, že packety určené pre túto sieť majú byť posielané na váš bridge interface br0.

Normálne sa iptables premazávajú vždy po reštarte servera. Aby bolo nastavenie trvalé, treba doinštalovať iptables-persistent:

sudo apt-get install iptables-persistent

A následne uložiť konfiguráciu iptables (zápis do súboru /etc/iptables/rules.v4):

iptables-save


1.10 Reštart

Konečne nadišiel ten čas reštartovať. Zadajte teda príkaz:

reboot

Pozor, ak máte niečo neuložené alebo rozrobené na serveri, nezabudnite si to predtým uložiť!

 



2 Konfigurácia klienta vo Windows


2.1 Stiahnutie a inštalácia OpenVPN klienta

Stiahnite si OpenVPN client pre vašu verziu Windows zo stránky:

https://openvpn.net/index.php/open-source/downloads.html

Stiahnutý Setup musíte sustiť ako administrátor. Pravé tlačítko a Run as administrator.


2.2 Inštalácia TAP adaptéru

Po nainštalovaní klienta vám v priečinku Program Files vznikne nový priečinok TAP-Windows.

Spustite program, ale opäť ako administrator:

c:\Program Files\TAP-Windows\bin\addtap.bat

Keď ste na tento addtap.bat súbor už raz klikli a tým ho spustili, neklikajte naň viac-krát. Otvorte sieťové adaptéry vo Windows a mal by vám tam pribudnúť nový TAP-Windows adapter.

Obr. 7: Súbor addtap.bat.

Obr. 8: TAP adaptér.


2.3 Úprava konfigurácie

Ďalším krokom je úprava konfigurácie. Ak ste nemenili cestu, kam sa má OpenVPN client nainštalovať, skopírujte súbor:

c:\Program Files\OpenVPN\sample-config\client.ovpn

do

c:\Program Files\OpenVPN\config\

V tomto súbore treba následne spraviť pár zmien obdobne ako sme to robili pri serverovej konfigurácii. Otvorte teda súbor client.ovpn v textovom editore a upravte ho podľa nasledovnej tabuľky.

Riadky sa zakomentovávajú pomocou dvojbodky (;).

Pôvodná hodnota Nová hodnota Komentár Obrázok
dev tun ;dev tun
;dev tap dev tap0 Tento adptér používame.
remote my-server-2 1194 remote 95.85.17.11 1194 95.85.17.11 je IP vášho servera, zmeňte ju teda adekvátne.
ca ca.crtcert klient.crtkey klient.key V sekcii SSL/TLS parms pridajte tieto 3 riadky. To sú vaše klientské kľúče, ak ste si klienta nazvali inak, aj vaše kľúce sa volajú inak. Viď bod 1.6 tohto manuálu.
;tls-auth ta.key 1 tls-auth ta.key 1

Odkomentujte tento riadok. Server má tento parameter nastavený na 0, takže klient musí mať 1.

;cipher x cipher AES-128-CBC Nastavte šifrovanie rovnaké, aké máte na serveri, takže v našom prípade AES-128-CBC.

Po úpravách súbor uložte a zavrite.


2.4 Nakopírovanie certifikátov a kľúčov

Do adresára c:\Program Files\OpenVPN\config\ nakopírujte súbory z bodu 1.6 tohto manuálu. Takže:

ca.crt

klient.crt

klient.key

ta.key

Obr. 9: Priečinok OpenVPN/config.


2.5 Pripojenie k serveru

Ak máte dokončené všetky predchádzajúce kroky, môžete sa pripojiť. Spustite OpenVPN GUI, ktorý vám vznikol v Start Menu, ale opäť ako administrator. Následne sa vám v pravo dole pri hodinách objaví nová ikona, kliknite na ňu pravým tlačítkom a vyberte možnosť Connect. Zobrazí sa vám statusové okno a ak ste spravili všetko dobre, v priebehu pár sekúnd by ste mali byť pripojený na VPN a ikonka by mala zozelenať.

Obr. 10: Pripojenie k VPN.

 



3 Konfigurácia klienta v Linux


3.1 Stiahnutie a inštalácia OpenVPN klienta

Najjednoduchší spôsob ako stiahnuť a nainštalovať OpenVPN klienta na Linuxovej mašine je zobrať ho priamo z repozitárov. A teda:

sudo apt-get install openvpn


3.2 Úprava konfigurácie

Úprava konfigurácie je obdobná ako vo Windows.

Skopírujte súbor:

/usr/share/doc/openvpn/examples/sample-config-files/client.conf

do ľubovoľného priečinku, napr. do:

/Documents

A premenujte ho na client.ovpn.

Tento konfiguračný súbor následne upravte podľa nasledovnej tabuľky (ak už máte konfiguračný súbor napríklad z Windows klienta, môžete použiť priamo ten):

Riadky sa zakomentovávajú pomocou dvojbodky (;).

Pôvodná hodnota Nová hodnota Komentár Obrázok
dev tun ;dev tun
;dev tap dev tap0 Tento adptér používame.
remote my-server-2 1194 remote 95.85.17.11 1194 95.85.17.11 je IP vášho servera, zmeňte ju teda adekvátne.
ca ca.crtcert klient.crtkey klient.key V sekcii SSL/TLS parms pridajte tieto 3 riadky. To sú vaše klientské kľúče, ak ste si klienta nazvali inak, aj vaše kľúce sa volajú inak. Viď bod 1.6 tohto manuálu.
;tls-auth ta.key 1 tls-auth ta.key 1

Odkomentujte tento riadok. Server má tento parameter nastavený na 0, takže klient musí mať 1.

;cipher x cipher AES-128-CBC Nastavte šifrovanie rovnaké, aké máte na serveri, takže v našom prípade AES-128-CBC.

Po úpravách súbor uložte a zavrite.


3.3 Nakopírovanie certifikátov a kľúčov

Do rovnakého priečinku, ako ste skopírovali súbor client.ovpn, skopírujte aj súbory zo serveru z bodu 1.6 tohto manuálu. Takže:

ca.crt

klient.crt

klient.key

ta.key


3.4 Pripojenie k serveru

Teraz stačí sa už len pripojiť. Napíšte do konzoly:

cd /Documents

openvpn ??config client.ovpn

Mali by ste vidieť výpis o úspešnom pripojení na server.

 



4 Test pripojenia

Ak ste sa s klientom úspešne pripojili na server, stačí už len otestovať pripojenie. Po úspešnom pripojení k VPN väčšinou treba chvíľu počkať, cca 1-2 minúty, kým si Windows uvedomí, že má komunikovať cez VPN. Najjednoduchší test VPN spojenia je trace route, čiže vlastne sledovanie cesty vášich IP paketov.

Vo Windows otvorte príkazový riadok cmd. A napíšte príkaz:

tracert 8.8.8.8

Obr. 11: Tracert.

V Linux-e otvorte terminál. A napíšte príkaz:

traceroute 8.8.8.8

Ak bude prvý skok (hop) váš server, VPN vám funguje a teda internetové dáta odchádzajúce z vášho PC sú šifrované. Okrem toho, že dáta sú šifrované to má aj tú výhodu, že ak váš internetový provider blokuje niektoré webové stránky, s VPN sa na ne dostanete.

Zanechajte komentár