Вы находитесь на странице: 1из 25

Creacin de VPN's con

OpenVPN
Que es una VPN?
Una VPN(Virtual Private Network o Red Privada Virtual), es bsicamente una red segura
que puede estar conformada por dos o ms puntos remotos, usando como medio para lograr
esto una red no segura como puede ser Internet.
Los puntos remotos que participan de una VPN pueden ser hosts individuales o LAN
S(Local Area Network o Red de rea Local). Una vez que se conforma la misma todos estos
puntos adems de pertenecer a su LAN , pertenecern tambin a una misma red virtual,
aprovechando de esta manera las distintas ventajas que nos otorga el usar VPNs,como puede
ser: compartir informacin, hacer usos de los distintos recursos de cada una de las redes
participantes y lo que es muy importante el poder realizar todo esto de forma segura.
Podemos decir entonces que las VPNs entre otras cosas nos brindan, Autorizacin,
Integridad y Confidencialidad, y para poder llevar acabo estas tareas se usa diferentes
algoritmos como por ejemplo: algoritmos comunes de comparacin como Message
Digest(MD) y Secure Hash Algorithm (SHA), algoritmos de cifrado como Data
Encryption Standard (DES),Triple DES(3DES) y Advanced Encryption Standard
(AES)

Creacin de VPN's con


OpenVPN
Tipos de VPN:
Existen bsicamente dos tipos de VPN, pasemos entonces a detallar cada una de ellas:
Red a Red:
El tipo de conexin red a red esta conformado por 2 o mas redes, las mismas se conectan
entre si a travs de servidores VPN y una vez realizado el proceso y autenticadas las mismas
todos los hosts autorizados detrs de estas redes podrn ver las otras en forma totalmente
transparente. Es por ello que este tipo de conexiones es muy utilizado para enlazar sucursales
entre si y de esta manera poder realizar las distintas tareas como si se encontraran en el
mismo lugar fisico.

Creacin de VPN's con


OpenVPN
Roadwarrior:
Este es uno de los esquemas mas utilizados, se trata de clientes remotos que por medio de una
aplicacin instalada en sus equipos se conectan a servidores VPN y a los mismos se le asigna
una direccin IP, incorporndolos dentro de la red local a la cual haya accedido. Este tipo de
conexin es muy utilizada, por las empresas para darle acceso a los empleados, proveedores,
etc, ya que permite mucha flexibilidad y comodidad al poder conectar sus equipos con el
servidor de la empresa, estn donde estn.

Creacin de VPN's con


OpenVPN
Modos de Implementacin:
Existen bsicamente 2 tipos de implementaciones para VPN:
Por Hardware:
Se realiza utilizando equipos dedicados con servidores VPN embebidos, como puede ser
Routers, Firewalls, etc. Su principal ventaja radica, que al ser dispositivos dedicados y
especialmente diseados para cumplir esta tarea, son muy robustos y estables, pero a
contracara de lo anterior podemos destacar que estos dispositivos son algo costosos y en
muchos casos no se estaran utilizando al 100% de sus recursos, es por ello que es
conveniente estudiar cada caso en particular y de esta manera evaluar si es viable esta opcin
o si se estara desperdiciando los recursos en el caso que se implemente.
Por Software:
Esta ser la forma que emplearemos nosotros para poder crear nuestras propias conexiones
VPN y bsicamente podemos decir que se trata de aplicaciones VPN que se encuentran
instaladas en algn sistema operativo como puede ser GNU/Linux, Windows, Mac OS X, etc.
Y en nuestro caso obviamente ser bajo GNU/Linux.

Creacin de VPN's con


