Translate

viernes, 3 de julio de 2015

CREAR UNA VPN CON OPENVPN EN UBUNTU DESDE WEBMIN (TUTORIAL)


1.    Abrir Puerto en el Firewall


Antes de nada indicar que hay que redireccionar un puerto en el firewall a la máquina que pongamos con Ubuntu. Normalmente suele ser el puerto 1194 en UDP.
















2.    Instalar el Ubuntu Server


3.    Configurar IP Fijas (si no las hemos configurado durante la instalación de Ubuntu)


Editar el archivo con:
sudo nano /etc/network/interfaces
y escribir esto en el archivo:
# The primary network interface
auto eth0
iface eth0 inet static
address 10.10.1.xxx (ip del servidor de OpenVPN en la red principal)
netmask 255.255.255.0 (mascara de la red ppal)
network 10.10.1.0 (red ppal acabada en 0)
broadcast 10.10.1.255 (red ppal acabada en 255)
gateway 10.10.1.xxx (puerta enlace red ppal)
dns-nameservers 10.10.1.xxx 10.10.1.xxx (DNS de red ppal)
dns-search xxxxxxxxxxxx.xxx (nombre del dominio de red ppal)

4.    Instalar OPENVPN y WEBMIN


Añadir el repositorio de webmin:
Sudo nano /etc/apt/sources.list
deb http://download.webmin.com/download/repository sarge contrib
Añadir Clave y Actualizar el Respositorio
sudo wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc
sudo apt-get update

Instalar open vpn y webmin
sudo apt-get install openvpn
sudo apt-get install webmin

Instalar el Modulo de WEBMIN para OPENVPN
Entrar en webmin con: https://your_vpnserver_ip:10000
Ir a webmin – webmin configuration – webmin modules

5.    Generar el Cartificado CA


Desde Servers -> OpenVPN + CA -> Certification Authority List
Se suele llamar Nombre-CA, y hay que rellenar los parámetros de estado, provincia…
Y darle a Save

 


6.    Generar el Certificado de Servidor


Desde Servers -> OpenVPN + CA -> Certification Authority List  veremos el certificado que acabamos de crear. Debemos entrar en Keys List. Para Crear los certificados de clientes y también de servidor.


Cubrimos el nombre pe “certificadoservidor” e importante no olvidarse seleccionar SERVER. El resto de opciones no hay que cambiarlas.

7.    Generar el Servidor de OpenVPN en base al CA


Una vez generado el Certificado CA y el Certificado de Servidor ya podemos levantar nuestro servidor VPN. Vamos a Servers -> OpenVPN + CA -> VPN List
Veremos que ya aparece seleccionado nuestro certificado CA, le damos a nuevo servidor.

Y debemos configurar los parámetros siguientes:
Nombre: NombreVPN
Podemos elegir el puerto y el protocolo. Debe coincidir con los que hemos abierto en el firewall al principio del manual. Por defecto es el 1194 en UDP
Net IP assigns (option server): En network habrá que poner la red que van a asignar IPs de los clientes que se conecten. Por ejemplo 10.10.yyy.xxx (ojo que no debe coincidir con la de la red principal)

En la sección:
Additional Configurations
example:
push "route 192.168.100.0 255.255.255.0"
This parameter adds a route to the client when it's connected
Pondremos:
push "route xxx.yyy.zzz.0 255.255.255.0" (red ppal a la que queremos acceder)
push "dhcp-option DOMAIN xxxxxxxxxx.xxx" (dominio de red ppal)
push "dhcp-option DNS xxx.yyy.zzz.mmm" (dns de red ppal)
push "dhcp-option DNS xxx.yyy.zzz.mmm " (dns de red ppal)






 

 


8.    Generar los Certificados de los clientes


Una vez realizados los pasos anteriores hay que crear los certificados para cada cliente. Vamos a Servers -> OpenVPN + CA -> Certification Authority List

Y crearemos un certificado para cada cliente. Únicamente debemos ir cambiando el nombre de cada certificado. Y darle a SAVE.





Podemos crear tantos como clientes vayamos a tener o incluso más para aumentar clientes en el futuro.

9.    Añadir los clientes al Servidor de OpenVPN


Vamos a Servers -> OpenVPN + CA -> VPN List -> ClientList





Aquí la única configuración que hay que hacer es cambiar la remote (Remote IP): xxx.yyy.zzz.mmm por la IP externa que vayamos a utilizar de conexión por ejemplo pepito.dyndns.org



10.                      Iniciar ServidorVPN


Ahora ya podemos encender el servidor VPN y los clientes ya podrán conectarse con sus certificados. Solo hay que ir a: Servers -> OpenVPN + CA -> Start OpenVPN

11.                      Activar el Firewall en WEBMIN



12.                      Redireccionar la Peticiones IPv4


Editar  /etc/sysctl.conf descomentando la línea, quitar el # de delante:
net.ipv4.ip_forward=1

13.                      Añadir IPTABLES


Configurar iptables ejecutando en el terminal:
sudo su
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s IPREDCLIENTES/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s IPREDCLIENTES /24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -j SNAT --to-source IPSERVIDORVPN

IPREDCLIENTES: La que indicamos en el apartado Net IP assigns (option server) a la hora de levantar el servidor.
IPSERVIDORVPN: La IP que tiene el servidor, se la configuramos en los primeros pasos del manual.
Las IPTABLES se borrarian al reiniciar el equipo así que voy a solucionar esto. Comprobar si en etc/network/interfaces tengo una línea como estas, si no están añadirlas.
post-up iptables-restore < /etc/iptables.up.rules
post-down iptables-save > /etc/iptables.up.rules

Una vez configurado todo el tema de IPtables hay que reiniciar el servidor de Ubuntu.

14.                      Exportar Configuracion para los Clientes

Ir a Servers -> OpenVPN + CA -> VPN List -> Client List
Veremos los diferentes certificados de cliente que se aceptan. A la derecha podemos bajarnos la configuración en el botón export.

Nos bajaremos un archivo comprimido donde viene el paquete completo de configuración del cliente de OpenVPN.

15.                      Conectar desde Un cliente

Vamos a explicar brevemente como conectar desde un sistema Windows. Instalar el cliente de OpenVPN. Copiar los archivos descargados al directorio conf del programa. Abrir el programa. Aparecerá un icono con dos ordenadores en la barra inferior de windows en la parte derecha. Hacer clic con el botón derecho y elegir conectar.
Una vez conectado veremos que los ordenadores tienen las pantallas en verde



2 comentarios:

  1. Una pregunta, ¿es posible configurar que los clientes en vez de conectar a la red local, conecten a la red interna de la maquina? me refiero a 127.0.0.1 o localhost.
    ¿si es posible bastaría con poner algún parámetro especifico en los diferentes xxx.yyy.zzz.mmm?

    ResponderEliminar
  2. pues no lo he probado pero en principio aun asignando a los equipos que conectan la un rango en la IP 127.0.0.1, recuerda que tu propio host tb resuelve la 127.0.0.1 y no va a tratar de ir al servidor ubuntu resolviendo la 127.0.0.1 contra tu propio equipo. Tal vez sea más sencillo darle un rango de red como hago en mi ejemplo y no pasarle puerta de enlace ni ruta ni nada para que no tenga forma de ver el resto de red. Es decir evitar cosas como esta push "route 192.168.100.0 255.255.255.0" donde defino la ruta etc... pero ya te digo, no lo he probao...

    ResponderEliminar