OpenVPN

De Wiki de BandaAncha.eu
Saltar a: navegación, buscar
Sobre este documento
Tipo Manual (How To)
Categoria Linux
Plataforma All GNU/Linux
Dificultad TuxTuxTux

Empezaremos explicando, para quien no sepa, qué es una VPN. VPN viene de las siglas Virtual Private Network y es una tecnología de red que permite una extensión de la red local sobre una red pública o no controlada , como por ejemplo Internet.

Ejemplos comunes son:, la posibilidad de conectar dos o más ordenadores utilizando como vínculo Internet, permitir a los miembros del equipo de soporte técnico la conexión desde su casa al centro de trabajo (estos bofh...), o que una persona pueda acceder a su equipo doméstico desde, por ejemplo, un hotel. Todo ello utilizando la infraestructura de Internet.


Ventajas de una VPN

El principal beneficio que puede tener una VPN es el bajo costo que puede tener frente a otras conexiones como una Punto a Punto, ya que los clientes solamente tendrian que tener una conexión normal a internet.

Además los datos son codificados o cifrados y recién enviados a través de la conexión, para de esa manera asegurar la información y el password que se esté enviando.

Si quereis aprender más sobre las VPN podeis visitar este completo documento en la Wikipedia http://es.wikipedia.org/wiki/Red_privada_virtual.

En este manual explicaremos como instalar OpenVPN en un servidor cuya función es compartir a través de SAMBA ciertas carpetas... aunque este manual está dedicado a crear una VPN pública (es decir, accesible desde internet) no os será difícil imaginar como sería hacerla solamente local.

OpenVPN

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 autenticación como certificados, smart cards, y/o usuarios/contraseñas, y permite politicas de control de acceso para usaurios 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.

Para seguir este documento se requieren conocimientos basicos de redes TCP/IP como , direcciones IP, DNS, netmasks, subnets, IP routing, routers, interfaces de red, LANs, gateways, y reglas de firewall.

Instalación de OpenVPN

Aunque la mayoría de las distribuciones de GNU/Linux tienen el paquete integrado en sus repositorios, haremos esto de la forma tradicional y lo instalaremos desde tarball, antes de eso tendremos que asegurarnos que los siguientes paquetes están en nuestro sistema, para poder instalar el paquete sin problemas:

iproute2 tcpip pam openssl lzo

También tendremos que comprobar que el núcleo del sistema permite el tuneling (ya que montaremos nuestra VPN de esta forma por ser la más sencilla y práctica):

modprobe tun

Si todo está correcto, podremos empezar la instalación. Lo primero es bajarse el paquete de la página, descomprimirlo y luego compilarlo lo cual no resultará muy difícil ya que no requiere flag alguno.

# cd /usr/local/src
# wget http://openvpn.net/release/openvpn-2.0.9.tar.gz
# tar -xfz openvpn-2.0.9.tar.gz
# cd openvpn-2.0.9
# ./configure && echo "Configure terminado" && make && echo "Compilacion completada" && make install && echo "Soy todopoderoso, lo se"

Con esto ya hemos terminado la instalación, pero todavía quedan algunos detalles por ejecutar, como el crear los certificados y las configuraciones. OpenVPN ya viene con los scripts necesarios para generar nuestros propios certificados, como veremos a continuación.

Crear los Certificados de Autentificación (CA)

Como explicabamos al inicio una VPN es una red privada virtual segura dentro de un medio inseguro, y eso es lo que vamos a conseguir a través de estos scripts, generando certificados tanto para el servidor como para los clientes que se vayan a conectar. Hay que decir que se pueden generar multiples certificados para cada uno de los clientes que es lo más aconsejable y seguro, pero también se le puede decir al servidor que acepte desde multiples puestos el mismo certificado. La elección será vuestra.

Los scripts de rsa están en /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/. Por cómodidad más que otra cosa podemos trasladarlos a otro sitio, sobretodo si tenemos que volver a generar por algún otro motivo las keys, así que lo copiaremos todo a /etc/openvpn. Una vez copiado todo el contenido tendremos que modificar el archivo vars para establecer nuestros valores y estaremos listos para generar primeramente el CA para el servidor y luego para nuestros clientes:

# mkdir /etc/openvpn
# mkdir /etc/openvpn/easy_rsa-2.0
# cp -r /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/* /etc/openvpn/easy_rsa-2.0
# cd /etc/openvpn/easy_rsa-2.0
# {EDITOR} vars

Buscar estos valores y cambiarlos por los vuestros KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL no dejes ninguno en blanco, salvar el archivo y listo.

# source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa-V2.0/keys
# ./clean-all
# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.............................................................................+..
..............................................................+.................
..................+........................+....................................
+.................................

#  ./pkitool --initca
Using CA Common Name: Bandaancha CA
Generating a 1024 bit RSA private key
............................++++++
........................++++++
writing new private key to 'ca.key'
-----

# ./pkitool --server servidor
Generating a 1024 bit RSA private key
...........++++++
...................................................................++++++
writing new private key to 'servidor.key'
-----
Using configuration from /etc/openvpn/easy-rsa-V2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'ES'
stateOrProvinceName   :PRINTABLE:'Pontevedra'
localityName          :PRINTABLE:'Vigo'
organizationName      :PRINTABLE:'BandaAncha'
commonName            :PRINTABLE:'Servittore'
emailAddress          :IA5STRING:'[email protected]'
Certificate is to be certified until Apr 30 03:50:13 2016 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

# ./pkitool cliente_01
Generating a 1024 bit RSA private key
.........................................++++++
............................++++++
writing new private key to 'cliente_01.key'
-----
Using configuration from /etc/openvpn/easy-rsa-V2.0/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'ES'
stateOrProvinceName   :PRINTABLE:'Pontevedra'
localityName          :PRINTABLE:'Vigo'
organizationName      :PRINTABLE:'BandaAncha'
commonName            :PRINTABLE:'Servittore'
emailAddress          :IA5STRING:'[email protected]'
Certificate is to be certified until Apr 30 03:51:59 2016 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

Bien, ya hemos generado un par de certificados, el primero para el servidor VPN y otro para el primer cliente. Si queremos generar más certificados para más clientes tendremos que volver a generar vars (source ./vars) y luego generar el certificado (./pkitool cliente_0n), tendremos que ejecutar estos pasos cada vez que querramos generar un certificado nuevo para un cliente.

Ahora mismo ya tenemos lo básico para montar la VPN: el servicio listo para ejecutarse, dos certificados (servidor y cliente) pero falta lo más importante que son las configuraciones, las cuales trataremos ahora.

Configuracion Servidor y Cliente

Por rellenar.