Configuració OpenVPN a Ubuntu

[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

2 thoughts on “Configuració OpenVPN a Ubuntu”

  1. 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!

  2. 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

Leave a Reply

Your email address will not be published. Required fields are marked *