Vše co jste chtěli vědět o VPN, ale báli jste se zeptat

|O VPN|Vše kolem OpenVpn|About|
  • Pro server i klienta se instaluje stejný software
  • Konfigurace prováděna pomocí skriptů - až zde je rozlišena pozice funkce klienta a servru
  • Konfigurační soubor má vždy koncovku .ovpn
  • Bývá umístěn v adresáři OpenVPN\config\, ale toto není podmínkou
  • Ať už v případě bridgovaného spojení nebo routovaného spojení je stejný základ
  • Snažíme se, aby oba konce tunele reprezentované svýma TAP/TUN zařízeníma navzájem komunikovala pomocí šifrovaného spojení
  • Následně poté přidáváme routy (v případě routavéného spojení), aby vybraná komunikace (určujeme práve přidáním dané routy) směřovala ven přes navázané VPN spojení. V případě bridgování je případ obdobný, jen veškerá komunikace je přes bridgované spojení místní fyzické síťové karty a TAP zařízení posíláno na opačný konec VPN spojení, kde se děje totéž, ale v opačném pořadí
  • Manuálová stránka příkazu route, k přístupům k sítím, které jsou skryté pod serverm či klientem VPN spojení
  • Základní konfigurační soubor:
    • Server
    • ###########################################

      #  OpenVPN 2.0 konfigurační soubor

      #  pro server, který akcpetuje více klientů

      #  Tento konfigurační soubor je stejný jak

      #  pro Windows platformu, tak pro Linux

      #  platformu. Jediný rozdíl je v oddělovači

      #  souborů, který je na Windows platformě "\",

      #  kdežto na linux platformě je "/". Př: WIN

      #  "C:\\Program Files\\OpenVPN\\config\\foo.key"

      ############################################

      # Komentář značí i ";"

      # Na které IP adrese bude OpenVn naslouhat

      # (nepovinné)

      ;local a.b.c.d

      # Na kterém TCP/UDP portu bude OpenVpn naslouchat

      # V případě, že chcete mít spuštěno na jednom počítači

      # více OpenVpn programů, každý by měl mít nastaven jiný port

      # Tento (Tyto) port(y) je pak nutno povolit na Vašem firewallu

      port 1194

      # Přijímáme TCP nebo UDP pakety

      ;proto tcp

      proto udp

      # "dev tun" vytvoří routovaný IP tunel,

      # "dev tap" will vytvoří ethernet tunel.

      # Použijte "dev tap",jestliže chcete použít bridging.

      # Pozn: Na většině systémů VPN nebude správně fungovat

      # dokud částečně nebo úplně nepovolíte TUN/TAP rozhraní.

      # Podívejte se do manuálu nastavení Vašeho firewallu jak na to.

      ;dev tap

      dev tun

      # Windows potřebují mít přiřazeno jméno pro TAP-WIN32

      # v případě že používate víc TUN/TAP zařízení.

      ;dev-node JménoTapZařízení

      # SSL/TLS kořenový certifikát (ca), certifikát

      # (cert) a soukromý klíč (key).

      # Každý klient a server potřebují mít vlastní klíč

      # a certifikát. Oba pak musí mít ještě kořenový certifikát.

      # Ten je na obou stranách stejný

      #

      # Generování certifikátů/klíčů

      # Pozn: Klienti i server musí mít vyplněnou položku

      # v Common Name poli při generování certifikátů

      #

      # Může být pouřit jakkýkoliv X509 systém na generování klíčů

      # Příklad pro Windows platformu Projekt Mycert

      #

      ca sample-keys/tmp-ca.crt

      cert sample-keys/server.crt

      key sample-keys/server.key # Tento soubor by měl být uchován v tajnosti

      # Diffie hellman parametry

      # Odkaz na generování

      dh sample-keys/dh1024.pem

      # Konfigurace serveru a kde podsítě, kde VPN poběží

      # Ip adresa serveru bude 10.8.0.1. Zbytek čísel je rezervováno pro kliety

      # Zakomentujte tuto řádku v případě, že používáte bridgování

      server 10.8.0.0 255.255.255.0

      # V tomto souboru je udržován záznam klientů a jejich

      # virtuálnách IP adres. Jestliže OpenVpn spojení je přerušeno

      # nebo je restartováno, klienti, kteří se znovu připojí mohou z tohoto souboru

      # dostat tu samou virtuální IP adresu jako při posledním spojení.

      ifconfig-pool-persist ipp.txt

      # Nastavení serveru v případě bridgování.

      # Po úspěšném vytvoření bridgovaného spojení musíte ručně

      # přiřadit IP/síťovou masku v rozhraní bridge. Zde předpokládáme

      # že toto je nastaveno na 10.8.0.4/255.255.255.0.

      # Nakonec musíme nastavit vedlejší rozsah IP adres v této podsíti pro

      # připojované klienty

      # (začíná=10.8.0.50 končí=10.8.0.100)

      # Nechte tuto řádku zakomentovanou, pokud nepoužíváte bridgované spojení

      ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

      # Nahrajem klietovi potřebné routy k spřístupnění dalších podsítí

      # pod serverem klientovi

      # the server.

      ;push "route 192.168.10.0 255.255.255.0"

      ;push "route 192.168.20.0 255.255.255.0"

      # Aby specifický klient dostal specifickou IP adresu,

      # nebo když klient má pod sebou další privátní síť,

      # která by taktéž měla mít přístup k VPN spojení, použijeme

      # podadresář "ccd" pro specifickou konfiguraci klienta

      # Příklad: Predpokládáme, že klient má certifikát se jménem "hustovlas"

      # Dále pak, že je součástí další sítě, která se připojuje přez něj.

      # např. 192.168.40.128/255.255.255.248

      # Zaprvé odkomentujte tyto dva řádky

      ;client-config-dir ccd

      ;route 192.168.40.128 255.255.255.248

      # Nyní vytvořte souvbor /ccd/hustovlas, který bude obsahovat

      # následující řádku

      # iroute 192.168.40.128 255.255.255.248

      # Toto umožní hustovlasově privátní síti mít přístup na VPN spojení

      # Tento příklad funguje pouze pokud používáte routování a ne bridgování.

      # Tj. dev tun přepínač a server přepínač

      # Příklad: Předpokládáme, že chcete hustovlasovi dát pevně zvolenou IP adresu

      # z 10.9.0.1

      # Nejprve odkometujte tyto dva řádky

      ;client-config-dir ccd

      ;route 10.9.0.0 255.255.255.252

      # Poté přidejte so souboru /ccd/hustovlas tento řádek

      # ifconfig-push 10.9.0.1 10.9.0.2

      # Předpokládejme, že chcete umožnit různá firewallová přístopvá

      # práva pro různé skupiny klientů. Máme Dvě možnosti :

      # (1) Spustit vícero OpenVPn programů, každý pro vlastní skupinu

      # s vlastním konfiguračním souborem

      # (2) Vytvoříme si skript, který dynamicky modifikuje firewall v závislosti

      # na odpovědích od klientů

      ;learn-address ./script

      # V případě povolení tohoto přepínače, všichni připojení klienti budou

      # mít jejich defaultí síťovou bránu přesměrovanou skrze VPN, což bude mít

      # za následek, že všechen IP provoz, jako je třeba www provoz a hledání DNS

      # bude chodit skrze VPN spojení. V tom případě musí pak mít server nasteven NAT

      # pro TUN/TAN rozhraní, aby toto fungovalo.

      # Varování: Může porušit klientovo síťové nastavení, jestliže pakety z klienotova

      # DHCP servru jsou routovány skrze VPN

      # Řešení: ujistěte se, že klietův lokální DHCP server je dostupný skrze jinou routu

      # než jen přes defaultní 0.0.0.0/0.0.0.0

      ;push "redirect-gateway"

      # Určité speciální Windows síťová nastavení mohou být klietovi také poslána,

      # jako třeba DNS nebo WINS adresy serverů

      # Varování: Zde se projevuje chyba Windows produktů. V případě, že změníte Remote Access connections

      # tak, že bude na začatku definovaných spojení, pak je očekáváno, že Vaše síťová utilita

      # (třeba NSLookup), použije jako defaultní DNS server ten , který je spojen se síťovým zařízením,

      # které je nejvýše položeno v definovaných síťových spojení. Boužel se toto ale nestane.

      # Proto Windows klienti by jako neměli použít DNS server skrze VPN spojení, jesltiže defaultní

      # brána je nastavena na remote connection

      # viz. http://support.microsoft.com/default.aspx?scid=kb;en-us;311218&Product=winxp

      ;push "dhcp-option DNS 10.8.0.1"

      ;push "dhcp-option WINS 10.8.0.1"

      # Odkomentujte tento přepínač, jestliže chcete dovolit

      # jednotlivám klientům, aby se viděli navzájem

      ;client-to-client

      # Odkomentujte tento přepínač, jestliže více klientů

      # se může připojit se stejným párem certifikát/klíč nebo

      # Tato volba je doporučována jen pro testovací účely.

      # V ostrém provozu tuto položku nechte vždy zakomentovanou

      ;duplicate-cn

      # Tento přepínač slouží k ověřování, že druhá strana stále reaguje

      # První parametr znamená, že každých 10 sekund je vyslán ping protistraně

      # Druhý parametr znamená, že když neobržíme do 120 sekunf odpověď, je

      # spojení přerušeno nebo se klient odpojil

      keepalive 10 120

      # Pro extra bezpečnost při spojení nad rámec SSL/TLS spojení,

      # použijte "HMAC firewall" k zabránění DoS útokům a UDP port floodingu

      #

      # pomocí následujícího příkazu vygenerujte statický klíč

      # openvpn --genkey --secret ta.key

      #

      # Server i klienti musejí pak tento klíč obsahovat

      # Druhý parametr tohoto přepínače by měl být "0" na serveru

      # a 1 u klientů

      ;tls-auth ta.key 0 # # Tento soubor by měl být uchován v tajnosti

      # Vyberte si kryptografické šifrování

      # Toto pak musí být též skopírováno do klientova konfiguračního souboru

      ;cipher BF-CBC # Blowfish (default)

      ;cipher AES-128-CBC # AES

      ;cipher DES-EDE3-CBC # Triple-DES

      # Zapína kompresi při přenosu skrze VPN

      # Toto pak musí být též skopírováno do klientova konfiguračního souboru

      comp-lzo

      # Maximální množství klientů, kteří se mohou zároveň připojit. Omezeno jen

      # hardwerem, kde běží server.

      ;max-clients 100

      # Je dobrá volba zredukovat přístupová práva OpenVpn programu po spuštění

      #

      # Na windows platformě můžete nechat zakomentováno

      ;user nobody

      ;group nobody

      # Tato volba se pokusí zabránit přístupu ke zdrojům po

      # restartu, které už nemusí být přístupny díky změně přístupových práv

      persist-key

      persist-tun

      # Výstupní soubor, kam se zapisuje status daného spojení

      # Přepsán každou minutu spojení

      status openvpn-status.log

      # Nastavení jinhé logovacího souboru. První příkaz po restartu

      # starý přepíše, druhý ke starému přidá nové věci. Lze použít jen

      # jeden z nich zároveň

      # Pozn: Defaultní adr, kam se ukládá log je v Linuxu syslog

      # ve Windows je to \Program Files\OpenVPN\log

      ;log openvpn.log

      ;log-append openvpn.log

      # Nastavení množství zapisovaných hlášení

      #

      # 0 je ticho, kromě fatálních chyb

      # 4 se používá pro obecné informace

      # 5 a 6 může pomoct při hledání síťovýh problémů při spojení

      # 9 vypisuje úplně vše

      verb 4

      # Nebude zapisovat opakující se zprávy, číslo udává

      # počet opakování těchtoi zpráv

      ;mute 20

    • Klient
    • #############################################

      #  Příklad konfiguračního souboru klienta

      #  při spojení k serveru, který umožňujě

      #  spojení vícero klientů

      #############################################

      # Specifikujeme, že jsme klient,

      # a že budeme přijímat určitá

      # nastavení od serveru

      client

      # Použijte to samé nastavení jako u serveru

      ;dev tap

      dev tun

      # Windows, v případě vícero TUN/TAP zařízení,

      # potřebuje,aby každé mělo unikátní název.

      # Na systému XP SP2 je pak nutno

      # povolit TAP zařízení na integrovaném firewallu

      ;dev-node MyTap

      # Připojujete se k TCP nebo UDP serveru

      # - nutno použít stejné nastavení jak na serveru

      ;proto tcp

      proto udp

      # Hostname/Ip serveru a port, ke kterému se připojujeme

      # Můžeme mít více hodnot, v případě, že je více serverů

      # Pomůže zlepšit výkon v případě přetížení serveru.

      remote my-server-1 1194

      ;remote my-server-2 1194

      # Vyberte si náhodně server ze seznamu

      # serverů pro vyrovnání záteže. Nebo

      # zkuste jména servrů v daném pořadí

      ;remote-random

      # Stále se bude snažit získat Hostname

      # OpenVPN serveru. Užitečné na strojích,

      # kterí nejsou natrvalo připojené k internetu,

      # jako například notebooky

      resolv-retry infinite

      # Klienti se většinou nemusí vázat

      # na specifický lokální port

      nobind

      # Snižte přístupová práva po inicializaci

      # Jen pro non-Windows systémy

      ;user nobody

      ;group nobody

      # Pokusí se uchovat specifikcá nastavení po restartu

      persist-key

      persist-tun

      # Jestliže se připojujete skrze HTTP proxy

      # k OpenVpn servru, zde umístěte

      # IP a port proxy serveru

      ;http-proxy-retry # Po přerušení spojení se znovu pokusíme připojit

      ;http-proxy [proxy server] [proxy port #]

      # Bezdrátové sítě často produkují mnoho

      # duplikujících se paketů.

      # Nastavte tento přepínač na potlačení varování

      # při opakování paketů

      ;mute-replay-warnings

      # SSL/TLS parametry

      ca sample-keys/tmp-ca.crt

      cert sample-keys/client.crt

      key sample-keys/client.key

      # Ověříme certifikát serveru tak, že

      # jeho certifikát musí mít nsCertType pole

      # nastaveno na položku server.Toto je

      # důležité bezpečnostní opatření k ochraně

      # proti potencionálním útokům.

      # Další informace

      #

      # Pro použití této volby, potřebujete

      # vygenerovat Váš certifikát serveru

      # s polem nsCertType nastaveným na hodnotu

      # server.

      # Návod na generování potřebného certifikátu

      ;ns-cert-type server

      # Jestliže tls-auth klíč je použit na straně serveru,

      # pak i klient tento klíč musí obsahovat.

      ;tls-auth ta.key 1

      # Vyberem kryptografickou šifru

      # Jestliže tato volba je specifikována na serveru,

      # musí být specifikována i zde (musí být stejná hodnota)

      ;cipher x

      # Povolíme kompresi během přenosu

      # Musí být opět nejdříve také povolena na straně serveru

      comp-lzo

      # Nastavíme úroveň vypisování logu

      verb 4

      # Nechceme, aby se nám opakující se zprávy

      # znovu vypisovali. Číslo značí počet opakování.

      ;mute 20

    • Detailní výpis všech možných přepínačů
  • Spuštění programu:
    • Na Linuxu: openvpn --config openvpn.conf
    • Ve Windows jsme program naistalovali spolu s grafickým klientem
      • V tray baru by jste tedy meli vidět tuto ikonku
      • ikonka tray grafického klienta

      • Nyní stačí jen stiskem pravého tlačítko na danou ikonku vyvolat místní nabídku a zvolit connect
      • Pozn:Konfigurační soubor jmeno.opvn musí být uložen v adresáři /openvpn/config/jmeno.opvn

        ikonka tray grafického klienta