Instala Tu Propio Servidor VPN con OpenVPN en Ubuntu Server

Sep 8th, 2010 | Posted by | Filed under Internet, Linux, Redes, Ubuntu

OpenVPN Logo

Luego de un tiempo sin postear les traigo esta guía de como crear su propia VPN en Ubuntu Server,ya sea para conectarse a la pc de casa o para usar internet de forma segura en redes wifi inseguras.

OpenVPN es un Software que hace de cliente y servidor según como lo configuremos, aclaro que hay 2 versiones de este:
* OpenVPN Community Software: Es la versión que utilizaremos y es 100% Open Source
* OpenVPN Access Server: Es la versión de pago, puede usar gratis solo hasta 2 usuarios, los usuarios adicionales son muy económicos, además tiene extras como panel de administración web, es súper fácil de configurar y mas.

Mas Datos en: OpenVPN

Introducción

OpenVPN, es un producto de software creado por James Yonan en el año 2001 y que ha estado siendo mejorado desde entonces.

Ninguna otra solución ofrece una mezcla semejante de seguridad a nivel empresarial, seguridad, facilidad de uso y riqueza de características.

Es una solución multiplataforma que ha simplificado mucho la configuración de VPN’s dejando atrás los tiempos de otras soluciones difíciles de configurar como IPsec y haciéndola más accesible para gente inexperta en este tipo de tecnología.

Supongamos que necesitamos comunicar diferentes sucursales de una organización. A continuación veremos algunas soluciones que se han ofrecido como respuesta a este tipo de necesidades.

En el pasado las comunicaciones se realizaban por correo, teléfono o fax. Hoy en día hay factores que hacen necesaria la implementación de soluciones más sofisticadas de conectividad entre las oficinas de las organizaciones a lo largo del mundo.

Dichos factores son:

* La aceleración de los procesos de negocios y su consecuente aumento en la necesidad de intercambio flexible y rápido de información.
* Muchas organizaciones tienen varias sucursales en diferentes ubicaciones así como también tele trabajadores remotos desde sus casas, quienes necesitan intercambiar información sin ninguna demora, como si estuvieran físicamente juntos.
* La necesidad de las redes de computación de cumplir altos estándares de seguridad que aseguren la autenticidad, integridad y disponibilidad.

Fuente: Wikipedia

El Servidor:


Esta guía es para Ubuntu 10.04 Server, imagino que funciona en otras versiones y distros, tenemos un ubuntu server ya instalado y funcionando.
Instalamos OpenVPN y también OpenSSL, ya que la seguridad se basa en ssl.

sudo apt-get -y install openvpn
sudo apt-get -y install openssl

Configuramos el demonio de OpenVPN para que auto inicie con el sistema, comentamos todo agregando # al comienzo de cada linea, Agregamos al final del Archivo, AUTOSTART=”openvpn” esto le indica a openvpn que busque el archivo openvpn.conf (el .conf lo agrega solo) en /etc/openvpn

sudo nano /etc/default/openvpn

Ahora Creamos el Archivo openvpn.conf en /etc/openvpn/

sudo nano /etc/openvpn/openvpn.conf

y colocamos esta configuración

dev tun
proto tcp
port 1194
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/servidor.crt
key /etc/openvpn/keys/servidor.key
dh /etc/openvpn/keys/dh2048.pem
user nobody
group nogroup
server 10.6.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
#duplicate-cn
persist-key
persist-tun
up /etc/openvpn/openvpn.up
#client-to-client
push "redirect-gateway def1"
#comp-lzo
verb 3
max-clients 30

Como verán se puede personalizar, este es un ejemplo que fue probado, hay lineas comentadas, quitarle el # para activarlas, datos que pueden modificar:

* ca, cert, key y dh = son la entidad, el certificados, la llave y la Diffie Hellman del servidor, mas adelante los crearemos.
* server 10.6.0.0 255.255.255.0 = es el rango de ip que usara la vpn, usen otro pero, no usar el mismo que la red real.
* ifconfig-pool-persist ipp.txt = guarda a quien se le asigno cada ip en la vpn
* proto y port = protocolo y puerto, se puede usar tcp y utp, en utp no me dio buenos resultados, el puerto es pueden cambiarlo.
* duplicate-cn = permite que se use el mismo certificado y llave en varios clientes al mismo tiempo, recomiendo no activarlo.
* up /etc/openvpn/openvpn.up = es un script que carga openvpn al iniciar, se usa para el ROUTING y FORWARDING, mas adelante lo creamos.
* client-to-client = es para evitar que los usuario de la vpn se vean entre si, según el caso es útil.
* comp-lzo = compresión, como en muchas pruebas me dio problemas no lo activo, además genera latencia.
* verb 3 = aumenta o disminuye los detalles de error en el server.
* max-clients 30 = cantidad máxima de usuarios conectados simultáneamente al servidor, se puede aumentar o disminuir.

Ahora creamos el archivo openvpn.up en /etc/openvpn/, este para ROUTING y FORWARDING.

sudo nano /etc/openvpn/openvpn.up

y colocamos este código

#!/bin/bash
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -s 10.6.0.0/24 -o eth0 -j MASQUERADE

ahora le asignamos permisos de ejecutable

sudo chmod +x /etc/openvpn/openvpn.up

cambiar el rango de ip según la configuración de paso anterior.

Bueno ya configuramos OpenVPN, ahora tenemos que activar el modulo TUN en el kernel, con estas lineas, lo cargamos y listo

sudo modprobe tun
sudo echo "tun" >> /etc/modules

como verán no fue tan difícil la configuración, pero ahora viene lo mas lento:

* Crear Diffie Hellman de 2048bits
* Crear la entidad emisora de certificados.
* Crear los Certificados y llaves del servidor.
* Crear los certificados y llaves de cada usuario.

Copiamos los ejemplo de easy-rsa para crear la entidad, los certificados, llaves y encriptación, que usar OpenVPN,

sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/

ahora hay que entrar en la carpeta donde están las utilidades que copiamos y crear la carpeta keys

sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/
cd /etc/openvpn/easy-rsa/2.0
sudo mkdir keys

solo nos queda editar el archivo vars que esta en /etc/openvpn/easy-rsa/2.0

sudo nano /etc/openvpn/easy-rsa/2.0/vars

y modificamos estos valores

export KEY_DIR="$EASY_RSA/keys"

por

export KEY_DIR="/etc/openvpn/easy-rsa/2.0/keys"

es para genere si o si en /etc/openvpn/easy-rsa/2.0/keys
seguimos, también modificamos los parámetros para Diffie Hellman de 2048bits

export KEY_SIZE=1024

por

export KEY_SIZE=2048

solo nos faltan los datos para la entidad emisora

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"

modifica cada valor por los de tu país, provincia, ciudad, empresa y correo, un ejemplo:

export KEY_COUNTRY="AR"
export KEY_PROVINCE="SF"
export KEY_CITY="Armstrong"
export KEY_ORG="LAGA-Systems"
export KEY_EMAIL="info@lagasystems.com.ar"

como ven AR = Argentina, SF = Santa Fe (mi provincia) y los demas se entienden.
bueno ahora estamos preparados para comenzar, seguir estos pasos al pie de la letra, porque un error y se arruina todo.

ejecutamos

source ./vars

y nos pide que limpiemos por si hay entidades, certificados y llaves, lo hacemos con gusto

./clean-all

ahora generamos la seguridad Diffie Hellman de 2048bits

./build-dh

ahora generamos la entidad emisora de certificados les pedirá los mismos datos que en el archivos vars recomiendo completar cada uno, aunque ya están, no importa

./build-ca

ya estamos para poder generar lo certificados y llaves primero el servidor, cambiar server por el nombre que gusten, les pedirá los mismos datos que en el archivos vars recomiendo completar cada uno, aunque ya están, no importa

./build-key-server servidor

ya tenemos los certificados y llaves de servidor ahora el cliente, cambiar cliente por el nombre que gusten, les pedirá los mismos datos que en el archivos vars recomiendo completar cada uno, aunque ya están, no importa

./build-key cliente

este paso se debe repetir para cada cliente o usuario que quiere conectar a la vpn

ya tenemos todo para funcionar, no, falta copiar los archivos que generamos al lugar que configuramos en openvpn.conf
ya que copiar la carpeta keys a /etc/openvpn/

sudo cp -R /etc/openvpn/easy-rsa/2.0/keys /etc/openvpn/

ahora comprobamos que este todo en su lugar, entramos en la carpeta /etc/openvpn/keys

cd /etc/openvpn/keys

y con un ls miramos si están los archivos, ahora generamos un archivo mas, este lo genera openvpn

sudo openvpn --genkey --secret ta.key

solo falta copiar los archivos ca.crt, cliente.crt, cliente.key, si creaste mas clientes copia los crt y key de cada un pendrive u otro medio no usar email para enviarlos, es como darle la llave de tu cada a un desconocido.

listo ya esta todo en el servidor, ahora lo iniciamos para probar que todo esta correcto

sudo /etc/init.d/openvpn start

si no hay errores ya tenemos nuestra vpn funcionando, solo falta el cliente.

El Cliente:

Esta guía es para Ubuntu 10.04 Desktop, imagino que funciona en otras versiones y distros, tenemos un ubuntu ya instalado y funcionando.
Instalamos OpenVPN y también OpenSSL, ya que la seguridad se basa en ssl, y como usaremos el Network Manager de Ubuntu hay que instalar el plugins para OpenVPN

sudo apt-get -y install openvpn
sudo apt-get -y install openssl
sudo aptitude -y install network-manager-openvpn

ahora ya estamos en condiciones de configurar nuestro cliente
un ejemplo de configuración:

Con un editor de texto, gedit puede ser, pegan este código

dev tun
client
proto tcp
remote IP-DEL-SERVIDOR PUERTO
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert cliente.crt
key cliente.key
verb 3

Modifican los datos, IP-DEL-SERVIDOR este es el ip publico o de internet del servidor y PUERTO por el que asignaron en el servidor los archivos ca.crt, cliente.crt y cliente.key son los que generamos y copiamos antes en un pendrive o en lo que sea.
Guardan el el código con el nombre que quieran pero con extensión .conf y en la misma carpeta de los archivos ca.crt, cliente.crt y cliente.key, ahora abre el Network Manager de Ubuntu y en la pestaña VPN hay un botón Importar, buscan el archivo .conf que guardamos antes y ya esta todo.
Con esta configuración una vez conectados usaran internet desde la vpn, es útil si estas con la notebook en una red wifi insegura
si no quiere usar internet desde la vpn hay que cambiar unos parámetros en el Network Manager de Ubuntu, en el perfil de la vpn que importamos y hay un botón que dice editar se abre la ventana con el perfil en la pestaña Ajustes de IPv4 cambiamos automático (VPN) por Solo Direcciones Automáticas (VPN), ahora se habilitan 2 cajas de texto en las cuales ingresamos nuestro gateway o si tienen un router ponen el ip de este en las dos cajas.
En el botón Rutas, se abre otra ventana y tildamos el checkbox que dice “usar conexión solo para los recursos de red”
ahora el botón aceptar y luego aplicar y cerramos el Network Manager.

Ya tenemos una vpn y usamos nuestro internet directo

Este problemas de que use el internet por la vpn supuestamente se puede desactivar desde el servidor pero no encontré como
si alguien sabe que aporte, gracias.

Espero que les ayude, ya que para hacer funcionar openvpn me recorrí todas la guías y manuales que encontré.

Fuente | Ubunlog.com

Share
  1. Victor hugo Galvez
    Nov 5th, 2011 at 12:55
    Reply | Quote | #1

    hola como esta muy bueno el tutorial para clientes windos es la misma configuración

Comments are closed.