OpenVPN en Debian y Clientes Windows (Roadwarriors)

27 04 2008

OpenVPN es una implementacion de VPN SSL la cual usa las extenciones OSI layer 2 o 3 para asegurar redes la cual usa los protocolos SSL/TLS, soporta diferentes medios de autenticacion como certificados, smart cards, y/o usuarios/contraseñas, y permite politicas de control de acceso para usuarios o grupos usando reglas de firewall aplicadas a las interfaces virtuales de la VPN. OpenVPN 2.0 permite multiples clientes conectar a un solo servidor (proceso) OpenVPN sobre un simple puerto TCP o UDP, aquí,

Porque surgen las VPNs

● Intercambio flexible, rápido y seguro de información.
● Sucursales en diferentes ubicaciones.
● Trabajadores remotos.
● Necesidad de altos estándares de seguridad: autenticidad, integridad, y disponibilidad.

Arquitecturas básicas

Acceso Remoto (Roadwarrior):

Usuarios que se conectan de manera remota (domicilios, hoteles..) utilizando Internet como vía de acceso.

Punto a Punto:

Conexión entre diversos puntos de una Organización a través de Internet.

Interna VLAN:

Utiliza la LAN de la organización como vía de acceso. Sirve para aislar zonas y servicios de la red interna.

Buscando en la web he encontrado abundante información, algunos de ellos muy interesantes, los cuales les dejo al final del artículo.

En esta ocasión les dejo los pasos para instalar OpenVPN en Debian, utilizando PKI y en modalidad Roadwarrior.

Instalamos OpenVPN

# apt-get install openvpn

Copiamos los scripts de ejemplo en /etc/openvpn

# cp -a /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn

Vamos al directorio donde copiamos los scripts

# cd /etc/openvpn/easy-rsa/2.0

. ./vars
./clean-all
./build-ca

Con esto lo que hacemos es:

* Inicializar variables de ambiente para poder trabajar con los siguientes scripts de shell para generar las variables.
* Inicializamos el directorio de las claves (borrando potenciales archivos viejos).
* build-ca: procedemos a generar el certificado CA.

Deberemos ingresar los datos de la Organización reales (para ser prolijos) y teniendo especial atención en el parámetro Common Name el cual deberá ser distinto para el caso de la CA, Servidor y los Clientes.

Generamos las credenciales para el Servidor

# ./build-key-server servidor

Nuevamamente debemos repetir los datos ingresados anteriormente, recordando utilizar una denominación diferente de la que usamos para la CA (en el paso anterior).

Generamos las credenciales de los Clientes

# ./build-key cliente1

Esto genera los archivos cliente1.key (llave) y cliente1.crt (certificado).

Creamos los parámetros Diffie-Hellman:

# ./build-dh

Copiamos las credenciales del Servidor en /etc/openvpn

# cp ca.crt ca.key servidor.crt servidor.key dh1024.pem /etc/openvpn

servidor.crt y servidor.key depende del Common Name que elejimos cuando creamos las credenciales para el servidor.

Pasamos las credenciales a los clientes

Estos archivos son cliente1.crt, cliente1.key y ca.crt, se los podemos pasar vía sftp o scp, pero siempre tratando de que sea seguro.

los archivos cliente1.crt y cliente1.key dependen del Common Name que ingresamos cuando creamos las credenciales de los clientes.

Creamos la configuración del Servidor OpenVPN

# vi /etc/openvpn/server.conf

port 1194
proto udp
dev tun
persist-tun
ca ca.crt
cert servidor.crt
key servidor.key
dh dh1024.pem

#Direcciones que se asignaran a los
#clientes, el server es .1
server 10.1.1.0 255.255.255.0

ifconfig-pool-persist ipp.txt

#Ruta para que los clientes alcancen la red local del server (1.0/24)
push “route 192.168.1.0 255.255.255.0″

#Para que los clientes se visualicen entre ellos
#Debe ir junto con la opción routeback en el shorewall
client-to-client

keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 4

Nota: La red local de la VPN es 192.168.1.0/24 y la red de la VPN es 10.1.1.0/24. El usuario remoto, si está detrás de un NAT debe tener una dirección local no perteneciente a la red de la VPN.

Configuramos el cliente

Dentro de la carpeta c:\archivos de programa\openvpn\config creamos un archivo llamado cliente1.ovpn.

tls-client
client
dev tun
proto udp
remote host.dominio.com
float #debido a que la IP de arriba es dinamica
resolv-retry infinite
nobind
persist-key
persist-tun
ca “C:\\Archivos de programa\\OpenVPN\\ca.crt” #Tener cuidado con el doble backslash (\\)
cert “C:\\Archivos de programa\\OpenVPN\\cliente1.crt”
key “C:\\Archivos de programa\\OpenVPN\\cliente1.key”
comp-lzo
verb 4

Nota: Copiar dentro de esta misma carpeta los archivos cliente.crt, cliente.key y ca.crt.

Ejecutamos el servicio OpenVPN en el servidor:

# /etc/init.d/openvpn start

Nos conectamos desde el cliente (Windows)

- Ejecutamos el GUI de OpenVPN
- Clic derecho en el ícono de OpenVPN, elegimos cliente (es el nombre del archivo con extensión .ovpn) y luego connect.

Mas info aquí, aquí, aquí, aquí, aquí, aquí, aquí, aquí, aquí, aquí, aquí, aquí, aquí, aquí, aquí , aquí , aquí y aquí.


Acciones

Informacion



13 respuestas a “OpenVPN en Debian y Clientes Windows (Roadwarriors)”

5 06 2008
Sergio (17:24:38) :

