[Wikipedia] Una VPN és una tecnologia de xarxa que permet una extensió de xarxa local sobre una xarxa pública o no controlada, com per exemple Internet.
L’exemple més comú és la possibilitat de connectar dos o més sucursals d’una empresa fent servir com a vincle Internet, permetent als membres del equip de suport tècnic la connexió des de casa al centre de còmputs, o que un usuari pugui accedir al seu equip domèstic des de qualsevol equip remot, com per exemple el d’un hotel. Tot això fent servir la infraestructura d’Internet.[/Wikipedia]
OpenVPN és un servidor de xarxes privades virtuals amb suport SSL i un munt de característiques. Es lliure, amb llicència GNU GPL, i multiplataforma.
OpenVPN pot muntar la xarxa virtual utilitzant connexions xifrades amb una clau compartida o amb claus asimètriques, veurem com construir els dos tipus de VPN.
OpenVPN amb shared key
Les connexions es faran utilitzant una clau compartida per tots els clients. És menys segur que utilitzar claus públiques/privades, però és més fàcil de configurar.
Instal·lem openvpn (al client i al servidor):
aptitude install openvpn
Dades de la xarxa i del VPN
Xarxa: 192.168.3.0/24
IP Servidor: 192.168.3.1
IP Client: 192.168.3.2
Xarxa VPN: 192.168.100.0/24
VPN IP Servidor: 192.168.100.1
VPN IP Client: 192.168.100.2
Servidor
Generem la clau compartida:
openvpn --genkey --secret clau
Aquesta clau l’haurà d’utilitzar tot aquell que vulgui connectar amb el VPN. S’haurà de traspassar la clau utilitzant un medi segur (e.g. sftp).
Creem /etc/openvpn/hack.conf:
dev tap0 proto udp up /etc/openvpn/hack.up secret clau port 50000 comp-lzo ping 15 verb 5
Creem /etc/openvpn/hack.up:
#!/bin/bash /sbin/ifconfig tap0 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255
Ens assegurem que es carrega el mòdul “tun” al arranc ficant-lo al /etc/modules i el carreguem en aquest moment:
modprobe tun
Iniciem el servei:
/etc/init.d/openvpn start
Client
A l’ordinador que connectarà amb la VPN creada, copiem a /etc/opevpn/ la clau compartida generada al servidor de logs i creem /etc/openvpn/hack.conf:
dev tap0 remote 192.168.3.1 proto udp up /etc/openvpn/hack.up secret clau port 50000 comp-lzo
Creem /etc/openvpn/hack.up:
#!/bin/bash /sbin/ifconfig tap0 192.168.100.2 netmask 255.255.255.0 broadcast 192.168.100.255
Ens assegurem que es carrega el mòdul “tun” al arranc ficant-lo al /etc/modules i el carreguem en aquest moment:
modprobe tun
Establim la connexió amb la VPN:
/etc/init.d/openvpn start
OpenVPN amb TLS
Les connexions es faran utilitzant claus privades/públiques i cada client tindrà una diferent. Més segur que utilitzar una clau compartida, però requereix més configuració.
Instal·lem openvpn (al client i al servidor):
aptitude install openvpn
Dades de la xarxa i del VPN
Xarxa: 192.168.3.0/24
IP Servidor: 192.168.2.1
IP Client: 192.168.2.2
Xarxa VPN: 192.168.200.0/24
VPN IP Servidor: 192.168.200.1
VPN IP Client: 192.168.200.2
Servidor
Per crear els certificats, primer s’ha de crear una entitat certificadora fictícia. Editem /
etc/ssl/openssl.cnf:
[ ca ] default_ca = CA_default [ CA_default ] dir = /etc/ssl/xarxaCA # Where everything is kept certs = $dir/certs # Where the issued certs are kept crl_dir = $dir/crl # Where the issued crl are kept database = $dir/index.txt # database index file. new_certs_dir = $dir/newcerts # default place for new certs certificate = $dir/xarxaCa.crt # The CA certificate serial = $dir/serial # The current serial number crl = $dir/crl.pem # The current CR private_key = $dir/private/xarxaCa.key # The private key
Executem:
mkdir /etc/ssl/xarxaCA/ mkdir /etc/ssl/xarxaCA/certs mkdir /etc/ssl/xarxaCA/private mkdir /etc/ssl/xarxaCA/newcerts mkdir /etc/ssl/xarxaCA/crl echo "01" > /etc/ssl/xarxaCA/serial touch /etc/ssl/xarxaCA/index.txt cd /etc/ssl/xarxaCA/ openssl req -nodes -new -x509 -keyout private/xarxaCa.key -out xarxaCa.crt -days 365
Ara ja disposem de l’entitat i anem a generar les claus privades, sol·licituds de certificat i certificats signats tant pel servidor VPN com per un client VPN:
openssl req -nodes -new -keyout privateNet.key -out privateNet.csr openssl ca -out privateNet.crt -in privateNet.csr openssl req -nodes -new -keyout publicNet.key -out publicNet.csr openssl ca -out publicNet.crt -in publicNet.csr openssl dhparam -out dh1024.pem 1024
La clau i certificat “publicNet” només es per un client, s’ha de fer una clau per a cada nou client que es vulgui connectar. El traspàs de la clau cap al client s’ha de fer mitjançant un medi segur (e.g. sftp).
Creem el directori /etc/openvpn/xarxa i fiquem dintre els arxius: dh1024.pem, xarxaCert.pem, privateNet.crt i privateNet.key. Creem el fitxer /etc/openvpn/xarxa.conf:
dev tap0 proto udp up /etc/openvpn/xarxa.up tls-server dh /etc/openvpn/xarxa/dh1024.pem ca /etc/openvpn/xarxa/xarxaCert.pem cert /etc/openvpn/xarxa/privateNet.crt key /etc/openvpn/xarxa/privateNet.key
Creem el fitxer /etc/openvpn/xarxa.up:
#!/bin/bash ifconfig tap0 down ifconfig tap0 192.168.200.1 up
Ens assegurem que es carrega el mòdul “tun” al arranc ficant-lo al /etc/modules i el carreguem en aquest moment:
modprobe tun
Ja tenim preparat el servei:
/etc/init.d/openvpn start
La interfície virtual per on rebrem les dades del VPN serà “tap0”:
tap0 Link encap:Ethernet HWaddr 00:FF:26:3D:47:F1 inet addr:192.168.200.1 Bcast:192.168.200.255 Mask:255.255.255.0 inet6 addr: fe80::2ff:26ff:fe3d:47f1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:238 (238.0 b)
Client
Al ordinador client que volem connectar a la VPN creada, creem el directori /etc/openvpn/xarxa i fiquem dintre els arxius: dh1024.pem, xarxaCert.pem, publicNet.crt i publicNet.key. Creem el fitxer /etc/openvpn/xarxa.conf:
dev tap0 remote 192.168.2.1 proto udp up /etc/openvpn/vpn2/xarxa.up tls-client dh /etc/openvpn/xarxa/dh1024.pem ca /etc/openvpn/xarxa/xarxaCert.pem cert /etc/openvpn/xarxa/publicNet.crt key /etc/openvpn/xarxa/publicNet.key port 50000 comp-lzo ping 15 verb 5
Creem el fitxer /etc/openvpn/xarxa.up:
#!/bin/bash ifconfig tap0 down ifconfig tap0 192.168.200.2 up
Ens assegurem que es carrega el mòdul “tun” al arranc ficant-lo al /etc/modules i el carreguem en aquest moment:
modprobe tun
Connectem el VPN:
/etc/init.d/openvpn start
Hola Sergi!
Collonut el post però tinc un problema al encendre el dimoni al servidor, em surt el següent:
Starting virtual private network daemon: hack(FAILED)
Grácies!
Me explico en castellano que voy más rápido, ( se acepta traducción 🙂 )
Dentro del directorio openvpn tienes que tener el fichero llamado clau, y dar permisos de ejecución a los
ficheros hack*, chmod u=x hack*
Haciendo esto , me dice OK, voy a seguir investigando..
Saludos