přejít na obsah přejít na navigaci

Linux E X P R E S, OpenVPN poprvé

OpenVPN poprvé

Způsob jak se dostat dovnitř sítě i když jsem "jinde" ..


OpenVPN na mě od jisté doby působí jako kouzelné slůvko. Kozelné především v tom, že mi umožní pracovat v síti, na kterou jsou zvyklý i mimo tuto síť. Prakticky to tedy znamená, že můžete sedět doma, nebo cestovat vlakem a přitom díky OpenVPN a prostřednictvím Internetu pracovat se svými soubory umístěnými na souborovém serveru, tisknout na tiskárně umístěné ve vaší kanceláři atd. Tzn. provádět všechny činnosti na které jste zvyklí, pokud se nacházíte v této síti. Prakticky řečeno -  v práci zaklapnu notebook, doma ho otevřu a pokračuju v tom v čem jsem začal...

Samozřejmě tato činnost má i svou nevýhodu a tou je bezesporu nutkání pracovat na úkolech vám svěřených i mimo kancelář - ono to je stejné jako s firemním notebookem, mobilem, autem a dalšími "požitky", které vám v zaměstaní dají k dispozici - vždy to je něco za něco a to něco se od vás vždy očekává. Ale pojďme se podívat jak na to.

Vyšel jsem z bezvadného návodu na abclinuxu.cz, který stačí použít a prostě to musí fungovat, s minimálními úpravami a ve zkratce:

Nastavení serveru

nainstalujte openvpn

aptitude install openvpn

zkopírujte si vzorové skripty

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

nastavte práva (v tomto adresáři budete generovat klíče, tak by tam neměl každý "vidět")

chmod 0700 /etc/openvpn/easy-rsa

upravte soubor /etc/openvpn/easy-rsa/2.0/vars (soubor sám je bohatě komentovaný), zejména vás zajímají tyto proměnné

export KEY_SIZE=2048
export KEY_COUNTRY=CZ
export KEY_PROVINCE="Czech Republic"
export KEY_CITY="City"
export KEY_ORG="OpenVPN-company"
export KEY_EMAIL="vpn@domain_com"

načtete vámi nastavené proměnné pro generování klíčů (pozor na začátku druhého řádku je opravdu symbol tečka)

cd /etc/openvpn/easy-rsa/2.0
. ./vars

vymažte vzorové klíče

./clean-all

vytvořte klíč certifikační autority

./build-ca

vytvořte certifikát pro server

./build-key-server server

vytvořte certifikáty klientů

./build-key-pass client1
./build-key-pass client2
....

Tyto certifikáty klientů budou chráněny heslem, pokud nechcete, aby uživatel musel zadávat heslo pro použití certifikátu, pak zadejte

./build-key client1

vytvořte Diffie Hellman parametry. Sice nemám tušení k čemu to je, ale řekněme, že to zvýší zabezpečení - opravdu jsem po tom nepátral. :-) Počítejte s tím, že to bude trvat 5-10 minut..

./build-dh

zkopírujte vytvořené klíče a nastavte na nich příslušná práva

cp /etc/openvpn/easy-rsa/keys/2.0/{ca.crt,server.crt,server.key,dh2048.pem} /etc/openvpn
chmod 600 /etc/openvpn/2.0/{ca.crt,server.crt,server.key,dh2048.pem} /etc/openvpn

Dál vytvořte soubor /etc/openvpn/vpn_server.conf a do něj přidejte následující:

# server
mode server

# tls jako server
tls-server

# port, 1194 = default
port 1194

# protokol, tcp/udp
proto tcp-server

# nastavi zarizeni
dev tap

# pouzita sit a jeji maska
server 10.0.1.0 255.255.255.0

# soucasne prihlaseni vice klientu
# duplicate-cn

# certifikat certifikacni autority
ca /etc/openvpn/ca.crt

# certifikat serveru
cert /etc/openvpn/server.crt

# klic serveru
key /etc/openvpn/server.key

# parametry pro Diffie-Hellman protokol
dh /etc/openvpn/dh2048.pem

# logy serveru
log-append /var/log/openvpn.log

# status serveru
status /var/run/vpn.status 10

# uzivatel pod kterym bezi server
user nobody

# skupina pod kterou bezi server
group nogroup

# udrzuje spojeni nazivu, 10 (ping) a 120 (ping-restart)
keepalive 10 120

# komprese prenasenych dat
comp-lzo

# ukecanost serveru
verb 3

push "route 192.168.1.0 255.255.255.0"

Poslední řádek je nepovinný, ale udává do které sítě bude možno přistupovat prostřednitvím openVPN. Tzn. síť a masku lokální sítě (za vašim serverem). Tato síť se pak nadeleguje klientům, které se připojí k serveru prostřednictvím openvpn a nastaví se jim směrování do této sítě. Aby to všechno fungovalo je třeba ještě zapnout "přehazování" paketů mezi rozhraními, na serveru ještě zadejte:

echo 1 > /proc/sys/net/ipv4/ip_forward

Tím je konfigurace serveru hotové za zmínku ještě stojí možnost delegovat klientům další informace jako je např. místní DNS server a server WINS, ale to ještě nemám moc odzkoušené, do souboru /etc/openvpn/vpn_server.conf je tedy možno přidat i tyto řádky:

push "dhcp-option DNS ip_pocitace_mistni_site"
push "dhcp-option WINS ip_pocitace_mistni_site"

Pak ještě spusťte opevnpn

/etc/init.d/openvpn start

a zkontrolujte log

tail -f /var/log/openvpn.log

příkazem ifconfig zkontrolujte, zda se vám objevilo nové síťové rozhraní označené jako tap0.

Nastavení klienta

na klientský počítač nainstalujte openvpn ;-)

aptitude install openvpn

vytvořte soubor /etc/openvpn/vpn_client.conf a do něj přidejte následující

# server ke kteremu se pripojujeme
remote server.cz

# tls jako klient
tls-client

# port, 1194 = default
port 1194

# protokol, tcp/udp
proto tcp-client

# nastaveni zarizeni
dev tap

# povoluje stazeni konfigurace ze severu
pull

# certifikat certifikacni autority
ca ca.crt

# certifikat klienta
cert client1.crt

# certifikat klienta
key client1.key

# uzivatel pod kterym bezi klient
user nobody

# skupina pod kterou bezi klient
group nogroup

# opakovani radku v logu
mute 10

# logy klienta
log-append /var/log/openvpn.log

# status klienta
status /var/run/vpn.status 10

# komprese prenasenych dat
comp-lzo

# ukecanost klienta
verb 3

je vidět, že tento soubor má téměř stejnou strukturu jako je ta na serveru. Po jeho vytvoření ještě musíte nějakou formou zkopírovat soubory ca.crt, client1.crt a client1.key do adresáře /etc/openvpn klientského počítače. Tyto soubory se nachází na serveru v adresáři /etc/openvpn/easy-rsa/2.0/keys. Pokud to chcete udělat tak jako já a ne tak jak se to má (tzn. dopravit soubory ke klientovi nějakou bezpečnou cestou - např. na disketě), pak si můžete soubory stáhnout přes sshfs, nebo si jejich obsah na serveru zobrazit a na klientovi je nově vytvořit, funkci CTRL+C a CTRL+V známe všichni.. 0:-)

Pak můžete spustit na klientovi openvpn

/etc/init.d/openvpn start

případně sledovat log, pokud je něco špatně. Pokud proběhne vše v pořádku, přibude vám i zde síťové rozhraní tap0 a vy budete moci komunikovat stejně jako byste byli uvnitř sítě.

Můj velký/malý problém

Pokud máte všechny soubory na svých místech, spojení proběhne korektně a v logu se nic zajímavého neobjeví, pak bude jistě vše fungovat. V mém případě to ovšem nefungovalo. Ping s lokální IP adresou počítače, na kterém běžel OpenVPN server sice běžel tak jak má, ale nikam jinam jsem se nemohl dostat... V této situaci (a hlavně pokud to člověk instaluje poprvé) platí zlaté pravidlo - "líná huba, holé neštěstí", takže jsem se zeptal jiných...

I když jsem měl vše dobře nastavené a v logu bylo čisto, problém spočíval jinde, než jsem myslel. V síti, do které jsem se takto připojoval není počítač, na kterém běží openvpn server zároveň branou a to je kámen úrazu. Paket, který projde přes openvpn do sítě za serverem a najde svého příjemce je tímto počítačem zpracován a poslán zpět. Bohužel v tomto schématu sítě tento paket dál neputuje zpět na openvpn server, ale na bránu, která si s tím neví rady a paket zahodí.

V praxi se to pak projeví tak, že nepřijde žádná odpoveď a celé se to tváři dost nefunkčně. A řešení? Tím je nastavit na bráně tzv. "IP next hop", nebo tak něco. Další možnost pak spočívá v přidání další routy na počítači, s kterým chceme komunikovat, to se provede takto:

route add -net 10.0.1.0 netmask 255.255.255.0 gw ip_adresa_open_vpn_serveru

tím se docílí toho, že se paket vrátí na server s openvpn a tím i k vám, kdo s ním komunikujete. Jo, počítače jsou záludná stvoření...

Nahoru

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Martin Šín

Martin Šín

Martin Šín (*1980) vystudoval pedagogickou fakultu a nyní pracuje jako učitel matematiky a výpočetní techniky na střední škole. Ve volném čase překládá a také hraje hry (ani jedno mu příliš nejde). V práci se snaží prosazovat open-source programy.


  • Distribuce: Debian

| proč linux



Public Relations

Bezpečné zálohování a spolehlivá obnova dat jsou odpovědí na všudypřítomnou hrozbu ransomwaru

VeeamUž to tak vypadá, že ransomware ze světa nezmizí, a organizace se tomu musí přizpůsobit, aby dokázaly tuto hrozbu přežít a zajistit odolnost svého podnikání vůči jejím dopadům. Na ransom­ware se musíme přestat dívat jako na náhodnou událost, ale vnímat ji jako stále přítomnou hrozbu, kdy už není otázka, zda a kdy, ale jak často nás zasáhne.

Pokračování ...



Public Relations

Jak se chránit před zranitelnostmi? MSP službou!

ZebraPočet softwarových zranitelností neustále roste – zatímco v roce 2021 bylo dle informací katalogu CVE zjištěno celkem 20 171 zranitelností, vloni došlo k dalšímu nárůstu na rekordních 25 277 případů. Navíc také roste jejich závažnost, a i v roce 2022 se zvýšil počet tzv. kritických zranitelností. Mezi nimi například proslulý Log4J.

Pokračování ...



Public Relations

Průkopnická automatizovaná obrana pohyblivých cílů

SophosS tím, jak se prostředí kybernetických hrozeb stává stále složitějším, bezpečnostní týmy čelí rapidnímu nárůstu počtu hrozeb. Mnoho organizací se potýká s vysokým počtem výstrah a falešně pozitivních hlášení, což vede k neustálému úsilí o jejich vyřešení a zbytečnému zatěžování zdrojů a snižování účinnosti zabezpečení.

Pokračování ...