OpenVPN

Z Czela.net
Přejít na: navigace, hledání

Obsah

Vo co go

Tenhle canc popisuje jak rozchodit OpenVPN v rezimu client/server, tedy na jeden počítač se připojuje více klientů. Jde také dělat VPN peer2peer, ale to si přečti jinde :)

Pozor!

V aktuální verzi(2.0_rc21) se při použití easy-rsa doporučované v manuálu openvpn nedal navázat tunel pomocí vygenerovaných certifikátů (je tam někde v konfiguraci zakázáno použití self signed certifikátů). Zde popsaný postup funguje spolehlivě.

POZNÁMKA

UDP mód je výkonější na špatných linkách a je vhodný pro tzv. "bridged server", ale lze ho omezit pouze na pevnou hodnotu.

TCP na špatných linkách může zachránit protokoly, které si samy nepotvrzují stav (třeba ms-rpc pro komunikaci s exchange serverem) a dá se omezit dynamicky na FW. Nelze však použít společně s "bridged server" a TCP má o něco větší režiji.

obě strany jednoho tunelu musejí logicky používat shodně UDP či TCP

Instalace

apt-get install openssl openvpn

V /etc/ssl/openssl.conf si změň: (RedHat - /usr/share/ssl/openssl.cnf)

počet dní po které certifikát platí (10let je ok :)

default_days = 3650

změnit na mírnější politiku akceptování certifikátů (pak není CA tak tvrdá na vyplnění žádostí):

policy = policy_anything

VOLITELNÉ

Dále si můžete změnit přednastavené hodnoty sekce [ CA_default ] a [ erq_distinguished_name ] při generování nových žádostí nebo klíčů pak člověk nepapouškuje dokola CZ Czech Celakovice atd..

BEZPEČNÉ

Dokumentace openvpn také doporučuje pro serverové certifikáty jejich označení. Aby bylo možno je značkovat doplňte tuto sekci:

[ server ]
basicConstraints=CA:FALSE
nsCertType                      = server
nsComment                       = "OpenSSL Generated Server Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always

Generování certifikátů

Bez peněz do hospody nelez a bez certifikátu nelez do VPN.-) Pokud nechcete mít svůj server, ale jen se k někomu připojit stačí vytvořit žádost k podpisu a tu si nechat podepsat příslušnou Certifikační autoritou.

Vytvoření certifikační autority

cd /home/CA/
mkdir certs crl newcerts private
echo 01 > ./serial
touch ./index.txt
openssl req -new -x509 -nodes -out cacert.pem -keyout cakey.pem -days 1098

Vytvoření žádosti k podpisu

Ten kdo se chce na VPN připojovat si vygeneruje soukromý klíč a žádost o certifikát. Soukromej klíč si schová, nikomu nedá, uchává v tajnosti. Žádost o certifikát pošle certifikační autoritě, která žádost podepíše a pošle zpátky.

openssl req -new -nodes -out request.pem -keyout key.pem -days 1098

request.pem - to je žádost o certifikát key.pem - soukromý klíč

Potvrzení žádosti certifikační autoritou

openssl ca -in request.pem -out cert.pem

BEZPEČNÉ

(vytvoří označený certifikát pro server)

openssl ca -in request.pem -out cert.pem -extensions server

request.pem - žádost o certifikát cert.pem - vygenerovaný certifikát

Konfigurace

strana serveru

Ještě je potřeba vytvořit Diffie-Hellman soubor (jestli se nepletu, tak je to předpočítaná banda velkejch prvočísel - ale možná se pletu :)

openssl dhparam -out dh1024.pem 1024.

Pro stranu serveru je potřeba vygenerovat soukromej klíč a žádost o certifikát, certifikát podepsat a pak je možné použít dvojici soukromý klíč, certifikát v následujícím configu (/etc/openvpn/openvpn.conf)

UDP verze

mode server

tls-server 

port 1194

dev tap0

user openvpn
group openvpn

ifconfig 10.253.1.65 255.255.255.224
ifconfig-pool 10.253.1.66 10.253.1.94 255.255.255.224
ifconfig-pool-persist /etc/openvpn/openvpn.leases 0

keepalive 10 120

ca /etc/openvpn/cacert.pem
cert /etc/openvpn/cert.pem
key /etc/openvpn/key.pem
dh /etc/openvpn/dh1024.pem

log-append /var/log/openvpn
status /var/run/openvpn/vpn.status 10

persist-tun
persist-key

#comp-lzo

verb 1

TCP verze

mode server
proto tcp-server
tls-server 

port 1194

dev tap0

user openvpn
group openvpn

ifconfig 10.253.1.65 255.255.255.224
ifconfig-pool 10.253.1.66 10.253.1.94 255.255.255.224
ifconfig-pool-persist /etc/openvpn/openvpn.leases 0

keepalive 10 120

ca /etc/openvpn/cacert.pem
cert /etc/openvpn/cert.pem
key /etc/openvpn/key.pem
dh /etc/openvpn/dh1024.pem

log-append /var/log/openvpn
status /var/run/openvpn/vpn.status 10

persist-tun
persist-key

#comp-lzo

verb 1

POZNÁMKA

Místo tap0 lze použít i tap (bez čísla) v tom případě je použito automaticky další volné číslo.

strana klienta

UDP verze

Stejně jako u serveru, i pro klienta je potřeba dvojice soukr. klíč, žádost o certifikát. Žádost o certifikát CA podepíše a soubory se soukr. klíčem, podepsaným certifikátem a certifikátem CA použijeme v configu:

remote vpn.czela.net
tls-client
dev tap
pull

mute 10
ca cacert.pem
cert cert.pem
key key.pem

#comp-lzo
verb 3

BEZPEČNÉ

Pokud jste generovali označené certifikáty, klientský konfig musí obsahovat tento řádek:

ns-cert-type server

TCP verze

remote vpn.czela.net
proto tcp-client
tls-client
dev tap
pull

mute 10
ca cacert.pem
cert cert.pem
key key.pem

#comp-lzo
verb 3

POZNÁMKA

v některých případech je dobré vědět (hlavně pokud je jedna strana za FW, který nemúžete ovládat), že módy tls a tcp na sobě nejsou závislé, lze použít i kombinace

proto tcp-client
tls-server

nebo

proto tcp-server
tls-client

Odkazy

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje