Instalar y Configurar servicio OpenVPN en Servidor y Cliente – Linux

Este artículo, explica de forma detallada lo que es el servicio OpenVPN, que permite hacer, y la forma en que se instala y se configura en un equipo servidor y un equipo cliente, para lograr una conexión y una transmisión de datos segura entre dos redes separadas geográficamente por internet.

Hoy en día son muchas las empresas que por su crecimiento requieren aumentar sus instalaciones físicas, y para ello recurren a crear nuevas sedes en puntos geográficos diferentes. Estos puntos geográficos en ocasiones están muy lejanos, incluso pueden llegar a estar en otro país, lo que conlleva un obstáculo ya que para la mayoría de las empresas es importante poder compartir información entre todas las sucursales, poder acceder desde cualquier punto a los recursos de otras sedes (Servidores, impresoras, etc) y en resumen tener una infraestructura de red accesible desde cualquier punto.  Para satisfacer estas necesidades se debe usar un protocolo que permita una comunicación segura entre todas las redes LAN, (que hay en cada una de las sedes) y que en lo posible no sea necesario crear un canal propio de comunicaciones entre cada una de ellas, es decir, que no sea necesario extender un cableado de fibra óptica de sede a sede, ni un enlace de Radio, ni nada similar.

Es por esto que para este proyecto se implementará el uso de una red VPN, para simular un entorno en donde existen dos sedes distantes una de otra que pueden comunicarse como si fueran una sola red LAN, encapsulando el tráfico y enviándolo de forma segura por un canal de internet. Esto se hará usando software libre, lo que permite que el único costo sea el acceso a internet y el mantenimiento de los servidores, ahorrando así gastos por licencias y canales de comunicaciones dedicados.

El contenido del artículo es el siguiente:

  • Montaje del servicio.
  • Instalación y configuración del servicio openvpn en el equipo servidor.
  • Montaje del Cliente
  • Conclusiones

MONTAJE DEL SERVICIO

El laboratorio a montar, es el siguiente:

Por medio del servicio OpenVPN, se deben poder conectar dos redes con segmentos de red diferentes, a través de internet. El equipo servidor, está conectado a una red con dirección de red 192.168.1.0/24, en donde se encuentran otras máquinas que están conectadas todas a un router inalámbrico, mientras que el equipo cliente está conectado a una red con dirección de red 172.18.0.0/24. El objetivo del laboratorio es permitir al equipo cliente poderse conectar a cualquier equipo que se encuentre en la red 192.168.1.0 por medio del equipo servidor. También se permitirá conectividad entre los clientes, es decir, un cliente podrá conectarse a otro cliente. Esta conectividad se logra usando las direcciones IP asignadas en el túnel del openVPN.

INSTALACIÓN Y CONFIGURACIÓN DEL SERVICIO OPENVPN EN EL EQUIPO SERVIDOR

A continuación se detallarán los pasos a seguir para la instalación del servicio OpenVPN en el equipo destinado para ser el servidor:

Nota: Todos los comandos y todo el proceso de instalación y configuración deben hacerse como usuario Root para evitar posibles problemas. Debe instalarse OpenSSL ya que OpenVPN utiliza criptografía y es necesario este servicio para que los datos sean seguros, lo hacemos con el comando  apt-get install openssl

  • Instalación del servicio: Si ya se tiene instalado el servicio, este paso se debe omitir. El comando de instalación es apt-get install openvpn, se debe aclarar que el servicio se debe instalar tanto en el servidor, como en el o los clientes que se quieran conectar al servicio.
  • Ahora vamos a definir el archivo predeterminado que usará OpenVPN cada vez que se inicie el servicio, para esto editamos el archivo openvpn así: nano /etc/default/openvpn (Se puede usar cualquier editor de texto, Vi, Gedit, Nano, etc..). Una vez allí, comentamos todas las líneas anteponiéndoles un # y al final agregamos la siguiente linea: AUTOSTART=”openvpn”. Este archivo (openvpn) aun no ha sido creado, pero más tarde en el manual se indicará como hacerlo y que debe contener (paso 9).

    Creación de Llaves y certificados: El equipo servidor es el encargado de crear las llaves para que los clientes puedan hacer su respectiva autenticación. 

    Para la creación de las llaves y la configuración del servicio, vamos al directorio donde se va a configurar todo lo referente al servicio con el siguiente comando: cd /etc/openvpn. Una vez allí, vamos a copiar de otro directorio diferente, una carpeta en la que se encuentran todos los archivos de configuración necesarios para que el servicio funcione.

Lo hacemos con el siguiente comando:

 

cp -r /usr/share/doc/openvpn/examples/easy-rsa/ . (Se debe dejar un espacio entre el final del comando y el punto). Lo que hace este comando es copiar todo lo que hay en /usr/share/doc/openvpn/examples/easy-rsa en el directorio actual en el que nos encontramos que es /etc/openvpn.

Luego de completar el paso anterior, vamos a editar el archivo vars, que se encuentra en /etc/openvpn/easy-rsa/2.0. Lo editamos con el siguiente comando: nano /etc/openvpn/easy-rsa/2.0/vars y al final del archivo cambiamos los datos que trae por defecto por los nuestros, así:

 

  • export KEY_COUNTRY=CO
  • export KEY_PROVINCE=CA
  • export KEY_CITY=Manizales
  • export KEY_ORG=juan
  • export KEY_EMAIL=correoprueba@gmail.com

Recuerda poner los datos de tu país, ciudad, y los demás como quieras, pero teniendo en cuenta el ejemplo anterior.

  • Después de haber guardado y cerrado el archivo del paso anterior, ahora ejecutamos el siguiente comando: . ./vars (el comando es un punto, espacio y otro punto, seguido de /vars)

Con este comando, nos evitaremos tener que reingresar los datos que editamos en el archivo vars, en los siguientes pasos del manual. Luego ejecutamos el comando ./clean-all (Recuerden que estamos ubicados en /etc/openvpn/easy-rsa/2.0 solo estando ahí podrán ejecutar estos comandos).

  • Creación de la unidad certificadora: este paso define al equipo servidor como la CA o unidad certificadora, es decir, el equipo que se va a encargar de crear las llaves tanto para el servidor como para los clientes. Basta con ubicarse en el directorio /etc/openvpn/easy-rsa/2.0 y una vez allí ejecutar el comando ./build-ca (Si necesitas saber en qué directorio te encuentras, ejecuta en el terminal el comando pwd).

  • Creación de la llave para el servidor: Este paso crea la llave del servidor, y basta con estar en el mismo directorio del paso anterior (/etc/openvpn/easy-rsa/2.0) y ejecutar el siguiente comando: ./build-key-server server para este caso, la llave la llamamos server. Seguimos los pasos que nos da el comando, y al final respondemos si (y) a dos preguntas que nos hace.

  • Creación de la(s) llave(s) para el(los) Cliente(s): ahora pasamos a crear las claves para los clientes, esto también lo hacemos estando ubicados en el directorio /etc/openvpn/easy-rsa/2.0 Basta con ejecutar el comando ./build-client cliente1 (cliente 1 lo puedes cambiar por el nombre que quieras, pero no lo olvides). Después de ejecutado el comando, sigue todos los pasos, y de nuevo te hará dos preguntas que contestarás de forma afirmativa (y). En este paso puedes crear las llaves para los clientes que quieras, después de crear las llaves de uno, ejecuta de nuevo el comando para otro cliente y así sucesivamente (Recuerda cambiar el nombre para cada cliente).

Por último ejecuta el comando ./build-dh que lo que hace es cifrar matemáticamente todo el proceso. Ahora si ingresas al siguiente directorio /etc/openvpn/easy-rsa/2.0/keys podrás ver todas las claves que has creado.

  • Mandar las claves del servidor al cliente: Para que los clientes puedan conectarse, es necesario que desde el servidor se pasen las llaves que se acaban de crear, a cada uno de los clientes.

Por ejemplo al cliente1 se le pasan las siguientes llaves:

  • ca.crt
  • cliente1.crt
  • cliente1.key

Para el cliente 2, los archivos a mandar serían el ca.crt y los dos que hayas puesto de nombre para el cliente 2, si el nombre fue client2, serán esos.

Recuerda que estas llaves están en /etc/openvpn/easy-rsa/2.0/keys

  • Creación del archivo de configuración: Este archivo que se va a crear, es al que hacíamos referencia en el paso 2. Primero nos ubicamos en el directorio /etc/openvpn y una vez allí creamos el archivo usando cualquier editor de texto, así: gedit /etc/openvpn/openvpn.conf es muy importante que el nombre del archivo sea igual al que colocamos en el paso 2, sino nunca funcionará.

Una vez en el archivo en blanco, vamos a poner el siguiente contenido:

#Dispositivo Tunel. 

dev tun

#Usar protocolo TCP en el Puerto 1194

proto tcp

port 1194

#Configuración de parámetros SSL

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

cert /etc/openvpn/easy-rsa/2.0/keys/server.crt

key /etc/openvpn/easy-rsa/2.0/keys/server.key

dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

#Usuario y grupo para identificarse en el protocol smb

user nobody

group nogroup

#Dirección de red y mascara que se usará en el túnel OpenVPN

server 192.168.67.0 255.255.255.0

#Mantener las claves y la configuración después de reiniciar

persist-key

persist-tun

#Permitir comunicación entre clientes

client-to-client

#Permitir que varios clients usen la misma llave

duplicate-cn

#Enrutar el cliente a una red local a la cual esté conectada el servidor.

push “route 192.168.1.0 255.255.255.0”

#Comprimir la información antes de enviar por el tunel

comp-lzo

En la línea server, debes colocar la dirección de red, de la red que hayas escogido para hacer el túnel. Una vez hecho esto, guardamos el archivo y lo cerramos.

  • Por último configuramos el iptables y el IP forwarding con los siguientes comandos: Primero echo 1 > /proc/sys/net/ipv4/ip_forward y luego iptables -t nat -A POSTROUTING -s 192.168.67.0/24 -o eth0 -j MASQUERADE

Estos comandos se encargan de direccionar todo el tráfico por la red escogida para ser usada por el openvpn.

MONTAJE DEL CLIENTE

Para montar el cliente en Linux, es necesario tener instalado el software OpenVPN. Estando instalado, lo que se debe hacer es poner en el directorio /etc/openvpn los archivos correspondientes a las claves creadas por el servidor, y el archivo de configuración que tendrá datos como los siguientes:

# Especificar que este archive pertenece a un Cliente. 

client

#Usar una interfaz de tunel.

dev tun

#Usar el protocol TCP

proto tcp

#Especificar la ip o hostname del servidor y el puerto

remote ju4ns3.hopto.org 1194

#hacer intentos de conexión infinitos.

resolv-retry infinite

# no escuchar en ningún Puerto.

nobind

# Nombre de usuario y grupo que se usarán para compartir recursos con sistemas Windows

user nobody

group nogroup

# Mantener la clave y el tunel aun después de reiniciar.

persist-key

persist-tun

#Definir parámetros SSL acá se ponen las rutas de los archivos correspondientes a las llaves.

ca ca.crt

cert client1.crt

key client1.key

#Asignar el tipo de certificado

ns-cert-type server

#Habilitar la compresión

comp-lzo

# Nivel de detalle del log

verb 3

Espero esta guía les sea de mucha ayuda, cualquier duda o comentario será resuelto a la mayor brevedad.

Puedes seguir los comentarios de esta entrada a través de RSS 2.0 Usted puede dejar un comentario, o trackback.

Acerda de Juan Sebastián

Ingeniero de Sistemas y Telecomunicaciones de la Universidad de Manizales (Colombia) con énfasis en Redes y Seguridad Informática. Creador y administrador de ComuSOFT.com y apasionado del mundo de las redes de telecomunicaciones, el Software libre, Linux y la Seguridad de la Información. Actualmente me desempeño como Help Desk Engineer en una importante Multinacional de Seguridad Informática en Latino América. En lo que pueda colaborarte, lo haré con gusto!
Escribe un Comentario

4 Respuestas

  • Pingback: Bitacoras.com

  • Pingback: Descargar Ubuntu 11.04 Gratis - ComuSOFT.com

  • Alejandro Ramirez says:

    que tal saludos felicitaciones por tu pagina esta muy interesante, bueno te cuento lo que quiero hacer quiero enlazar dos sitio por medio de openvpn uno esta
    en us y el otro en mexico ya lo intente hacer en windows xp pero fracase, nunca lo e intentado con linux aun no me e animado a entrar en este animo por eso te pidio me ayudes a lograr este objetivo saludos y muchas gracias por todo de antemano…..

  • Cristian Olmedo says:

    Hola, muchas gracias por dedicar tiempo a ayudar a novatos como yo, muy interesante el tema y muy didáctico el tutorial, hace unos dias que estoy luchando para conectar 2 debian mediante open VPN, al seguir tu paso a paso me encuentro con que en la instalacion de OpenVPN no se me genero el script ./build-client, como lo puedo solucionar.

    Saludos y muchas gracias



Escribe un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *