Objectiu:
Aquest tutorial explica com instal·lar un servidor OpenVPN. La tecnologia VPN (Virtual Private Network) ens permet connectar des d’un entorn remot a la xarxa, per exemple, de la nostra oficina, o de casa nostra. Per tal de realitzar aquesta tasca es crea un tunel segur, mitjançant SSL, que fa que tota la comunicació entre les dues parts no sigui visible a ulls de terceres persones a Intranet.
L’objectiu d’aquest tutorial és disposar d’una distribució Ubuntu 7.04 Server que executi el servei OpenVPN.
Per què OpenVPN?
Tot i que no utilitzat cap dels protocols més estesos per a connexions VPN, com poden ser l’L2TP o el PPTP, cosa que ens evitaria d’haver d’instal·lar clients específics en les màquines que vulguin connectar-se, openvpn és programari de lliure distribució i el rendiment ofert ha estat molt satisfactori.
Existeixen clients openvpn pels tres sistemes operatius més populars avui dia (Windows, Linux i MacOSX).
Obtenció del software necessari:
Partim de la base que disposem d’un servidor Ubuntu 7.04 Server. És molt probable que aquest tutorial funcioni sobre d’altres distribucions, però ha estat provat principalment sobre Ubuntu.
Utilitzarem la eina apt per aconseguir tot el software necessari. S’ha entrat al sistema utilitzant l’usuari root. Per començar actualitzem les nostres fonts de apt.
$ apt-get update
Un cop actualitzades les fonts la comanda per instal·lar openvpn és:
$ apt-get install openvpn
Amb aquest paquet instal·lat només ens falta realitzar la configuració del servidor.
Configuració:
El primer que s’ha de decidir és com volem plantejar el nostre accés VPN. OpenVPN permet configuracions molt diverses, simples o molt complexes. Podem definir un accés punt a punt o donar accés a tota una xarxa. Ara és el moment de definir-ho. En el cas que aquí expliquem el que farem és configurar el següent:
En la imatge veiem el següent:
- El servidor pertany a la xarxa 192.168.1.0/24 amb adreça 192.168.1.100
- Els clients és connecten al servidor VPN i obtenen una adreça de la xarxa: 192.168.10.0/24
- L’accés permet que els clients remots naveguin com si fossin una màquina més de la xarxa 192.168.1.0/24
Per tal de habilitar aquest esquema haurem de crear un fitxer de configuració. OpenVPN funciona amb un únic fitxer server.conf. Aquest l’haurem de col·locar a /etc/openvpn. Aquest arxiu contindrà totes les especificacions de com nosaltres volem que el nostre servidor es comporti. Els clients també tindran el seu propi arxiu de configuració. Llistem a continuació els que farem servir:
$ cat server.conf # Arxiu de configuració del Servidor OpenVPN local 192.168.1.100 port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh1024.pem server 192.168.10.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 192.168.1.0 255.255.255.0" push "dhcp-option DNS 192.168.1.1" keepalive 10 120 cipher BF-CBC comp-lzo max-clients 100 persist-key persist-tun status openvpn-status.log log openvpn.log log-append openvpn.log verb 4
$ cat client.conf: # Arxiu de configuració del Client OpenVPN client dev tun proto udp remote 192.168.1.100 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key comp-lzo verb 3
Creació de la PKI:
Es pot veure en l’arxiu de configuració que tenim uns arxius de seguretat que inclouen els certificats de la entitat certificadora, els del servidor (server.key i server.crt) i els del client (client1.key i client1.crt). Aquests arxius s’han de crear apart.
Una manera ràpida de crear-los és mitjançant la propia PKI que porta l’openVPN. El que hem de fer és el següent, primer copiar la PKI a un lloc més còmode per treballar:
$ cd /etc/openvpn/ $ mkdir CA $ cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* CA/ $ cd CA $ mkdir keys $ touch index.txt $ echo '01' > serial
A continuació creem la CA:
$ source vars $ ./build-ca
Contestarem a les dades com ens vagi millor. Així ja tindrem els arxius ca.crt i ca.key a la carpeta keys/
Passem ja a crear el certificat del servidor. Igualment fem:
$ ./build-key-server server
En aquest cas és important posar server en Common Name. Finalment ja podem crear els certificats dels clients:
$ ./build-key-pass client1
Aquí és igualment important definir el Common Name com al nom d’usuari de la persona que rebrà el certificat. Per acabar amb la generació d’arxius només falta crear l’arxiu per intercanvi de claus diffie-hellman:
$ ./build-dh
Si mirem la carpeta keys veurem un munt d’arxius. Els arxius .key haurien d’ésser secrets, només visibles pels propietaris. Aquests s’han de distribuir entre els diferents usuaris del sistema de la següent manera:
Servidor (a /etc/openvpn):
- ca.crt
- server.conf
- server.crt
- server.key
- dh1024.pem
Client1:
- ca.crt
- client.conf
- client1.crt
- client1.key
Amb els arxius ja copiats ja podem reiniciar el servei:
$ /etc/init.d/openvpn restart Stopping virtual private network daemon:. Starting virtual private network daemon: server(OK).
Amb aquesta configuració i els arxius assignats a les parts correponents el sistema ja hauria de ser capaç de connectar i deixar entrar usuaris a la VPN. El que es faci després amb l’accés a la resta de la xarxa s’hauria de configurar a traves de routers i firewalls. Potser escapa una mica d’aquest tutorial. Només introduirem algunes idees:Habilitar l’ip_forwarding al servidor:
$ echo 1 > /proc/sys/net/ipv4/ip_forward
Afegir alguna regla a l’iptables del servidor per a que tradueixi les adreces de la sub-xarxa VPN a les adreces internes de la empresa, per exemple:
$ iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 192.168.1.20
La configuració dels client per Windows la podeu trobar a: Client VPN Windows
Queda per configurar l’autenticació amb LDAP.