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

|O VPN|Vše kolem OpenVpn|About|
  • Příklad č.1:
    • Jste někde na cestách. Doma máte vybudovanou LAN síť
    • Na této síti se nechází i Váš Mail server
    • A vy si chcete přečíst poštu bez nebezpečí, že Vás někdo během přenosu bude odposlouchávat a chytat Vaše hesla
    • Předpokládejme tedy, že IP adresa Mail servru je 192.168.1.10 ve vaší lokální síti (192.168.1.0/24)
    • Dále pak, že máte mezi sebou a internetem router/firewall
    • Nejprve předpokládejme, že Vám stačí, když obě dvě strany používají stejný vygenerovaný statický klíč. (Návod)
    • Takže máme vygenerován klíč se jménem třeba homekey.txt
    • Tento klíč se musí nacházet na obou stranách spojení. Takže si vyberte nějaký zabezpečený způsob spojení k doručení.
    • A nyní samotné konfigurační soubory na obou stranách
    • Server
    • vyberem si TUn zařízení pro přenos

      dev tun

      Ip adresa serveru a Ip adresa klienta (Ip adresy jsou virtuální a týkají se TUN zařízení)

      ifconfig 172.16.1.1 172.16.1.20

      klíč podle kterého se bude šifrovat

      secret /etc/openvpn/myhomelan/homekey.txt

      během přenosu zapnout kompresi

      comp-lzo

      port na kterém budeme komunikovat

      port 5000

      snížení privilegii po spuštění (na Windows platformě nemá smysl)

      user nobody

      group nobody

    • Klient
    • Ip/Hostname adresa serveru, ke kterému se připojujeme (jeho skutečná fyzická IP)

      Musíme být schopni server dosáhnout pomocí pingu

      remote servers.dynamic.dns.address

      zařízení, které použijeme - stejné jako u serveru

      dev tun

      virtuální IP tentokrát naše a pak serveru (TUN zařízení)

      ifconfig 172.16.1.20 172.16.1.1

      klíč na šifrování

      secret /etc/openvpn/myhomelan/homekey.txt

      komprese během přenosu zapnuta - musí být také na servru

      comp-lzo

      port na kterém budeme komunikovat - taktéž stejné jako na serveru

      port 5000

      snižení privilegii po spuštění (Jen non-Windows platformy)

      user nobody

      group nobody

      nastavíme routu, která nám spřístupní síť, která se skrývá za VPN servrem

      podrobněji: nastavíme, že veškerá komunikace ze síťě 192.168.1.x bude tunelována přes bránu, tudíž přes VPN server

      route add -net 192.168.1.0 netmask 255.255.255.0 gw 172.16.1.1

  • Příklad č.2:
    • Tento příklad je obměnou Příkladu č.1
    • Použijeme zde klíče a certifikáty a v případě, že nemáme cizí Certifikační autoritu i vytvoření vlastní Certifikační autority (CA) (Návod)
    • Takže předpokládejme, že nyní máme pro server vygenerován pár server.crt/server.key a pro klienta klient.crt/klient.key
    • Dále jak na straně serveru, tak na straně klienta musíme mít umístěn ověřovací certifikát Vaší CA autority. Uvažujme, že se jmenuje ca.crt
    • Použijeme zde klíče a certifikáty a v případě, že nemáme cizí Certifikační autoritu i vytvoření vlastní Certifikační autority (CA) (Návod)
    • Dále si musíme vygenerovat soubor obsahující Diffie-Hellman parametry (Návod)
    • Takže předpokládejme, že nyní máme pro server vygenerován soubor dh1024.pem
    • A nyní již vlastní zdrojové kódy
    • Server
    • vybereme si TUN zařízení pro přenos

      dev tun

      IP adresa serveru a IP adresa klienta (IP adresy jsou virtuální a týkají se TUN zařízení)

      ifconfig 10.1.0.1 10.1.0.2

      Specifikujeme, že server bude zároveň i TLS-server pro výměnu certifikátů

      tls-server

      Vygenerovaný soubor obsahující Diffie-Hellman parametry

      dh dh1024.pem

      Kořenový certifikát Vaší CA

      ca /etc/openvpn/myhomelan/ca.crt

      Certifikát serveru

      cert /etc/openvpn/myhomelan/server.crt

      Klíč serveru

      key /etc/openvpn/myhomelan/server.key

      během přenosu zapnout kompresi

      comp-lzo

      port na kterém budeme komunikovat

      port 5000

      snížení privilegii po spuštění (na Windows platformě nemá smysl)

      user nobody

      group nobody

    • Klient
    • Ip/Hostname adresa serveru, ke kterému se připojujeme (jeho skutečná fyzická IP)

      Musíme být schopni server dosáhnout pomocí pingu

      remote servers.dynamic.dns.address

      zařízení, které použijeme - stejné jako u serveru

      dev tun

      virtuální IP tentokrát naše a pak serveru (TUN zařízení)

      ifconfig 10.1.0.2 10.1.0.1

      Specifikujeme, že při výměně certifikátů vystupujeme jako klient

      tls-client

      Kořenový certifikát Vaší CA

      ca /etc/openvpn/myhomelanklient/ca.crt

      Certifikát klienta

      cert /etc/openvpn/myhomelanklient/klient.crt

      Klíč serveru

      key /etc/openvpn/myhomelanklient/klient.key

      komprese během přenosu zapnuta - musí být také na servru

      comp-lzo

      port na kterém budeme komunikovat - taktéž stejné jako na serveru

      port 5000

      snižení privilegii po spuštění (Jen non-Windows platformy)

      user nobody

      group nobody

      nastavíme routu, která nám spřístupní síť, která se skrývá za VPN servrem

      podrobněji: nastavíme klientovu bránu do sítě 192.168.1.0, startovací bod je dle našeho číslování 172.16.1.1, tj.server

      route add -net 10.1.0.1 netmask 255.255.255.255 gw 10.1.0.1

  • Příklad č.3:
    • Tento příklad je obměnou Příkladu č.2
    • Předpoklídejme, že by jsme měli rádi všechno důležité na serveru. Tj. všechna důležitá nastavení budeme klientovi posílat po navázání spojení
    • Toho dosáhneme tak, že na straně serveru dáme direktivu push "obsah se pošle klientovi"
    • Z bezpečnostních a provozních důvodů nemůže být klientovi posíláno úplně vše.
    • Nejčastěji se používá pro zaslání route parametrů.
    • Na straně klienta poté musí být direktiva pull, která určuje, že máme přijmout nastavení od serveru
    • Vlastní zdrojové kódy
    • Server
    • vyberem si TUn zařízení pro přenos

      dev tun

      Ip adresa serveru a Ip adresa klienta (Ip adresy jsou virtuální a týkají se TUN zařízení)

      ifconfig 10.1.0.1 10.1.0.2

      nastavení routování na straně serveru

      route 10.1.0.0 255.255.255.0

      Poslání konfigu klientovi

      push "route 10.1.0.1 255.255.255.255"

      Specifikujeme, že server bude zároveň i TLS-server pro výměnu certifikátů

      tls-server

      Vygenerovaný soubor obsahující Diffie-Hellman parametry

      dh dh1024.pem

      Kořenový certifikát Vaší CA

      ca /etc/openvpn/myhomelan/ca.crt

      Certifikát serveru

      cert /etc/openvpn/myhomelan/server.crt

      Klíč serveru

      key /etc/openvpn/myhomelan/server.key

      během přenosu zapnout kompresi

      comp-lzo

      port na kterém budeme komunikovat

      port 5000

      snížení privilegii po spuštění (na Windows platformě nemá smysl)

      user nobody

      group nobody

    • Klient
    • Ip/Hostname adresa serveru, ke kterému se připojujeme (jeho skutečná fyzická IP)

      Musíme být schopni server dosáhnout pomocí pingu

      remote servers.dynamic.dns.address

      zařízení, které použijeme - stejné jako u serveru

      dev tun

      virtuální IP tentokrát naše a pak serveru (TUN zařízení)

      ifconfig 172.16.1.20 172.16.1.1

      Přijmeme konfiguraci od serveru

      pull

      Specifikujeme, že při výměně certifikátů vystupujeme jako klient

      tls-client

      Kořenový certifikát Vaší CA

      ca /etc/openvpn/myhomelanklient/ca.crt

      Certifikát klienta

      cert /etc/openvpn/myhomelanklient/klient.crt

      Klíč serveru

      key /etc/openvpn/myhomelanklient/klient.key

      komprese během přenosu zapnuta - musí být také na servru

      comp-lzo

      port na kterém budeme komunikovat - taktéž stejné jako na serveru

      port 5000

      snižení privilegii po spuštění (Jen non-Windows platformy)

      user nobody

      group nobody

      nastavíme routu, která nám spřístupní síť, která se skrývá za VPN servrem

      podrobněji: nastavíme klientovu bránu do sítě 192.168.1.0, startovací bod je dle našeho číslování 172.16.1.1, tj.server

  • Příklad č.4:
    • Tento příklad je obměnou Příkladu č.3
    • Zde přidáme direktivu mode server
    • Ta nám určuje, že vystupujeme v roli servru
    • Dále pak direktivu ifconfig-pool "počáteční adresa" "koncová adresa"
    • Ta nám určuje rozsah IP adres přidělované připojovaným klientům
    • Vlastní zdrojové kódy
    • Server
    • vyberem si TUn zařízení pro přenos

      dev tun

      Poběžíme jako server pro více klientů

      mode server

      Ip adresa serveru a Ip adresa klienta (Ip adresy jsou virtuální a týkají se TUN zařízení)

      ifconfig 10.1.0.1 10.1.0.2

      Rozsah Ip adres rezervovaných pro klienty

      ifconfig-pool 10.1.0.4 10.1.0.254

      nastavení routování na straně serveru

      route 10.1.0.0 255.255.255.0

      Poslání konfigu klientovi

      push "route 10.1.0.1 255.255.255.255"

      Specifikujeme, že server bude zároveň i TLS-server pro výměnu certifikátů

      tls-server

      Vygenerovaný soubor obsahující Diffie-Hellman parametry

      dh dh1024.pem

      Kořenový certifikát Vaší CA

      ca /etc/openvpn/myhomelan/ca.crt

      Certifikát serveru

      cert /etc/openvpn/myhomelan/server.crt

      Klíč serveru

      key /etc/openvpn/myhomelan/server.key

      během přenosu zapnout kompresi

      comp-lzo

      port na kterém budeme komunikovat

      port 5000

      snížení privilegii po spuštění (na Windows platformě nemá smysl)

      user nobody

      group nobody

    • Klient
    • Ip/Hostname adresa serveru, ke kterému se připojujeme (jeho skutečná fyzická IP)

      Musíme být schopni server dosáhnout pomocí pingu

      remote servers.dynamic.dns.address

      zařízení, které použijeme - stejné jako u serveru

      dev tun

      Přijmeme konfiguraci od serveru

      pull

      Specifikujeme, že při výměně certifikátů vystupujeme jako klient

      tls-client

      Kořenový certifikát Vaší CA

      ca /etc/openvpn/myhomelanklient/ca.crt

      Certifikát klienta

      cert /etc/openvpn/myhomelanklient/klient.crt

      Klíč serveru

      key /etc/openvpn/myhomelanklient/klient.key

      komprese během přenosu zapnuta - musí být také na servru

      comp-lzo

      port na kterém budeme komunikovat - taktéž stejné jako na serveru

      port 5000

      snižení privilegii po spuštění (Jen non-Windows platformy)

      user nobody

      group nobody