OpenVPN Linux Windows

Embed Size (px)

Citation preview

OpenVPN : Conctate a cualquier red de forma segura mediante OpenVPN. Manual para GNU/Linux y Windows 7 32bits y 64bits. Cliente/Servidor. SSL/TLSOpenVPN es un cliente/servidor VPN tanto para equipos GNU/Linux como para Windows. Para qu sirve hacer esto? Para conectarnos a internet de una manera segura desde cualquier red ya sea cableada o WiFi, con cifrado WEP/WPA o sin cifrar. Todo el trfico ir cifrado a travs de un Tnel desde el AP que nos conectamos hasta nuestra casa y desde all saldr a internet, es como estar en nuestra casa. Lo malo es que debes tener una buena velocidad de subida, ya que de eso depender en mayor medida tu velocidad de bajada (a no ser que la red donde te conectes tenga menos bajada que la velocidad de subida de tu conexin). Tambin sirve en caso de no redigirir el trfico, para poder acceder a los recursos compartidos de nuestra casa como puede ser imprimir desde la Universidad, copiarnos archivos desde el disco duro compartido de casa etc. La VPN ser SSL/TLS, y podemos encontrar dos tipos, TUN y TAP. TUN: El controlador TUN emula un dispositivo punto a punto, es utilizado para crear tneles virtuales operando con el protocolo IP. De esta forma se puede encapsular todos los paquetes que se transporten a travs de l como datagramas TCP o UDP (ms adelante veris que escogemos UDP en lugar de TCP, y preguntaris que por qu ya que TCP es conectivo, fiable y Orientado a conexin). Las mquinas que queden detrs de cada uno de los extremos del enlace pertenecern a subredes diferentes. TAP: Simula una interfaz de red Ethernet, ms comnmente conocido como modo puente o bridge, estos tneles virtuales encapsulan directamente paquetes ethernet. Esta situacin permite empaquetar entramados diferentes al IP. Las mquinas situadas detrs de cada uno de los extremos del enlace pueden operar como parte de la misma subred (si se utiliza el protocolo IP). El modo de funcionamiento puente es particularmente til para enlazar usuarios remotos, ya que stos pueden conectarse a un mismo servidor y virtualmente formar parte de la red principal. En el manual usaremos TUN. En este manual os voy a explicar cmo hacerlo en GNU/Linux, aunque en esencia, es lo mismo para Windows, nicamente cambian los comandos en la consola (cmd.exe), los certificados y las llaves, son los mismos para los dos, es decir, puedes crear TODO en GNU/Linux y luego pasarlo a Windowspara usarlo (ya sea cliente o servidor), nicamente debers cambiar la extensin del cliente/servidor .conf por .ovpn Voy a explicaros como realizar la configuracin ms segura posible. - Usaremos una llave RSA para crear CA.key de 2048bits sin afectar lo ms mnimo al rendimiento de la VPN. - La llave simtrica ser AES-256bits-CBC (Encadenamiento de Cifrado en Bloque) uno de los ms seguros (OpenVPN incluye todo esto, no hay que programarlo ni nada parecido).

- Incluiremos TLS/AUTH una firma HMAC adicional para todos las negociaciones SSL/TLS para la verificacin de la integridad. Cualquier paquete UDP que no posea la firma HMAC correcta es bloqueado. La firma HMAC TLS-AUTH provee un nivel de seguridad adicional mas all del que provee SSL/TLS, de esta forma nos protegemos de ataques DoS, escaneo de puertos y le ahorramos trabajo al servidor (porque si esto falla al intentar la autenticacin lo corta y no lo sigue intentando). - Protocolo UDP en lugar de TCP porque es ms fuerte frente a ataques DoS y escaneos de puertos (UDP es no conectivo, no fiable, no orientado a conexin).

GNU/Linux Ubuntu

Instalamos Openvpn con el siguiente comando desde los repositorios: sudo apt-get install openvpn Ahora vamos a copiar los archivos easy-rsa y sample-config-files a /etc/openvpn/ (previamente hemos ido al directorio con la orden cd). ubuntu@ubuntu:/usr/share/doc/openvpn/examples$ easy-rsa sample-config-files sample-keys sample-scripts Copiamos easy-rsa y sample-config-files a /etc/openvpn/ ubuntu@ubuntu:/usr/share/doc/openvpn/examples$ sudo cp -R easy-rsa/ /etc/openvpn/ ls