OpenVPN
Opciones y comparativas
En GNU/Linux contamos con una amplia variedad de protocolos para la implementacin de
VPNs, es por ello que vamos a analizar las principales opciones
con las que contamos y de esta manera poder evaluar cada una de ellas:
IPSEC (Internet Protocol Security): Inicialmente fue creado para usarse con el nuevo
estndar IPV6, pero despus por esas cosas de la vida se implemento en IPV4, llamado el
protocolo estndar para crear VPN`s, el mismo es un protocolo de seguridad que proporciona
confidencialidad e integridad en las comunicaciones, pudiendo usar para esto dos mtodos de
seguridad: ESP (Encapsulating Security Payload) o AH (Authentication Header), la
diferencia entre estos es que ESP cifra los paquetes y los autentica, mientras que AH solo los
autentica.
En GNU/Linux existen varios proyectos para usar IPSEC, pero los mas destacados son:
FreeS/WAN que ya no esta en desarrollo pero se derivo en otros dos muy interesantes:
Openswan y strongSwan.

Creacin de VPN's con


OpenVPN
PPTP (Point to Point Tunneling Protocol): Este protocolo fue desarrollado por el PPTP
Forum, el cual esta conformado por las siguientes organizaciones: Microsoft, U.S. Robotics,
Ascend Communications, 3Com/Primary Access y ECI Telematics. Si bien es muy usado por
su facilidad de instalacin, configuracin y soporte en diferentes versiones de Windows, es
uno de los protocolos mas inseguros, por lo que no se recomienda su implementacin en
lugares donde la seguridad sea un tema importante. Si bien se esta tratando de corregir
algunas de estas vulnerabilidades con la implementacin de L2TP e IPSEC, esta costando
demasiado, ya que ningunos de estos dos tienen la facilidad de instalacin y configuracin de
PPTP. En GNU/Linux podemos encontrar el proyecto Poptop para la implementacin de
este protocolo

Creacin de VPN's con


OpenVPN
SSL/TLS (Secure Sockets Layer /Transport Layer Security): Este protocolo esta
empezando a ser adoptado por distintos dispositivos, ya que posee una muy buena
combinacin entre flexibilidad y seguridad.
Fases entre el servidor y el cliente:
1-Negocian que algoritmos se van a usar para la comunicacin.
2-Se intercambian de claves pblicas y autenticacin basada en certificados digitales
3-Se cifra el trfico basndose para esto en el cifrado simtrico
El cliente y el servidor en la primera fase negocian que algoritmos van a usar.
Los mas usados comunmente son los siguientes:
Criptografa de clave pblica: RSA, Diffie-Hellman, DSA (Digital Signature Algorithm) o
Fortezza;
Cifrado simtrico: RC2, RC4, IDEA (International Data Encryption Algorithm), DES (Data
Encryption Standard), Triple DES o AES (Advanced Encryption Standard);
Hash: MD5 o de la familia SHA.
Para implementar este protocolo podemos utilizar Openvpn un proyecto en constante
crecimiento y aceptacin debido a su potencial y facilidad de uso.

Creacin de VPN's con


OpenVPN
OpenVPN
Openvpn es un proyecto que se viene desarrollando desde el ao 2001, y ha tenido un
constante crecimiento y adaptacin, poco a poco va ganando terreno y es sin duda uno de los
proyectos de Software Libre ms importantes para VPN`s. Para realizar su tarea usa los
protocolos SSL/TLS.

Ventajas
Soporta IP`s dinmicas, esto es muy importante para la mayora de nosotros, ya que
seguramente contamos con conexiones de banda ancha tradicionales, como Adsl o
Cablemodem, con IP`s dinmicas y con Openvpnpodemos sacar una cuenta en
Dyndns(www.dyndns.com) y usarla sin problemas.

Creacin de VPN's con


OpenVPN
Adopcin para trabajar en redes nateadas, tanto los clientes como los servidores pueden
estar trabajando con IPs privadas y no tendrn problema alguno para funcionar.

Multiplataforma, como ya hemos nombrado anteriormente Openvpnpuede trabajar en


diferentes sistemas operativos como pueden ser: Linux, Solaris, OpenBSD, FreeBSD,

NetBSD, Mac OS X, y Windows 2000/XP

Puede salir a travs de proxys sin ningn problema.

Soporta mltiples conexiones solo con un puerto.

Creacin de VPN's con


OpenVPN
Instalando OpenVPN

En nuestro caso la distribucin que usaremos sera Debian, por lo tanto usaremos la
herramienta apt para realizar esta tarea:

#aptitude install openvpn


Luego de este paso veremos que nos instala varias librerias y herramientas, entre ellas
podemos encontrar: liblzo2 (libreria de compresin) y Openssl (herramienta que nos va a
ayudar a implementar los protocolos SSL/TLS y a generar los certificados).
Algo a destacar es que ya esta corregido el problema de vulnerabilidad que se presento
hace un tiempo con OpenSSL, e incluso cuenta con herramientas para que podamos
chequear si los certificados son vulnerables o no.

Creacin de VPN's con


