Publica tu how-to

Dinos como hacer lo que sabes hacer, mándanos un email a wdonet@gmail.com y lo publicamos (dos días máximo) o si te interesa unirte al equipo de redactores, también háznoslo saber por correo.

Levantando una sencilla VPN con OpenVPN parte 3

Configuración de la VPN

Generación de llaves (continuación...)
Teniendo claro cómo funciona la seguridad en una VPN, lo que sigue es generar las llaves y
certificados apropiados para poder configurar, ahora sí, la VPN entre las máquinas que deseamos
tener 'cerca'.

OpenVPN viene de por sí con algunos scripts que pueden aprovecharse para la generación del
esquema de seguridad de la red. El único requisito previo es tener instalado el software
OpenSSL, el cual utilizan dichos scripts. (Sin embargo, si instalas desde alguna utilidad de tu
distribución Linux, o desde Windows, el software SSL adecuado se preinstala también, pues es
un requisito previo).

Los pasos en este caso son sencillos:
  1. Se genera el certificado (conocido también como 'llave pública'), así como las llaves privadas tanto para el servidor como para cada cliente.
  2. Se genera un certificado y una llave para el 'master Certificate Authority' (CA), que se utilizan para firmar cada uno de los certificados generados anteriormente.
Si estás utilizando algun servidor estilo Unix, entonces ve al subdirectorio easy-rsa, que se
encuentra en donde esté instalado OpenVPN. Por ejemplo:

/usr/share/doc/packages/openvpn
Si estás utilizando Windows, el subdirectorio easy-rsa podría estar en:
\Program Files\OpenVPN\
  • El primer paso consistirá en inicializar los scripts (eliminando cualquier configuración previa que se tuviera antes):

init-config
  • Después, debe editarse el archivo vars (o vars.bat en Windows) para establecer los parámetros KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG y KEY_EMAIL (estos son parámetros propios de OpenSSL, se puede averiguar más sobre ellos googleando un poco sobre este software).
  • En seguida, se debe inicializar la infraestructura de llaves públicas, ejecutando los siguientes scripts:

vars clean-all build-ca
El último de dichos scripts (build-ca), construye el certificate authority (CA) y la llave, al invocar el comando openssl. Conforme lo solicite, debe introducirse a dicho script la información necesaria para terminar de construir los archivos que se están generando.
  • Posteriormente, se generan el certificado y la llave privada del servidor:

build-key-server server
El Common Name a utilizar debería ser 'server'.
  • En seguida, se generan los certificados y llaves de cada cliente:

build-key cliente1 build-key cliente2 ... build-key clienteN
El Common Name sería 'clienteX', donde X es el número del cliente a configurar.
  • Por último se generan los parámetros Diff Hellman para el servidor OpenVPN:

build-dh
  • Y ya como paso final, de los archivos generados, hay que llevarlos a las computadoras adecuadas:
ca.crt - en el servidor y en todos los clientes
ca.key - para firmar más certificados (en donde quiera que se vaya a realizar esta operacion)
(keep secret!)
dh{n}.pem - en el servidor
server.crt - en el servidor
server.key - en el servidor (keep secret!)
clientX.crt - en el cliente X
clientX.key - en el cliente X (keep secret!)


Archivos de configuracion
De manera similar a los scripts que OpenVPN tiene para facilitar la configuración de la
infraestructura de llave pública, también se incluyen archivos de configuración de ejemplo,
para facilitar esta segunda, y última parte, de la configuración de la VPN.

En sistemas tipo Unix, estos pueden encontrarse, tal vez, en

