Diferencia entre revisiones de «OpenVPN»
(No se muestran 9 ediciones intermedias de 4 usuarios) | |||
Línea 1: | Línea 1: | ||
− | |||
{| class="wikitable" align="right" cellpadding="4" | {| class="wikitable" align="right" cellpadding="4" | ||
|+ '''Sobre este documento''' | |+ '''Sobre este documento''' | ||
Línea 5: | Línea 4: | ||
| bgcolor="#ddf"|'''Tipo''' || Manual (How To) | | bgcolor="#ddf"|'''Tipo''' || Manual (How To) | ||
|- | |- | ||
− | | bgcolor="#ddf"|'''Plataforma''' || GNU/Linux | + | | bgcolor="#ddf"|'''Categoria''' || [[:Categoría:Linux|Linux]] |
+ | |- | ||
+ | | bgcolor="#ddf"|'''Plataforma''' || All 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]] | ||
|- | |- | ||
|} | |} | ||
− | 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. | + | 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. | 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. | ||
Línea 28: | Línea 29: | ||
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. | 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 | + | == Instalación del Servidor 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: | 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> | ||
Línea 43: | Línea 44: | ||
# tar -xfz openvpn-2.0.9.tar.gz | # tar -xfz openvpn-2.0.9.tar.gz | ||
# cd openvpn-2.0.9 | # cd openvpn-2.0.9 | ||
− | # ./configure && echo "Configure terminado" && make && echo "Compilacion completada" && make install "Soy todopoderoso, lo se" | + | # ./configure && echo "Configure terminado" && make && echo "Compilacion completada" && make install && echo "Soy todopoderoso, lo se" |
</pre> | </pre> | ||
− | Con esto ya hemos terminado la instalación, pero todavía quedan algunos detalles por ejecutar, como el crear | + | 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) == | == Crear los Certificados de Autentificación (CA) == | ||
Línea 52: | Línea 53: | ||
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: | 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> | <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 | |
+ | </pre> | ||
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. | 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. | ||
− | + | <pre> | |
+ | # source ./vars | ||
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa-V2.0/keys | 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 | Generating DH parameters, 1024 bit long safe prime, generator 2 | ||
This is going to take a long time | This is going to take a long time | ||
Línea 68: | Línea 71: | ||
..................+........................+.................................... | ..................+........................+.................................... | ||
+................................. | +................................. | ||
− | + | ||
+ | # ./pkitool --initca | ||
Using CA Common Name: Bandaancha CA | Using CA Common Name: Bandaancha CA | ||
Generating a 1024 bit RSA private key | Generating a 1024 bit RSA private key | ||
Línea 75: | Línea 79: | ||
writing new private key to 'ca.key' | writing new private key to 'ca.key' | ||
----- | ----- | ||
− | + | ||
+ | # ./pkitool --server servidor | ||
Generating a 1024 bit RSA private key | Generating a 1024 bit RSA private key | ||
...........++++++ | ...........++++++ | ||
Línea 95: | Línea 100: | ||
Write out database with 1 new entries | Write out database with 1 new entries | ||
Data Base Updated | Data Base Updated | ||
− | + | ||
+ | # ./pkitool cliente_01 | ||
Generating a 1024 bit RSA private key | Generating a 1024 bit RSA private key | ||
.........................................++++++ | .........................................++++++ | ||
Línea 117: | Línea 123: | ||
Data Base Updated | Data Base Updated | ||
</pre> | </pre> | ||
+ | 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. | ||
+ | |||
+ | == Los Certificados == | ||
+ | Como hemos visto cuando generamos los certificados se crean siempre duplicados, esto tiene un motivo, algunos son secretos y otros no... en esta sencilla tabla veremos cuales tienen que ser secretos (es decir, aunque nos estén apuntando con un arma a la cabeza no los deberemos revelar) y cuales podemos llevar en una unidad flash sin poner en peligro nuestra VPN. | ||
+ | |||
+ | {| class="wikitable" cellpadding="4" | ||
+ | |+ '''Tabla de certificados''' | ||
+ | |- | ||
+ | | bgcolor="#ddf"|'''Archivo''' || bgcolor="#ddf"|'''¿Secreto?''' || bgcolor="#ddf"|'''Destino''' || bgcolor="#ddf"|'''Proposito''' | ||
+ | |- | ||
+ | | '''ca.crt''' || no || servidor y clientes || CA principal | ||
+ | |- | ||
+ | | '''ca.key''' || si || servidor || CA principal | ||
+ | |- | ||
+ | | '''dh{n}.pem''' || no || servidor || Parametros Diffie Hellman | ||
+ | |- | ||
+ | | '''servidor.crt''' || no || servidor || Certificado del servidor | ||
+ | |- | ||
+ | | '''servidor.key''' || si || servidor || Llave del servidor | ||
+ | |- | ||
+ | | '''cliente_{n}.crt''' || no || cliente {n} || Certificado del cliente | ||
+ | |- | ||
+ | | '''cliente_{n}.key''' || si || cliente {n} || Llave del cliente | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | Si vosotros por algún casual habeis cambiado los nombres de los archivos... recordar que nombre le habeis puesto y mirar en la tabla lo que podeis hacer con él. | ||
+ | |||
+ | == Configuracion Servidor y Cliente == | ||
+ | |||
+ | La configuración del cliente es muy similar a la que usamos para el servidor, pero añadiendole un campo más | ||
+ | |||
[[Categoría:Linux]] | [[Categoría:Linux]] |
Revisión actual del 21:59 7 oct 2009
Tipo | Manual (How To) |
Categoria | Linux |
Plataforma | All GNU/Linux |
Dificultad | ![]() ![]() ![]() |
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.
Contenido
Ventajas de una VPN[editar]
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[editar]
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 del Servidor OpenVPN[editar]
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)[editar]
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.
Los Certificados[editar]
Como hemos visto cuando generamos los certificados se crean siempre duplicados, esto tiene un motivo, algunos son secretos y otros no... en esta sencilla tabla veremos cuales tienen que ser secretos (es decir, aunque nos estén apuntando con un arma a la cabeza no los deberemos revelar) y cuales podemos llevar en una unidad flash sin poner en peligro nuestra VPN.
Archivo | ¿Secreto? | Destino | Proposito |
ca.crt | no | servidor y clientes | CA principal |
ca.key | si | servidor | CA principal |
dh{n}.pem | no | servidor | Parametros Diffie Hellman |
servidor.crt | no | servidor | Certificado del servidor |
servidor.key | si | servidor | Llave del servidor |
cliente_{n}.crt | no | cliente {n} | Certificado del cliente |
cliente_{n}.key | si | cliente {n} | Llave del cliente |
Si vosotros por algún casual habeis cambiado los nombres de los archivos... recordar que nombre le habeis puesto y mirar en la tabla lo que podeis hacer con él.
Configuracion Servidor y Cliente[editar]
La configuración del cliente es muy similar a la que usamos para el servidor, pero añadiendole un campo más