ubuntu@ubuntu:/usr/share/doc/openvpn/examples$ sudo cp -R sample-config-files/ /etc/openvpn/ Ahora nos metemos en el directorio de trabajo y veremos muchos ficheros: ubuntu@ubuntu:/etc/openvpn/easy-rsa/2.0$ build-ca build-dh build-inter build-key build-key-server build-req build-req-pass clean-all inherit-inter Makefile openssl-0.9.6.cnf.gz openssl.cnf ls sign-req vars whichopensslcnf pkitool README.gz

build-key-pass build-key-pkcs12 list-crl revoke-full

Ejecutamos el siguiente comando para crear una carpeta en este directorio donde almacenaremos las claves: mkdir keys Es en este directorio donde se almacenaran las llaves privadas (.key), los archivos de requerimiento de certificado (.csr) y los certificados (.crt) y otros archivos. - Las llaves .key son PRIVADAS, han de ser copiadas por un medio seguro. - Los certificados .crt y el requerimiento .csr puede pasarse sobre un medio inseguro (emails, messenger).

Generar la llave y el certificado para la Autoridad Certificadora (CA).En esta parte vamos a crear los certificados y las llaves para la CA, para el servidor y para el cliente, nos logueamos en la consola como root (siempre como root para dejarnos de los). Ahora vamos a editar el archivo vars. Nos situamos en el directorio de trabajo: cd gedit vars - Ahora modificamos KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG y KEY_MAIL a vuestro gusto, pero no podis dejarlo en blanco. - Tambin modificamos la ruta donde estn las KEYS, ya que luego haremos un ./clean-all y si no est la ruta correcta, dar error. - El tamao de la llave RSA es controlado por la variable KEY_SIZE en el archivo vars, por tanto en lugar de tener 1024 (bits), ponemos 2048 (bits) si queris ms seguridad (recomiendo 2048). Una vez lo hayis modificado, guardamos y salimos, os debera quedar algo as: # easy-rsa parameter settings # # # # # # NOTE: dont instead, easy-rsa (such as not If edit you you this installed file from in an place the another so out by that a RPM, in whole location your future /etc/openvpn/easy-rsa/2.0/

/usr/share/openvpn/easy-rsa should copy directory to /etc/openvpn) be wiped

# edits will # OpenVPN package upgrade. # # # This the

variable top level

should of

point the

to easy-rsa tree.

export EASY_RSA=`pwd` # # # # export export export GREP=grep # # This the variable openssl.cnf should file This the variable should requested point to executables

OPENSSL=openssl PKCS11TOOL=pkcs11-tool

point

to included

#

with

easy-rsa.

export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA # # # # # # # # a so WARNING: rm make it clean-all -rf sure on will this you Edit your this variable to soon-to-be-created point to key directory. do directory define correctly!

export KEY_DIR=/etc/openvpn/easy-rsa/2.0/keys/ # Issue rm -rf warning

echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR # export export PKCS11_PIN=dummy # # # # # as Increase are down well this paranoid. TLS as the generation to 2048 This negotiation one-time will DH if you slow performance parms process. PKCS11 fixes PKCS11_MODULE_PATH=dummy

export KEY_SIZE=2048 # In how many export CA_EXPIRE=3650 # In how export KEY_EXPIRE=3650 # # # export export export export export [email protected] En el mismo directorio tecleamos lo siguiente para limpiar todos los archivos que haya en /keys/. source ./clean-all ./vars These which Dont are will leave days should the root CA key expire?

many

days

should

certificates

expire?

the be any

default placed of

values in these

for the fields

fields certificate. blank.

KEY_COUNTRY=XXXX KEY_PROVINCE=XXX KEY_CITY=XXXX KEY_ORG=XXXXX

Parmetros Diffie HellmanVamos a generar estos parmetros necesarios para el servidor.

En consola y en el mismo directorio de siempre (/etc/openvpn/easy-rsa/2.0/) ./build-dh (recuerda ejecutarlo como root) Os saldr algo parecido a esto: root@Portatil:/etc/openvpn/easy-rsa/2.0# Generating DH parameters, ./build-dh generator 2 long time

