[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