OpenVPN
PREPARANDO EL SERVIDOR
Para comenzar con la configuracin del servidor lo primero que tendremos que hacer
ser crear una serie de certificados y claves, para esto vamos a aprovechar una de las
ventajas que nos otorga Openvpn, al tener unos cuantos scripts ya armados
para realizar esta tarea. Es por eso que lo primero que voy a recomendar para seguir un
orden, es copiar el directorio donde se encuentran almacenados estos scripts a
/etc/openvpn, que es el directorio donde tendremos los archivos de configuracin. Para
realizar lo antes mencionado podemos ejecutar este comando:
Copiamos:
# cp -a /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn
Y luego accedemos al directorio:
# cd /etc/openvpn/easy-rsa/2.0/

Creacin de VPN's con


OpenVPN
Creando el certificado de autoridad..
Una vez que ya realizamos los pasos anteriores de copiar el directorio donde estn
contenidos los scripts, lo que vamos a hacer es generar el certificado de autoridad (CA),
este se generara por nica vez en el servidor y luego ser uno de los archivos que
tendremos que copiar hacia los clientes, para que al intentar conectarse al mismo, este
pueda verificar que el certificado fue emitido por el y darles el correspondiente permiso.
Veamos como realizaremos esto:
#. vars
Al ejecutar . vars, lo que estaremos haciendo ser inicializar las variables de ambiente,
Paso seguido vamos a inicializar el directorio de claves:
#sh clean-all

Creacin de VPN's con


OpenVPN
y por ultimo ejecutamos el siguiente script:
#sh build-ca
Con este ultimo se generara el certificado CA, y nos pedir varios datos, los cuales
recomiendo que sean lo mas reales posibles, ya que en futuras configuraciones nos va a
requerir algn dato del mismo.

Creacin de VPN's con


OpenVPN
Ejemplo en la generacin del certificado:
Generating a 1024 bit RSA private key
..................++++++
.......++++++
writing new private key to 'ca.key'
----You are about to be asked to enter information that
will be incorporated into your certificate request.
What you are about to enter is what is called a
Distinguished Name or a DN.
There are quite a few fields but you can leave some
blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----Country Name (2 letter code) [KG]:AR
State or Province Name (full name) [NA]:Buenos Aires
Locality Name (eg, city) [BISHKEK]:La Plata
Organization Name (eg, company) [OpenVPN-TEST]:Central Tech
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname)
[]:emilianox (Nota: no dejar en blanco common name!)

Creacin de VPN's con


OpenVPN
Una vez realizado el paso anterior nos creara dos archivos (servidor.crt y servidor.key)
dentro de /etc/openvpn/easy-rsa/2.0/keys, los cuales luego tendremos que copiarlos
en /etc/openvpn.

Certificado y clave de encriptacin (Servidor y Clientes)


Ahora lo que vamos a realizar es generar el correspondiente certificado del servidor y su
clave de encriptacin, para ello vamos a realizar lo siguiente:
#sh build-key-server servidor
Nos va a pedir distintos datos nuevamente, de los cuales Country Name, State or
Province Name, Locality Name y Organization Name, se nos va a pedir que sean
iguales a los que hayamos puesto en el certificado CA, luego el resto
podrn ser distintos y recomiendo que as sea para Common Name, que yo en mi caso
lo nombre servidor:
Todo esto nos va a crear dos archivos (servidor.crt y servidor.key) dentro de
/etc/openvpn/easy-rsa/2.0/keys, los cuales luego tendremos que copiarlos en
/etc/openvpn.

Creacin de VPN's con


OpenVPN
Al igual que como con el servidor, con cada uno de los clientes debemos
crear certificados y claves de encriptacin, siendo individuales para cada uno
de ellos, entonces procederemos a ejecutar el siguiente script:
#sh build-key cliente
Al ejecutar este script le pasamos el parmetro cliente, que ser a su vez el nombre
que se le asignara a los certificados y claves de encriptacin de cada
cliente, si necesitamos generar ms certificados y claves de encriptacin para
otros
clientes, debemos repetir el paso anterior, cambiando nicamente el parmetro
que le pasamos, ejemplo:
#sh build-key cliente2
#sh build-key cliente3

Creacin de VPN's con


OpenVPN
Generando el parametro Diffie-Hellman
Con la ejecucin del siguiente script, generaremos el parmetro Diffie-Hellman, el mismo
nos proporcionara el intercambio de claves de forma segura. Para ello realizamos lo
siguiente:
#sh build-dh
Esto nos creara el archivo dh1024.pem dentro del directorio /etc/openvpn/easyrsa/2.0/keys.

Creacin de VPN's con


OpenVPN
Cada cosa a su lugar!
Una
vez realizado todos los pasos anteriores, veremos que tenemos varios
archivos dentro de /etc/openvpn/easy-rsa/2.0/keys, algunos tendremos que copiarlos en
el cliente y otros en el servidor.

Servidor
Los archivos que tendremos que copiar en el servidor, ms precisamente dentro del
directorio /etc/openvpn, son:
*-ca.crt
*-ca.key
*-servidor.key
*-servidor.crt
*-dh1024.pem
Nota: en el caso que creemos mas adelante claves de encriptacin y certificados
para mas clientes, lo que se nos pedir ser que los archivos ca.crt y ca.key, estn
dentro del directorio /etc/openvpn/easy-rsa/2.0/keys

Creacin de VPN's con


OpenVPN
Cliente
Como lo hicimos con el servidor, necesitamos tener el certificado y las claves de
encriptacin dentro del directorio /etc/openvpn de cada cliente, los archivos que
necesitaremos copiar son los siguientes:
*-ca.crt
*-cliente.crt
*-cliente.key

Creacin de VPN's con


OpenVPN
Archivo de configuracin del servidor
Por ultimo para que el servidor sepa los parametros a tomar debemos crear un archivo de
configuracin, como por ejemplo server.conf, este podra contener los siguientes
parametros:
port 1194
proto udp
dev tun
ca ca.crt
cert servidor.crt
key servidor.key
dh dh1024.pem
server 10.7.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0"
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key

Creacin de VPN's con


OpenVPN
persist-tun
status openvpn-status.log
log openvpn.log
verb 4
Los parmetros que podemos destacar son:
*-ca: esta indicando como se llama el certificado de autoridad.
*-cert: indica como se llama el certificado del servidor
*-key: nombre de la clave de encriptacin.
*-dh: como se llama el parmetro Diffie-Hellman.
*-Server: indica las direcciones IP que se le asignaran a las interfaces TUN/TAP
de los clientes, el servidor tendr la .1, o sea que para nuestro caso ser la 10.7.0.1.
*-push: Le indica a el servidor que red podr ser alcanzada por los clientes que se
conecten a el.

Creacin de VPN's con


OpenVPN
Archivo de configuracin del cliente
Al igual que lo hicimos con el servidor, en el cliente tambien necesitamos tener un archivo de
configuracin, para indicarle los distintos parametros a tomar. El mismo puede contener
los siguientes parametros:
client
dev tun
proto udp
remote emiliano.ath.cx
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca ca.crt
cert cliente.crt
key cliente.key
comp-lzo
verb 4

Creacin de VPN's con


OpenVPN
Algunos parmetros a destacar son:
*-client: actuara como cliente y algunas configuraciones las tomar del servidor.
*-nobind: que no acte como servidor, que solamente vaya como cliente.
*-ca: esta indicando como se llama el certificado de autoridad.
*-cert: indica como se llama el certificado del cliente
*-key: nombre de la clave de encriptacin.

Cliente Windows
Lo primero a realizar sera descargar el ejecutable desde el sitio:
http://openvpn.se/download.html, luego una vez instalado tenemos que crear un archivo
con la extencion .ovpn dentro de c:\Archivos de programa\OpenVPN\config\ en el cual
incluiremos el las siguientes lineas y tambien dentro de este directorio debemos
copiar las claves y certificados provistos por el servidor. El archivo de configuracin
podra ser como el siguiente:

Creacin de VPN's con


OpenVPN
client
port 1194
dev tun
proto udp
remote emiliano.ath.cx
resolv-retry infinite
nobind
persist-key
persist-tun
ca "c:\\archivos de programa\\openvpn\\config\\ca.crt"
cert "c:\\archivos de programa\\openvpn\\config\\cliente.crt"
key "c:\\archivos de programa\\openvpn\\config\\cliente.key"
comp-lzo
verb 4

Creacin de VPN's con


OpenVPN
Iniciando el servicio
A esta altura ya estamos listos para iniciar el servicio, en nuestro caso lo haremos de la
siguiente manera (tanto para el servidor como para el cliente):
#/etc/init.d/openvpn start
Y en el caso que tengamos clientes en Windows, primero debemos levantar el servicio en el
servidor como indicamos anteriormente y luego con solo hacer doble click sobre el icono
que aparece abajo a la derecha (al lado del reloj, un icono con dos monitores en rojo), se
empezara a iniciar el servicio y veremos en pantalla paso a paso la conexin con el
servidor, hasta que el icono pase a color verde indicandonos que ya esta establecida la
conexin.

Вам также может понравиться