2048

bit

long take

safe a

prime,

This is going to .+.++*++* .+.++*++* root@Portatil:/etc/openvpn/easy-rsa/2.0#

Nota: los guiones anteriores eran simples guiones, estos que vienen a continuacin y que por ejemplo estn antes que initca son dos guiones juntos, parece que es uno largo pero no.

Creacin certificado para la CAAhora creamos el certificado para la CA: ./pkitool initca Os saldr algo como esto: root@Portatil:/etc/openvpn/easy-rsa/2.0# Using Generating .+++ .+++ writing new private key to ca.key CA a Common 2048 bit ./pkitool Name: RSA vpn private initca CA key

root@Portatil:/etc/openvpn/easy-rsa/2.0#

Generacin de certificado y llaves para el SERVER./pkitool server servidor Nos saldr algo as: root@Portatil:/etc/openvpn/easy-rsa/2.0# Generating a +++ ..+++ writing new Using Check Signature that configuration the 2048 ./pkitool bit RSA server private servidor key

private from request

key

to

servidor.key

/etc/openvpn/easy-rsa/2.0/openssl.cnf matches Name is the as signature ok follows PRINTABLE:XX

The Subjects countryName

Distinguished

stateOrProvinceName localityName organizationName commonName emailAddress Certificate is to be certified until Jun 19 09:40:27 2020 GMT (3650 days) Write Data out database Base with 1 new

PRINTABLE:XXX PRINTABLE:XXX PRINTABLE:XXXX PRINTABLE:servidor :IA5STRING:XXXXXX

entries Updated

root@Portatil:/etc/openvpn/easy-rsa/2.0# Todos los valores los obtiene del archivo VARS, y el Common Name lo obtiene de servidor que est a continuacin de server.

Generacin de certificado y llaves para el CLIENTE./pkitool cliente1 Nos saldr algo as: root@Portatil:/etc/openvpn/easy-rsa/2.0# Generating a .+++ 2048 bit ./pkitool RSA private cliente1 key

.+++ writing new private Using Check Signature that configuration the from request

key

to

cliente1.key

/etc/openvpn/easy-rsa/2.0/openssl.cnf matches Name is the as signature ok follows PRINTABLE:XX

The Subjects countryName stateOrProvinceName localityName organizationName commonName

Distinguished

PRINTABLE:XXX PRINTABLE:XXX PRINTABLE:XXX PRINTABLE:cliente1 :IA5STRING:XXXX

emailAddress Certificate is to be certified until Jun 19 09:41:34 2020 GMT (3650 days) Write out database Base with 1

new

entries Updated

Data root@Portatil:/etc/openvpn/easy-rsa/2.0# Para generar ms clientes hacemos lo siguiente: source ./pkitool cliente2 Si queremos el tercero hacemos:

./vars

source ./pkitool cliente3 Antes de crear cada certificado debemos ejecutar source ./vars (por si queris ms). Ahora nos vamos a: cd /etc/openvpn/easy-rsa/2.0/keys/ Y veremos todas las claves (comando ls para verlas).

./vars

Generar llave TLS-AUTHopenvpn genkey secret ta.key (donde ta.key es la llave que deberemos usar tanto en el servidor como en el cliente). En la configuracin del servidor (servidor.conf o servidor.ovpn) deberemos poner: tls-auth ta.key 0 (0 de Incoming) En la configuracin del cliente (cliente.conf o cliente.ovpn) deberemos poner: tls-auth ta.key 1 (1 de Outgoing) A continuacin os pongo una tabla de qu es cada cosa.

Podemos agruparlos por carpetas para mayor comodidad siguiendo la tabla ya que por ejemplo ca.crt tiene que estar en todos los clientes/servidores (servidor, cliente1, cliente2, etc).

Archivo de Configuracin del Cliente (client.conf)Viene una pequea gua de para qu sirve cada comando, tenis que modificar: - remote my-server-1 1194 ya que aqu deberemos poner el host dyndns que tengis, Host en DynDNS para servidores domsticos como FTP, VPN, servidor de juegos o servidor WEB : Manual DynDNS - ca ca.crt cert client.crt y key client.key lo debis cambiar por el nombre que le habis puesto a cliente, en este caso cliente1, cliente2 y con la RUTA COMPLETA al archivo para evitarnos problemas, quedara as:

ca cert key /etc/openvpn/easy-rsa/2.0/keys/cliente1.key

/etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn/easy-rsa/2.0/keys/cliente1.crt

-En el siguiente fragmento veis el TLS-AUTH que usaremos, quitamos e punto y coma (;) y lo activaremos, el ta.key tambin ponemos la ruta completa de la ta.key. # # If then a every tls-auth client key is must used also on have the the server key.

tls-auth ta.key 1 - Como hemos elegido un cifrado AES-256-CBC pues lo ponemos: # # # If then Select the cipher you a option must is also cryptographic used specify on the it cipher. server here.

cipher AES-256-CBC Y ya tenemos el cliente listo. La ruta completa de cada archivo (ca.crt cliente1.key etc, no hace falta ponerla siempre y cuando el client.conf est en la misma carpeta que ellas, pero para no tener problemas pues ponemos la ruta completa).

Archivo de Configuracin del Servidor (server.conf)- En el servidor debemos poner la IP interna que tendremos en la red para escuchar, el puerto, si es el de por defecto no habr - Ponemos las rutas completas de los siguientes archivos: ca cert key server.key dh dh2048.pem ya que lo hemos puesto de - El rango del servidor no hace falta tocarlo, el cifrado que hemos elegido y la TLS-AUTH. 2048 bits. que tocarlo.

ca.crt server.crt

Aqu no he explicado con detalle la configuracin del servidor, porque poca gente va a tener un ordenador con GNU/Linux o Windows encendido dedicado nicamente a esto, es mucho ms cmodo un router con firmwares de terceros como Tomato y el correspondiente mdulo OpenVPN donde es todo grfico, a continuacin os pongo unas capturas de pantalla para que lo veis junto con el LOG del router al arrancar la VPN. Nota: las claves se meten en las casillas haciendo un gedit ca.crt (por ejemplo), copiamos y pegamos todo lo que aparece en el gedit y listo! (s, todos esos smbolos y letras). Click en la foto para ampliarla y verla mejor.

Pruebas de conectividad:Log de inicio de OpenVPN en el router: Jun 21 18:14:39 router daemon.notice openvpn[344]: OpenVPN 2.1.1 mipsel-unknown-linux-gnu [SSL] [LZO2] built on Feb 17 2010 Jun 21 18:14:39 router daemon.warn openvpn[344]: NOTE: OpenVPN 2.1 requires script-security 2 or

higher

to

call

user-defined

scripts

or

executables

Jun 21 18:14:42 router daemon.notice openvpn[344]: Diffie-Hellman initialized with 2048 bit key Jun 21 18:14:42 router daemon.notice openvpn[344]: Control Channel Authentication: using static.key as a OpenVPN static key file Jun 21 18:14:42 router daemon.notice openvpn[344]: Outgoing Control Channel Authentication: Using 160 bit message hash SHA1 for HMAC authentication Jun 21 18:14:42 router daemon.notice openvpn[344]: Incoming Control Channel Authentication: Using 160 bit message hash SHA1 for HMAC authentication Jun 21 18:14:42 router daemon.notice openvpn[344]: TLS-Auth MTU parms [ L:1558 D:166 EF:66 EB:0 ET:0 EL:0 Jun 21 18:14:42 router daemon.notice openvpn[344]: TUN/TAP device tun21 ] opened

Jun 21 18:14:42 router daemon.notice openvpn[344]: TUN/TAP TX queue length set to 100 Jun 21 18:14:42 router daemon.notice openvpn[344]: /sbin/ifconfig tun21 10.8.0.1 pointopoint 10.8.0.2 mtu 1500 Jun 21 18:14:42 router daemon.notice openvpn[344]: /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2 Jun 21 18:14:42 router daemon.notice openvpn[344]: Data Channel MTU parms [ L:1558 D:1450 EF:58 EB:135 ET:0 EL:0 AF:3/1 ] Jun 21 18:14:42 router daemon.notice openvpn[407]: Socket Buffers: R=[108544->131072] S=[108544>131072] Jun 21 18:14:42 Jun Jun router daemon.notice openvpn[407]: UDPv4 link local (bound): [undef]:1194

21 18:14:42 router daemon.notice openvpn[407]: UDPv4 link remote: [undef] 21 18:14:42 router daemon.notice openvpn[407]: MULTI: multi_init called, r=256 v=256 size=62

Jun 21 18:14:42 router daemon.notice openvpn[407]: IFCONFIG POOL: base=10.8.0.4 Jun 21 18:14:42 router daemon.notice openvpn[407]: Initialization Sequence Completed Cliente: root@Portatil:/etc/openvpn# openvpn

client.conf

Tue Jun 22 12:08:24 2010 OpenVPN 2.1.0 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [MH] [PF_INET6] [eurephia] built on Jan 26 2010 Tue Jun 22 12:08:24 2010 NOTE: OpenVPN 2.1 requires script-security 2 or higher to call user-defined scripts or executables Tue Jun 22 12:08:24 2010 /usr/bin/openssl-vulnkey -q -b 2048 -m Tue Jun 22 12:08:24 2010 Control Channel Authentication: using ta.key as a OpenVPN static key file Tue Jun 22 12:08:24 2010 Outgoing Control Channel Authentication: Using 160 bit message hash SHA1 for HMAC authentication Tue Jun 22 12:08:24 2010 Incoming Control Channel Authentication: Using 160 bit message hash SHA1 for HMAC authentication Tue Jun 22 12:08:24 2010 LZO compression initialized Tue Jun 22 12:08:24 2010 Control Channel MTU parms [ L:1558 D:166 EF:66 EB:0 ET:0 EL:0 ] Tue Jun 22 12:08:24 2010 Data Channel MTU parms [ L:1558 D:1450 EF:58 EB:135 ET:0 EL:0 AF:3/1 ] Tue Jun 22 12:08:24 2010 Local Options hash (VER=V4): 9e7066d2 Tue Tue Tue Tue Jun Jun 22 22 12:08:24 12:08:24 22 22 2010 2010 Expected Socket Remote Buffers: Options hash (VER=V4): 162b04de R=[124928->131072] S=[124928->131072] link remote: local: [undef] [AF_INET]XX:1194

Jun Jun

12:08:24 12:08:24 2010

2010 UDPv4 UDPv4 link

Tue Jun 22 12:08:24 2010 TLS: Initial packet from [AF_INET]XX:1194, sid=0e6c8016 fc84b328

Tue Jun 22 12:08:27 2010 VERIFY OK: depth=1, /C=XX/ST=X/L=XX/O=Xa/CN=XX/emailAddress=XX.com Tue Jun 22 12:08:27 2010 VERIFY OK: nsCertType=SERVER Tue Jun 22 12:08:27 2010 VERIFY OK: depth=0, /C=XXX/ST=XX/L=xxx/O=xxxx/CN=xxx/emailAddress=xxx Tue Jun 22 12:08:30 2010 Data Channel Encrypt: Cipher AES-256-CBC initialized with 256 bit key Tue Jun 22 12:08:30 2010 Data Channel Encrypt: Using 160 bit message hash SHA1 for HMAC authentication Tue Jun 22 12:08:30 2010 Data Channel Decrypt: Cipher AES-256-CBC initialized with 256 bit key Tue Jun 22 12:08:30 2010 Data Channel Decrypt: Using 160 bit message hash SHA1 for HMAC authentication Tue Jun 22 12:08:30 2010 Control Channel: TLSv1, cipher TLSv1/SSLv3 EDH-RSA-DES-CBC3-SHA, 2048 bit RSA Tue Jun 22 12:08:30 2010 [servidor] Peer Connection Initiated with [AF_INET]87.220.30.11:1194 Tue Jun 22 12:08:33 2010 SENT CONTROL [servidor]: PUSH_REQUEST (status=1) Tue Jun 22 12:08:33 2010 PUSH: Received control message: PUSH_REPLY,route 10.10.3.0 255.255.255.0,dhcp-option DOMAIN RED_LOCAL,dhcp-option DNS 10.10.3.1,redirect-gateway def1,route 10.8.0.1,topology Tue Jun 22 Tue Tue Jun Jun 22 22 net30,ping 12:08:33 2010 12:08:33 12:08:33 15,ping-restart 60,ifconfig 10.8.0.6 OPTIONS IMPORT: timers and/or timeouts options options 10.8.0.5 modified modified modified