/usr/share/doc/packages/openvpn
En Windows, puede buscarse en
\Program Files\OpenVPN\sample-config
server En cuanto al servidor, lo esencial es configurar el número de puerto y protocolo a utilizar (por defecto, se tiene el puerto UDP 1194) Así mismo, debe especificarse la localización de los archivos
ca.crt, server.crt, server.key y dh.pem
Igualmente, debe configurarse el rango de direcciones IP que podran tomar los clientes de la VPN, según el diseño previamente establecido Puede establecerse que los clientes de la VPN puedan verse entre sí o solamente vean al servidor, con la directiva client-client clientes Lo mismo que en el servidor, debe especificarse la ubicacion de los archivos
ca.crt, clientX.crt y clientX.key
En la directiva remote se establece la dirección IP del servidor, que será contactado para unirse a la VPN Debe verificarse que la configuración de cada cliente sea consistente con lo que se estableció en el servidor. Por ejemplo, el protocolo y puerto deben ser el mismo Arranque Para arrancar la VPN, comenzando por el servidor, se ejecuta lo siguiente:
openvpn [localizacion del archivo de configuracion]
Si todo es correcto, ejecutando ifconfig (o el programa para averiguar las direcciones IP disponibles que se tenga) se debe observar que existe una nueva dirección IP, correspondiente a la VPN, para un dispositivo tun o tap (dependiendo cómo se hubiera configurado la VPN, el más común es tun) Una manera sencilla de probar la VPN es, una vez levantados el servidor y algun cliente, hacer un ping entre ellos, con lo que ambas máquinas deben de verse:
ping IP_VPN
si algo saliera mal, primero hay que verificar que no haya problemas de firewall, con el puerto y protocolo establecidos en la configuración, por ejemplo. Arranque automático En el caso de Linux, la distribución debería de haber dejado instalado el script /etc/init.d/openvpn, el cual se encarga de buscar todos los archivos .conf que se encuentrenen /etc/openvpn, por lo que hay que colocar ahí los archivos de configuración recientemente editados, para que OpenVPN se inicie en automático correctamente. En Windows, al instalar OpenVPN se debe configurar el software como un servicio. OpenVPN buscará los archivos de configuración que se encuentren en \Program Files\OpenVPN\config, para el inicio automático. Resumen En resumen, la instalación /configuración /arranque de OpenVPN consiste de:
  • Generar los archivos de certificados y llaves necesarios para servidor y clientes (se pueden utilizar los scripts que OpenVPN ya incluye), llevando cada archivo a su ubicación final según lo que se dijo anteriormente
  • Generar el archivo de configuración, ya sea para el servidor o el cliente, tomando en cuenta el tipo de VPN (tun o tap), la ip del servidor (en caso de configurar un cliente), el rango de ips que tendrán las máquinas pertenecientes a la VPN (en caso de configurar el servidor), el puerto y protocolo de comunicación (por defecto UDP 1194), la ubicación de los archivos de seguridad generados en el paso anterior, si se desea que haya comunicación entre clientes (en caso de configurar el servidor), y verificar la consistencia de las configuraciones entre los clientes y el servidor, además de cualquier otra cosa que se desee configurar en dichos archivos
  • Para un arranque automático, colocar los archivos de configuración en los directorios adecuados, dependiendo el sistema y la distribución del mismo (consultar los manuales y google para más información, en caso de que lo dicho aquí no sea genérico para todos los casos)
  • Al arrancar OpenVPN, validar esto mismo observando que existe una nueva dirección IP para la máquina en cuestión, y ésta dirección debe caer forzosamente en el rango establecido al configurar el servidor
  • Una vez con dos o más máquinas configuradas correctamente, validar esto mismo, observando que todas las máquinas pueden 'verse' entre sí (o sólo cada cliente con el servidor, dependiendo las configuraciones de este último) vía la dirección IP asignada para la VPN de cada una


Referencias
OpenVPN, como buen software open source, está muy bien documentado, tanto en la
instalación del propio software como en línea, en su sitio oficial (www.openvpn.net)

Precisamente en éste último sitio, se encuentra un HOWTO bastante completo, en el cual me
basé totalmente para generar esta pequeña serie de posts (y por si quedan dudas, también me
basé en el mismo tutorial para generar una VPN que utilizo yo mismo entre mi máquina que
funciona como servidor y las máquinas de mi trabajo, la de mi esposa, mi hermano y mi mamá,
para el caso de que les pueda proporcionar yo mismo ayuda vía remota desde donde quiera que
me encuentre).
Dicho HOWTO se puede leer en línea en:
http://www.openvpn.net/index.php/open-source/documentation/howto.html


Ver la parte 1
Ver la parte 2

