Consideraciones preliminares
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 CAProcedemos 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
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.