2010 OPTIONS IMPORT: ifconfig/up 2010 OPTIONS IMPORT: route

Tue Jun 22 12:08:33 2010 OPTIONS IMPORT: ip-win32 and/or dhcp-option options modified Tue Jun 22 12:08:33 2010 ROUTE default_gateway=10.10.2.1 Tue Tue Tue Tue Tue Tue Jun Jun 22 22 12:08:33 12:08:33 2010 2010 TUN/TAP TUN/TAP device TX queue length tun0 set to opened 100

Jun 22 12:08:33 2010 /sbin/ifconfig Jun 22 12:08:33 2010 /sbin/route add Jun Jun

tun0 10.8.0.6 pointopoint 10.8.0.5 mtu 1500 -net xxx netmask 255.255.255.255 gw 10.10.2.1 gw gw 10.8.0.5 10.8.0.5

22 12:08:33 2010 /sbin/route add -net 0.0.0.0 netmask 128.0.0.0 22 12:08:33 2010 /sbin/route add -net 128.0.0.0 netmask 128.0.0.0

Tue Jun 22 12:08:33 2010 /sbin/route add -net 10.10.3.0 netmask 255.255.255.0 gw 10.8.0.5 Tue Jun 22 12:08:33 2010 /sbin/route add -net 10.8.0.1 netmask 255.255.255.255 gw 10.8.0.5 Tue Jun 22 12:08:33 2010 Initialization Sequence Completed Ahora tenemos tres opciones para conectaros a la VPN: - Tecleando en consola el comando sudo openvpn cliente.conf y no cerrando la consola (ya que si no cierra la conexin). - Automatizando el inicio de la VPN en el sistema, con lo cual siempre pasars por la VPN aunque la red sea segura, y eso conlleva no tener la mxima velocidad posible (redirigimos internet). - Poniendo OpenVPN en el network manager de forma grfica y ada vez que queramos conectarnos dar 2 clicks y listo. Esta ltima forma es la ms til al menos para m, os voy a poner como hacerlo.

Usar Network-Manager para hacer OpenVPN (con grficos y sin consola).Vamos a instalar OpenVPN para el network-manager (plugin).

la

conexin

sudo apt-get install network-manager-openvpn SOLUCIN a: Openvpn fall porque no haba secretos vpn vlidos Una vez instalado (y reiniciado el sistema a ser posible) hacemos: sudo gedit /etc/dbus-1/system.d/nm-openvpn-service.conf Y debe poner obligatoriamente lo siguiente:

Guardis datos, sals del gedit y reiniciis el ordenador (tambin vale reiniciar slo el network-manager pero tardas menos as), ya nos os dar el famoso error de: Openvpn fall porque no haba secretos vpn vlidos. Nota: Realmente lo nico que haces es intercalar esta lnea de cdigo:

Entre las otras dos, pero os puse el cdigo entero para que no os compliquis la vida. Ya tenemos el plugin openvpn para network manager puesto a punto para configurarlo, ahora vamos a importar la configuracin cliente.conf de tal forma que en 4 clicks tengamos todo listo. En esta pantalla seleccionamos Importar:

Buscamos el archivos .CONF y doble click:

A continuacin y SIN TOCAR NADA, le damos a APLICAR:

Y ya la habremos importado:

Una vez que hemos hecho esto, basta con dar click izquierdo sobre el network-manager, nos vamos a conexiones VPN y seleccionamos la conexin que hemos importado anteriormente, en 15 segundos estaremos conectados y nos podr un candado sobre el network-manager, si no funciona ejecutad el cliente.conf manualmente con el siguiente comando (si tampoco conecta, repasa los archivos .CONF). sudo openvpn cliente.conf Nota: aqu tenis el HOWTO oficial de OpenVPN: http://openvpn.net/index.php/open-source/documentation/howto.html

