Diferencia entre revisiones de «OpenVPN»

De Wiki de BandaAncha.eu
Saltar a: navegación, buscar
(New page: {{Plantilla:Docs}} {| class="wikitable" align="right" cellpadding="4" |+ '''Sobre este documento''' |- | bgcolor="#ddf"|'''Tipo''' || Manual (How To) |- | bgcolor="#ddf"|'''Dificultad''' ...)
 
Línea 3: Línea 3:
 
|+ '''Sobre este documento'''
 
|+ '''Sobre este documento'''
 
|-
 
|-
| bgcolor="#ddf"|'''Tipo''' || Manual (How To)
+
| bgcolor="#ddf"|'''Tipo''' || Manual (How To)
 +
|-
 +
| bgcolor="#ddf"|'''Plataforma''' || GNU/Linux
 
|-
 
|-
 
| bgcolor="#ddf"|'''Dificultad''' || [[Imagen:Micro_tux.png|Tux]][[Imagen:Micro_tux.png|Tux]][[Imagen:Micro_tux.png|Tux]]
 
| bgcolor="#ddf"|'''Dificultad''' || [[Imagen:Micro_tux.png|Tux]][[Imagen:Micro_tux.png|Tux]][[Imagen:Micro_tux.png|Tux]]
|-
 
| bgcolor="#ddf"|'''Plataforma''' || GNU/Linux
 
 
|-
 
|-
 
|}
 
|}
Línea 31: Línea 31:
 
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:  
 
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:  
 
<pre>
 
<pre>
iproute2 lzo openssl tcpip
+
iproute2 tcpip pam openssl lzo
 +
</pre>
 +
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):
 +
<pre>
 +
modprobe tun
 +
</pre>
 +
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.
 +
<pre>
 +
# 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 "Soy todopoderoso, lo se"
 +
</pre>
 +
Con esto ya hemos terminado la instalación, pero todavía quedan algunos detalles por ejecutar, como el crear las keys y las configuraciones. OpenVPN ya viene con los scripts necesarios para generar nuestras propias llaves, 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:
 +
<pre>
 +
'''# 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:'MX'
 +
stateOrProvinceName  :PRINTABLE:'Baja California'
 +
localityName          :PRINTABLE:'Tijuana'
 +
organizationName      :PRINTABLE:'Tuxjm'
 +
commonName            :PRINTABLE:'cliente1'
 +
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
 
</pre>
 
</pre>
 
[[Categoría:Linux]]
 
[[Categoría:Linux]]

Revisión del 23:09 5 dic 2008

Plantilla:Docs

Sobre este documento
Tipo Manual (How To)
Plataforma 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 "Soy todopoderoso, lo se"

Con esto ya hemos terminado la instalación, pero todavía quedan algunos detalles por ejecutar, como el crear las keys y las configuraciones. OpenVPN ya viene con los scripts necesarios para generar nuestras propias llaves, 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:'MX'
stateOrProvinceName   :PRINTABLE:'Baja California'
localityName          :PRINTABLE:'Tijuana'
organizationName      :PRINTABLE:'Tuxjm'
commonName            :PRINTABLE:'cliente1'
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