Servei VPN

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:

imatge1.jpg
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.