Hola, instale el cliente OpenVPN en varios equipos windows sin ningun inconveniente, con excepcion de uno que al seleccionar click derecho sobre “OpenVpn GUI” solo me aparecen las opciones “Proxy Settings - About - Exit” no figura Connect, cono soluciono esto?

Gracias

6 06 2008
Administrator (07:34:02) :

Amigo Sergio, es dificil darte una respuesta con la información que nos das. No obstante te recuerdo que este Blog trata sobre temas relacionados al Software Libre, por lo que considero no ser el mas indicado para brindarte soporte sobre otros Sistemas Operativos.

Gracias por tu visita!

El equipo de LinuxOS.

22 10 2008
Milor (16:48:28) :

Yo he puesto el push “route 192.168.0.0 255.255.255.0″ por nada. Me constesta el ROUTER (192.168.0.1) pero no me constestan las maquinas.

Hay que abrir algo en el IPTABLES o Hay que activar el CLIENT to CLIENT o algo asi?

27 10 2008
Administrator (06:31:45) :

Amigo Milor, si te fijas en el ejemplo verás que utiliza el port 1194


port 1194

Por lo tanto, logicamente deberías permitirlo en el script de iptables.

Muchas Gracias por tu visita.

29 12 2008
daniel (23:24:24) :

tenes que poner una regla en el iptables que “enmascare” los pedidos para la red interna

iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE
donde 10.1.1.0 es la red VPN y en eth0 esta la lan donde quieres ingresar

lo que no se como hacer para hacer la inversa, es decir ingresar desde una maquina en la lan a la pc “roadwarrior” de la vpn

alguna idea?

2 01 2009
daniel (11:02:44) :

me atuorespondo, hay que armar la vpn en modo bridge, eso hace transparente la red a ambos lados, lo unico que pasa todo el trafico broadcast al otro lado de la vpn,

y la interfaz es de tipo tap y no tun
bueno mas claro en la web de openvpn
http://openvpn.net/index.php/documentation/miscellaneous/ethernet-bridging.html

4 01 2009
Administrator (14:11:12) :

Daniel, gracias por tus comentarios y tu aporte!

El equipo de Linux-OS

26 01 2009
german (03:09:48) :

Hola amigos, tengo el siguiente problema…

estoy generando un certificado para un usuario nuevo, para los viejos arranca sin problemas pero para cualquier nuevo me sale este mensaje al conectarme:

WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Mon Jan 26 01:08:13 2009 Re-using SSL/TLS context
Mon Jan 26 01:08:13 2009 LZO compression initialized
Mon Jan 26 01:08:13 2009 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Mon Jan 26 01:08:13 2009 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
Mon Jan 26 01:08:13 2009 Local Options hash (VER=V4): ‘41690919′
Mon Jan 26 01:08:13 2009 Expected Remote Options hash (VER=V4): ‘530fdded’
Mon Jan 26 01:08:13 2009 Socket Buffers: R=[8192->8192] S=[8192->8192]
Mon Jan 26 01:08:13 2009 UDPv4 link local: [undef]
Mon Jan 26 01:08:13 2009 UDPv4 link remote: 190.144.13.38:1194
Mon Jan 26 01:08:13 2009 TLS: Initial packet from 190.144.13.38:1194, sid=efb35ee7 38d0e9d3
Mon Jan 26 01:08:13 2009 VERIFY ERROR: depth=0, error=unable to get local issuer certificate: /C=CO/ST=Antioquia/L=Medellin/O=Microcolsa/OU=Informatica/CN=server/emailAddress=gquinones@microcolsa.com
Mon Jan 26 01:08:13 2009 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Mon Jan 26 01:08:13 2009 TLS Error: TLS object -> incoming plaintext read error
Mon Jan 26 01:08:13 2009 TLS Error: TLS handshake failed
Mon Jan 26 01:08:13 2009 TCP/UDP: Closing socket
Mon Jan 26 01:08:13 2009 SIGUSR1[soft,tls-error] received, process restarting
Mon Jan 26 01:08:13 2009 Restart pause, 2 second(s)

No se si en algo sirve esto pero quizas estoy haciendo algo mal aunque estoy siguiendo al pie de la letra y segun mi experiencia todo lo referente a la creacion apropiada del certificado tal y como lo hice con los viejos que si hacen la secuencia completa.

Gracias por su ayuda.

23 03 2009
octavio (09:13:02) :

Hola, que tal. Gracias ante todo un buen tutorial. Todo me funciono perfecto. Quisiera saber si alguien sabe como puedo redireccionar todo la informacion de una pagina que estoy haciendo y enrutarla por la vpn. Es que estoy haciendo una pagina web y quisiera que todos mis clientes vpn vean la pagina, y que toda esta informacion pase a traves de la vpn..

Gracias ante todo…

18 06 2009
javier (12:07:04) :

No se porque pero cuando hago esto
# cp ca.crt ca.key servidor.crt servidor.key dh1024.pem /etc/openvpn
Me dice que los archivos no existen, halgo he exo mal?
K debo hacer?

18 06 2009
Administrator (12:48:53) :

Javier, verifica que cuando haces el “cp” estes posicionado en el directorio correcto.

Gracias por tu visita.

El equipo de Linux-OS

24 09 2009
VILLY (13:31:39) :

Hola a todos quiero instalar un servidor openVPN en Debian., pero me esta dando problemas con el primer comando # apt-get install openvpn (me dice que no encuentra el paquete openvpn) agradeceria si me pueden ayudar =)

30 09 2009
Administrator (07:42:54) :

Hola Villy.

Muéstranos la salida de este comando:

$ cat /etc/apt/sources.list

Gracias por tu visita.

Deje un comentario

usted puede usar estos tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>