jueves, 14 de abril de 2011

VPN Roadwarrior con OpenVPN

Una VPN roadwarrior es una VPN de Acceso Remoto, la teoría la puse en la entrada anterior, vamos de frente a la configuración.

Consideraciones preliminares


OpenVPN

Es el software de código abierto que nos permite implementar los diferentes tipos de VPN, de acuerdo a nuestras necesidad mas información aquí:

http://openvpn.net/


Lo instalamos:

# yum -y install openvpn

Configuración:

En el servidor de OpenVPN no te olvides de activar el ip_forwarding.

Edita /etc/sysctl.conf y cambia ip_forwarding a 1 (está normalmente en 0).

Entonces ejecuta:

# sysctl -p

De olvidar lo anterior la vpn no hará ping hacia la red interna!

En el servidor openvpn necesitamos crear una serie de claves y certificados iniciales, para poder autenticar y encriptar la información que transitará desde/hacia el servidor/clientes.

Contamos con una serie de scripts en el directorio /usr/share/easy-rsa los cuales nos ayudarán mucho a ejecutar ésta tarea inicial.

Como primer paso, sugiero copiar ese directorio (easy-rsa) hacia /etc/openvpn y cambiarnos a ese directorio:

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

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

Una vez dentro de éste directorio procedemos a ejecutar los siguientes pasos:

# .vars

# sh clean-all

# sh build-ca

Con ellos lo que haremos 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).

Primero: Creando el certidicado CA

Procedemos a generar el certificado CA, en el último paso se nos pedirá una serie de información sobre nuestra red/empresa que debemos llenar lo más fielmente posible.

La variable que debemos procurar llenar (no dejar en blanco! es: Common Name. Se refiere al nombre del servidor.

Ejecutamos:

# build-ca


Segundo: Generación del certificado y de la clave de encriptación para el servidor

Siguiente a la generación del Certificado de autoridad, procedemos a crear el certificado del servidor y de su clave de encriptación, ejecutamos:

# sh build-key-server server

En éste paso, también se nos pedirá nuevamente información sobre el certificado propio del servidor. En éste caso por favor, escoger en Common Name un nombre diferente al anteriormente escogido. En mi caso escogí: server

Este paso nos generará dos archivos en el directorio /etc/openvpn/easy-rsa/keys/ los que debemos copiar dentro del mismo servidor en /etc/openvpn, ellos son:

* server.crt
* server.key

Tercero: Generando certificados y claves privadas para los clientes

Cada cliente debe tener su propio certificado y clave de seguridad, para cada cliente que tengamos deberemos repetir el siguiente paso. Los archivos obtenidos debemos copiarlos hacia el directorio /etc/openvpn/ de los clientes.

En el caso de que nuestros clientes sean en windows, debemos copiarlos hacia c:\program files\openvpn\

En nuestro servidor, generamos el certificado y las claves privadas para los clientes, dentro de /etc/openvpn/easy-rsa/

Ejecutamos:

# sh build-key client1

Debemos tener en cuenta que al ejecutar el programa sh build-key, le pasamos como parámetro el nombre del cliente (client1 en el ejemplo anterior) el cual debe ser diferente para cada cliente. En el common name ponemos el nombre del cliente (client1 en éste ejemplo) tal y como le pasamos de parámetro.

Se pueden generar tantas claves como sean necesarias:

# sh build-key client2

# sh build-key client3

Esto nos genera dos claves y certificados más, para client2 y client3, no olvidar en Common Name debemos poner client2 o client3 respectivamente.

Cuarto: Generamos el parámetro Diffie-Hellman

Ejecutamos:

# sh build-dh

Quinto: archivos a copiar al servidor

Hacia el directorio /etc/openvpn del servidor copiamos los siguientes archivos:

* ca.crt
* ca.key
* server.key
* server.crt
* dh1024.pem

Estos archivos están presentes en: /etc/openvpn/easy-rsa/keys

Sexto: Archivos a copiar al cliente

Hacia el directorio /etc/openvpn de cada cliente copiamos los siguientes archivos:

* ca.crt
* clientX.crt

* clientX.key

Tenga en cuenta que X es un número que se corresponde con el cliente (para el cliente 2 sería: client2.crt y client2.key por ejemplo).

Estos archivos están presentes en: /etc/openvpn/easy-rsa/keys del servidor.

Para la configuración en modo roadwarrior las configuraciones del cliente y el servidor varían un poco:

Configuración del servidor:

El archivo /etc/openvpn/server.conf quedará así:


* un push de la ruta hacia la red local interna del servidor. Esa ruta estática permitirá que el road warrior vea a las máquinas de la red interna

* server: Indica el rango de direcciones que se asignará a los clientes que se conecten, deben ser direcciones no similares a las de la red local.

Configuración del cliente:

En el caso del cliente, así quedaría el archivo de configuración, client1.conf:

Si usamos como cliente algún windows el archivo de configuración debe tener la siguiente extensión client1.ovpn.

3 comentarios:

  1. por favor podrias ayudarme sigo todoslos pasos q pones pero no me inicia, ademas como se que puedo conectarme desde otro lugar

    ResponderEliminar
  2. excelente el tutorial, me funciono sin problemas
    hay un solo error en el turorial
    en el server.conf
    colocaste
    key /etc/openvpn/server-key tiene que ser server.key

    ResponderEliminar