Revisión actual |
Tu texto |
Línea 1: |
Línea 1: |
| + | {{Plantilla:Docs}} |
| {| class="wikitable" align="right" cellpadding="4" | | {| class="wikitable" align="right" cellpadding="4" |
| |+ '''Sobre este documento''' | | |+ '''Sobre este documento''' |
| |- | | |- |
− | | bgcolor="#ddf"|'''Tipo''' || Manual (How To) | + | | bgcolor="#ddf"|'''Tipo''' || Manual (How To) |
| |- | | |- |
− | | bgcolor="#ddf"|'''Categoria''' || [[:Categoría:Linux|Linux]] | + | | bgcolor="#ddf"|'''Dificultad''' || [[Imagen:Micro_tux.png|Tux]][[Imagen:Micro_tux.png|Tux]][[Imagen:Micro_tux.png|Tux]] |
| |- | | |- |
− | | bgcolor="#ddf"|'''Plataforma''' || All GNU/Linux | + | | bgcolor="#ddf"|'''Plataforma''' || GNU/Linux |
− | |-
| |
− | | 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 29: |
Línea 28: |
| 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 del Servidor OpenVPN == | + | == 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: | | 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 tcpip pam openssl lzo | + | iproute2 lzo openssl tcpip |
− | </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 && echo "Soy todopoderoso, lo se"
| |
− | </pre>
| |
− | 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:
| |
− | <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.
| |
− | <pre>
| |
− | # 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'
| |
− | | |
− | 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'
| |
− | | |
− | 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> |
− | 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]] |