$ apt-cache search openvpn openvpn - virtual private network daemon openvpn-blacklist - list of blacklisted OpenVPN RSA shared keys anytun - secure anycast tunneling protocol collectd-core - statistics collection and monitoring daemon (core system) ebox-openvpn - Zentyal - VPN Service eurephia - flexible OpenVPN authentication module gadmin-openvpn-client - GTK+ configuration tool for openvpn (client) gadmin-openvpn-client-dbg - GTK+ configuration tool for openvpn (debug for client) gadmin-openvpn-server - GTK+ configuration tool for openvpn (server) gadmin-openvpn-server-dbg - GTK+ configuration tool for openvpn (debug for server) gadmintools - GTK+ server administration tools (meta-package) kvpnc - vpn clients frontend for KDE4 network-manager-openvpn - network management framework (OpenVPN plugin core) network-manager-openvpn-gnome - network management framework (OpenVPN plugin GNOME GUI) openvpn-auth-ldap - OpenVPN LDAP authentication module openvpn-auth-radius - OpenVPN RADIUS authentication module openvpn-auth-radius-dbg - debugging symbols for openvpn-plugin-radius tunneldigger - Configures OpenVPN tunnel networks tunneldigger-utils - Utilities for TunnelDigger-configured OpenVPN tunnels
Cal instal·lar el paquet network-manager-openvpn:
$ sudo apt-get install network-manager-openvpn
NOTA: Si esteu a Gnome també instal·larà network-manager-openvpn-gnome
Ara aneu a:
networ-manager > Connexions VPN > Configura la VPN
TODO: Captures de pantalla
TODO...
IMPORTANT: A advanced cal activat que la connexió sigui per TCP si utilitzeu un servidor OpenVPn de microtik/routerOS (routerOS no suporta UDP)
Per depurar cal consultar el fitxer:
$ sudo tail -f /var/log/syslog
Podeu utilitzar Network Manager instal·lat el plugin:
$ sudo apt-get install network-manager-openvpn
TODO
OpenVPN GUI can be downloaded at http://www.openvpn.se/download.html .
Per instal·lar el servidor a un sistema de la família Debian:
$ sudo apt-get install openvpn
Els fitxers instal·lats són:
Fitxers de configuració:
$ dpkg -L openvpn | grep etc /etc /etc/openvpn /etc/openvpn/update-resolv-conf /etc/network /etc/network/if-up.d /etc/network/if-up.d/openvpn /etc/network/if-down.d /etc/network/if-down.d/openvpn /etc/bash_completion.d /etc/bash_completion.d/openvpn /etc/default /etc/default/openvpn /etc/init.d /etc/init.d/openvpn
L'executable és :
$ dpkg -L openvpn | grep bin /usr/sbin /usr/sbin/openvpn
La resta de fitxers són la documentació que es troba a la carpeta:
/usr/share/doc/openvpn
I llibreries i manuals.
OpenVPN utilitza una infraestructura client-servidor on el clients OpenVPN accedeixen a un servidor VPN utilitzant el port 1194:
$ cat /etc/services | grep 1194 openvpn 1194/tcp openvpn 1194/udp
Hi ha dos formes de treballar amb OpenVPN: clau estàtica i PKI (Public Key Infraestructure)
Static Key
Avantatges:
Inconvenients:
PKI
Quan utilitzar un tipus o l'altre?
Sovint l'opció de routing és la millor opció per a la majoria dels casos ja que és més eficient i és més fàcil de configurar. També permet un millor control dels drets d'accés dels clients.
Normalment es recomana utilitzar routing a no ser que desitgeu:
A RouterOS les anomenen mode ip (routed) o mode Ethernet (bridge). Vegeu dos exemples de configuració del client OpenVPN.
Ip (routed):
/interface ovpn-client \ add name="ovpn-out1" connect-to=189.64.0.1 port=1194 mode=ip user="username" password="password" profile=default \ certificate=vpngate-client cipher=aes256 add-default-route=no
Ethernet (bridge)
/interface ovpn-client \ add name="ovpn-out1" connect-to=189.64.0.1 port=1194 mode=ethernet user="username" password="password" profile=default \ certificate=vpngate-client cipher=aes256 add-default-route=no
Recursos:
TODO
Debian provides OpenVPN packages as part of the standard distribution, just install them by typing
$ sudo apt-get install openvpn
Per a un servidor a més caldrà openssl:
$ sudo apt-get install openssl
TODO
Aquest exemple mostra com crear una configuració simple amb OpenVPN i una connexió point-to-point. Un túnel VPN serà crear entre un servidor amb la IP 10.8.0.1 i un client amb la IP 10.8.0.2. Encrypted communication between client and server will occur over UDP port 1194, the default OpenVPN port.
El primer que cal fer és crear una clau estàtica:
$ openvpn --genkey --secret static.key
Ara copieu la clau tant al client com al servidor.
El fitxer de configuració del servidor:
dev tun ifconfig 10.8.0.1 10.8.0.2 secret static.key
I el del client:
remote myremote.mydomain dev tun ifconfig 10.8.0.2 10.8.0.1 secret static.key
Configuració del firewall:
Cal obrir el port UDP 1194
Millores:
Utilitzar compressió:
Cal afegir al client i al servidor:
comp-lzo
Per a links amb NAT i adreces IP públiques que canvien:
Cal afegir al client i al servidor:
keepalive 10 60 ping-timer-rem persist-tun persist-key
Afegir accés a la xarxa del servidor OpenVPN:
Suposem que el servidor està connectat a la xarza 192.168.4.0/24. Afegiu les següents línies al client:
route 192.168.4.0 255.255.255.0
Si el servidor no és el gateway per defecte de la xarxa especificada també caldrà la ruta de tornada. No us oblideu d'activar IP forwarding al servidor OpenVPN.
Recursos:
Per establir una infraestructura de clau pública (aka PKI o Public Key Infrastructure) cal:
OpenVPN suporta la autenticació bidireccional tant de client com de servidor, és a dir que tant el client ha d'autenticar el servidor com el servidor ha d'autenticar els clients.
El primer que faran tant el servidor com el client es verificar que el certificat de l'altre està signat correctament pel certificat de la CA. Un cop verificada la signatura a més es comprova:
Això té els següents avantatges:
IMPORTANT: Cal tenir en compte que els rellotges del client i del servidor han d'estar sincronitzats per tal que els certificats funcionin correctament. Es recomana l'ús de NTP.
Hi ha múltiples formes de crear un certificat SSL i tot depèn del objectiu del certificat i del tipus de certificat que voleu crear. Una de les primeres decisions que heu de prendre és si el certificat SSL voleu que sigui autosignat o signat per una entitat certificadora (CA).
El paquet OpenVPN us proporciona ajuda per tal de facilitar-vos la creació de certificats SSL. Instal·leu el paquet openvpn
$ sudo apt-get install openvpn
A la carpeta:
/usr/share/doc/openvpn/examples/easy-rsa/2.0/
Trobareu l'eina anomenada Easy-RSA que forma part del paquet OpenVPN... Per tal de poder utilitzar Easy-rsa és necessari tenir instal·lar openssl:
$ sudo apt-get install openssl
Ara per crear el certificat seguiu les següents passes. Obtingueu un copia de treball de la carpeta easy-rsa:
$ sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
En aquest cas hem decidit deixar la copia a la carpeta /etc/openvpn/easy-rsa. Això es recomanat pel propi manual de OpenVPN així en cas d'actualització del paquet OpenVPN no es veu modificada aquesta carpeta. Abans de crear el certificat cal configurar el fitxer vars:
$ cd /etc/openvpn/easy-rsa $ sudo joe vars
El contingut del fitxer és:
# easy-rsa parameter settings # NOTE: If you installed from an RPM, # don't edit this file in place in # /usr/share/openvpn/easy-rsa -- # instead, you should copy the whole # easy-rsa directory to another location # (such as /etc/openvpn) so that your # edits will not be wiped out by a future # OpenVPN package upgrade. # This variable should point to # the top level of the easy-rsa # tree. export EASY_RSA="`pwd`" # # This variable should point to # the requested executables # export OPENSSL="openssl" export PKCS11TOOL="pkcs11-tool" export GREP="grep" # This variable should point to # the openssl.cnf file included # with easy-rsa. export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` # Edit this variable to point to # your soon-to-be-created key # directory. # # WARNING: clean-all will do # a rm -rf on this directory # so make sure you define # it correctly! export KEY_DIR="$EASY_RSA/keys" # Issue rm -rf warning echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR # PKCS11 fixes export PKCS11_MODULE_PATH="dummy" export PKCS11_PIN="dummy" # Increase this to 2048 if you # are paranoid. This will slow # down TLS negotiation performance # as well as the one-time DH parms # generation process. export KEY_SIZE=1024 # In how many days should the root CA key expire? export CA_EXPIRE=3650 # In how many days should certificates expire? export KEY_EXPIRE=3650 # These are the default values for fields # which will be placed in the certificate. # Don't leave any of these fields blank. export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="[email protected]"
Configureu:
export EASY_RSA="/etc/openvpn/easy-rsa" export KEY_DIR="/etc/openvpn/keys"
Normalment també voldreu modificar les variables:
KEY_COUNTRY KEY_PROVINCE KEY_CITY KEY_ORG KEY_EMAIL
Als valors que us pertoquin.
Heu de crear la carpeta on guardareu les claus:
$ sudo mkdir /etc/openvpn/keys
Ara canvieu temporalment a superusuari:
$ sudo su - # cd /etc/openvpn/easy-rsa
Un cop modificat fer un include de bash amb:
# . ./vars
o
# source ./vars
Abans de crear la clau feu neteja:
# ./clean-all
Ara anem a crear el CA ( Certificate Authority )
./build-ca
NOTA: El build-ca és un script que executa l'ordre pkitool
Això crea els fitxers:
$ ls /etc/openvpn/keys/ ca.crt ca.key
On ca.crt és el certificat en si i ca.key és la clau privada del certificat anterior. El fitxer ca.key cal guardar-lo molt bé per què ha de se ser secret.
Ara generem el certificat del servidor:
# ./build-key-server server
On server és el nom que voleu assignar al servidor. Podeu contestra el que vulgueu però és MOLT IMPORTANT que el Common Name del servidor conincideixi amb el que heu posat per línia d'ordres (a l'exemple server). També heu de contestar el següent:
Sign the certificate? [y/n] poseu y "1 out of 1 certificate requests certified, commit? [y/n]" poseu y
Ara trobareu els fitxers:
# ls -la /etc/openvpn/keys/ total 48 drwx------ 2 root root 4096 2012-01-02 12:00 . drwxr-xr-x 3 root root 4096 2012-01-02 11:57 .. -rw-r--r-- 1 root root 3939 2012-01-02 12:00 01.pem -rw-r--r-- 1 root root 1265 2012-01-02 11:58 ca.crt -rw------- 1 root root 916 2012-01-02 11:58 ca.key -rw-r--r-- 1 root root 117 2012-01-02 12:00 index.txt -rw-r--r-- 1 root root 21 2012-01-02 12:00 index.txt.attr -rw-r--r-- 1 root root 0 2012-01-02 11:57 index.txt.old -rw-r--r-- 1 root root 3939 2012-01-02 12:00 ovpn-server.crt -rw-r--r-- 1 root root 688 2012-01-02 12:00 ovpn-server.csr -rw------- 1 root root 916 2012-01-02 12:00 ovpn-server.key -rw-r--r-- 1 root root 3 2012-01-02 12:00 serial -rw-r--r-- 1 root root 3 2012-01-02 11:57 serial.old
Per generar els certificats de cada client:
Per exemple per al client 1
# ./build-key client1 Generating a 1024 bit RSA private key .......++++++ .......................++++++ writing new private key to 'client1.key' ----- Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'US' stateOrProvinceName :PRINTABLE:'CA' localityName :PRINTABLE:'SanFrancisco' organizationName :PRINTABLE:'Fort-Funston' commonName :PRINTABLE:'client1' emailAddress :IA5STRING:'[email protected]' Certificate is to be certified until Dec 30 11:03:24 2021 GMT (3650 days) Write out database with 1 new entries Data Base Updated
IMPORTANT: Cal fer coincidir el CN amb el que s'ha posar a la línia d'ordres per a cada client!
Per a cada client cal fer el mateix.
És molt possible que haguiu de passar els certificats format PEM:
$ openssl rsa -in /etc/openvpn/keys/client1.key -out /etc/openvpn/keys/client1.pem
Per tal de poder-lo utilitzar en alguns sistemes com RouterOS
TODO: Comprovar si cal?
Generate Diffie Hellman parameters Diffie Hellman parameters must be generated for the OpenVPN server. On Linux/BSD/Unix: ./build-dh
Podeu trobar més informació sobre certificats SSL a:
SSL#Certificats
Recursos:
Consulteu OpenVPN Microtik