Windows 7La creacin de los certificados es exactamente en Windows que en GNU/Linux, slo cambian los comandos a usar, incluso podis hacer los certificados en GNU/Linux y llevarlos a Windows sin cambiar de extensin, nicamente el server.conf y cliente.conf han de pasar a extensin .ovpn, nada ms. Lo primero que vamos a hacer es bajarnos la ltima versin de OpenVPN y configurar el GUI adecuadamente. Descargamos la ltima versin OpenVPN desde aqu: http://openvpn.net/index.php/open-source/downloads.html La instalamos normalmente, con derechos de administrador (por supuesto), una vez instalado todo, reiniciamos el equipo (aunque no es necesario). Ahora nos vamos al icono del escritorio y pulsamos click derecho sobre l y seleccionamos PROPIEDADES, en la pestaa COMPATIBILIDADModo de Compatibilidad para Windows XP (Service Pack 3)Ejecutar como administrador, tal y como tenis en la imagen: seleccionamos y seleccionamos la casilla de

Y ya os debera funcionar correctamente, si os funciona sin hacer esto pues perfecto, pero a m no me funcion.

Generar la llave y el certificado para la Autoridad Certificadora (CA).Ejecutamos el CMD.EXE con permisos de administrador (clic derecho ejecutar como administrador). Nos vamos al directorio de trabajo de OpenVPN carpeta easy-rsa con el comando cd. - Renombramos vars.bat.sample a vars.bat y lo abrimos con el bloc de notas para rellenar las key_country, key_province etc. - El tamao de la llave RSA es controlado por la variable KEY_SIZE en el archivo vars, por tanto en lugar de tener 1024 (bits), ponemos 2048 (bits) si queris ms seguridad (recomiendo 2048). Salimos y guardamos.

Ejecutamos el comando vars (en c:\archivos de programa\openvpn\easy-rsa) A continuacin ejecutamos clean-all.bat, nos crear una carpeta nueva keys donde almacenaremos las claves.

Parmetros Diffie HellmanVamos a generar estos parmetros necesarios para el servidor. Ejecutamos el comando: build-dh y empezar el proceso.

Creacin certificado para la CARenombramos openssl.sample a openssl (sin el sample). Ejecutamos en consola build-ca para crearlo y ponis lo mismo que habis rellenado en vars (key_country etc) y cuando te pida common name poned openvpn-ca (por ejemplo).

Generacin de certificado y llaves para el SERVEREjecutamos: build-key-server server para crear el servidor, el common name se obtiene del segundo server.

Generacin de certificado y llaves para el CLIENTEEjecutamos: build-key cliente1 para crear el primer cliente y as con los dems que queramos.

Generar llave TLS-AUTHEn el directorio easy-rsa ejecutamos: openvpn genkey secret ta.key y se nos pondr en ese mismo directorio. Nota: son dos guiones, no uno slo. Ahora nos toca configurar el client.ovpn (client.conf en GNU/Linux) con esto, se hace exactamente igual que en GNU/Linux y tiene las mismas opciones y TODO IGUAL. El servidor es tambin igual que en GNU/Linux. Los archivos que debis pasar al servidor y clientes, hacedlo por un medio seguro con las .key. Aqu tenis la misma tabla que puse arriba:

Aqu tenis el manual oficial de OpenVPN: http://openvpn.net/index.php/open-source/documentation/howto.html

Pruebas de conectividad e iniciacin:Como supongo que usaris Windows como cliente para conectaros a una VPN que est en un servidor con GNU/Linux o en un router con firmwares de terceros, os voy a ensear como arrancarlo mediante la interfaz grfica. Copiamos ca.crt, cliente1.crt, cliente1.key, ta.key y cliente.ovpn a la carpeta Openvpn/config/, en el cliente.ovpn no hace falta poner la ruta entera de ca.crt y todos los dems, ya que estn en la misma carpeta. Una vez que ya tenemos el servidor a punto, todos los archivos del cliente en la carpeta config, iniciamos el OpenVPN GUI que tenemos en el escritorio. Recuerda: ejecuta en modo de compatibilidad XP Service Pack 3 y con derechos de administrador. Clic derecho sobre el icono y pulsamos connect, esperamos hasta que se conecte y nos de LUZ VERDE (si hacemos click derecho sobre el icono y le damos a Show Status nos mostrar el LOG de conexin).

Y ya estamos conectados a la VPN en Windows 7. Espero que os haya gustadoy si tenis alguna pregunta hacedla y os responder (si s). Manual realizado por Sergio de Luz (Bron) para REDESZone.net