11 comentarios:

  1. ok....ya me funciono mi vpn, ya hice la prueba de conexion con ping y puedo ver que existe comunicacion entre mi maquina servidor y mi maquina cliente...pero ahora como puedo ver mis archivos??..ya sea del cliente al servidor o viceversa??

    ResponderEliminar
  2. bueno, esa ya no es una pregunta relativa a la VPN, pues depende completamente de tu sistema. Asi como le haces para ver archivos con otras maquinas de tu red local, haz lo mismo pero con la VPN.... en otras palabras, depende en primer lugar de tu sistema, cosas que no especificas en tu comment... tienes mas detalles?

    ResponderEliminar
  3. Considera que la vpn es solo para crear un tunel a través de una red (normalmente internet) q te permita ser parte de la red local de esa otra maquina servidor. No obstante, para compartir archivos, o acceder a otros servicos como ssh, ftp, web, etc,.. debes configurar cada uno de esos servicios (como bien dice al inicio de la parte uno de esta publicacion) - xq no revisas este otro post?:: http://micro-howto.blogspot.com/2009/03/servidor-linux-desde-tu-hogar-en-tres.html

    ResponderEliminar
  4. hola Javier
    estoy oonfigurando una VPN en la oficina central de mi trabajo... aqui se trabaja con softland y solo se pude correr en la red local por el tipo de pack que compraron.
    Bueno te comento que configure el servidor
    y un cliente que es en este momento un notebook con conexion internet movil celular claro.

    puedo hacer ping desde el cliente hacia el servidor tanto a la dirección virtual como a la real

    RED 192.168.0.0 255.255.255.0
    SERVIDOR VPN 192.168.0.150
    router 192.168.0.1 es un d-link DIR300

    la VPN la tengo en 192.168.10.0
    el servidor esta en 192.168.10.1

    y el notebook cliente 192.168.10.2

    habilite el ruteo en el registro de windows XP profesional SP3

    y en el route tengo habilitado el IP FORWARDING
    1194 UDP a la dir 192.168.0.150

    que podria estar faltando para acceder desde el cliente a los demas equipos de la red de la empresa

    de ante mano gracias

    Atte
    Galo

    ResponderEliminar
  5. mmmmm un par de preguntas...

    el acceso que quieres de tu cliente al resto de equipos de la red de la empresa, es acceso via la VPN? es decir, el resto de equipos de la red de la empresa ya estan dentro de la VPN? Si no es asi, entonces tambien debes darlos de alta.

    Ahora, si el problema es que el cliente no puede acceder al resto de equipos de la red de tu empresa, pero no via la VPN sino por la LAN, entonces el problema es de la LAN, y no de la VPN.

    La otra pregunta, o mas bien aclaracion. Recuerda que para que dos equipos clientes de una VPN se puedan ver entre si el servidor necesita tener activada la opcion client-to-client en el archivo de configuracion del servidor...


    saludos!

    ResponderEliminar
  6. Javier

    en realidad no tengo al resto de los equipos en la VPN puede ser eso...
    no puede acceder a los equipos dentro de la red de la empresa a traves de la VPN

    el problema es que el cliente
    la opcion de client-to-client la tengo habilitada

    en un tutorial se mencionaba que habia que crear un ruta nueva en el router pero eso no me funciono

    gracias por la pronta respuesta

    ResponderEliminar
  7. no mira, una VPN es como una red mas, pero solo los que esten dentro de esa red se pueden ver. Si una maquina no esta dentro de la red (la VPN en este caso) ni ella puede ver a otras de la VPN ni las de la VPN pueden verla a ella. Todas las que te interese sean vistas deben estar en la VPN, como en cualquier otra red...

    ResponderEliminar
  8. ultima consulta --

    tengo un servidor que tiene softland y que esta
    en la red de la empresa con IP 192.168.0.120
    tengo mi PC que tiene la direccion IP
    192.168.0.150
    entre ellos se ven y puedo ejecutar softland desde mi equipo sin problemas

    en este equipo tengo instalado OpenVPN y la direcion IP de este es la 192.168.10.1

    mi notebook cliente remoto tiene la IP 192.168.10.2
    y puede ver mi equipo

    quiero que este notebook vea al servidor softland para poder ejecutarlo como si fuera un PC de la red interna.... es posible esto?

    que me falta configurar??

    gracias por tu paciencia

    ResponderEliminar
  9. logre hacer lo que queria
    gracias ... solo tenia que agregar una
    entrada nueva a la tabla de ruteo
    del router indicandole el camino
    hacia la VPN

    ResponderEliminar
  10. ok! enhorabuena! te iba a sugerir que agregaras el servidor de softland a la VPN pero supongo que esto ademas de que probablemente no te seria posible (a menos que tengas acceso al servido), seria hacer el problema mas grande. Tu solucion es mas elegante y da con el punto ;)


    felicidades

    ResponderEliminar
  11. hOLA ANTE TODO GRACIAS POR todo.

    estoy investigando un poco respecto a la generacion de tuneles utilizando openvpn mi duda viene q si al crear el tunel esoy manejando ssl/tls que son protocolos que me aseguran que la informacion viaja segura por el tunel , quiero saber en que momento uso UDP.

    ¿no se en que momento utilizo UDP con SSL? EN EL INTERCAMBIO DE CERTIFICADOS? EN MOMENTO SANTES DE CREAR EL TUNEL? NO ENTIENDO BIEN YA QUE UDP ES NO ORINTADO A LA CONEXION. GRACIAS POR TODO UN ABRAZO. sanabria.javier@gmail.com

    ResponderEliminar

Que opinas sobre esta publicación?