Tutorial Openvpn
Tutorial Openvpn
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Copyright 2009, 2010, 2011 Jorge Armando Medina, Alejandro Snchez Martnez Se otorga permiso para copiar, distribuir y/o modicar ste documento bajo los trminos de la Licencia de Documentacin Libre GNU GFDL, Versin 1.2 o cualquier otra posterior publicada por la Fundacin de Software Libre; sin secciones invariantes, sin textos en portada y contraportada. Una copia de la licencia en ingles la puede encontrar en los apendices al nal del ibro, tambien una traduccin libre no ocial al espaol de la licencia GFDL y referencias de como utilizarla en sus proyectos, si por alguna razn se tuviera que utilizar por cuestiones legales la licencia GFDL la unica valida es la versin en inlges de ella. 2011/06/25 Resumen Este documento describe los procedimientos para la creacin de Redes Privadas Virtuales basadas en SSL/TLS usando software y tecnologas libres, la conguraciones sern hechas en Ubuntu Server como sistema operativo para el Servidor VPN con clientes GNU/Linux y MS Windows, el software para la creacin de tuneles VPN es OpenVPN el cual es software libre liberado bajo la licenca GNU GPL versin 2, es bastante robusto y exible, se vern los procedimientos para la creacin de tuneles VPN en modo Punto a Punto o host-to-host, creacin de tuneles VPN para conectar multiples sitios remotos, tambin conocida como VPN site-to-site, conguracines para clientes mviles RoadWarriors, veremos diferentes mtodos para la autenticacin de la VPN, tanto mecanismos de autenticacin basados en Llaves secretas pre compartidas y autenticacin por certicados x.509, tambin conocidos como certicados SSL usando una Infraestructura de Llave Pblica PKI, procedimientos para incrementar la seguridad de la VPN, y por ltimo se incluyen procedimientos de administracin y operacin del las VPN. Tabla de contenidos Prefacio Convenciones del Documento Convenciones Tipogrcas Convenciones del documento Notas y Advertencias Necesitamos sus comentarios! 1. Introduccin a Tecnologas VPN 2. Esquemas de comunicacin de las redes VPN 3. Introduccin a OpenVPN Caracteristicas de OpenVPN Los mtodos de autenticacin de OpenVPN Autenticacin basada en llaves estticas pre compartidas Autenticacin basada en certicados X.509 Historial de cambios signicativos en OpenVPN OpenVPN 2.1 versin estable liberada Recursos adicionales Sitios web 4. Preparando los requerimientos de instalacin Informacion previa del servidor OpenVPN GNU/Linux Informacin previa de los clientes OpenVPN Informacin sobre la la conectividad del servidor OpenVPN Requerimientos de Firewall Esquemas de enrutamiento para conexiones VPN Escenario 1: OpenVPN en el mismo Firewall/Gateway Escenario 2: OpenVPN en un equipo distinto al Firewall/Gateway 5. Conguracin de una Autoridad Certicadora con OpenSSL para la administracin de llaves RSA Generando la llave privada y certicado raz para la Autoridad Certicadora Generando la llave privada y certicado para el servidor OpenVPN Generando las llaves privadas y certicados para los clientes VPN Recursos adicionales Sitios web Paginas de manual 6. Instalacin de OpenVPN en el servidor GNU/Linux Objetivos Requisitos de sistema Instalacin de OpenVPN en el servidor GNU/Linux
1 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Controlando la ejecucin de OpenVPN Recursos adicionales Sitios web Paginas de manual 7. Instalacin del Cliente OpenVPN Requisitos de sistema Instalacin de OpenVPN en el cliente GNU/Linux Requisitos de sistema Instalacin de OpenVPN en el cliente GNU/Linux Controlando la ejecucin de OpenVPN Instalacin del cliente OpenVPN en Windows Requisitos de sistema para clientes MS Windows Instalando el cliente OpenVPN GUI en Windows XP Instalando el cliente OpenVPN GUI en Windows Vista y Windows 7 El directorio de conguracin del cliente OpenVPN GUI en Windows Ejecucin de OpenVPN GUI en Windows Resolucin de problemas para Clientes OpenVPN en Windows La conexin a la VPN no es establecida, en el log de OpenVPN aparece el mensaje "All TAP-Win32 adapters on this system are currently in use" Recursos Adicionales Sitios web Paginas de manual 8. Creando conexiones VPN punto a punto con OpenVPN Informacin previa y requerimientos Conexiones VPN punto a punto usando el modo de autenticacin basada en llaves estticas Congurando el servidor OpenVPN de una conexin punto a punto Congurando el cliente OpenVPN de una conexin punto a punto Ejecutando scripts con OpenVPN para agregar rutas Conexiones VPN punto a punto usando el modo de autenticacin basada en certicados SSL/TLS Congurando el servidor OpenVPN de una conexin punto a punto Congurando el cliente OpenVPN de una conexin punto a punto Resolucin de problemas en conexiones VPN punto a punto con OpenVPN Recursos adicionales Sitios web Paginas de manual 9. Creando conexiones VPN sitio a sitio con OpenVPN Objetivos Informacin previa sobre el entorno de red Congurando el servidor OpenVPN para la VPN sitio a sitio en la ocina Matriz Congurando el cliente OpenVPN para la VPN sitio a sitio en la ocina remota 1 Pruebas de conectividad entre VPN sitio a sitio Congurando el cliente OpenVPN para la VPN sitio a sitio en la ocina remota 2 Permitiendo comunicacion entre redes LAN remotas Recursos adicionales Sitios web Paginas de manual 10. Conguraciones para clientes OpenVPN RoadWarriors Congurando el cliente OpenVPN en sistemas MS Windows Congurando el cliente OpenVPN en sistemas GNU/Linux Estableciendo la conexin con el servidor OpenVPN Asignando direcciones IP estticas para los clientes OpenVPN Enviando opciones DHCP a los clientes OpenVPN Actualizando automtica de los parmetros DNS en clientes GNU/Linux Recursos adicionales Sitios web Paginas de manual 11. Reforzando la seguridad de OpenVPN Introduccin Usando TLS-auth para autenticacin TLS Uso del protocolo UDP como medida de prevencin de ataques Usando llaves RSA y de cifrado simtrico ms grandes Revocando Certicados para clientes VPN Previniendo ataques de tipo Man In The Middle Recursos adicionales Sitios web Paginas de manual 12. La Consola de Administracin OpenVPN 13. Administracin avanzada de clientes y certicados Autenticacin basada en Usuario y Contrasea Llaves privadas protegidas por contrasea Estableciendo contraea en Llave Privada sin proteccin Estableciendo contrasea en Llave Privada en GNU/Linux con OpenSSL Estableciendo contraea en Llave Privada en Windows Creando llaves privadas con contrasea Cambiando la contrasea de una Llave privada protegida Cambiando la contrasea de una Llave Privada protegida en GNU/Linux con OpenSSL Cambiando la contrasea de una Llave Privada protegida en Windows 14. Resolucin de Problemas 15. Apendices El archivo de conguracin /etc/openvpn/servidor.conf (Servidor OpenVPN)
2 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
El archivo de conguracin /etc/openvpn/cliente.conf Usando el servicio DNS Dinamico de DynDNS con el cliente Dinamico ddclient A. Historial de Revisiones B. Licencia de Documentacin Libre de GNU PREMBULO APLICABILIDAD Y DEFINICIONES COPIA LITERAL COPIADO EN CANTIDAD MODIFICACIONES COMBINACIN DE DOCUMENTOS COLECCIONES DE DOCUMENTOS AGREGACIN CON TRABAJOS INDEPENDIENTES TRADUCCIN TERMINACIN REVISIONES FUTURAS DE ESTA LICENCIA ADENDA: Cmo usar esta Licencia en sus documentos C. GNU Free Documentation License Lista de guras 9.1. Dos Redes Remotas Lista de tablas 5.1. 5.2. 5.3. 5.4. 9.1. 9.2. Archivos de inicializacin de la CA Archivos de certicados de la CA Archivos de certicados Archivos de certicados Tabla de certicados y llaves privadas requeridos para servidor OpenVPN en Matriz Tabla de certicados y llaves privadas requeridos para servidor OpenVPN en Matriz
Prefacio
Tabla de contenidos Convenciones del Documento Convenciones Tipogrcas Convenciones del documento Notas y Advertencias Necesitamos sus comentarios!
Convenciones Tipogrcas
Se utilizan cuatro convenciones tipogrcas para llamar la atencin sobre palabras o frases especcas. Dichas convenciones y las circunstancias en que se aplican son las siguientes: Negrita monoespaciado Utilizada para resaltar la entrada del sistema, incluyendo comandos de shell, nombres de archivo y rutas. Tambin se utiliza para resaltar teclas claves y combinaciones de teclas. Para ver el contenido del archivo my_next_bestselling_novel en su directorio actual de trabajo, escriba el comando cat my_next_bestselling_novel en el intrprete de comandos de shell y pulse Enter para ejecutar el comando. Lo anterior incluye un nombre de archivo, un comando de shell y una tecla clave, todo en negrita-monoespaciado y distinguible gracias al contexto. Las combinaciones de teclas se pueden distinguir de las teclas claves mediante el guin que conecta cada parte de una combinacin de tecla. Por ejemplo: Pulse Enter para ejecutar el comando. Pulse Control+Alt+F1 para cambiar a la primera terminal virtual. Pulse Control+Alt+F7 para volver a su sesin de Ventanas-X. La primera oracin resalta la tecla clave determinada que se debe pulsar. La segunda resalta dos conjuntos de tres teclas claves, cada conjunto presionado simultneamente. Si el cdigo fuente es discutido, nombres de clase, mtodos, funciones, nombres de variables, y valores de retorno mencionados dentro de un prrafo sern presentados como lo anterior, en Negrita-monoespaciado. Por ejemplo: Las clases de archivo relacionadas incluyen su propio conjunto asociado de permisos. Proportional Bold Esta denota palabras o frases encontradas en un sistema, incluyendo nombres de aplicacin; texto de cuadro de dilogo, botones etiquetados, etiquetas de cajilla de vericacin y botn de radio; ttulos de men y ttulos del sub-men. Por ejemplo:
filename
file
para archivos y
dir
3 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Seleccionar Sistema > Preferencias > Ratn desde la barra del men principal para lanzar Preferencias de Ratn. En la pestaa de Botones, haga clic en la cajilla ratn de mano izquierda y luego haga clic en Cerrar para cambiar el botn principal del ratn de la izquierda a la derecha (adecuando el ratn para la mano izquierda). Para insertar un caracter especial en un archivo gedit, seleccione desde la barra del men principal Aplicaciones > Accesorios > Mapa de caracteres. Luego, desde la barra del men elija Bsqueda > Hallar mapa de caracteres, teclee el nombre del caracter en el campo de Bsqueda y haga clic en Siguiente. El caracter buscado se resaltar en la Tabla de caracteres. Haga doble clic en este caracter resaltado para colocarlo en el campo de Texto para copiar y luego haga clic en el botn de Copiar. Ahora regrese a su documento y elija Editar > Pegar desde la barra de men de gedit. El texto anterior incluye nombres de aplicacin; nombres de men de todo el sistema y elementos; nombres de men de aplicaciones especcas y botones y texto hallados dentro de una interfaz GUI, todos presentados en negrita proporcional y distinguibles por contexto. Observe la > abreviatura utilizada para indicar recorrido a travs de un men y sus sub-menes. Esto es para evitar la dicultad de seguir el mtodo 'Seleccionar Ratn desde el sub-men Preferencias en el men de Sistema de la barra de men principal'.
Itlicas-negrita monoespaciado
Itlicas-negrita proporcional
Negrita monoespaciado o Negrita proporcional, la adicin de itlicas indica texto reemplazable o variable. Las itlicas denotan texto que usted no escribe literalmente o texto mostrado que cambia dependiendo de la circunstancia. Por ejemplo: Para conectar a una mquina remota utilizando ssh, teclee ssh [email protected] en un intrprete de comandos de shell. Si la mquina remota es example.com y su nombre de usuario en esa mquina es john, teclee ssh [email protected]. El comando mount -o remount file-system remonta el sistema de archivo llamado. Por ejemplo, para volver a montar el sistema de archivo /home, el comando es mount -o remount /home. Para ver la versin de un paquete actualmente instalado, utilice el comando rpm -q
paquete-versin-lanzamiento. paquete.
Observe las palabras en itlicas- negrita sobre nombre de usuario, domain.name, sistema de archivo, paquete, versin y lanzamiento. Cada palabra es un marcador de posicin, tanto para el texto que usted escriba al ejecutar un comando como para el texto mostrado por el sistema. Aparte del uso estndar para presentar el ttulo de un trabajo, las itlicas denotan el primer uso de un trmino nuevo e importante. Por ejemplo: cuando el servidor Apache HTTP acepta solicitudes, enva procesos hijos o hilos para manejarlos. Este grupo de procesos hijos o hilos se conoce como un server-pool. Bajo el servidor HTTP de Apache 2.0, la responsabilidad para crear o mantener estos server-pool se resume en un grupo de mdulos llamado Mdulos de multi-procesamiento (MPMs). A diferencia de otros mdulos, slo un mdulo del grupo MPM puede ser cargado por el servidor HTTP de Apache.
y presentada as:
photos scripts
stuff svgs
svn
romano monoespaciado,
public class ExClient { public static void main(String args[]) throws Exception { InitialContext iniCtx = new InitialContext(); Object ref = iniCtx.lookup("EchoBean"); EchoHome home = (EchoHome) ref; Echo echo = home.create(); System.out.println("Created Echo"); System.out.println("Echo.echo('Hello') = " + echo.echo("Hello")); } }
Notas y Advertencias
Finalmente, utilizamos tres estilos visuales para llamar la atencin sobre la informacin que de otro modo se podra pasar por alto. Nota Una nota es una sugerencia, atajo o enfoque alternativo que se tiene a mano para la tarea. Ignorar una nota no debera tener consecuencias negativas, pero podra perderse de algunos trucos que pueden facilitarle las cosas. Importante Los cuadros de importante dan detalles de cosas que se pueden pasar por alto fcilmente: cambios de conguracin nicamente aplicables a la sesin actual, o servicios que necesitan reiniciarse antes de que se aplique una actualizacin. Ignorar estos
4 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
cuadros de importante no ocasionar prdida de datos, pero puede causar enfado y frustracin. Advertencia Las advertencias no deben ignorarse. Ignorarlas muy probablemente ocasionar prdida de datos.
Caracteristicas de OpenVPN
OpenVPN es un software para la creacin de VPNs basadas en SSL, la cual le permitir conectar sus ocinas remotas de forma segura, adems podr otorgar acceso remoto seguro a usuarios moviles a los servicios en su red privada LAN. Basada en estandares abiertos SSL/TLS y en software libre OpenVPN ofrece las siguientes caracteristicas: Solucin VPN de clase empresarial basada en Software libre y GNU/Linux Creacin de tuneles VPN para conexiones Punto a Punto, Sitio a Sitio y usuarios mviles (Road Warriors) Utiliza como medio de transporte los protocolos TCP UDP Permite multiples conexiones a a una misma instancia sobre un unico puerto TCP UDP Los tuneles VPN funcionan sobre conexines NAT (Network Address Translation) y direcciones IP dinamicas Basada en los estandares de la industria SSL/TLS para comunicacines seguras y autenticacin, usa todas las caracteristicas de OpenSSL para el cifrado, autenticacin y certicacin para proteger el trco privado de su red mientras transita por el Internet Usa cualquier cifrado, tamao de llave, o digest HMAC (para el chequeo de la integridad de los datagramas) soportados por la biblioteca OpenSSL. Cifrado exible permitiendo elejir entre:
5 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Cifrado asimetrico usando llaves pblicas basada en certicados x509 Permite usar llaves estaticas, pre compartidas o llaves dinamicas basadas en TLS para el intercambio de llaves Permite usar compresin del enlace en tiempo real y trac-shapping para administrar el uso de ancho de banda Permite el uso de plugins para extender los mecanismos de autenticacin, actualmente incluye un plugin para PAM y LDAP El servidor DHCP integrado en OpenVPN puede entregar la siguiente informacin de red a los clientes VPN: Direccin IP Virtual dinamica esttica Direccin de servidores DNS Sujo DNS Direccin de ruta del gateway predeterminado Servidor WINS Integracin con Firewall (netlter/iptables) para ltrar trco de VPN->LAN Soporte nativo de cliente para los siguientes sistemas operativos: GNU/Linux Solaris OpenBSD NetBSD FreeBSD MS Windows XP Vista y 7 , Mac OSX En este documento veremos la implementacin de la mayora de las caracteristicas arriba descritas. Para ms informacin acerca de OpenVPN ver pgina Community Software Overview en el sitio ocial de OpenVPN. El modelo de seguridad de OpenVPN esta descrito en el documento Security Overview.
6 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Dependiendo del modo del tunel de la VPN es el metodo de autenticacin que va a usar, normalmente para conexiones punto a punto host to host el uso de llaves pre compartidas es usado. Recursos adicionales: Static Key Mini-HOWTO: http://openvpn.net/index.php/open-source/documentation/miscellaneous/78-static-key-mini-howto.html
Recursos adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se aconseja que acceda a los siguientes recursos adicionales.
Sitios web
7 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas utilizados en este capitulo. http://openvpn.net/index.php/open-source/333-what-is-openvpn.html - What is OpenVPN? http://openvpn.net/index.php/open-source/335-why-openvpn.html - Why OpenVPN? http://openvpn.net/index.php/open-source/337-why-openvpn-uses-tls.html - Why OpenVPN uses TLS? http://openvpn.net/index.php/open-source/documentation/security-overview.html - Security Overview http://openvpn.net/index.php/open-source/faq - FAQ Community Software - Categories http://openvpn.net/papers/BLUG-talk/index.html - The User-Space VPN and OpenVPN - Understanding the User-Space VPN- History, Conceptual Fundations, and Practical Usage - By James Yonan http://www.sans.org/reading_room/whitepapers/vpns/openvpn-ssl-vpn-revolution_1459 - SANS Institute - OpenVPN and the SSL Revolution. https://community.openvpn.net/openvpn/wiki/RoadMap - OpenVPN Roadmap https://community.openvpn.net/openvpn/wiki - OpenVPN Community Wiki and Tracker
Requerimientos de Firewall
El Servidor OpenVPN por default utiliza el puerto UDP/1194 ocialmente aprovado por IANA. Por lo que es aconsejable abrir el puerto UDP 1194 en el rewall o usarlo en su regla de NAT en el caso que el servidor OpenVPN no este instalado en el mismo rewall o gateway. En Linux, podemos utilizar la siguiente regla de IPTables para permitir conexiones al puerto UDP 1194 desde cualquier origen.
8 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Nota En este ejemplo se utiliza -i ppp0 ya que ppp0 es la interfaz WAN de nuestro enlace ADSL, si usted esta conectado directamente an router por Ethernet, entonces querra utilizar un nombre de interfaz eth0.
# iptables -A INPUT -i ppp0 -p upd -s 0.0.0.0/0 --dport 1194 -j ACCEPT
Para ltrar el trco entre la red local y el tnel VPN se debe hacer sobre la interfaz TUN.
Captulo 5. Conguracin de una Autoridad Certicadora con OpenSSL para la administracin de llaves RSA
Tabla de contenidos Generando la llave privada y certicado raz para la Autoridad Certicadora Generando la llave privada y certicado para el servidor OpenVPN Generando las llaves privadas y certicados para los clientes VPN Recursos adicionales Sitios web Paginas de manual En este capitulo veremos como crear una Autoridad Certicadora (Certicate Authority) privada para la administracin de las llaves RSA, en especico usaremos la CA para emitir certicados X.509 o mejor conocidos como certicados SSL. El propsito nal es crear y administrar una Infraestructura de Llave Pblica (Public Key Infrastructure) o PKI, los certicados emitidos por la CA privada sern usados principalmente para autenticar las conexiones VPN, en especico para tareas de autenticacin y autorizacin entre clientes y servidores OpenVPN. En las siguientes secciones usaremos los scripts Easy-RSA los cuales se encuentra incluidos en las distribuciones de OpenVPN, estos scripts (escritos en bash) nos ayudarn a realizar las tareas de administracin de los certicados, tales como emisin de certicados, revocacin y generacin de listas de revocacin. Los scripts easy-rsa hacen uso del comando openssl para realizar dichas tareas, los certicados generados se almacenan en el formato PEM. Los certicados por la CA privada tambin pueden ser usados para asegurar las conexiones de servidores Web como Apache o IIS, servidores de correo como Sendmail, Postrix, Courier IMAP Dovecot, servidores de directorio LDAP como OpenLDAP y otros servicios de red que soporten , conexiones SSL/TLS.
Nota De ahora en adelante tendr que cambiarse a ese directorio para realizar todas las tareas relacionadas con la emisin de certicados. Nos cambiaremos al directorio para inicializar la CA y generar los certicados principales.
/etc/openvpn/ExampleCA
root@vpn-matriz:~# cd /etc/openvpn/ExampleCA
Los parmetros globales para la generacin y administracin de la CA usando easy-rsa estan en el archivo denir los parmetros predeterminados para la creacin de la CA privada:
root@vpn-matriz:/etc/openvpn/ExampleCA# vim vars
vars,
KEY_DIR,
9 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
certicados. Es en este directorio donde se almacenaran las llaves privadas ( .key), los archivos de solicitud de certicado (.csr), los certicados (.crt) y otros archivos e como el serial y el index.txt. Por default KEY_DIR apunta a /etc/openvpn/ExampleCA/keys.
export KEY_DIR="$EASY_RSA/keys"
Nota
EASY_RSA
es una variable que apunta al directorio actual, es por eso que es importante cambiarse al directorio para que los scripts localicen el directorio de las llaves.
Los certicados al ser emitidos se les asigna una fecha de emisin y una fecha de expiracin, dena la variable CA_EXPIRE para denir el tiempo de expiracin para el certicado raz de la CA, por default esta congurado para que el certicado dure 10 aos, si desea denir otra fecha, por ejemplo 20 aos puede congurar:
export CA_EXPIRE=7300
El tiempo de expiracin para los certicados de servidores y clientes se denen en la variable KEY_EXPIRE, por default los certicados generados para clientes tendrn un tiempo de expiracin de 10 aos, quizs usted quiera generar certicados para clientes validos por un ao ya que usted quiere estar teniendo mayor control y aprovechar las capacidades de la lista de certicados revocados (CRL).
export KEY_EXPIRE=365
Nota En secciones adelante se ver como expirar y renovar certicados. Ahora deniremos los parmetros con la informacin general de nuestra CA
export export export export export KEY_COUNTRY="MX" KEY_PROVINCE="Distrito Federal" KEY_CITY="Ciudad de Mexico" KEY_ORG="Example Inc." KEY_EMAIL="[email protected]"
vars,
Los scripts de easy-rsa usan los parmetros de conguracin denidos en las variables del archivo usando el siguiente comando:
root@vpn-matriz:/etc/openvpn/ExampleCA# source vars NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/ExampleCA/keys
Antes de inicializar la CA ejecute el script clean-all, el cual se asegura que iniciemos con un entorno limpio, adems crea el archivo keys/index.txt en el cual se registra un ndice de archivos creados y su estado, tambin crea el archivo key/serial el cual se almacena el nmero de serie del ltimo certicado creado.
root@vpn-matriz:/etc/openvpn/ExampleCA# ./clean-all
Importante Una vez que ha creado los certicados para la CA, servidores y clientes no vuelva a ejecutar clean-all ya que borrara todos los archivos de los certicados. En la siguiente tabla se describe el propsito de los archivos y directorios creados por el script Tabla 5.1. Archivos de inicializacin de la CA Nombre de archivo keys index.txt serial Descripcin Directorio donde se almacenan las llaves y certicados. Archivo de ndice de certicados, en el se muestra informacin de validez entre otras cosas. Archivo con el nmero de serie de certicados.
clean-all:
Ahora inicialice la CA usando el script pkitool con la opcin una llave de paso (passphrase).
--initca.
--pass,
root@vpn-matriz:/etc/openvpn/ExampleCA# ./pkitool --initca --pass Using CA Common Name: Example Inc. CA Generating a 1024 bit RSA private key ...++++++ ......................++++++ writing new private key to 'ca.key' Enter PEM pass phrase:SuperPASSPHRASE!!! Verifying - Enter PEM pass phrase:SuperPASSPHRASE!!! -----
Nota Asegurese de usar una llave de paso lo bastante compleja para que no pueda ser adivinada. El script anterior crea dos archivos en el directorio
/etc/openvpn/ExampleCA/keys,
10 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
El archivo keys/ca.crt es el archivo del Certicado Raz de la CA, este archivo si es de carcter pblico y debe ser distribuido a todos los miembros de la VPN, este certicado ser usado por los clientes y servidores VPN para validar la autenticidad de las conexiones. El archivo
keys/ca.key
Nota Este archivo debe de permanecer en un lugar privado ya que si llegar a ser hurtado podra comprometer la seguridad de la VPN y la PKI en general. Use el comando openssl para ver el contenido del certicado raz, por ejemplo:
root@vpn-matriz:/etc/openvpn/ExampleCA# openssl x509 -in keys/ca.crt -noout -text Certificate: Data: Version: 3 (0x2) Serial Number: 86:42:77:0e:f8:7c:c7:e8 Signature Algorithm: sha1WithRSAEncryption Issuer: C=MX, ST=Distrito Federal, L=Ciudad de Mexico, O=Example Inc., CN=Example Inc. CA/[email protected] Validity Not Before: Oct 25 02:29:06 2010 GMT Not After : Oct 22 02:29:06 2020 GMT Subject: C=MX, ST=Distrito Federal, L=Ciudad de Mexico, O=Example Inc., CN=Example Inc. CA/[email protected] Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:95:a3:88:e9:32:d0:c9:6a:56:c8:ed:7c:5f:13: 76:90:46:94:64:8e:f9:6f:7e:ea:41:fe:b0:31:7c: 2f:d7:c3:26:a4:2c:44:45:94:63:f8:ae:c1:24:a3: 9e:04:d2:2c:c4:59:f9:1f:fb:33:57:a7:b8:cd:97: 52:db:1d:79:d2:47:1e:3f:4d:d7:3b:08:fc:7e:12: 92:c5:24:a6:2b:33:ee:cd:91:37:7b:37:46:7a:00: 17:4e:6b:0d:e9:6c:2c:84:26:26:25:4b:3a:2e:18: da:a7:d3:bc:6e:aa:6b:21:b4:2e:c8:7d:58:88:4d: 3e:04:8f:a1:4c:5c:9f:25:5b Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: A5:52:CC:48:FE:F7:D5:9C:76:8E:6C:A7:EF:73:8A:C1:EC:56:C7:BA X509v3 Authority Key Identifier: keyid:A5:52:CC:48:FE:F7:D5:9C:76:8E:6C:A7:EF:73:8A:C1:EC:56:C7:BA DirName:/C=MX/ST=Distrito Federal/L=Ciudad de Mexico/O=Example Inc./CN=Example Inc. CA/[email protected] serial:86:42:77:0E:F8:7C:C7:E8 X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption 91:03:ef:8e:18:90:88:7e:d2:aa:f4:b2:56:17:ac:70:01:97: 96:45:50:df:c1:13:4d:d3:1d:25:60:1b:6d:c9:d0:8a:69:7c: d3:3d:67:67:69:9a:2d:75:c2:6a:06:64:8b:15:a9:de:a4:fa: 8a:48:ee:50:e4:26:f6:a5:a9:32:4e:2f:5c:eb:ec:04:12:da: b4:9a:f3:9d:ea:f2:05:91:c7:16:99:45:63:6e:0d:9f:7f:84: 08:f2:31:72:5e:90:0b:02:68:2f:ba:de:be:66:56:7f:a3:3b: 64:71:49:eb:f9:a8:47:47:4e:05:bc:be:c0:a4:90:4d:2c:3c: 0f:b4
Nota Vea las fechas de emisin del certicado raz, son los 10 aos. El archivo del certicado raz debe ser copiado tanto al servidor como a los clientes OpenVPN. En las siguientes secciones veremos como generar los certicados para el servidor y clientes VPN, recuerde mantener seguro el archivo de la llave privada raz y recuerde su passphrase porque sera requerido cuando genere o revoque certicados de clientes y servidores.
11 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
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) [MX]:<ENTER> State or Province Name (full name) [Distrito Federal]:<ENTER> Locality Name (eg, city) [Ciudad de Mexico]:<ENTER> Organization Name (eg, company) [Example Inc.]:<ENTER> Organizational Unit Name (eg, section) []:Seguridad TI Common Name (eg, your name or your server's hostname) [fwproxy.example.com]:<ENTER> Email Address [[email protected]]:<ENTER> Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/ExampleCA/openssl.cnf Enter pass phrase for /etc/openvpn/ExampleCA/keys/ca.key:SuperPASSPHRASE!!! Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'MX' stateOrProvinceName :PRINTABLE:'Distrito Federal' localityName :PRINTABLE:'Ciudad de Mexico' organizationName :PRINTABLE:'Example Inc.' organizationalUnitName:PRINTABLE:'Seguridad TI' commonName :PRINTABLE:'fwproxy.example.com' emailAddress :IA5STRING:'[email protected]' Certificate is to be certified until Oct 25 02:52:09 2011 GMT (365 days) Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
Como pudimos ver, todos los valores fueron tomados de el archivo Que en nuestro caso fue: fwproxy.example.com.
vars
Podemos ver la informacin del certicado del servidor OpenVPN con el siguiente comando:
root@vpn-matriz:/etc/openvpn/ExampleCA# openssl x509 -noout -text -in keys/fwproxy.example.com.crt Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: C=MX, ST=Distrito Federal, L=Ciudad de Mexico, O=Example Inc., CN=Example Inc. CA/[email protected] Validity Not Before: Oct 25 02:52:09 2010 GMT Not After : Oct 25 02:52:09 2011 GMT Subject: C=MX, ST=Distrito Federal, L=Ciudad de Mexico, O=Example Inc., OU=Seguridad TI, CN=fwproxy.example.com/[email protected] Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:b9:18:84:c7:b6:43:4f:0f:03:05:c6:93:74:71: 4d:ac:30:74:d7:a1:e6:32:0a:1d:46:e3:73:ed:46: 75:5c:a9:53:7e:52:44:1d:45:49:98:11:9e:d6:0d: 32:a0:17:7e:d6:39:5f:ef:5f:10:dd:19:cd:d3:30: 4a:9f:9c:d1:4b:bc:0c:66:4b:fc:3b:5d:c8:d7:ae: ad:83:75:77:f9:3e:2a:59:2f:83:b2:f1:b0:ad:60: d9:2f:91:44:d8:8b:de:e3:de:b3:a1:df:3b:cb:40: eb:b3:8f:49:93:a9:64:0f:6b:f7:72:e3:2b:78:f8: 74:93:51:e2:71:41:eb:ac:b5 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Cert Type: SSL Server Netscape Comment: Easy-RSA Generated Server Certificate X509v3 Subject Key Identifier: 0D:EA:F3:17:33:6B:D6:B7:D3:3A:44:2A:1B:FE:E5:A3:DC:B6:80:A4 X509v3 Authority Key Identifier: keyid:A5:52:CC:48:FE:F7:D5:9C:76:8E:6C:A7:EF:73:8A:C1:EC:56:C7:BA DirName:/C=MX/ST=Distrito Federal/L=Ciudad de Mexico/O=Example Inc./CN=Example Inc. CA/[email protected] serial:86:42:77:0E:F8:7C:C7:E8 X509v3 Extended Key Usage: TLS Web Server Authentication X509v3 Key Usage: Digital Signature, Key Encipherment Signature Algorithm: sha1WithRSAEncryption 21:f5:53:84:dd:84:9f:a5:02:b6:de:96:01:5f:e0:91:34:31: b3:b6:ce:06:19:a8:c2:41:35:74:17:2e:77:3f:10:bb:48:4c: 9e:e3:ab:59:f3:a0:20:8c:16:eb:84:42:6c:e1:44:09:e4:4a: fd:97:d1:44:c6:b1:2f:ef:fe:62:ac:87:0a:c7:61:09:2a:78:
12 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Nota Vea que hay un atributo especial en este certicado Netscape Cert Type: SSL Server, este atributo se usar para reforzar la seguridad de la VPN. El servidor OpenVPN tambin requiere de un archivo con la llave Die-Hellman, El archivo con los parmetros Die-Hellman permite que el cliente y el servidor intercambien un secreto (key) de forma segura, sin requerir que ambos sistemas tengan una secreto pre compartido. Use el script build-dh para generar el archivo con los parmetros Die Hellman:
root@vpn-matriz:/etc/openvpn/ExampleCA# ./build-dh Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time .....................................+.................................................................+.................................................+......
keys/dh1024.pem,
El archivo de los parmetros Die Hellman solo es usado por el servidor OpenVPN y nunca debe ser copiado a los clientes. Copie el archivo del certicado raz keys/ca.crt, el archivo y llave pblica del servidor keys/fwproxy.example.com.crt, keys/fwproxy.example.com.key y el archivo de los parmetros Die-Hellman keys/dh1024.pem al directorio /etc/openvpn del servidor OpenVPN:, por ejemplo:
root@vpn-matriz:/etc/openvpn/ExampleCA# cp keys/ca.crt keys/fwproxy.example.com.{crt,key} keys/dh1024.pem /etc/openvpn/
Importante Asegurese que el archivo de la llave privada no tenga permisos de acceso para otros, se recomienda permisos 600. Considere que el certicado para el servidor tiene una validez de un ao, tome lo en consideracin para que prevenga la renovacin del certicado y sea instalado antes de que el certicado expire, de lo contrario los clientes no podrn conectarse al servidor.
13 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) [jperez.example.com]:<ENTER> Email Address [[email protected]]:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:<ENTER> An optional company name []:<ENTER> Using configuration from /etc/openvpn/ExampleCA/openssl.cnf Enter pass phrase for /etc/openvpn/ExampleCA/keys/ca.key:SuperPASSPHRASE!!! Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'MX' stateOrProvinceName :PRINTABLE:'Distrito Federal' localityName :PRINTABLE:'Ciudad de Mexico' organizationName :PRINTABLE:'Example Inc.' organizationalUnitName:PRINTABLE:'IT' commonName :PRINTABLE:'jperez.example.com' emailAddress :IA5STRING:'[email protected]' Certificate is to be certified until Oct 25 03:05:16 2011 GMT (365 days) Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
El script anterior crea tres archivos en el directorio Tabla 5.3. Archivos de certicados Nombre de archivo jperez.example.com.key Archivo de Llave Privada
/etc/openvpn/ExampleCA/keys,
Descripcin
jperez.example.com.csr Archivo de la peticin de certicado (Certicate Signing Request) jperez.example.com.crt Archivo de certicado (llave pblica)
De estos tres archivos solo el archivo de la llave privada y la llave pblica sern utilizados por el cliente VPN adems del archivo del certicado raz de la CA, transera de forma segura los archivos al cliente. En el siguiente ejemplo crearemos un certicado que ser utilizado por un Gateway VPN de la ocina remota en la ciudad de Guadalajara, el certicado para el gateway VPN remoto tendr la siguiente informacin: Nombre Persona o Host: guadalajara.example.com Departamento o nombre de empresa externa: Sucursal Guadalajara E-mail: [email protected] Nombre Certicado: guadalajara.example.com Para crear el certicado para el gateway VPN remoto guadalajara.example.com usaremos el script pkitool de forma interactiva de la siguiente manera:
root@vpn-matriz:/etc/openvpn/ExampleCA# ./pkitool --interact guadalajara.example.com Generating a 1024 bit RSA private key ...........++++++ ...................++++++ writing new private key to 'guadalajara.example.com.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) [MX]:<ENTER> State or Province Name (full name) [Distrito Federal]:Jalisco Locality Name (eg, city) [Ciudad de Mexico]:Guadalajara Organization Name (eg, company) [Example Inc.]:<ENTER> Organizational Unit Name (eg, section) []:Guadalajara Common Name (eg, your name or your server's hostname) [guadalajara.example.com]:<ENTER> Email Address [[email protected]]:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:<ENTER> An optional company name []:<ENTER> Using configuration from /etc/openvpn/ExampleCA/openssl.cnf Enter pass phrase for /etc/openvpn/ExampleCA/keys/ca.key:SuperPASSPHRASE!!! Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'MX' stateOrProvinceName :PRINTABLE:'Distrito Federal' localityName :PRINTABLE:'Ciudad de Mexico'
14 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
El script anterior crea tres archivos en el directorio Tabla 5.4. Archivos de certicados Nombre de archivo
/etc/openvpn/ExampleCA/keys,
Descripcin
guadalajara.example.com.csr Archivo de la peticin de certicado (Certicate Signing Request) guadalajara.example.com.key Archivo de Llave Privada guadalajara.example.com.crt Archivo de certicado (llave pblica)
keys/guadalajara.example.com.crt, keys/guadalajara.example.key,
Recursos adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se aconseja que acceda a los siguientes recursos adicionales.
Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas utilizados en este capitulo. http://en.wikipedia.org/wiki/RSA - RSA http://en.wikipedia.org/wiki/X.509 - X.509 http://en.wikipedia.org/wiki/Public_key_infrastructure - Public Key Infrastructure http://openvpn.net/index.php/open-source/documentation/howto.html#pki - OpenVPN HOWTO - Setting up your own Certicate Authority (CA) and generating certicates and keys for an OpenVPN server and multiple clients http://openvpn.net/index.php/open-source/documentation/miscellaneous/77-rsa-key-management.html - RSA Key Management http://www.packtpub.com/article/setting-up-openvpn-with-x509-certicates - Setting Up OpenVPN with X509 Certicates http://tldp.org/HOWTO/SSL-Certicates-HOWTO/ - SSL Certicates HOWTO http://www.rsa.com/rsalabs/node.asp?id=2248 - 3.6.1 What is Die-Hellman?
Paginas de manual
Para conocer ms sobre el uso y conguracin de los programas utilizados en el capitulo, se recomienda leer los manuales relacionados. openssl (1ssl) - OpenSSL command line tool
Objetivos
En este capituo veremos como realizar las tareas relacionadas a la instalacin de OpenVPN en sistemas GNU/Linux como Debian/Ubuntu, los objetivos son: Las tareas que realizaremos nos permitirn lograr los siguientes objetivos: Conocer los requisitos de sistema para instalar y ejecutar OpenVPN en GNU/Linux.
15 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Las tareas a realizar requieren que se tenga privilegios de administrador en el sistema, puede ser como usuario root o usando sudo, tambin se requieren conocimientos para ejecutar programas en la lnea de comandos y editar archivos de conguracin en modo texto.
Requisitos de sistema
Para poder ejecutar OpenVPN en un sistema GNU/Linux se deben de cumplir varios requerimientos de sistema, tanto a nivel del kernel como de bibliotecas de sistema. Adems se requieren de ciertas herramientas adicionales para la conguracn de interfaces de red virtuales y asignar las direcciones IP del tnel. Los requisitos son los siguientes: Privilegios de root - Para ejecutar OpenVPN es necesario tener privilegios de root ya que al ejecutarse el proceso se abre un puerto UDP/TCP tamben se requieren privielgios de root para cargar el soporte TUN , Driver Universal TUN/TAP - OpenVPN debe usar una interfaz de red virtual, en un sistema GNU/Linux se requiere que el controlador (driver) para dispositivos TUN/TAP este compilado en el sistema, ya sea como modulo cargable o como parte del nucleo. OpenSSL - OpenVPN requiere la bilioteca OpenSSL para realizar las funciones de cifrado. LZO - La biblioteca LZO es usada para comprimir los paquetes y as ecientar las comunicaciones, es bastante eciente con tuenles basados en UDP y en enlaces lentos. PAM - Cuando usa OpenVPN con mecanismos de autenticacin adicionales, como autenticacin por usuario y contrasea probablemente requiere usar PAM, en Debian/Ubuntu el soporte de PAM esta incluido por default, basicamente a travs de los paquetes: libpam0g, libpam-modules y libpam-runtime. En Redhat/CentOS no hay un paquete ocial de LZO (use de dag) y para PAM el paquete es: pam. Las tareas de instalacin y conguracin del servidor OpenVPN la realizaremos con el usuario root. Es necesario que el soporte para crear interfaces virtuales TUN/TAP este disponible en el sistema ante de poder establecer los tneles con OpenVPN, si el soporte TUN se incluye como mdulo del kernel entonces tendr que cargarlo antes de ejecutar OpenVPN, si el soporte est como esttico entonces no hay que cargar nada. En Ubuntu 8.04 Hardy el mdulo TUN esta incluido como mdulo cargable del kernel, vea el archivo de conguracin del kernel para ver como se compilo:
# grep -i "CONFIG_TUN=" /boot/config-2.6.24-23-server CONFIG_TUN=m
Puede ver la informacin del mdulo con el comando modinfo, por ejemplo:
# modinfo tun filename: alias: license: author: description: srcversion: depends: vermagic: /lib/modules/2.6.24-21-xen/kernel/drivers/net/tun.ko char-major-10-200 GPL (C) 1999-2004 Max Krasnyansky <[email protected]> Universal TUN/TAP device driver 08388FE146550F7E73EBDE9 2.6.24-21-xen SMP mod_unload
En distribuciones Ubuntu 10.04 Lucid el mdulo TUN esta incluido como esttico, por lo que no hay que preocuparse que el mdulo se cargue antes de iniciar el proceso de OpenVPN, por ejemplo:
$ grep -i "CONFIG_TUN=" /boot/config-2.6.32-31-generic CONFIG_TUN=y
Las interfaces virtuales TUN se establecen a travs del archivo de dispositivo en el sistema archivos /dev/net/tun*, es necesario que exista un archivo /dev/net/tun* para cada interfaz virtual, por ejemplo, para la interfaz TUN predeterminada se asigna el archivo /dev/net/tun:
$ ls -l /dev/net/tun crw-rw---- 1 root root 10, 200 2011-06-12 22:22 /dev/net/tun
Si no existe el archivo del dispositivo TUN puede crearlo manualmente con los siguientes comandos:
# mkdir -m 755 /dev/net # mknod /dev/net/tun c 10 200 # chmod 600 /dev/net/tun
Nota En algunas distribuciones como CentOS y Debian/Ubuntu el archivo es creado como parte del proceso de post instalacin del paquete. Cargue el mdulo del kernel con el comando modprobe, por ejemplo:
# modprobe tun # lsmod | grep tun tun
14336
En distribuciones Debian/Ubuntu el paquete que provee las bibliotecas OpenSSL se llama libssl, el soporte LZP lo provee el paquete liblzo2, ambos paquetes son dependencias requeridas para instalar el paquete OpenVPN.
16 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Es importante que el servidor OpenVPN abrira un socket UDP en el puerto 1194 por lo que si hay algn rewall de por medio abran dicho puerto para permitir las comunicacines entre el cliente y el servidor.
[ OK ]
La instalacin del paquete OpenVPN crea el directorio /etc/openvpn en donde se recomienda se almacenen los archivos de conguracin y otros archivos relacionados a la conguracin de OpenVPN, tambin se creo el script de inicializacin /etc/init.d/openvpn el cual se usa para controlar la ejecucin de las instancias de OpenVPN que se conguren en el directorio /etc/openvpn, los archivos de conguracin de las instancias de OpenVPN deben terminar con .conf. Este script esta congurado para inicializar OpenVPN las instancias de OpenVPN de forma automtica al inicio del sistema y apagarlas al apagar el sistema. En las siguientes capitulos y secciones veremos como y donde crear los archivos de conguracin de las instancias de OpenVPN y como controlar la ejecucin de forma manul y automtica.
requiere que exista un archivo de conguracin de OpenVPN en el directorio /etc/openvpn con terminacin .conf, por ejemplo use el comando:
/etc/openvpn
/hosta.conf.
/etc/openvpn/*.conf
Como vemos en la salida del comando anterior, nos conrma que el servidor fue iniciado con exito. Nota El script ejecuta el programa openvpn con el parametro --daemon por cada archivo de conguracin en el directorio con terminacin .conf, el proceso openvpn se ejecuta en segundo plano. Para detener una instancia de OpenVPN que se inicio con el script de control init use el comando:
# /etc/init.d/openvpn stop
/etc/openvpn/
Si realizo cambios signicantes en la conguracin del servidor o cliente OpenVPN, como cambio de direccin IP protocolo, puertos o directorios , de conguraciones, se aconseja reiniciar por completo el servicio OpenVPN el comando:
# /etc/init.d/openvpn restart
Si deseamos que el servicio OpenVPN sea iniciado al arranque del sistema, usaremos el comando:
# update-rc.d openvpn defaults
Nota Cuando se instala el paquete openvpn, se agre el servicio openvpn para que sea iniciado automaticamente al arranque del sistema, por lo que es posible que reciba un mensaje como el siguiente:
# update-rc.d openvpn defaults System startup links for /etc/init.d/openvpn already exist.
Si no deseamos que el servidor openvpn NO sea iniciado al arranque del sistema usaremos el comando:
# update-rc.d -f openvpn remove
Si esta realizando pruebas en las conguraciones o conexiones VPN se recomienda que ejecute el programa openvpn en primer plano para que as pueda localizar mensajes importantes o de error con mayor rapidez, por ejemplo:
# openvpn /etc/openvpn/hosta-debug.conf
Importante Para ver los mensajes de log en la salida estandar comente la o las directivas Si ejecuto openvpn en primer plano, presion Ctrl+C para cancelar su ejecucin.
log
log-append
en el archivo de conguracion.
17 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Con el comando anterior, ninguna instanca de OpenVPN ser iniciado al arranque del sistema, para controlarlo se tendr que hacer con alguno de los metodos antes mencionados o la Consola de Aministracin de OpenVPN.
Recursos adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se aconseja que acceda a los siguientes recursos adicionales.
Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas utilizados en este capitulo. http://openvpn.net/index.php/open-source/documentation/install.html - Installation Notes
Paginas de manual
Para conocer ms sobre el uso y conguracin de los programas utilizados en el capitulo, se recomienda leer los manuales relacionados. modprobe (8) - program to add and remove modules from the Linux Kernel modinfo (8) - program to show information about a Linux Kernel module lsmod (8) - program to show the status of modules in the Linux Kernel apt-get (8) - APT package handling utility - - command-line interface update-rc.d (8) - install and remove System-V style init script links openvpn (8) - secure IP tunnel daemon.
Requisitos de sistema
Los requisitos de sistema varian dependiendo del sistema operativo en el que se instale OpenVPN, siga las siguientes secciones para ver los requisitos especicos para GNU/Linux tanto para arquitecturas x86 como amd64 y MS Windows XP Professional, Windows Vista y Windows7 tanto para arquitecturas de 32 y 64bits.
Requisitos de sistema
Para poder ejecutar OpenVPN en un sistema GNU/Linux se deben de cumplir varios requerimientos de sistema, tanto a nivel del kernel como de bibliotecas de sistema. Adems se requieren de ciertas herramientas adicionales para la conguracn de interfaces de red virtuales y asignar las
18 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Privilegios de root - Para ejecutar OpenVPN es necesario tener privilegios de root ya que al ejecutarse el proceso se abre un puerto UDP/TCP tamben se requieren privielgios de root para cargar el soporte TUN , Driver Universal TUN/TAP - OpenVPN debe usar una interfaz de red virtual, en un sistema GNU/Linux se requiere que el controlador (driver) para dispositivos TUN/TAP este compilado en el sistema, ya sea como modulo cargable o como parte del nucleo. OpenSSL - OpenVPN requiere la bilioteca OpenSSL para realizar las funciones de cifrado. LZO - La biblioteca LZO es usada para comprimir los paquetes y as ecientar las comunicaciones, es bastante eciente con tuenles basados en UDP y en enlaces lentos. PAM - Cuando usa OpenVPN con mecanismos de autenticacin adicionales, como autenticacin por usuario y contrasea probablemente requiere usar PAM, en Debian/Ubuntu el soporte de PAM esta incluido por default, basicamente a travs de los paquetes: libpam0g, libpam-modules y libpam-runtime. En Redhat/CentOS no hay un paquete ocial de LZO (use de dag) y para PAM el paquete es: pam. Las tareas de instalacin y conguracin del servidor OpenVPN la realizaremos con el usuario root. Es necesario que el soporte para crear interfaces virtuales TUN/TAP este disponible en el sistema ante de poder establecer los tneles con OpenVPN, si el soporte TUN se incluye como mdulo del kernel entonces tendr que cargarlo antes de ejecutar OpenVPN, si el soporte est como esttico entonces no hay que cargar nada. En Ubuntu 8.04 Hardy el mdulo TUN esta incluido como mdulo cargable del kernel, vea el archivo de conguracin del kernel para ver como se compilo:
# grep -i "CONFIG_TUN=" /boot/config-2.6.24-23-server CONFIG_TUN=m
Puede ver la informacin del mdulo con el comando modinfo, por ejemplo:
# modinfo tun filename: alias: license: author: description: srcversion: depends: vermagic: /lib/modules/2.6.24-21-xen/kernel/drivers/net/tun.ko char-major-10-200 GPL (C) 1999-2004 Max Krasnyansky <[email protected]> Universal TUN/TAP device driver 08388FE146550F7E73EBDE9 2.6.24-21-xen SMP mod_unload
En distribuciones Ubuntu 10.04 Lucid el mdulo TUN esta incluido como esttico, por lo que no hay que preocuparse que el mdulo se cargue antes de iniciar el proceso de OpenVPN, por ejemplo:
$ grep -i "CONFIG_TUN=" /boot/config-2.6.32-31-generic CONFIG_TUN=y
Las interfaces virtuales TUN se establecen a travs del archivo de dispositivo en el sistema archivos /dev/net/tun*, es necesario que exista un archivo /dev/net/tun* para cada interfaz virtual, por ejemplo, para la interfaz TUN predeterminada se asigna el archivo /dev/net/tun:
$ ls -l /dev/net/tun crw-rw---- 1 root root 10, 200 2011-06-12 22:22 /dev/net/tun
Si no existe el archivo del dispositivo TUN puede crearlo manualmente con los siguientes comandos:
# mkdir -m 755 /dev/net # mknod /dev/net/tun c 10 200 # chmod 600 /dev/net/tun
Nota En algunas distribuciones como CentOS y Debian/Ubuntu el archivo es creado como parte del proceso de post instalacin del paquete. Cargue el mdulo del kernel con el comando modprobe, por ejemplo:
# modprobe tun # lsmod | grep tun tun
14336
En distribuciones Debian/Ubuntu el paquete que provee las bibliotecas OpenSSL se llama libssl, el soporte LZP lo provee el paquete liblzo2, ambos paquetes son dependencias requeridas para instalar el paquete OpenVPN. Es importante que el cliente OpenVPN se pueda conectar al servidor OpenVPN a travs del puerto UDP/1194, por lo que si hay algn rewall de por medio abran dicho puerto para permitir las comunicacines entre el cliente y el servidor.
19 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
[ OK ]
La instalacin del paquete OpenVPN crea el directorio /etc/openvpn en donde se recomienda se almacenen los archivos de conguracin y otros archivos relacionados a la conguracin de OpenVPN, tambin se creo el script de inicializacin /etc/init.d/openvpn el cual se usa para controlar la ejecucin de las instancias de OpenVPN que se conguren en el directorio /etc/openvpn, los archivos de conguracin de las instancias de OpenVPN deben terminar con .conf. Este script esta congurado para inicializar OpenVPN las instancias de OpenVPN de forma automtica al inicio del sistema y apagarlas al apagar el sistema. En las siguientes capitulos y secciones veremos como y donde crear los archivos de conguracin de las instancias de OpenVPN y como controlar la ejecucin de forma manul y automtica.
requiere que exista un archivo de conguracin de OpenVPN en el directorio /etc/openvpn con terminacin .conf, por ejemplo use el comando:
/etc/openvpn
/hosta.conf.
/etc/openvpn/*.conf
Como vemos en la salida del comando anterior, nos conrma que el servidor fue iniciado con exito. Nota El script ejecuta el programa openvpn con el parametro --daemon por cada archivo de conguracin en el directorio con terminacin .conf, el proceso openvpn se ejecuta en segundo plano. Para detener una instancia de OpenVPN que se inicio con el script de control init use el comando:
# /etc/init.d/openvpn stop
/etc/openvpn/
Si realizo cambios signicantes en la conguracin del servidor o cliente OpenVPN, como cambio de direccin IP protocolo, puertos o directorios , de conguraciones, se aconseja reiniciar por completo el servicio OpenVPN el comando:
# /etc/init.d/openvpn restart
Si deseamos que el servicio OpenVPN sea iniciado al arranque del sistema, usaremos el comando:
# update-rc.d openvpn defaults
Nota Cuando se instala el paquete openvpn, se agre el servicio openvpn para que sea iniciado automaticamente al arranque del sistema, por lo que es posible que reciba un mensaje como el siguiente:
# update-rc.d openvpn defaults System startup links for /etc/init.d/openvpn already exist.
Si no deseamos que el servidor openvpn NO sea iniciado al arranque del sistema usaremos el comando:
# update-rc.d -f openvpn remove
Si esta realizando pruebas en las conguraciones o conexiones VPN se recomienda que ejecute el programa openvpn en primer plano para que as pueda localizar mensajes importantes o de error con mayor rapidez, por ejemplo:
# openvpn /etc/openvpn/hosta-debug.conf
Si ejecuto openvpn en primer plano, presion Ctrl+C para cancelar su ejecucin. Con el comando anterior, ninguna instanca de OpenVPN ser iniciado al arranque del sistema, para controlarlo se tendr que hacer con alguno de los metodos antes mencionados o la Consola de Aministracin de OpenVPN.
20 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Adicionalmente, si el servidor OpenVPN enva informacin de red al cliente VPN, como la direccin IP del servidor DNS para usar en la VPN deber de asegurarse que los servicios Cliente DNS y Cliente DHCP estn habilitados y en ejecucin.
2. Debers de ver el asistente de instalacin, haz clic en Next > para proceder.
3. Ahora ver el acuerdo de licencia, si esta de acuerdo con los trminos de la licencia de clic en I Agree para continuar.
4. Ahora el asistente nos ofrece la oportunidad de seleccionar los componentes a instalar, instale todos los componentes (default) y haga clic en Next >.
21 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
5. Ahora elija la ruta de instalacin, la ruta predeterminada es: clic en Install para continuar.
haga
Nota Recuerde esta ruta ya que es en ella en donde se instalan los archivos de conguracin y certicados. 6. El proceso de instalacin inicia y el asistente de instalacin copiar los archivos al sistema a la ruta:
C:\Archivos de programa\OpenVPN.
7. El driver de la interfaz de red virtual TAP-Win32 Adapter V9 ser instalado durante el proceso de instalacin. Ya que el driver no esta rmado por Microsoft, un mensaje de alerta ser mostrado, podemos ignorar el mensaje y dar clic en Continuar.
22 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
8. Si la instalacin de los archivos de programa y el driver fue exitosa, entonces el asistente terminara el proceso de instalacin, demos clic en Next >.
9. Por ltimo nos ofrece leer el archivo README, haga clic en Finish para terminar.
23 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
2. Debers de ver el asistente de instalacin, haz clic en Next > para proceder.
3. Ahora ver el acuerdo de licencia, si esta de acuerdo con los trminos de la licencia de clic en I Agree para continuar.
4. Ahora el asistente nos ofrece la oportunidad de seleccionar los componentes a instalar, instale todos los componentes (default) y haga clic en Next >.
24 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
haga
Nota Recuerde esta ruta ya que es en ella en donde se instalan los archivos de conguracin y certicados. 6. El proceso de instalacin inicia y el asistente de instalacin copiar los archivos al sistema a la ruta: C:\Archivos de programa\OpenVPN. adems que solicita la instalacin del driver de la interfaz de red virtual TAP-Win32 Adapter V9. Haga clic sobre el botn Instalar para congurar la instalacin del controlador.
7. Si la instalacin de los archivos de programa y el driver fue exitosa, entonces el asistente terminara el proceso de instalacin, demos clic en Next >.
8. Por ltimo nos ofrece leer el archivo README en donde se le hace enfasis en que en las versiones de Windows Vista y Windows 7 debe ejecutar el cliente OpenVPN GUI como administrador, haga clic en Finish para terminar.
25 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
En sistemas con Windows Vista Windows 7, debido a las restricciones del sistema User Account Control (UAC), el sistema requiere que el usuario autorice la ejecucin del cliente OpenVPN con niveles elevados aun cuando el usuario sea administrador local, para darle la vuelta a este problema se puede realizar los siguientes pasos: En el icono de OpenVPN GUI que se agrega en el Escritorio, hacer clic con el botn derecho y seleccionar la opcin Ejecutar como administrador, por ejemplo:
Cuando el sistema UAC solicite autorizacin para que OpenVPN GUI realice cambios en el equipo haga cli en el botn Si, de esta forma se evitarn problemas para abrir la interfaz de red virtual TUN/TAP congurar parametros de red en la interfaz virtual y agregar rutas a las redes , remotas.
26 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Para predenir la ejecucin de OpenVPN como administrador de forma permanente haga clic con el botn derecho sobre el programa C:\Arhivos de Programa\OpenVPN\bin\openvpn-gui.1.0.3.exe sobre el icono del acceso directo de OpenVPN GUI del escritorio y seleccione la opcin Propiedades. Despus vaya a la pestaa Compatibilidad y vaya al bloque de Nivel de privilegio, seleccione la casilla para Ejecutar este programa como administrador.
El programa OpenVPN GUI es ejecutado y se mueve la bandeja del sistema, el icono nos muestra el estado de la conexin, cuando esta en color amarillo indica que se esta Conectando, cuando esta en verde indica un estado de Conectado, y cuando esta de color rojo indica que esta Desconectado. Haga clic con el botn derecho sobre el icon de OpenVPN GUI en la bandeja de sistema y seleccione la opcin connect para conectarse a la VPN. Hga clic con el botn derecho sobre el icono de OpenVPN GUI en la bandeja de sistema para desplegar el men contextual del cliente OpenVPN GUI, en el menu podemos ver el log de conexin (til en caso de problemas de conexin), asignar o cambiar la contrasea de la llave privada, o incluso editar el archivo de conguracin.
27 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Si no se puede conectar a la VPN y al nal del log de OpenVPN GUI aparece el mensaje All TAP-Win32 adapters on this system are currently in use puede signicar que: Ya hay un proceso de openvpn usando el adaptador de red TAP-WIN32 El adaptador esta marcado como desactivado, vaya al panel de control y active el dispositivo El usuario no tiene privilegios de administrador para poder usar el dispositivo (NOTA: En windows vista aunque el usuario que lo ejecute sea administrador no va a poder abrir el adaptador, tiene que ir al icono de OpenVPN GUI y dar clic con el boton derecho y seleccionar "ejecutar como administrador". En la mayora del los casos el adaptador de red TAP-Win32 fue desactivado, activelo e intente conectarse. En Windows Vista y Windows 7, el estado del adaptador de red TAP-Win32 se puede ver en el Panel de Control => Redes e Internet => Conexiones de red:
Si en el estado se ve el mensaje de Cable de red desconectado signica que la VPN no esta en uso, sin embargo, el adaptador si esta habilitado. Si la interfaz esta deshabilitada, el estado del adaptador se vera as:
Para habilitar el adaptador haga clic derecho sobre el adaptador y haga clic sobre la opcin Activar.
Recursos Adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se aconseja que acceda a los siguientes recursos adicionales.
Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas utilizados en este capitulo. http://openvpn.net/index.php/open-source/documentation/install.html - Installation Notes (Linux) http://openvpn.net/index.php/open-source/documentation/install.html?start=1 - Installation Notes - Installation (Win32)
Paginas de manual
Para conocer ms sobre el uso y conguracin de los programas utilizados en el capitulo, se recomienda leer los manuales relacionados. modprobe (8) - program to add and remove modules from the Linux Kernel modinfo (8) - program to show information about a Linux Kernel module lsmod (8) - program to show the status of modules in the Linux Kernel apt-get (8) - APT package handling utility - - command-line interface update-rc.d (8) - install and remove System-V style init script links openvpn (8) - secure IP tunnel daemon.
28 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Congurando el servidor OpenVPN de una conexin punto a punto Congurando el cliente OpenVPN de una conexin punto a punto Ejecutando scripts con OpenVPN para agregar rutas Conexiones VPN punto a punto usando el modo de autenticacin basada en certicados SSL/TLS Congurando el servidor OpenVPN de una conexin punto a punto Congurando el cliente OpenVPN de una conexin punto a punto Resolucin de problemas en conexiones VPN punto a punto con OpenVPN Recursos adicionales Sitios web Paginas de manual En este capitulo veremos como crear conexiones VPN punto a punto (host to host) con OpenVPN en sistemas GNU/Linux, este tipo de conexin es til para asegurar conexiones ya sean por internet o en redes locales. Los ejemplos de conexin que veremos las realizaremos con dos sistemas GNU/Linux, estos equipos se conectan a travs de Internet, uno tiene un elace dedicado con direccin IP ja y el otro tiene un elace ADSL con IP dinamica. Ambos sistemas usan la distribucin Linux Ubuntu Hardy 8.04 de 64-bit (aunque tambin son soportadas las arquitectuas de 32-bit). Veremos dos tipos de conguraciones para establecer los tneles VPN, una usando autenticacin con llaves estticas (pre shared key) y la otra usando autenticacin asimtrica con certicados x.509 TLS/SSL.
Conexiones VPN punto a punto usando el modo de autenticacin basada en llaves estticas
En esta seccin veremos las tareas requeridas para realizar una conexin VPN punto a punto usando el mtodo de autenticacin de llaves pre compartidas (pre shared key). Este tipo de conexiones punto a punto es la ms fcil de realizar ya que es la que menos operaciones requiere tanto del lado del cliente como del servidor. La llave pre compartida es de tipo HMAC de 2048 bits.
29 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
El modo p2p (predeterminado) usa una topologa punto-a-punto en donde la direccin IP virtual del peer remoto de la interfaz tun del cliente (10.5.0.1) siempre apunta a la direccin IP virtual local de la interfaz tun del servidor. Este modo asigna una direccin IP virtual individual a los clientes, solo use este modo para clientes NO Windows, ya que hay una limitante en el driver TAP de Windows. En el archivo de conguracin se usan los siguientes parmetros: mode p2p dev tun proto udp port 1194 # OpenVPN 2.0 uses UDP port 1194 by default # (ocial port assignment by iana.org 11/04). # OpenVPN 1.x uses UDP port 5000 by default. # Each OpenVPN tunnel must use # a dierent port number. # lport or rport can be used # to denote dierent ports # for local and remote. ifcong 10.5.0.1 10.5.0.2 secret /etc/openvpn/static.key cipher BF-CBC ;cipher BF-CBC # Blowsh (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES comp-lzo ping 10 Envar un Ping al host remoto sobre el canal de control TCP/UDP si no se ha enviado ningun paquete en los ultimos 10 segundos por el peer (debe de especicar ping en los dos puntos de la VPN, ya que los pings de openvpn no se les regresa el echo como en ping IP Cuando se usa . ping en los modos de seguridad --secret, --tls-server o --tls-client, los paquetes ping son enviados criptogrcamente seguros. ping-restart La opcin ping-restart es usada para mandar una seal SIGUSR1 al proceso openvpn si no se ha recibido un paquete ping o cualquier otro tipo de paquete desde el otro punto de la VPN Esta opcin es util en casos donde los peer remotos tienen direccin IP dinamica y un TTL DNS demasiado bajo, por ejemplo usando el servicio de http://dyndns.org/ ms el cliente DNS Dinamico ddclient. Para la instalacin y conguracin del cliente DNS dinamico ddclient ver el apendice Usando el servicio DNS Dinamico de DynDNS con el cliente Dinamico ddclient. ping-timer-rem Ejecuta ping-restart solo si tenemos una direccin remota, solo usar esta opcin cuando se usa en modo listen, y no se esta usando una opcin explicita de remote, esta opcin es util si no desea iniciar los conteos de timeout si no hasta que los clientes se contan. Los parametros persiste- nos ayudarn para evitar que se re-abrir o re-leer la interfaz tun y la llave estatica despues de un reinicio. persist-tun No cerrar o re-abrir el dispositivo La seal persist-key No re-leer el archivo de la llave cuando se reciba una seal SIGUSR1 o haya sucedido un
ping-restart. SIGUSR1 TUN/TAP,
up
down
ping-restart.
30 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Esta opcin puede ser combinada con la opcin user nobody para permitir reinicios cuando se recibe la seal SIGUSR1, normalmente si se tiran los privilegios de root en OpenVPN, el demonio no puede ser reiniciado ya que no ser capaz de re-leer los archivos de llave protegidos. script-security 2 log-append /var/log/openvpn.log Cuando se ejecuta OpenVPN como demonio en el background, dene la ruta al archivo de log para almacenar los eventos. verb 3 Nivel de severidad con la que se almacenan los logs. # 0 -- quiet except for fatal errors. # 1 -- mostly quiet, but display non-fatal network errors. # 3 -- medium output, good for normal operation. # 9 -- verbose, good for troubleshooting status /var/log/openvpn-status.log Registro de eventos para el estado de conexiones. En el log de estado se registra informacin Conexiones activas. truncadas. Informacin del cliente: IP pblica origen, certicado, IP virtual. bytes enviados y bytes recibidos por el cliente. Este archivo de estado es actualizado cada minuto. mute 50 Si se registran 50 mensajes consecutivos de la misma categoria de log sern omitidos. Ahora crearemos la llave esttica con la que el servidor OpenVPN se autenticar con su peer, esta llave ser compartida con el hostb.
root@hosta:~# cd /etc/openvpn/
--genkey:
/etc/openvpn/static.key
root@hosta:/etc/openvpn# cat static.key # # 2048 bit OpenVPN static key # -----BEGIN OpenVPN Static key V1----fd44e3c22e40176a8a81cea0c7248d94 791eda0773cfa625fe6c7752fa5d682e 5954df038b5ccf9d04d865e9d0a9d562 30e6ca4e656d930f179e2f0adc55ed40 ed71699940323f3685c3b1a0942dff0e f94c8eca75e86fd46e956e4452d1f82c f5a31667cf7e526ea93ad416a4fe0ffc 0a0c941a90f96142eab1f1672bbc2415 4b132da4c96ad0a769945e9983753d55 03b1cf67ef06ba1973df98e5687bf1e6 544431cefc7e684d618ac1c17318b95a 8ccda9e96638368b060d1c6ab2259187 c332d0675db525fd777c0ec5b32d6b08 97fc48d60fe24fac5635c6d49bd2a59a 56f4e24d9e3ff84ac7256881e8b336f7 3e2f50a9d8adbc6b4405d9e2c279ec12 -----END OpenVPN Static key V1-----
Nota Desde OpenVPN 1.5 se crean llaves estaticas HMAC de 2048 bits para la autenticacin, en versiones anteriores las llaves eran de 1024 bits. Importante El comando openvpn crea el archivo de la llave con permisos 600, se recomienda se mantengan los permisos 600 con los propietarios root:root para mantener seguro el archivo de la llave. Nota Se recomienda que transifera una copia del archivo de la llave al cliente por un medio seguro como SSH.
31 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
etc/openvpn/hosta-server-p2p-static.ovpn 2011 OpenVPN 2.1.0 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [MH] [PF_INET6] [eurephia] built on Jul 20 2010 2011 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables 2011 /usr/sbin/openvpn-vulnkey -q static.key 2011 Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key 2011 Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication 2011 Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key 2011 Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication 2011 TUN/TAP device tun0 opened 2011 TUN/TAP TX queue length set to 100 2011 /sbin/ifconfig tun0 10.5.0.1 pointopoint 10.5.0.2 mtu 1500 2011 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:4 ET:0 EL:0 ] 2011 Local Options hash (VER=V4): '642547a8' 2011 Expected Remote Options hash (VER=V4): '3f417e8d' 2011 Socket Buffers: R=[124928->131072] S=[124928->131072] 2011 UDPv4 link local (bound): [undef] 2011 UDPv4 link remote: [undef]
En otra consola use el comando ifcong para vericar que se creo la interfaz virtual TUN:
root@hosta:~# ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.5.0.1 P-t-P:10.5.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Nota La interfaz tun0 es de tipo Peer-To-Peer. La instancia de OpenVPN crea una ruta a la direccin del peer 10.5.0.2, use el comando route para vericarlo:
root@hosta:~# route -n | grep tun 10.5.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
El proceso openvpn abre un socket UDP local en el puerto UDP 1194, podemos verlo con netstat:
root@hosta:~# netstat -plun | grep openvpn udp 0 0 0.0.0.0:1194 0.0.0.0:* 7198/openvpn
Si no se presentaron problemas con la ejecucin de OpenVPN cancele el proceso y renombre el archivo de conguracin con terminacin .conf para controlar la instancia usando el script /etc/init.d/openvpn:
root@hosta:~# mv etc/openvpn/hosta-server-p2p-static.ovpn etc/openvpn/hosta-server-p2p-static.conf
[ OK ]
32 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
cipher BF-CBC comp-lzo ping 10 ping-restart 180 ping-timer-rem persist-tun persist-key script-security 2 log-append /var/log/openvpn.log verb 3 status /var/log/openvpn-status.log mute 50
En el archivo de conguracin se usan los siguientes parmetros: mode p2p dev tun proto udp port 1194 # OpenVPN 2.0 uses UDP port 1194 by default # (ocial port assignment by iana.org 11/04). # OpenVPN 1.x uses UDP port 5000 by default. # Each OpenVPN tunnel must use # a dierent port number. # lport or rport can be used # to denote dierent ports # for local and remote. ifcong 10.5.0.1 10.5.0.2 secret /etc/openvpn/static.key cipher BF-CBC ;cipher BF-CBC # Blowsh (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES comp-lzo ping 10 Envar un Ping al host remoto sobre el canal de control TCP/UDP si no se ha enviado ningun paquete en los ultimos 10 segundos por el peer (debe de especicar ping en los dos puntos de la VPN, ya que los pings de openvpn no se les regresa el echo como en ping IP Cuando se usa . ping en los modos de seguridad --secret, --tls-server o --tls-client, los paquetes ping son enviados criptogrcamente seguros. ping-restart La opcin ping-restart es usada para mandar una seal SIGUSR1 al proceso openvpn si no se ha recibido un paquete ping o cualquier otro tipo de paquete desde el otro punto de la VPN Esta opcin es util en casos donde los peer remotos tienen direccin IP dinamica y un TTL DNS demasiado bajo, por ejemplo usando el servicio de http://dyndns.org/ ms el cliente DNS Dinamico ddclient. Para la instalacin y conguracin del cliente DNS dinamico ddclient ver el apendice Usando el servicio DNS Dinamico de DynDNS con el cliente Dinamico ddclient. ping-timer-rem Ejecuta ping-restart solo si tenemos una direccin remota, solo usar esta opcin cuando se usa en modo listen, y no se esta usando una opcin explicita de remote, esta opcin es util si no desea iniciar los conteos de timeout si no hasta que los clientes se contan. Los parametros persiste- nos ayudarn para evitar que se re-abrir o re-leer la interfaz tun y la llave estatica despues de un reinicio. persist-tun No cerrar o re-abrir el dispositivo La seal persist-key No re-leer el archivo de la llave cuando se reciba una seal SIGUSR1 o haya sucedido un
ping-restart. SIGUSR1 TUN/TAP,
up
down
ping-restart.
Esta opcin puede ser combinada con la opcin user nobody para permitir reinicios cuando se recibe la seal SIGUSR1, normalmente si se tiran los privilegios de root en OpenVPN, el demonio no puede ser reiniciado ya que no ser capaz de re-leer los archivos de llave protegidos. script-security 2
33 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Cuando se ejecuta OpenVPN como demonio en el background, dene la ruta al archivo de log para almacenar los eventos. verb 3 Nivel de severidad con la que se almacenan los logs. # 0 -- quiet except for fatal errors. # 1 -- mostly quiet, but display non-fatal network errors. # 3 -- medium output, good for normal operation. # 9 -- verbose, good for troubleshooting status /var/log/openvpn-status.log Registro de eventos para el estado de conexiones. En el log de estado se registra informacin Conexiones activas. truncadas. Informacin del cliente: IP pblica origen, certicado, IP virtual. bytes enviados y bytes recibidos por el cliente. Este archivo de estado es actualizado cada minuto. Copie la llave esttica desde el servidor usando scp:
root@hostb:~# cd /etc/openvpn/ root@hostb:/etc/openvpn# scp root@hosta:/etc/openvpn/static.key .
En hostb el proceso openvpn crea una interfaz tun0, use el comando ifcong para ver la informacin:
root@hostb:~# ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.5.0.2 P-t-P:10.5.0.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:10 errors:0 dropped:0 overruns:0 frame:0 TX packets:13 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:840 (840.0 B) TX bytes:1092 (1.0 KB)
Use el comando ping para probar la conectividad entre el cliente y el servidor OpenVPN usando la direccin IP privada del tnel:
root@hostb:~# PING 10.5.0.1 64 bytes from 64 bytes from 64 bytes from ping -c 3 10.5.0.1 (10.5.0.1) 56(84) bytes of data. 10.5.0.1: icmp_req=1 ttl=64 time=81.9 ms 10.5.0.1: icmp_req=2 ttl=64 time=79.9 ms 10.5.0.1: icmp_req=3 ttl=64 time=80.3 ms
34 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Pruebe la conectivdad con el servidor haca el cliente usando la direccin IP del tnel VPN:
root@hosta:~# PING 10.5.0.2 64 bytes from 64 bytes from 64 bytes from ping -c 3 10.5.0.2 (10.5.0.2) 56(84) bytes of data. 10.5.0.2: icmp_seq=1 ttl=64 time=79.9 ms 10.5.0.2: icmp_seq=2 ttl=64 time=79.3 ms 10.5.0.2: icmp_seq=3 ttl=64 time=79.4 ms
--- 10.5.0.2 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 79.314/79.581/79.960/0.426 ms
Si no se presentaron problemas con la ejecucin de OpenVPN cancele el proceso y renombre el archivo de conguracin con terminacin .conf para controlar la instancia usando el script /etc/init.d/openvpn:
root@hostb:~# mv /etc/openvpn/hostb-cliente-p2p-static.ovpn /etc/openvpn/hostb-cliente-p2p-static.conf
[ OK ]
El script contiene:
$ cat office.up #!/bin/sh route add -net 10.0.1.0 netmask 255.255.255.0 gw $5
Recuerde que el archivo del script debe tener permisos de ejecucin. Y en el cliente:
# Our up script will establish routes # once the VPN is alive. up ./home.up
El script:
$ cat home.up #!/bin/sh route add -net 10.0.0.0 netmask 255.255.255.0 gw $5
Conexiones VPN punto a punto usando el modo de autenticacin basada en certicados SSL/TLS
En esta seccin veremos las tareas requeridas para realizar una conexin VPN punto a punto usando el mtodo de certicados x.509 (TLS/SSL). Una de las ventajas de usar autenticacin basada en certicados SSL es que pueden ser usados para tneles punto a punto y tambin para VPNs con mltiples clientes. Para informacin de la creacin de los certicados de el servidor y clientes OpenVPN ver el cpitulo Conguracin de una Autoridad Certicadora con OpenSSL.
35 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Ell modo p2p (predeterminado) usa una topologa punto-a-punto en donde la direccin IP virtual del peer remoto de la interfaz tun del cliente (10.5.0.1) siempre apunta a la direccin IP virtual local de la interfaz tun del servidor. Este modo asigna una direccin IP virtual individual a los clientes, solo use este modo para clientes NO Windows, ya que hay una limitante en el driver TAP de Windows. En el archivo de conguracin se usan los siguientes parmetros: mode p2p dev tun proto udp port 1194 # OpenVPN 2.0 uses UDP port 1194 by default # (ocial port assignment by iana.org 11/04). # OpenVPN 1.x uses UDP port 5000 by default. # Each OpenVPN tunnel must use # a dierent port number. # lport or rport can be used # to denote dierent ports # for local and remote. ifcong 10.5.0.1 10.5.0.2 secret /etc/openvpn/static.key cipher BF-CBC ;cipher BF-CBC # Blowsh (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES comp-lzo ping 10 Envar un Ping al host remoto sobre el canal de control TCP/UDP si no se ha enviado ningun paquete en los ultimos 10 segundos por el peer (debe de especicar ping en los dos puntos de la VPN, ya que los pings de openvpn no se les regresa el echo como en ping IP Cuando se usa . ping en los modos de seguridad --secret, --tls-server o --tls-client, los paquetes ping son enviados criptogrcamente seguros. ping-restart La opcin ping-restart es usada para mandar una seal SIGUSR1 al proceso openvpn si no se ha recibido un paquete ping o cualquier otro tipo de paquete desde el otro punto de la VPN Esta opcin es util en casos donde los peer remotos tienen direccin IP dinamica y un TTL DNS demasiado bajo, por ejemplo usando el servicio de http://dyndns.org/ ms el cliente DNS Dinamico ddclient. Para la instalacin y conguracin del cliente DNS dinamico ddclient ver el apendice Usando el servicio DNS Dinamico de DynDNS con el cliente Dinamico ddclient. ping-timer-rem Ejecuta ping-restart solo si tenemos una direccin remota, solo usar esta opcin cuando se usa en modo listen, y no se esta usando una opcin explicita de remote, esta opcin es util si no desea iniciar los conteos de timeout si no hasta que los clientes se contan.
36 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Los parametros persiste- nos ayudarn para evitar que se re-abrir o re-leer la interfaz tun y la llave estatica despues de un reinicio. persist-tun No cerrar o re-abrir el dispositivo La seal persist-key No re-leer el archivo de la llave cuando se reciba una seal SIGUSR1 o haya sucedido un
ping-restart. SIGUSR1 TUN/TAP,
up
down
ping-restart.
Esta opcin puede ser combinada con la opcin user nobody para permitir reinicios cuando se recibe la seal SIGUSR1, normalmente si se tiran los privilegios de root en OpenVPN, el demonio no puede ser reiniciado ya que no ser capaz de re-leer los archivos de llave protegidos. script-security 2 log-append /var/log/openvpn.log Cuando se ejecuta OpenVPN como demonio en el background, dene la ruta al archivo de log para almacenar los eventos. verb 3 Nivel de severidad con la que se almacenan los logs. # 0 -- quiet except for fatal errors. # 1 -- mostly quiet, but display non-fatal network errors. # 3 -- medium output, good for normal operation. # 9 -- verbose, good for troubleshooting status /var/log/openvpn-status.log Registro de eventos para el estado de conexiones. En el log de estado se registra informacin Conexiones activas. truncadas. Informacin del cliente: IP pblica origen, certicado, IP virtual. bytes enviados y bytes recibidos por el cliente. Este archivo de estado es actualizado cada minuto. mute 50 Si se registran 50 mensajes consecutivos de la misma categoria de log sern omitidos. Ahora incie la instancia del servidor OpenVPN en el hosta:
root@hosta# openvpn Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 Thu Jun 16 00:31:47 /etc/openvpn/hosta-pserver-2p-tls.ovpn 2011 OpenVPN 2.1_rc7 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] built on Dec 15 2010 2011 Diffie-Hellman initialized with 1024 bit key 2011 /usr/bin/openssl-vulnkey -q -b 1024 -m <modulus omitted> 2011 LZO compression initialized 2011 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ] 2011 TUN/TAP device tun0 opened 2011 TUN/TAP TX queue length set to 100 2011 ifconfig tun0 10.5.0.1 pointopoint 10.5.0.2 mtu 1500 2011 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ] 2011 Local Options hash (VER=V4): '917749b8' 2011 Expected Remote Options hash (VER=V4): '84c0f112' 2011 Socket Buffers: R=[124928->131072] S=[124928->131072] 2011 UDPv4 link local (bound): [undef]:1191 2011 UDPv4 link remote: [undef]
En otra consola use el comando ifcong para vericar que se creo la interfaz virtual TUN:
root@hosta:~# ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.5.0.1 P-t-P:10.5.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Nota La interfaz tun0 es de tipo Peer-To-Peer. La instancia de OpenVPN crea una ruta a la direccin del peer 10.5.0.2, use el comando route para vericarlo:
root@hosta:~# route -n | grep tun 10.5.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
37 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
El proceso openvpn abre un socket UDP local en el puerto UDP 1194, podemos verlo con netstat:
root@hosta:~# netstat -plun | grep openvpn udp 0 0 0.0.0.0:1194 0.0.0.0:* 7198/openvpn
Si no se presentaron problemas con la ejecucin de OpenVPN cancele el proceso y renombre el archivo de conguracin con terminacin .conf para controlar la instancia usando el script /etc/init.d/openvpn:
root@hosta:~# mv etc/openvpn/hosta-server-p2p-tls.ovpn etc/openvpn/hosta-server-p2p-tls.conf
[ OK ]
En el archivo de conguracin se usan los siguientes parmetros: mode p2p dev tun proto udp port 1194 # OpenVPN 2.0 uses UDP port 1194 by default # (ocial port assignment by iana.org 11/04). # OpenVPN 1.x uses UDP port 5000 by default. # Each OpenVPN tunnel must use # a dierent port number. # lport or rport can be used
38 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
;cipher BF-CBC # Blowsh (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES comp-lzo ping 10 Envar un Ping al host remoto sobre el canal de control TCP/UDP si no se ha enviado ningun paquete en los ultimos 10 segundos por el peer (debe de especicar ping en los dos puntos de la VPN, ya que los pings de openvpn no se les regresa el echo como en ping IP Cuando se usa . ping en los modos de seguridad --secret, --tls-server o --tls-client, los paquetes ping son enviados criptogrcamente seguros. ping-restart La opcin ping-restart es usada para mandar una seal SIGUSR1 al proceso openvpn si no se ha recibido un paquete ping o cualquier otro tipo de paquete desde el otro punto de la VPN Esta opcin es util en casos donde los peer remotos tienen direccin IP dinamica y un TTL DNS demasiado bajo, por ejemplo usando el servicio de http://dyndns.org/ ms el cliente DNS Dinamico ddclient. Para la instalacin y conguracin del cliente DNS dinamico ddclient ver el apendice Usando el servicio DNS Dinamico de DynDNS con el cliente Dinamico ddclient. ping-timer-rem Ejecuta ping-restart solo si tenemos una direccin remota, solo usar esta opcin cuando se usa en modo listen, y no se esta usando una opcin explicita de remote, esta opcin es util si no desea iniciar los conteos de timeout si no hasta que los clientes se contan. Los parametros persiste- nos ayudarn para evitar que se re-abrir o re-leer la interfaz tun y la llave estatica despues de un reinicio. persist-tun No cerrar o re-abrir el dispositivo La seal persist-key No re-leer el archivo de la llave cuando se reciba una seal SIGUSR1 o haya sucedido un
ping-restart. SIGUSR1 TUN/TAP,
up
down
ping-restart.
Esta opcin puede ser combinada con la opcin user nobody para permitir reinicios cuando se recibe la seal SIGUSR1, normalmente si se tiran los privilegios de root en OpenVPN, el demonio no puede ser reiniciado ya que no ser capaz de re-leer los archivos de llave protegidos. script-security 2 log-append /var/log/openvpn.log Cuando se ejecuta OpenVPN como demonio en el background, dene la ruta al archivo de log para almacenar los eventos. verb 3 Nivel de severidad con la que se almacenan los logs. # 0 -- quiet except for fatal errors. # 1 -- mostly quiet, but display non-fatal network errors. # 3 -- medium output, good for normal operation. # 9 -- verbose, good for troubleshooting status /var/log/openvpn-status.log Registro de eventos para el estado de conexiones. En el log de estado se registra informacin Conexiones activas. truncadas. Informacin del cliente: IP pblica origen, certicado, IP virtual. bytes enviados y bytes recibidos por el cliente. Este archivo de estado es actualizado cada minuto. Ahora incie la instancia del cliente OpenVPN en el hostb:
root@hostb:/etc/openvpn# Thu Jun 16 00:34:15 2011 Thu Jun 16 00:34:15 2011 Thu Jun 16 00:34:15 2011 Thu Jun 16 00:34:15 2011 openvpn hostb-cliente-p2p-tls.conf OpenVPN 2.1.0 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [MH] [PF_INET6] [eurephia] built on Jul 20 2010 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info. NOTE: the current --script-security setting may allow this configuration to call user-defined scripts /usr/bin/openssl-vulnkey -q -b 1024 -m <modulus omitted>
39 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
LZO compression initialized Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ] ROUTE default_gateway=69.60.120.1 TUN/TAP device tun0 opened TUN/TAP TX queue length set to 100 /sbin/ifconfig tun0 10.5.0.2 pointopoint 10.5.0.1 mtu 1500 /sbin/route add -net 192.168.221.0 netmask 255.255.255.0 gw 10.5.0.1 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ] Local Options hash (VER=V4): '84c0f112' Expected Remote Options hash (VER=V4): '917749b8' Socket Buffers: R=[124928->131072] S=[124928->131072] UDPv4 link local: [undef] UDPv4 link remote: [AF_INET]187.159.147.126:1191 TLS: Initial packet from [AF_INET]187.159.147.126:1191, sid=b05aa560 efa14244 VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=Fort-Funston/CN=Fort-Funston_CA/[email protected] VERIFY OK: depth=0, /C=MX/ST=Mexico_City/L=X/O=Fort-Funston/OU=redes/CN=vpngw1.example.com/[email protected] Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA [vpngw1.example.com] Peer Connection Initiated with [AF_INET]187.159.147.126:1191 Initialization Sequence Completed
TLS: Initial packet from 69.60.121.173:56554, sid=202cc0c6 2722aad7 VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=Fort-Funston/CN=Fort-Funston_CA/[email protected] VERIFY OK: depth=0, /C=MX/ST=Jalisco/L=Guadalajara/O=Sucuresal_Guadalajara/OU=x/CN=guadalajara.example.com/[email protected] Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA [guadalajara.example.com] Peer Connection Initiated with 69.60.121.173:56554 Initialization Sequence Completed
En hostb el proceso openvpn crea una interfaz tun0, use el comando ifcong para ver la informacin:
root@hostb:~# ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.5.0.2 P-t-P:10.5.0.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:10 errors:0 dropped:0 overruns:0 frame:0 TX packets:13 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:840 (840.0 B) TX bytes:1092 (1.0 KB)
Use el comando ping para probar la conectividad entre el cliente y el servidor OpenVPN usando la direccin IP privada del tnel:
root@hostb:~# PING 10.5.0.1 64 bytes from 64 bytes from 64 bytes from ping -c 3 10.5.0.1 (10.5.0.1) 56(84) bytes of data. 10.5.0.1: icmp_req=1 ttl=64 time=81.9 ms 10.5.0.1: icmp_req=2 ttl=64 time=79.9 ms 10.5.0.1: icmp_req=3 ttl=64 time=80.3 ms
--- 10.5.0.1 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 79.937/80.738/81.945/0.868 ms
Pruebe la conectivdad con el servidor haca el cliente usando la direccin IP del tnel VPN:
root@hosta:~# PING 10.5.0.2 64 bytes from 64 bytes from 64 bytes from ping -c 3 10.5.0.2 (10.5.0.2) 56(84) bytes of data. 10.5.0.2: icmp_seq=1 ttl=64 time=79.9 ms 10.5.0.2: icmp_seq=2 ttl=64 time=79.3 ms 10.5.0.2: icmp_seq=3 ttl=64 time=79.4 ms
--- 10.5.0.2 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 79.314/79.581/79.960/0.426 ms
Si no se presentaron problemas con la ejecucin de OpenVPN cancele el proceso y renombre el archivo de conguracin con terminacin .conf para controlar la instancia usando el script /etc/init.d/openvpn:
root@hostb:~# mv /etc/openvpn/hostb-cliente-p2p-tls.ovpn /etc/openvpn/hostb-cliente-p2p-tls.conf
[ OK ]
40 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Recursos adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se aconseja que acceda a los siguientes recursos adicionales.
Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas utilizados en este capitulo. http://openvpn.net/index.php/open-source/documentation/miscellaneous/78-static-key-mini-howto.html - Static Key Mini-HOWTO http://openvpn.net/index.php/open-source/documentation/howto.html#pki - OpenVPN HOWTO - Setting up your own Certicate Authority (CA) and generating certicates and keys for an OpenVPN server and multiple clients
Paginas de manual
Para conocer ms sobre el uso y conguracin de los programas utilizados en el capitulo, se recomienda leer los manuales relacionados. ifcong (8) - congure a network interface route (8) - show / manipulate the IP routing table netstat (8) - Print network connections, routing tables, interface statistics, masquerade con... openvpn (8) - secure IP tunnel daemon. openvpn-vulnkey (1) - check blacklist of compromised keys
Objetivos
Los objetivos que se buscan son: Conectar a travs de un tnel VPN dos ocinas remotas. Congurar el servidor OpenVPN en modo server (TLS) en la red de Matriz. Congurar el cliente OpenVPN en modo client (TLS) en la red de Monterrey para establecer el tnel VPN con matriz. Permitir que los clientes en la red LAN de la ocina de monterrey 192.168.200.0/24 puedan alcanzar los servidores de archivos en la red de Matriz 192.168.99.12. Permitir que los clientes en la red LAN de la ocina Matriz 192.168.99.0/24 puedan alcanzar los servidores de archivos en la red de Monterrey 192.168.200.2. Congurar el servidor OpenVPN para permitir conexiones entre clientes OpenVPN y las redes remotas.
41 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
En la ocina de Monterrey se tiene un enlace ADSL de 2Mbps con direccin IP dinmica. En cada ocina se tiene un servidor GNU/Linux con dos tarjetas de red una WAN y otra LAN, estos servidores realizan funciones de Firewall y Router de Internet, son el gateway predeterminado de los equipos en las redes privadas. La red LAN de cada ocina remota usa un segmento de red IP nico, en la LAN Matriz es la subred 192.168.99.0/24 y 192.168.200.0/24 en la LAN de Monterrey. En el siguiente diagrama se describe la forma en que estan conectadas a Internet las redes de las dos ocinas: Figura 9.1. Dos Redes Remotas
En las siguientes secciones veremos como congurar el servidor OpenVPN en el servidor gateway de la ocina Matriz, y el cliente en el servidor gateway de la ocina de Monterrey.
Copie los archivos del directorio keys de easy-rsa a la ruta que se muestra e la tabla de arriba. Si los certicados fueron creados en otro equipo, entonces transera los certicados por un medio seguro haca el servidor, por ejemplo SSH/SCP o Corre electrnico seguro usando PGP (GNUPG). Creamos el archivo de conguracin para el servidor OpenVPN:
root@hosta:/etc/openvpn# vim hosta-server-s2s-tls.ovpn
42 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
El modo server (basado en tls-server) usa una subred de clase C para asignar una direccin IP a cada cliente VPN, puede asignar las direcciones IP virtuales de forma dinamica o estatica en base al nombre comn del certicado del cliente, para cada cliente que se conecta usa una subred /30 (4 IPs por conexin). En este modo se pueden conectar mltiples clientes, tanto GNU/Linux, Windows y otros sistemas operativos con autenticacin basada en certicados TLS/SSL. En el archivo de conguracin se usan los siguientes parmetros: server 10.8.0.0 255.255.255.0 A helper directive designed to simplify the conguration of OpenVPN's server mode. This directive will set up an OpenVPN server which will allocate addresses to clients out of the given network/netmask. The server itself will take the ".1" address of the given network for use as the server-side endpoint of the local TUN/TAP interface. For example, --server 10.8.0.0 255.255.255.0 expands as follows:
mode server tls-server push "topology [topology]" if dev tun AND (topology == net30 OR topology == p2p): ifconfig 10.8.0.1 10.8.0.2 if !nopool: ifconfig-pool 10.8.0.4 10.8.0.251 route 10.8.0.0 255.255.255.0 if client-to-client: push "route 10.8.0.0 255.255.255.0" else if topology == net30: push "route 10.8.0.1" if dev tap OR (dev tun AND topology == subnet): ifconfig 10.8.0.1 255.255.255.0 if !nopool: ifconfig-pool 10.8.0.2 10.8.0.254 255.255.255.0 push "route-gateway 10.8.0.1"
Don't use --server if you are ethernet bridging. Use --server-bridge instead. --push option Push a cong le option back to the client for remote execution. Note that option must be enclosed in double quotes (""). The client must specify --pull in its cong le. The set of options which can be pushed is limited by both fea sibility and security. Some options such as those which would execute scripts are banned, since they would eectively allow a compromised server to execute arbitrary code on the client. Other options such as TLS or MTU parameters cannot be pushed because the client needs to know them before the connection to the server can be initiated. This is a partial list of options which can currently be pushed: --route, --route-gateway, --route-delay, --redirect-gate way, --ip-win32, --dhcpoption, --inactive, --ping, --ping-exit, --ping-restart, --setenv, --persist-key, --persist-tun, --echo, --comp-lzo, --socket-ags, --sndbuf, --rcvbuf --ifcong-pool start-IP end-IP [netmask] Set aside a pool of subnets to be dynamically allocated to connecting clients, similar to a DHCP server. For tun-style tunnels, each client will be given a /30 subnet (for interoperability with Windows clients). For tap-style tunnels, indi vidual addresses will be allocated, and the optional netmask parameter will also be pushed to clients. dev tun El tipo de dispositivos tun es usado para VPN de tipo routed.
43 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Persist/unpersist ifcong-pool data to le, at seconds intervals (default=600), as well as on program startup and shut down. The goal of this option is to provide a long-term association between clients (denoted by their common name) and the vir tual IP address assigned to them from the ifcong-pool. Maintaining a long-term association is good for clients because it allows them to eectively use the --persist-tun option. le is a comma-delimited ASCII le, formatted as <Common-Name>,<IP-address>. If seconds = 0, le will be treated as read-only. This is useful if you would like to treat le as a conguration le. Note that the entries in this le are treated by OpenVPN as suggestions only, based on past associations between a common name and IP address. They do not guarantee that the given common name will always receive the given IP address. If you want guaranteed assignment, use --ifcong-push client-cog-dir ccd Indica la ruta del Directorio de Conguraciones de Clientes (Client Cong Directory), en este caso usaremos el directorio ccd localizado en la misma ruta que el archivo de conguracin, es decir, en el /etc/openvpn/ccd/ almacenaremos las conguraciones para los clientes. Specify a directory dir for custom client cong les. After a connecting client has been authenticated, OpenVPN will look in this directory for a le having the same name as the client's X509 common name. If a matching le exists, it will be opened and parsed for client-specic conguration options. If no matching le is found, OpenVPN will instead try to open and parse a default le called "DEFAULT", which may be provided but is not required. This le can specify a xed IP address for a given client using --ifcong-push, as well as xed subnets owned by the client using --iroute. One of the useful properties of this option is that it allows client conguration les to be conveniently created, edited, or removed while the server is live, without needing to restart the server. The following options are legal in a client-specic context: --push, --push-reset, --iroute, --ifcong-push, and --con g. cipher BF-CBC ;cipher BF-CBC # Blowsh (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES comp-lzo keepalive 10 60 La directiva keepalive establece las directivas --ping y --ping-restart en el servidor y tambin las enva va push al cliente. Esto causa que se envien mensajes tipo ping desde ambos lados del tnel de manera que cada lado sepa cuando el otro lado este caido. Se envian Pings cada 10 segundos, si no se recibe ningun paquete desde el peer remoto durante un periodo de 120 segundos el cliente es considerado caido. Keepalive es una macro que se expande, por ejemplo si usa keepalive 10 60, equivale a:
if mode server: ping 10 ping-restart 120 push "ping 10" push "ping-restart 60" else ping 10 ping-restart 60
44 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Nota Con esta opcin en el servidor no es necesario denir --ping y --ping-restart en el archivo de conguracin del cliente a menos que desee usar parmetros diferentes. ping-restart La opcin ping-restart es usada para mandar una seal SIGUSR1 al proceso openvpn si no se ha recibido un paquete ping o cualquier otro tipo de paquete desde el otro punto de la VPN Esta opcin es util en casos donde los peer remotos tienen direccin IP dinamica y un TTL DNS demasiado bajo, por ejemplo usando el servicio de http://dyndns.org/ ms el cliente DNS Dinamico ddclient. Para la instalacin y conguracin del cliente DNS dinamico ddclient ver el apendice Usando el servicio DNS Dinamico de DynDNS con el cliente Dinamico ddclient. Los siguientes parmetros nos ayudarn a evitar tener que re crear la interfaz virtual tun0 y re leer la llave privada en caso de un restart por timeout. persist-tun No cerrar o re-abrir el dispositivo La seal persist-key No re-leer el archivo de la llave cuando se reciba una seal SIGUSR1 o haya sucedido un
ping-restart. SIGUSR1 TUN/TAP,
up
down
ping-restart.
Esta opcin puede ser combinada con la opcin user nobody para permitir reinicios cuando se recibe la seal SIGUSR1, normalmente si se tiran los privilegios de root en OpenVPN, el demonio no puede ser reiniciado ya que no ser capaz de re-leer los archivos de llave protegidos. script-security 2 log-append /var/log/openvpn.log Cuando se ejecuta OpenVPN como demonio en el background, dene la ruta al archivo de log para almacenar los eventos. verb 3 Nivel de severidad con la que se almacenan los logs. # 0 -- quiet except for fatal errors. # 1 -- mostly quiet, but display non-fatal network errors. # 3 -- medium output, good for normal operation. # 9 -- verbose, good for troubleshooting status /var/log/openvpn-status.log Registro de eventos para el estado de conexiones. En el log de estado se registra informacin Conexiones activas. truncadas. Informacin del cliente: IP pblica origen, certicado, IP virtual. bytes enviados y bytes recibidos por el cliente. Este archivo de estado es actualizado cada minuto. mute 50 Si se registran 50 mensajes consecutivos de la misma categoria de log sern omitidos. route 192.168.200.0 255.255.255.0 Agrega ruta local haca la red remota. Creee el directorio ccd para conguraciones por cliente:
root@hosta:/etc/openvpn# mkdir -m 700 ccd
45 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
En este momento se crea el proceso del servidor OpenVPN y se genera lo siguiente: Nueva interfaz de red virtual TUN
root@hosta:/etc/openvpn# ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:723 (723.0 B)
La ruta al host 10.8.0.2 es una ruta interna La ruta a la subred 10.8.0.0/255.255.255.0 se llega mediante 10.8.0.2 por la interfaz tun0. La ruta a la subred remota 192.168.200.0/255.255.255.0 se llega mediante 10.8.0.2 por la interfaz tun0. El proceso openvpn abre un socket UDP local en el puerto UDP/1194, podemos verlo con netstat:
root@hosta:/etc/openvpn# netstat -plun | grep openvpn udp 0 0 0.0.0.0:1194 0.0.0.0:* 9245/openvpn
Si no se presentaron problemas con la ejecucin de OpenVPN cancele el proceso y renombre el archivo de conguracin con terminacin .conf para controlar la instancia usando el script /etc/init.d/openvpn:
root@hosta:~# mv etc/openvpn/hosta-server-s2s-tls.ovpn etc/openvpn/hosta-server-s2s-tls.conf
[ OK ]
En la siguiente seccin conguraremos el cliente OpenVPN en el servidor gateway de la ocina remota de Monterrey, o ocina remota 1.
Copie los archivos del directorio keys de easy-rsa a la ruta que se muestra e la tabla de arriba en el servidor de la ocina remota 1. Transera los certicados por un medio seguro como por ejemplo SSH/SCP o corre electrnico seguro usando PGP (GNUPG). En el servidor gateway de la ocina remota 1 cree el archivo de conguracin
root@hostb:/etc/openvpn# vim hostb-cliente-s2s-tls.opvn
/etc/openvpn/hostb-cliente-s2s-tls.opvn:
46 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
En el servidor OpenVPN de la ocina Matriz, dentro del directorio ccd cree un archivo de conguracin especico para el cliente con el certicado monterrey.example.com, en este archivo deniremos la direccin IP virtual que le asignaremos al VPN gatway de monterrey, agregaremos rutas internas hacia la red remota y exportaremos las rutas de las redes locales hacia el cliente. Cree el archivo /etc/openvpn/ccd/monterrey.example.com:
root@hosta:/etc/openvpn# vim ccd/monterrey.example.com
Importante El nombre del archivo se debe de llamar exactamente igual a como escribio el commonName del certicado. Con el siguiente contenido:
; ; Archivo de configuracin de cliente: monterrey.example.com ; # Direccin IP fija ifconfig-push 10.8.0.9 10.8.0.10 # Ruta interna para OpenVPN haca la subred 192.168.200.0/24 iroute 192.168.200.0 255.255.255.0 # No heredar la lista push global push-reset # Exportamos la subred LAN de Matriz 192.168.99.0/24 push "route 192.168.99.0 255.255.255.0"
Aviso Asegurese que las opciones push esten entre comillas como se muestra en el ejemplo. En el siguiente listado se describen los parmetros usados en el archivo de conguracin del cliente monterrey.example.com: ifcong-push 10.8.0.9 10.8.0.10 Push virtual IP endpoints for client tunnel, overriding the --ifcong-pool dynamic allocation. The parameters local and remote-netmask are set according to the --ifcong directive which you want to execute on the client machine to congure the remote end of the tunnel. Note that the parameters local and remote-netmask are from the perspective of the client, not the server. They may be DNS names rather than IP addresses, in which case they will be resolved on the server at the time of client connection. This option must be associated with a specic client instance, which means that it must be specied either in a client instance cong le using --client-cong-dir or dynamically generated using a --client-connect script. Remember also to include a --route directive in the main OpenVPN cong le which encloses local, so that the kernel will know to route it to the server's TUN/TAP interface. OpenVPN's internal client IP address selection algorithm works as follows: 1 -- Use --client-connect script generated le for static IP (rst choice). 2 -- Use --client-cong-dir le for static IP (next choice). 3 -- Use --ifcong-pool allocation for dynamic IP (last choice). iroute 192.168.200.0 255.255.255.0
47 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
iroute siempre debe de ir acompaado de un route correspondiente en el archivo de conguracin del servidor, por ejemplo: route 192.168.200.0 255.255.255.0. Generate an internal route to a specic client. The netmask parameter, if omitted, defaults to 255.255.255.255. This directive can be used to route a xed subnet from the server to a particular client, regardless of where the client is connecting from. Remember that you must also add the route to the system routing table as well (such as by using the --route directive). The reason why two routes are needed is that the --route directive routes the packet from the kernel to OpenVPN. Once in OpenVPN, the --iroute directive routes to the specic client. This option must be specied either in a client instance cong le using --client-cong-dir or dynamically generated using a --client-connect script. The --iroute directive also has an important interaction with --push "route ...". --iroute essentially denes a subnet which is owned by a particular client (we will call this client A). If you would like other clients to be able to reach A's subnet, you can use --push "route ..." together with --client-to-client to eect this. In order for all clients to see A's subnet, OpenVPN must push this route to all clients EXCEPT for A, since the subnet is already owned by A. OpenVPN accomplishes this by not not pushing a route to a client if it matches one of the client's iroutes. push-reset Don't inherit the global push list for a specic client instance. Specify this option in a client-specic context such as with a --client-cong-dir conguration le. This option will ignore --push options at the global cong le level. push "route 192.168.99.0 255.255.255.0" Push a cong le option back to the client for remote execution. Note that option must be enclosed in double quotes (""). The client must specify --pull in its cong le. The set of options which can be pushed is limited by both fea sibility and security. Some options such as those which would execute scripts are banned, since they would eectively allow a compromised server to execute arbitrary code on the client. Other options such as TLS or MTU parameters cannot be pushed because the client needs to know them before the connection to the server can be initiated. This is a partial list of options which can currently be pushed: --route, --route-gateway, --route-delay, --redirect-gate way, --ip-win32, --dhcpoption, --inactive, --ping, --ping-exit, --ping-restart, --setenv, --persist-key, --persist-tun, --echo, --comp-lzo, --socket-ags, --sndbuf, --rcvbuf Ejecute el cliente OpenVPN:
root@hostb:/etc/openvpn# Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:14 2011 Thu Jun 16 23:01:15 2011 Thu Jun 16 23:01:15 2011 Thu Jun 16 23:01:15 2011 Thu Jun 16 23:01:15 2011 Thu Jun 16 23:01:15 2011 Thu Jun 16 23:01:15 2011 Thu Jun 16 23:01:15 2011 Thu Jun 16 23:01:15 2011 Thu Jun 16 23:01:15 2011 Thu Jun 16 23:01:15 2011 Thu Jun 16 23:01:15 2011
openvpn hostb-cliente-s2s-tls.opvn OpenVPN 2.1_rc7 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] built on Dec 15 2010 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earl WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info. /usr/bin/openssl-vulnkey -q -b 1024 -m <modulus omitted> LZO compression initialized Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ] Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ] Local Options hash (VER=V4): '41690919' Expected Remote Options hash (VER=V4): '530fdded' Socket Buffers: R=[124928->131072] S=[124928->131072] UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: 192.168.1.220:1194 TLS: Initial packet from 192.168.1.220:1194, sid=9a091651 22457b14 VERIFY OK: depth=1, /C=MX/ST=DF/L=Mexico/O=Example_Inc./CN=Example_Inc._CA/[email protected] VERIFY OK: depth=0, /C=MX/ST=DF/L=Mexico/O=Example_Inc./OU=IT/CN=vpngw0.example.com/[email protected] Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA [vpngw0.example.com] Peer Connection Initiated with 192.168.1.220:1194 SENT CONTROL [vpngw0.example.com]: 'PUSH_REQUEST' (status=1) PUSH: Received control message: 'PUSH_REPLY,route 10.8.0.1,topology net30,ping 10,ping-restart 60,route 192.168.220.0 255.255.255.0,ifc OPTIONS IMPORT: timers and/or timeouts modified OPTIONS IMPORT: --ifconfig/up options modified OPTIONS IMPORT: route options modified TUN/TAP device tun0 opened TUN/TAP TX queue length set to 100 ifconfig tun0 10.8.0.9 pointopoint 10.8.0.10 mtu 1500 route add -net 10.8.0.1 netmask 255.255.255.255 gw 10.8.0.10 route add -net 192.168.99.0 netmask 255.255.255.0 gw 10.8.0.10 Initialization Sequence Completed
En servidor vpn-monterrey el proceso openvpn crea una interfaz tun0, podemos verla con ifcong:
root@hostb:/etc/openvpn# ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.9 P-t-P:10.8.0.10 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
48 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Nota Se hace ping a 10.8.0.1 y no a la direccin del peer remoto asignada a la interfaz tun0. Si no se presentaron problemas con la ejecucin de OpenVPN cancele el proceso y renombre el archivo de conguracin con terminacin para controlar la instancia usando el script /etc/init.d/openvpn:
root@hosta:~# mv etc/openvpn/hostb-cliente-s2s-tls.opvn /etc/openvpn/hostb-cliente-s2s-tls.conf
.conf
[ OK ]
En la siguiente seccin realizaremos varias pruebas para vericar la conectividad entre las dos redes remotas.
Por ejemplo:
route 192.168.100.0 255.255.255.0
Importante SIempre debe de haber un iroute correspondiente en el archivo CCD del cliente. hora cree el archivo de conguracin para el servidor OpenVPN en Tijuana
root@hostc:/etc/openvpn# vim hostc-cliente-s2s-tls.ovpn
49 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
; Cifrado: cipher BF-CBC : Compresion: comp-lzo ; Mantener conexiones activas via ping: persist-tun persist-key ; Opciones de logs: ;log-append /var/log/openvpn.log verb 3 status /var/log/openvpn-status.log mute 50
En el servidor OpenVPN de la ocina Matriz, dentro del directorio ccd cree un archivo de conguracin especico para el cliente con el certicado tijuana.example.com, en este archivo deniremos la direccin IP virtual que le asignaremos al VPN gatway de Tijuana, agregaremos rutas internas hacia la red remota y exportaremos las rutas de las redes locales hacia el cliente. Crear archivo de conguracin para tijuana.midominio.com en servidor Matriz:
root@hosta:~# vim /etc/openvpn/ccd/tijuana.example.com
Nota Se hace ping a 10.8.0.1 y no a la direccin del peer remoto asignada a la interfaz tun0. Si no se presentaron problemas con la ejecucin de OpenVPN cancele el proceso y renombre el archivo de conguracin con terminacin para controlar la instancia usando el script /etc/init.d/openvpn:
root@hostc:~# mv etc/openvpn/hostc-cliente-s2s-tls.opvn /etc/openvpn/hostc-cliente-s2s-tls.conf
.conf
[ OK ]
Y agregue la lnea.
; Permitir conexiones de cliente a cliente client-to-client
50 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Cuando OpenVPN esta congurado en modo server maneja mltiples clientes a travs de una sola interfaz TUN, se convierte en en un router. La directiva --client-to-client le dice a OpenVPN que enrute el traco de clientes a clientes en lugar de que mande todo el traco originado por el cliente a la interfaz TUN/TAP . Reinicie el servidor OpenVPN y reconecte los clientes para probar:
root@hosta:~# /etc/init.d/openvpn restart
Cuando esta opcion es usada, cada cliente "vera" los otros clientes que estan actualmente conectados, de otra forma no se veran. No use esta opcin si quiere ltrar con un rewall el trco del tnel de forma personalizada. Cuando el cliente se conecte a un servidor OpenVPN con la directiva client-to-client se le crearn las siguientes rutas: 10.8.0.6 Ruta de host haca el peer remoto del tnel VPN, es directa a travs de la interfaz tunX. 10.8.0.0 Ruta hacia la red virtual del tunel VPN, la conexin es a travs de la direccin del peer remoto por la interfaz tunX. 192.168.225.0 Ruta hacia la red privada LAN atras del servidor OpenVPN, la conexin es a travs de la direccin del peer remoto por la interfaz tunX. las siguientes rutas a travs de la interfaz tun0:
root@hostb:~# route -n | grep tun0 10.8.0.6 0.0.0.0 255.255.255.255 UH 10.8.0.0 10.8.0.6 255.255.255.0 UG 192.168.221.0 10.8.0.6 255.255.255.0 UG 0 0 0 0 0 0 0 tun0 0 tun0 0 tun0
Como podemos ver nos agrega la ruta a toda la red 10.8.0.0 a travs del peer 10.8.0.6.
Recursos adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se aconseja que acceda a los siguientes recursos adicionales.
Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas utilizados en este capitulo. http://openvpn.net/index.php/open-source/documentation/howto.html#scope - Expanding the scope of the VPN to include additional machines on either the client or server subnet. http://openvpn.net/index.php/open-source/documentation/howto.html#pki - OpenVPN HOWTO - Setting up your own Certicate Authority (CA) and generating certicates and keys for an OpenVPN server and multiple clients
Paginas de manual
Para conocer ms sobre el uso y conguracin de los programas utilizados en el capitulo, se recomienda leer los manuales relacionados. ifcong (8) - congure a network interface route (8) - show / manipulate the IP routing table netstat (8) - Print network connections, routing tables, interface statistics, masquerade con... traceroute (1) - print the route packets trace to network host openvpn (8) - secure IP tunnel daemon. openvpn-vulnkey (1) - check blacklist of compromised keys
51 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
En clientes MS Windows que usan el cliente OpenVPN GUI deben de almacenar los archivos de conguracin en el directorio C:\Program Files\OpenVPN\\config. La extensin del archivo debe ser .ovpn para que el cliente OpenVPN GUI detecte la conguracin y pueda lanzar las conexiones desde el icono en la bandeja de sistema. El siguiente es un ejemplo de un archivo de conguracin para el cliente OpenVPN:
; ; Archivo de configuracin de cliente OpenVPN modo TLS: ; client dev tun proto udp port 1194 remote hosta.dyndns.org 1194 nobind resolv-retry infinite ca ca.crt cert jperez.example.com.crt key jperez.example.com.key cipher BF-CBC comp-lzo persist-tun persist-key ;log-append /var/log/openvpn.log verb 3 ;status /var/log/openvpn-status.log mute 50
Si el archivo de conguracin .ovpn y los archivos de los certicados y la llave privada se encuentran en el mismo directorio puede escribir las rutas a los archivos usando la ruta relativa, por ejemplo:
ca ca.crt cert jperez.example.com.crt key jperez.example.com.key
Nota En este caso se asume que el directorio predeterminado para almacenar las conguraciones y certicados es: C:\\Program Files\\OpenVPN\\cong Si los archivos de los certicados y la llave privada se encuentran en rutas diferentes a la del archivo de conguracin escriba la ruta completa, por ejemplo:
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt" cert "C:\\Program Files\\OpenVPN\\config\\jperez.example.com.crt" key "C:\\Program Files\\OpenVPN\\config\\jperez.example.com.key"
.ovpn
se recomienda que
Nota La ruta se debe escribir entre comillas dobles y usar doble diagonal invertida para separar los directorios. Es comn que tenga ms de un juego de archivo de conguracin y certicados en un mismo sistema, en dado caso se recomienda almacenar los archivos .ovpn en el directorio predeterminado C:\Program Files\OpenVPN\\config y almacene los archivos de los certicados y la llave privada en directorios separados, por ejemplo: Para la conexin a la red de Example usamos el archivo
C:\Program Files\OpenVPN\\config\Example.ovpn usa las siguientes rutas:
Esto le da el benecio de poder conectarse a mltiples VPNs desde el cliente OpenVPN GUI.
52 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
; ; Archivo de configuracin de servidor OpenVPN client mode (TLS): ; client dev tun proto udp port 1194 remote hosta.dyndns.org 1194 nobind resolv-retry infinite ca ca.crt cert tijuana.example.com.crt key tijuana.example.com.key cipher BF-CBC comp-lzo persist-tun persist-key ;log-append /var/log/openvpn.log verb 3 status /var/log/openvpn-status.log mute 50
Las opciones usadas en el archivo de conguracin del cliente OpenVPN son las siguientes: client A helper directive designed to simplify the conguration of OpenVPN's client mode. This directive is equivalent to:
pull tls-client
pull This option must be used on a client which is connecting to a multi-client server. It indicates to OpenVPN that it should accept options pushed by the server, provided they are part of the legal set of pushable options (note that the --pull option is implied by --client ). In particular, --pull allows the server to push routes to the client, so you should not use --pull or --client in situa tions where you don't trust the server to have control over the client's routing table. tls-client Enable TLS and assume client role during TLS handshake.
53 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Sun Feb 15 23:59:50 2009 route add -net 10.0.99.0 netmask 255.255.255.0 gw 10.8.0.9 Sun Feb 15 23:59:50 2009 Initialization Sequence Completed
Al establecerse la conexin sergura VPN haca la ocina vemos que se crea una interfaz de red virtual:
root@cliente:~ # ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.10 P-t-P:10.8.0.9 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Flags UGH UH UG
Metric 0 0 0
Ref 0 0 0
Use 0 0 0
Vericando la conectividad
root@cliente:~ # ping 10.0.99.200 PING 10.0.99.200 (10.0.99.200) 56(84) 64 bytes from 10.0.99.200: icmp_seq=1 64 bytes from 10.0.99.200: icmp_seq=2 64 bytes from 10.0.99.200: icmp_seq=3 bytes of data. ttl=63 time=52.4 ms ttl=63 time=35.7 ms ttl=63 time=37.7 ms
--- 10.0.99.200 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 35.749/41.972/52.415/7.429 ms
Use el comando traceroute para trazar la ruta hasta un host en una red remota.
La asignacin de direcciones IP estticas dentro de un pool se realiza desde el servidor OpenVPN, el servidor OpenVPN debe usar la directiva --client-config-dirpara permitir conguraciones personalizadas por cliente, por lo tanto se requieren que cada cliente tenga un certicado con un
54 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Si desea asignar una direccin IP esttica alcliente con el commonName emartinez.example.com cree el siguiente archivo de conguracin ccd: /etc/openvpn/ccd/emartinez.example.com con el siguiente contenido:
; ; Archivo de configuracin de cliente: emartinez.example.com ; Direccin IP esttica ifconfig-push 10.8.0.13 10.8.0.14
Nota Los clientes MS Windows automticamente conguran los parmetros DNS recibidos siempre y cuando la interfaz TUN/TAP tenga habilitado el soporte DHCP . Nota Si las opciones dhcp son enviadas va --push a clientes no-cwindows, las opciones sern guardadas en las variables de ambiente del cliente antes de que el script up sea llamado, las opciones se almacenan bajo el nombre "foreign_option_{n}" Tambin puede enviar informacin va push de servidores WINS y el tipo de nodo Netbios, por ejemplo:
push "dhcp-option DNS 10.8.0.1" push "dhcp-option NBT 8"
--push,
por lo que el cliente OpenVPN debe estar congurado en modo client ya que esta a su vez
Es posible usar la directiva push de forma global o por archivo de conguracin de cliente usando client-cong-dir. Para ms informacin del uso de las opciones DHCP ver la descripcin de la directiva en el manual de openvpn(8).
--dhcp-option
/etc/openvpn/update_dns_client.up,sh,
este es un script simple que obtiene el servidor DNS desde la opcin 1 y crea un nuevo archivo
# vim /etc/openvpn/update_dns_client.up.sh
55 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Cree el script
/etc/openvpn/update_dns_client.down,sh
# vim /etc/openvpn/update_dns_client.down.sh
En las fuentes de OpenVPN se incluyen los scripts pull-resolv.conf en el directorio contrib, estos scripts se encargan de actualizar los parmetros de los servidores DNS en el archivo resolv.conf(5) en sistemas GNU/Linux de forma automtica cuando se conecte al servidor OpenVPN. Descargue e instale los scripts en el directorio
# # # # # # # mkdir -p /usr/src/openvpn cd /usr/src/openvpn apt-get source openvpn cd openvpn-2.1~rc7/contrib/pull-resolv-conf cp client.up /etc/openvpn/dns_client.up cp client.down /etc/openvpn/dns_client.down chmod +x /etc/openvpn/dns_client.*
/etc/openvpn:
--up
--plugin
Recursos adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se aconseja que acceda a los siguientes recursos adicionales.
Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas utilizados en este capitulo. http://openvpn.net/index.php/open-source/documentation/howto.html#dhcp - Pushing DHCP options to clients http://openvpn.net/index.php/open-source/documentation/howto.html#pki - OpenVPN HOWTO - Setting up your own Certicate Authority (CA) and generating certicates and keys for an OpenVPN server and multiple clients
Paginas de manual
Para conocer ms sobre el uso y conguracin de los programas utilizados en el capitulo, se recomienda leer los manuales relacionados. openvpn (8) - secure IP tunnel daemon. ifcong (8) - congure a network interface route (8) - show / manipulate the IP routing table traceroute (1) - print the route packets trace to network host resolv.conf (5) - resolver conguration le
56 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Este capitulo est dedicado a extender la informacin relacionada a los mecanismos de seguridad que ofrece OpenVPN, veremos los parmetros de conguracin y otras conguraciones requeridas para reforzar la seguridad de la VPN.
Introduccin
OpenVPN provee diferentes mecanismos para asegurar la privacidad y condencialidad de los datos transmitidos por el tnel VPN, haremos uso de rmas HMAC (Hash-based Message Authentication Code) para la autenticacin de paquetes, tambin conocido como "HMAC rewall", uso del protocolo UDP para prevenir ataques DoS comunes, crearemos llaves RSA ms grandes, como revocar el acceso a la VPN revocando los certicados x509, agregaremos atributos adicionales al certicado del servidor VPN para prevenir ataques de tipo Man In The Middle, en las siguientes secciones veremos como asegurar la VPN usando los mtodos antes mencionados.
El comando anterior generar una llave esttica de OpenVPN y la escribir en el archivo ta.key en el directorio actual, es decir, /etc/openvpn/ta.key. Esta llave puede ser copiada por un canal seguro previamente establecido (SCP/PGP) a los equipos clientes que deseen autenticarse. Si esta implementando este mtodo de seguridad despus de haber seguido los captulos anteriores, entonces podr copiar el archivo ta.key por el tnel VPN. Vea el contenido de la llave esttica para ver el tamao de la llave y su contenido::
root@vpn-matriz:/etc/openvpn# cat ta.key # # 2048 bit OpenVPN static key # -----BEGIN OpenVPN Static key V1----b55037a4deac4da4b3bc9faec687a601 570aa8265dcc18c5df986a9039791fa9 6220a7cc3970025c3386adef73fa1698 e8d6ebd608cc55ffca4afa7cc82a9db1 98acaacb5873b7a724659f5187bc2901 b67fa8c3174567be96bfb306cf5ce977 4334516dbbecc9fb4d87083ad106baa7 4a7cb4d5cdb9bc615f65ca0ada63754e 26b1a93cd4289babad21c08f19d36de1 e6368cc944125a568cff60e27e90ebfb 5fae2d55b625c7425592d475b981acb6 41ce95c1839c2ec8d0916044d29cc06e 76a124b3c4e92224446ca936239ba2ee ad2c88f8411628d97267e998bedd9fc0 cdf05d9cf06e5bb61e44f345fcc96b82 71e4289ae84261d75b77cd1798dcd6b6 -----END OpenVPN Static key V1-----
Ahora, en el archivo de conguracin del servidor OpenVPN de Matriz agregue el parmetro tls-auth y la ruta al archivo de la rma HMAC , el formato de l parmetro tls-auth es:
tls-auth hmac.key direction
Note que cuando se usa la directiva tls-auth y una llave esttica, debe denir una direccin, el parmetro direction habilita el uso de 4 llaves (HMAC-send, cipher-encrypt, HMAC-receive, cipher-decrypt) para que cada direccin del ujo de datos tenga su conjunto de llaves HMAC y de cifrado. La direccin debe ser complementaria en cada lado de la conexin, por ejemplo, del lado del servidor usa 0 y del cliente(s) use 1. Edite el archivo de conguracin del servidor OpenVPN y agregue:
57 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
tls-auth ta.key 0
Es necesario que re inicie el proceso openvpn para que tome efecto este cambio, si su servidor OpenVPN ya esta en ejecucin puede mandarle una seal SIGHUP para que se re inicie y re-lea el archivo de conguracin con los nuevos cambios.
root@vpn-matriz:/etc/openvpn# kill -SIGHUP `pidof openvpn`
Al mandar la seal SIGHUP al proceso openvpn podr ver esto en los logs:
Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22:47:35 22:47:35 22:47:35 22:47:35 22:47:35 22:47:35 22:47:35 22:47:35 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 22:47:37 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 event_wait : Interrupted system call (code=4) TCP/UDP: Closing socket route del -net 10.8.0.0 netmask 255.255.255.0 route del -net 192.168.93.0 netmask 255.255.255.0 Closing TUN/TAP interface SIGHUP[hard,] received, process restarting OpenVPN 2.1_rc7 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] built on Jun 11 2008 Restart pause, 2 second(s) Diffie-Hellman initialized with 1024 bit key /usr/bin/openssl-vulnkey -q -b 1024 -m <modulus omitted> Control Channel Authentication: using 'ta.key' as a OpenVPN static key file Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication TLS-Auth MTU parms [ L:1542 D:166 EF:66 EB:0 ET:0 EL:0 ] TUN/TAP device tun0 opened TUN/TAP TX queue length set to 100 ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500 route add -net 192.168.93.0 netmask 255.255.255.0 gw 10.8.0.2 route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ] Socket Buffers: R=[124928->131072] S=[124928->131072] UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: [undef] MULTI: multi_init called, r=256 v=256 IFCONFIG POOL: base=10.8.0.4 size=62 IFCONFIG POOL LIST Initialization Sequence Completed
Note los mensajes de Control Channel Authentication que le indican que el soporte fue habilitado tanto para el ujo entrante como saliente. Copie el archivo de la llave HMAC a cada uno de los clientes que estarn autorizados para conectarse a la VPN y guardelo en un directorio que pueda leer el proceso openvpn, de preferencia en el mismo lugar que almacn los certicados. Edite el archivo de conguracin de cada cliente y agregue el parmetro tls-auth y la ruta al archivo de la llave, adems indique la direccin, por ejemplo:
tls-auth ta.key 1
Si agrego esta conguracin a un cliente que este ejecutndose, entonces tambin deber de mandar la seal SIGHUP o reiniciar por completo el proceso OpenVPN. Despus de re inicar OpenVPN en el cliente, usted podr ver lo siguiente en los logs:
Sun Feb 22 22:47:33 2009 Control Channel Authentication: using 'ta.key' as a OpenVPN static key file Sun Feb 22 22:47:33 2009 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication Sun Feb 22 22:47:33 2009 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Ahora solo podrn iniciar conexiones por UDP aquellos sistemas que tengan la rma HMAC y por supuesto, sus respectivos certicados y llaves privadas. TODO: Mostrar extracto de log de una conexin rechazada por no estar autenticada. Para ms informacin sobre el uso del parmetro
tls-auth
Debe reiniciar el servidor y clientes openvpn para que el cambio tome efecto.
58 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
export KEY_SIZE=2048
Es importante notar que entre ms grandes sean las llaves RSA mayor el incremento en la carga del sistema cuando se realiza la negociacin de la sesin SSL/TLS, la cual ocurre cada hora, tambin afecta al momento de la creacin de los parmetros Die Hellman, pero este procedimiento solo se realiza una sola vez. Aunque el algoritmo de cifrado predeterminado de OpenVPN es Blowsh (128 bits), OpenVPN soporta todos los tipos de cifrado que este soportado por la biblioteca OpenSSL, por lo tanto podremos usar diferentes algoritmos de cifrado con llaves de diferentes tamaos. Use el parmetro cipher para indicar el cifrado a utilizar, por ejemplo puede cambiar a el cifrado AES (Advanced Encryption Standard) de diferentes tamaos. La version de 128-bit de AES (Advanced Encryption Standard) puede ser usada agregando lo siguiente a los archivos de conguracin del cliente y del servidor:
cipher AES-128-CBC
Nota Recuerdo que debe de especicar el mismo cifrado en los archivos de conguracin de cada cliente y servidor. Use el comando openvpn con el parmetro para listar los cifrados soportados:
--show-ciphers
# openvpn --show-ciphers The following ciphers and cipher modes are available for use with OpenVPN. Each cipher shown below may be used as a parameter to the --cipher option. The default key size is shown as well as whether or not it can be changed with the --keysize directive. Using a CBC mode is recommended. DES-CFB 64 bit default key (fixed) DES-CBC 64 bit default key (fixed) RC2-CBC 128 bit default key (variable) RC2-CFB 128 bit default key (variable) RC2-OFB 128 bit default key (variable) DES-EDE-CBC 128 bit default key (fixed) DES-EDE3-CBC 192 bit default key (fixed) DES-OFB 64 bit default key (fixed) DES-EDE-CFB 128 bit default key (fixed) DES-EDE3-CFB 192 bit default key (fixed) DES-EDE-OFB 128 bit default key (fixed) DES-EDE3-OFB 192 bit default key (fixed) DESX-CBC 192 bit default key (fixed) BF-CBC 128 bit default key (variable) BF-CFB 128 bit default key (variable) BF-OFB 128 bit default key (variable) RC2-40-CBC 40 bit default key (variable) CAST5-CBC 128 bit default key (variable) CAST5-CFB 128 bit default key (variable) CAST5-OFB 128 bit default key (variable) RC2-64-CBC 64 bit default key (variable) AES-128-CBC 128 bit default key (fixed) AES-128-OFB 128 bit default key (fixed) AES-128-CFB 128 bit default key (fixed) AES-192-CBC 192 bit default key (fixed) AES-192-OFB 192 bit default key (fixed) AES-192-CFB 192 bit default key (fixed) AES-256-CBC 256 bit default key (fixed) AES-256-OFB 256 bit default key (fixed) AES-256-CFB 256 bit default key (fixed) AES-128-CFB1 128 bit default key (fixed) AES-192-CFB1 192 bit default key (fixed) AES-256-CFB1 256 bit default key (fixed) AES-128-CFB8 128 bit default key (fixed) AES-192-CFB8 192 bit default key (fixed) AES-256-CFB8 256 bit default key (fixed) DES-CFB1 64 bit default key (fixed) DES-CFB8 64 bit default key (fixed)
Para que este cambio tome efecto debe de reiniciar el servidor y el cliente, puede mandar una seal SIGHUP o usar sus scripts de inicio de su distribucin.
# kill -SIGHUP `pidof openvpn`
Si realizo el cambio del cifrado en el servidor, pero olvido hacer el cambio en un cliente, es posible que no se pueda conectar y que en el log del cliente vera algunos mensajes, como los siguientes:
Sun ... ... Sun Sun Sun Sun Feb 22 23:01:27 2009 WARNING: 'cipher' is used inconsistently, local='cipher BF-CBC', remote='cipher AES-128-CBC'
22 22 22 22
Lo cual indica que no estamos usando el mismo cifrado que en el servidor, para corregir este problema, cambie conguracin del cliente.
AES-128-CBC
en el archivo de
59 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
El archivo /etc/openssl/ExampleCA/openssl.cnf carga el mdulo pkcs11, pero si no lo tiene cargado la revocacin va a fallar, se recomienda que comente todo el bloque [pkcs11 section] en el archivo:
# vim openssl.cnf
Por ejemplo:
#[ pkcs11_section ] #engine_id = pkcs11 #dynamic_path = /usr/lib/engines/engine_pkcs11.so #MODULE_PATH = $ENV::PKCS11_MODULE_PATH #PIN = $ENV::PKCS11_PIN #init = 0
Ahora ejecutamos el comando revoke-full con el nombre del certicado o mejor dicho con el common name como argumento, por ejemplo:
# ./revoke-full consultor01.midominio.com Using configuration from /etc/openvpn/MiEmpresaCA/openssl.cnf Enter pass phrase for /etc/openvpn/MiEmpresaCA/keys/ca.key:SuperPASSPHRASE!!! Revoking Certificate 04. Data Base Updated Using configuration from /etc/openvpn/MiEmpresaCA/openssl.cnf Enter pass phrase for /etc/openvpn/MiEmpresaCA/keys/ca.key:SuperPASSPHRASE!!! vendedor01.midominio.com.crt: /C=MX/ST=DF/L=Mexico/O=Mi Empresa S.A./OU=Ventas/CN=consultor01.midominio.com/[email protected] error 23 at 0 depth lookup:certificate revoked
El comando revoke-full le solicitar el passphrase de la llave privada ca.key para realizar la operacin de revocacin del certicado. Despus le vuelve a preguntar el passphrase de la llave ca.key para validar que el certicado haya sido revocado. Nota El error 23 en la ltima linea nos indica que la validacin del certicado revocado fallo, esto quiere decir que el certicado fue revocado exitosamente. El comando revoke-full generar el archivo de la lista de revocacion de certicados (CRL) copiado a una ruta a la que el servidor OpenVPN tenga acceso, por ejemplo:
# cp crl.pem /etc/openvpn/
crl.pem
en el directorio
keys.
Para habilitar la vericacin de la CRL en el servidor OpenVPN, edite el archivo de conguracin del servidor OpenVPN y agregue la siguiente linea:
crl-verify crl.pem
Reinicie el servidor OpenVPN para que el cambio tome efecto, si un usuario listado en la CRL trata de conectarse a la VPN la conexin ser rechazada Cuando la opcin crl-verify es usada en OpenVPN, el archivo CRL ser re leido cada vez que un nuevo cliente se conecta, o una conexin existente re negocia la connexin SSL/TLS (por default cada hora). Esto signica que puedes actualizar el archivo CRL mientras el servidor OpenVPN esta corriendo, y que la nueva CRL tome efecto inmediatamente para nuevas conexiones. Cuando el cliente con el certicado revocado trat de conectarse en el log de OpenVPN se registrar lo siguiente:
201.114.193.4:46423 201.114.193.4:46423 201.114.193.4:46423 201.114.193.4:46423 201.114.193.4:46423
VERIFY OK: depth=1, /C=MX/ST=DF/L=Mexico/O=Distribuidora_de_Cintas_y_Herrajes_S.A._de_C.V./CN=Distribuidora_de_Cintas_y_Herrajes_S.A._de_C.V CRL CHECK FAILED: /C=MX/ST=DF/L=Mexico/O=Computaci_xC3on_Grafica_de_Mexico_S.A._de_C.V./OU=Linux/CN=jorge.medina.e-compugraf.com/emailAddres TLS_ERROR: BIO read tls_read_plaintext error: error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned TLS Error: TLS object -> incoming plaintext read error TLS Error: TLS handshake failed
60 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
201.114.193.4:46423 Fatal TLS error (check_tls_errors_co), restarting 201.114.193.4:46423 SIGUSR1[soft,tls-error] received, client-instance restarting TCP/UDP: Closing socket
Si el cliente para el cual el certicado fue revocado ya esta conectado, puedes reiniciar el servidor va la seal (SIGUSR1 o SIGHUP) y desconectar todos los clientes, o puedes conectarte a la consola de administracin del servidor OpenVPN y usar el comando kill para explicitamente matar la instanca del cliente en el servidor sin tener que interrumpir a los otros usuarios. Para ms informacin de la consola de administracin de OpenVPN vea el capitulo La Consola de Administracin OpenVPN.
Nota En el capitulo de creacin de CA se creo el certicado del servidor con el atributo extendido nsCertType=server. Para que los clientes hagan la validacin de dicho atributo, deber de agregar a cada cliente OpenVPN la siguiente linea en su archivo de conguracin:
remote-cert-tls server
Deber de reiniciar el cliente OpenVPN para que este cambio tome efecto, cuando un cliente trate de conectarse con el servidor OpenVPN, y si la validacin del tipo de certicado del servidor es correcta, ver esto en los logs:
Sun Feb 22 23:31:17 2009 VERIFY OK: nsCertType=SERVER
[OpenVPN 2.0 y anteriores] En estas versiones tambin se tiene el soporte para vericar el tipo de certicado, para la vericacin en los clientes se usa la directiva:
ns-cert-type server
Deber de reiniciar el cliente OpenVPN para que este cambio tome efecto, cuando un cliente trate de conectarse con el servidor OpenVPN, y si la validacin del tipo de certicado del servidor es correcta, ver esto en los logs:
Sun Feb 22 23:31:17 2009 VERIFY OK: nsCertType=SERVER
Usando la directiva tls-remote, usted puede agregar una capa adicional para la vericacin del certicado del servidor OpenVPN, use la directiva tls-remote en el cliente para permitir o rechazar conexiones del servidor OpenVPN basado en el Common Name del certicado del servidor. Para ver el Common Name o Subject de un certicado x509 podemos usar el comando:
root@vpn-matriz:/etc/openvpn# openssl x509 -noout -subject -in vpnserver.midominio.com.crt subject= /C=MX/ST=Distrito Federal/L=Mexico/O=Mi Empresa S.A./OU=Redes/CN=vpnserver.midominio.com/[email protected]
Nota El subject del certicado del servidor OpenVPN tiene espacios, esto fue porque asi se introdujo la informacin al momento de la creacin, sin embargo, OpenVPN convierte los espacios por guiones bajo "_" al momento de presentar el certicado a un cliente. Esto podemos verlo en los logs de un cliente.
Sun Feb 22 23:25:18 2009 VERIFY OK: depth=0, /C=MX/ST=Distrito_Federal/L=Mexico/O=Mi_Empresa_S.A./OU=Redes/CN=vpnserver.midominio.com/[email protected]
Si en el Subject del certicado del servidor se encuentran espacios en blanco, tendr que convertirlos a "_" para que la validacin funcione. Puede usar el siguiente comando para convertir el subject con espacios a "_".
root@vpn-matriz:/etc/openvpn# openssl x509 -noout -subject -in vpnserver.midominio.com.crt | tr ' ' '_' subject=_/C=MX/ST=Distrito_Federal/L=Mexico/O=Mi_Empresa_S.A./OU=Redes/CN=vpnserver.midominio.com/[email protected]
Deber de reiniciar el cliente OpenVPN para que este cambio tome efecto, cuando un cliente trate de conectarse con el servidor OpenVPN, y si la validacin del tipo de certicado del servidor es correcta, ver esto en los logs:
Sun Feb 22 23:36:01 2009 VERIFY X509NAME OK: /C=MX/ST=Distrito_Federal/L=Mexico/O=Mi_Empresa_S.A./OU=Redes/CN=vpnserver.midominio.com/[email protected]
Recursos adicionales
61 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se aconseja que acceda a los siguientes recursos adicionales.
Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas utilizados en este capitulo. http://openvpn.net/index.php/open-source/documentation/howto.html#security - Hardening OpenVPN Security
Paginas de manual
Para conocer ms sobre el uso y conguracin de los programas utilizados en el capitulo, se recomienda leer los manuales relacionados. openvpn (8) - secure IP tunnel daemon. openssl (1ssl) - OpenSSL command line tool
Ya que la interfaz de administracin no provee mecanismos de autenticacin por contrasea, se recomienda que active la interfaz solo en la interfaz localhost, cambie el puerto a su eleccin. Re inicie el servidor OpenVPN para que la interfaz de administracin sea activada.
# /etc/init.d/openvpn restart
Importante Esto har que todos los clientes OpenVPN activos se reconecten al servidor. Para conectarse a la interfaz de administracin de OpenVPN puede usar un cliente telnet, por ejemplo:
# telnet 127.0.0.1 1195 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. >INFO:OpenVPN Management Interface Version 1 -- type 'help' for more info
62 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
status OpenVPN CLIENT LIST Updated,Sat Apr 10 22:06:54 2010 Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since guadalajara.example.com,187.154.8.201:55788,58131094,100947999,Wed Apr 7 20:14:21 2010 ROUTING TABLE Virtual Address,Common Name,Real Address,Last Ref 10.97.0.5,guadalajara.example.com,187.154.8.201:55788,Sat Apr 10 21:27:44 2010 172.16.70.0/24,guadalajara.example.com,187.154.8.201:55788,Wed Apr 7 20:14:24 2010 GLOBAL STATS Max bcast/mcast queue length,0 END
O usando el socket:
kill 187.154.8.201:55788
Si el cliente OpenVPN esta congurado para auto reconectarse despus de perder la conexin con el servidor, el comando kill obligar al cliente a reconectarse. Para ms informacin acerca de la interfaz de administracin ver: Management Interface: http://openvpn.net/index.php/open-source /documentation/miscellaneous/79-management-interface.html
openvpn-auth-pam.so
/etc/pam.d/ovpn
# # /etc/pam.d/common-auth - authentication settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authentication modules that define # the central authentication scheme for use on the system # (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the # traditional Unix authentication mechanisms. # auth required pam_listfile.so onerr=fail item=group sense=allow file=/etc/security/vpn.grupos.permitidos auth requisite pam_unix.so nullok_secure auth optional pam_smbpass.so migrate missingok
Con esta conguracin decimos que use el modulo pam_listfile.so para permitir autenticacin basada en grupos, crearemos el archivo /vpn.grupos.permitidos en el cual indicaremos que grupos son los permitidos.
root@firewall:/etc/openvpn# cat /etc/security/vpn.grupos.permitidos vpn
/etc/security
63 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Es necesario que se reinicie el servidor OpenVPN para que tome los cambios.
# kill -SIGHUP `pidof openvpn`
Cuando un cliente OpenVPN se autentique le solicitar un nombre de usuario y contrasea, por ejemplo:
root@cliente:/etc/openvpn # openvpn monterrey_Lan2LanTLS.conf Mon Feb 23 02:37:12 2009 OpenVPN 2.1_rc7 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] built on Jun 11 2008 Enter Auth Username:jorge Enter Auth Password:password
Si el usuario y la contrasea son validos, y adems el usuario jorge pertenece al grupo vpn, se le garantizar el acceso. En caso que el usuario o la contrasea no sean validos, o el usuario no pertenece al grupo vpn, entonces el usuario ver un mensaje como este en sus logs:
Mon Feb 23 02:37:27 2009 AUTH: Received AUTH_FAILED control message Mon Feb 23 02:37:27 2009 TCP/UDP: Closing socket Mon Feb 23 02:37:27 2009 SIGTERM[soft,auth-failure] received, process exiting
Aviso Por cuestiones de seguridad no se recomienda preservar la llave privada sin passphrase. Ahora cuando trate de levantar el cliente OpenVPN, se le solicitar la contrasea de la llave privada, por ejemplo:
root@cliente:/etc/openvpn # openvpn monterrey_Lan2LanTLS.conf Mon Feb 23 01:49:21 2009 OpenVPN 2.1_rc7 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] built on Jun 11 2008 Enter Private Key Password: Ll4v3d3p4s0
Si teclea la contrasea correcta entonces se podr autenticar correctamente, en caso de que la contraea de la llave privada este mal, vera un mensaje en los logs as:
root@cliente:/etc/openvpn # openvpn monterrey_Lan2LanTLS.conf Mon Feb 23 01:50:30 2009 OpenVPN 2.1_rc7 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] built on Jun 11 2008 Enter Private Key Password: Mon Feb 23 01:50:31 2009 Cannot load private key file cliente.midominio.com.key: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt: error Mon Feb 23 01:50:31 2009 Error: private key password verification failed Mon Feb 23 01:50:31 2009 Exiting
Estableciendo contraea en Llave Privada en Windows Para establecer una contrasea a la llave privada en sistemas operativos Windows, puede usar el comando openssl en MS-DOS, o puede utilizar la
64 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Si quiere generar las llaves privadas con contrasea desde el inicio, use el comando pkitool con la opcin
root@vpn-matriz:/etc/openvpn/MiEmpresaCA# ./pkitool --interact --pass cliente8vpn.midominio.com Generating a 1024 bit RSA private key ...............................................++++++ ...............++++++ writing new private key to 'cliente8vpn.midominio.com.key' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----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) [MX]:
--pass,
por ejemplo:
Cambiando la contrasea de una Llave Privada protegida en Windows Si usa el sistema operativo Windows, y tiene una llave privada protegida por contrasea y desea actualizarla, puede usar el mismo procedimiento descrito en la seccin Estableciendo contraea en Llave Privada en Windows.
65 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
66 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
# Solo aceptar conexines del servidor autenticado con el # siguiente Nombre Distinguido (DN) en el certificado: tls-remote "/C=MX/ST=Distrito_Federal/L=Mexico/O=Computacion_Grafica_de_Mexico/OU=Seguridad/CN=vpnserver.intracompugraf.info/[email protected] # Cifrado criptogrfico que usar OpenVPN. # NOTE: Esta misma configuracin debe de ser usada # en el servidor OpenVPN. cipher BF-CBC # Blowfish 128 bits (predeterminado) ;cipher AES-128-CBC # AES 128 bits # Habilitanto compresin en el tunnel VPN # NOTE: esta misma configuracin debe ser usada # en el servidor OpenVPN. comp-lzo # Nivel del severidad para logs de OpenVPN verb 3 # Repeticin silenciosa de mensajes de log. Por lo menos 20 mensajes # consecutivos de la misma categora de mensaje sern # registrado en en log. ;mute 20
67 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Si utiliza Ubuntu debe de congurar ddclient para que corra como demonio, al correr como demonio se puede congurar el intervalo de tiempo entre actualizaciones, por ejemplo, en el archivo /etc/default/ddclient congurare los siguientes parametros:
# Set to "true" if ddclient should run in daemon mode run_daemon="true" # Set the time interval between the updates of the dynamic DNS name in seconds. # This option only takes effect if the ddclient runs in daemon mode. daemon_interval="300"
Congure ddclient usando el archivo de conguracin /etc/ddclient.conf, por ejemplo: Ejemplo de conguracin para ddclient:
# # # # # # Configuration file for ddclient generated by debconf Configuracin para que la revision de la IP la haga por medio de la pagina web de dyndns. Util cuando la conexion es a travs de un router o no tiene una direccin IP publica. /etc/ddclient.conf
pid=/var/run/ddclient.pid syslog=yes protocol=dyndns2 use=web, web=checkip.dyndns.org/, web-skip='IP Address' server=members.dyndns.org login=USUARIO_DYNDNS password='PASSWORD_DYNDNS' misubdominio.dyndns.org
Documento Inicial, incluye la estructura del documento y contenido para los capitulos iniciales. Se completaro la seccin de creacion de tuneles punto a punto tanto con llave estatica como por certicados. Se agrego capitulo para reforzar la seguridad de OpenVPN Se agregaron las secciones: Autenticacin con usuario y contrasea, Llaves privadas protegidas por contrasea Se agreg capitulo para la instalacin del cliente OpenVPN, con la seccin para la instalacin del cliente en GNU/Linux y Windows XP Se ordeno como procedimiento la instalacion del cliente de windows y se agregaron explicaciones incluyendo screenshots
68 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Actualice el Resumen del documento, agregue la informacin de la resea de OpenVPN y sus caracteristicas, junto con un historial de cambios signicativos en el desarrollo de OpenVPN. Revisin 0.92 2010-06-23 Jorge Medina Cambios en titulo de capitulo y secciones vpn site-to-site. Se agregaron los objetivos del capitulo. Re organizacion de archivos de conguracion. Informacin para conexiones client-to-client. Nuevas referencias web. Se re ordenaron los requerimientos, instalacin y ejecucin, ms referencias. Mas informacin para preparar requerimientos de cliente, servidor y red. Correcciones generales en ejemplos y uso de easy-rsa para revocar certicados, ms referencias. Referencia a manual de la interfaz de administracion. Movi esta informacin al capitulo de introduccin a OpenVPN. Agregue prefacio.xml y quite el de los mtodos de autenticacin. Agregue seccin de los mtodos de autenticacin de openvpn a capitulo intro a openvpn Revisin 0.93 Actualizaciones en capitulo vpn punto-a-punto Cambios en titulo de capitulo y secciones. Re organizacion de archivos de conguracion. Correcciones en ejemplos, mas explicaciones. Nuevas referencias web. Agregue seccin de los mtodos de autenticacin de openvpn. Actualizacion en archivos de conguracion y mas explicaciones. Nueva seccin para asignar IPs estticas para multi-clientes. Ms informacin de envio de opciones DHCP a clientes. Mas referencias. Actualizaciones en conguraciones para usar plugin pam auth. Actualizacion en introduccion de conguracion CA, revision ejemplos y mas referencias. 2010-06-24 Jorge Medina
PREMBULO
El propsito de esta Licencia es permitir que un manual, libro de texto, u otro documento escrito sea libre en el sentido de libertad: asegurar a todo el mundo la libertad efectiva de copiarlo y redistribuirlo, con o sin modicaciones, de manera comercial o no. En segundo trmino, esta Licencia proporciona al autor y al editor[2] una manera de obtener reconocimiento por su trabajo, sin que se le considere responsable de las modicaciones realizadas por otros. Esta Licencia es de tipo copyleft, lo que signica que los trabajos derivados del documento deben a su vez ser libres en el mismo sentido. Complementa la Licencia Pblica General de GNU, que es una licencia tipo copyleft diseada para el software libre. Hemos diseado esta Licencia para usarla en manuales de software libre, ya que el software libre necesita documentacin libre: un programa
69 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
libre debe venir con manuales que ofrezcan la mismas libertades que el software. Pero esta licencia no se limita a manuales de software; puede usarse para cualquier texto, sin tener en cuenta su temtica o si se publica como libro impreso o no. Recomendamos esta licencia principalmente para trabajos cuyo n sea instructivo o de referencia.
APLICABILIDAD Y DEFINICIONES
Esta Licencia se aplica a cualquier manual u otro trabajo, en cualquier soporte, que contenga una nota del propietario de los derechos de autor que indique que puede ser distribuido bajo los trminos de esta Licencia. Tal nota garantiza en cualquier lugar del mundo, sin pago de derechos y sin lmite de tiempo, el uso de dicho trabajo segn las condiciones aqu estipuladas. En adelante la palabra Documento se referir a cualquiera de dichos manuales o trabajos. Cualquier persona es un licenciatario y ser referido como Usted. Usted acepta la licencia si copia. modica o distribuye el trabajo de cualquier modo que requiera permiso segn la ley de propiedad intelectual. Una Versin Modicada del Documento signica cualquier trabajo que contenga el Documento o una porcin del mismo, ya sea una copia literal o con modicaciones y/o traducciones a otro idioma. Una Seccin Secundaria es un apndice con ttulo o una seccin preliminar del Documento que trata exclusivamente de la relacin entre los autores o editores y el tema general del Documento (o temas relacionados) pero que no contiene nada que entre directamente en dicho tema general (por ejemplo, si el Documento es en parte un texto de matemticas, una Seccin Secundaria puede no explicar nada de matemticas). La relacin puede ser una conexin histrica con el tema o temas relacionados, o una opinin legal, comercial, losca, tica o poltica acerca de ellos. Las Secciones Invariantes son ciertas Secciones Secundarias cuyos ttulos son designados como Secciones Invariantes en la nota que indica que el documento es liberado bajo esta Licencia. Si una seccin no entra en la denicin de Secundaria, no puede designarse como Invariante. El documento puede no tener Secciones Invariantes. Si el Documento no identica las Secciones Invariantes, es que no las tiene. Los Textos de Cubierta son ciertos pasajes cortos de texto que se listan como Textos de Cubierta Delantera o Textos de Cubierta Trasera en la nota que indica que el documento es liberado bajo esta Licencia. Un Texto de Cubierta Delantera puede tener como mucho 5 palabras, y uno de Cubierta Trasera puede tener hasta 25 palabras. Una copia Transparente del Documento, signica una copia para lectura en mquina, representada en un formato cuya especicacin est disponible al pblico en general, apto para que los contenidos puedan ser vistos y editados directamente con editores de texto genricos o (para imgenes compuestas por puntos) con programas genricos de manipulacin de imgenes o (para dibujos) con algn editor de dibujos ampliamente disponible, y que sea adecuado como entrada para formateadores de texto o para su traduccin automtica a formatos adecuados para formateadores de texto. Una copia hecha en un formato denido como Transparente, pero cuyo marcaje o ausencia de l haya sido diseado para impedir o dicultar modicaciones posteriores por parte de los lectores no es Transparente. Un formato de imagen no es Transparente si se usa para una cantidad de texto sustancial. Una copia que no es Transparente se denomina Opaca. Como ejemplos de formatos adecuados para copias Transparentes estn ASCII puro sin marcaje, formato de entrada de Texinfo, formato de entrada de LaTeX, SGML o XML usando una DTD disponible pblicamente, y HTML, PostScript o PDF simples, que sigan los estndares y diseados para que los modiquen personas. Ejemplos de formatos de imagen transparentes son PNG, XCF y JPG. Los formatos Opacos incluyen formatos propietarios que pueden ser ledos y editados nicamente en procesadores de palabras propietarios, SGML o XML para los cules las DTD y/o herramientas de procesamiento no estn ampliamente disponibles, y HTML, PostScript o PDF generados por algunos procesadores de palabras slo como salida. La Portada signica, en un libro impreso, la pgina de ttulo, ms las pginas siguientes que sean necesarias para mantener legiblemente el material que esta Licencia requiere en la portada. Para trabajos en formatos que no tienen pgina de portada como tal, Portada signica el texto cercano a la aparicin ms prominente del ttulo del trabajo, precediendo el comienzo del cuerpo del texto. Una seccin Titulada XYZ signica una parte del Documento cuyo ttulo es precisamente XYZ o contiene XYZ entre parntesis, a continuacin de texto que traduce XYZ a otro idioma (aqu XYZ se reere a nombres de seccin especcos mencionados ms abajo, como Agradecimientos, Dedicatorias , Aprobaciones o Historia. Conservar el Ttulo de tal seccin cuando se modica el Documento signica que permanece una seccin Titulada XYZ segn esta denicin[3] . El Documento puede incluir Limitaciones de Garanta cercanas a la nota donde se declara que al Documento se le aplica esta Licencia. Se considera que estas Limitaciones de Garanta estn incluidas, por referencia, en la Licencia, pero slo en cuanto a limitaciones de garanta: cualquier otra implicacin que estas Limitaciones de Garanta puedan tener es nula y no tiene efecto en el signicado de esta Licencia.
[3]
En sentido estricto esta licencia parece exigir que los ttulos sean exactamente Acknowledgements, Dedications, Endorsements e History, en ingls.
COPIA LITERAL
Usted puede copiar y distribuir el Documento en cualquier soporte, sea en forma comercial o no, siempre y cuando esta Licencia, las notas de copyright y la nota que indica que esta Licencia se aplica al Documento se reproduzcan en todas las copias y que usted no aada ninguna otra condicin a las expuestas en esta Licencia. Usted no puede usar medidas tcnicas para obstruir o controlar la lectura o copia posterior de las copias que usted haga o distribuya. Sin embargo, usted puede aceptar compensacin a cambio de las copias. Si distribuye un nmero sucientemente grande de copias tambin deber seguir las condiciones de la seccin 3. Usted tambin puede prestar copias, bajo las mismas condiciones establecidas anteriormente, y puede exhibir copias pblicamente.
COPIADO EN CANTIDAD
Si publica copias impresas del Documento (o copias en soportes que tengan normalmente cubiertas impresas) que sobrepasen las 100, y la nota de licencia del Documento exige Textos de Cubierta, debe incluir las copias con cubiertas que lleven en forma clara y legible todos esos Textos de Cubierta: Textos de Cubierta Delantera en la cubierta delantera y Textos de Cubierta Trasera en la cubierta trasera. Ambas cubiertas deben identicarlo a Usted clara y legiblemente como editor de tales copias. La cubierta debe mostrar el ttulo completo con todas las palabras igualmente prominentes y visibles. Adems puede aadir otro material en las cubiertas. Las copias con cambios limitados a las cubiertas, siempre que conserven el ttulo del Documento y satisfagan estas condiciones, pueden considerarse como copias literales.
70 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Si los textos requeridos para la cubierta son muy voluminosos para que ajusten legiblemente, debe colocar los primeros (tantos como sea razonable colocar) en la verdadera cubierta y situar el resto en pginas adyacentes. Si Usted publica o distribuye copias Opacas del Documento cuya cantidad exceda las 100, debe incluir una copia Transparente, que pueda ser leda por una mquina, con cada copia Opaca, o bien mostrar, en cada copia Opaca, una direccin de red donde cualquier usuario de la misma tenga acceso por medio de protocolos pblicos y estandarizados a una copia Transparente del Documento completa, sin material adicional. Si usted hace uso de la ltima opcin, deber tomar las medidas necesarias, cuando comience la distribucin de las copias Opacas en cantidad, para asegurar que esta copia Transparente permanecer accesible en el sitio establecido por lo menos un ao despus de la ltima vez que distribuya una copia Opaca de esa edicin al pblico (directamente o a travs de sus agentes o distribuidores). Se solicita, aunque no es requisito, que se ponga en contacto con los autores del Documento antes de redistribuir gran nmero de copias, para darles la oportunidad de que le proporcionen una versin actualizada del Documento.
MODIFICACIONES
Puede copiar y distribuir una Versin Modicada del Documento bajo las condiciones de las secciones 2 y 3 anteriores, siempre que usted libere la Versin Modicada bajo esta misma Licencia, con la Versin Modicada haciendo el rol del Documento, por lo tanto dando licencia de distribucin y modicacin de la Versin Modicada a quienquiera posea una copia de la misma. Adems, debe hacer lo siguiente en la Versin Modicada: A. Usar en la Portada (y en las cubiertas, si hay alguna) un ttulo distinto al del Documento y de sus versiones anteriores (que deberan, si hay alguna, estar listadas en la seccin de Historia del Documento). Puede usar el mismo ttulo de versiones anteriores al original siempre y cuando quien las public originalmente otorgue permiso. B. Listar en la Portada, como autores, una o ms personas o entidades responsables de la autora de las modicaciones de la Versin Modicada, junto con por lo menos cinco de los autores principales del Documento (todos sus autores principales, si hay menos de cinco), a menos que le eximan de tal requisito. C. Mostrar en la Portada como editor el nombre del editor de la Versin Modicada. D. Conservar todas las notas de copyright del Documento. E. Aadir una nota de copyright apropiada a sus modicaciones, adyacente a las otras notas de copyright. F. Incluir, inmediatamente despus de las notas de copyright, una nota de licencia dando el permiso para usar la Versin Modicada bajo los trminos de esta Licencia, como se muestra en la Adenda al nal de este documento. G. Conservar en esa nota de licencia el listado completo de las Secciones Invariantes y de los Textos de Cubierta que sean requeridos en la nota de Licencia del Documento original. H. Incluir una copia sin modicacin de esta Licencia. I. Conservar la seccin Titulada Historia, conservar su Ttulo y aadirle un elemento que declare al menos el ttulo, el ao, los nuevos autores y el editor de la Versin Modicada, tal como guran en la Portada. Si no hay una seccin Titulada Historia en el Documento, crear una estableciendo el ttulo, el ao, los autores y el editor del Documento, tal como guran en su Portada, aadiendo adems un elemento describiendo la Versin Modicada, como se estableci en la oracin anterior. J. Conservar la direccin en red, si la hay, dada en el Documento para el acceso pblico a una copia Transparente del mismo, as como las otras direcciones de red dadas en el Documento para versiones anteriores en las que estuviese basado. Pueden ubicarse en la seccin Historia. Se puede omitir la ubicacin en red de un trabajo que haya sido publicado por lo menos cuatro aos antes que el Documento mismo, o si el editor original de dicha versin da permiso. K. En cualquier seccin Titulada Agradecimientos o Dedicatorias, Conservar el Ttulo de la seccin y conservar en ella toda la sustancia y el tono de los agradecimientos y/o dedicatorias incluidas por cada contribuyente. L. Conservar todas las Secciones Invariantes del Documento, sin alterar su texto ni sus ttulos. Nmeros de seccin o el equivalente no son considerados parte de los ttulos de la seccin. M. Borrar cualquier seccin titulada Aprobaciones. Tales secciones no pueden estar incluidas en las Versiones Modicadas. N. No cambiar el ttulo de ninguna seccin existente a Aprobaciones ni a uno que entre en conicto con el de alguna Seccin Invariante. O. Conservar todas las Limitaciones de Garanta. Si la Versin Modicada incluye secciones o apndices nuevos que caliquen como Secciones Secundarias y contienen material no copiado del Documento, puede opcionalmente designar algunas o todas esas secciones como invariantes. Para hacerlo, aada sus ttulos a la lista de Secciones Invariantes en la nota de licencia de la Versin Modicada. Tales ttulos deben ser distintos de cualquier otro ttulo de seccin. Puede aadir una seccin titulada Aprobaciones, siempre que contenga nicamente aprobaciones de su Versin Modicada por otras fuentes --por ejemplo, observaciones de peritos o que el texto ha sido aprobado por una organizacin como la denicin ocial de un estndar. Puede aadir un pasaje de hasta cinco palabras como Texto de Cubierta Delantera y un pasaje de hasta 25 palabras como Texto de Cubierta Trasera en la Versin Modicada. Una entidad solo puede aadir (o hacer que se aada) un pasaje al Texto de Cubierta Delantera y uno al de Cubierta Trasera. Si el Documento ya incluye un textos de cubiertas aadidos previamente por usted o por la misma entidad que usted representa, usted no puede aadir otro; pero puede reemplazar el anterior, con permiso explcito del editor que agreg el texto anterior. Con esta Licencia ni los autores ni los editores del Documento dan permiso para usar sus nombres para publicidad ni para asegurar o implicar aprobacin de cualquier Versin Modicada.
COMBINACIN DE DOCUMENTOS
Usted puede combinar el Documento con otros documentos liberados bajo esta Licencia, bajo los trminos denidos en la seccin 4 anterior para versiones modicadas, siempre que incluya en la combinacin todas las Secciones Invariantes de todos los documentos originales, sin modicar, listadas todas como Secciones Invariantes del trabajo combinado en su nota de licencia. As mismo debe incluir la Limitacin de Garanta. El trabajo combinado necesita contener solamente una copia de esta Licencia, y puede reemplazar varias Secciones Invariantes idnticas por una sola copia. Si hay varias Secciones Invariantes con el mismo nombre pero con contenidos diferentes, haga el ttulo de cada una de estas secciones nico aadindole al nal del mismo, entre parntesis, el nombre del autor o editor original de esa seccin, si es conocido, o si no, un nmero nico. Haga el mismo ajuste a los ttulos de seccin en la lista de Secciones Invariantes de la nota de licencia del trabajo combinado. En la combinacin, debe combinar cualquier seccin Titulada Historia de los documentos originales, formando una seccin Titulada Historia; de la misma forma combine cualquier seccin Titulada Agradecimientos, y cualquier seccin Titulada Dedicatorias. Debe borrar todas las secciones tituladas Aprobaciones.
COLECCIONES DE DOCUMENTOS
71 of 75 06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Puede hacer una coleccin que conste del Documento y de otros documentos liberados bajo esta Licencia, y reemplazar las copias individuales de esta Licencia en todos los documentos por una sola copia que est incluida en la coleccin, siempre que siga las reglas de esta Licencia para cada copia literal de cada uno de los documentos en cualquiera de los dems aspectos. Puede extraer un solo documento de una de tales colecciones y distribuirlo individualmente bajo esta Licencia, siempre que inserte una copia de esta Licencia en el documento extrado, y siga esta Licencia en todos los dems aspectos relativos a la copia literal de dicho documento.
TRADUCCIN
La Traduccin es considerada como un tipo de modicacin, por lo que usted puede distribuir traducciones del Documento bajo los trminos de la seccin 4. El reemplazo las Secciones Invariantes con traducciones requiere permiso especial de los dueos de derecho de autor, pero usted puede aadir traducciones de algunas o todas las Secciones Invariantes a las versiones originales de las mismas. Puede incluir una traduccin de esta Licencia, de todas las notas de licencia del documento, as como de las Limitaciones de Garanta, siempre que incluya tambin la versin en Ingls de esta Licencia y las versiones originales de las notas de licencia y Limitaciones de Garanta. En caso de desacuerdo entre la traduccin y la versin original en Ingls de esta Licencia, la nota de licencia o la limitacin de garanta, la versin original en Ingls prevalecer. Si una seccin del Documento est Titulada Agradecimientos, Dedicatorias o Historia el requisito (seccin 4) de Conservar su Ttulo (Seccin 1) requerir, tpicamente, cambiar su ttulo.
TERMINACIN
Usted no puede copiar, modicar, sublicenciar o distribuir el Documento salvo por lo permitido expresamente por esta Licencia. Cualquier otro intento de copia, modicacin, sublicenciamiento o distribucin del Documento es nulo, y dar por terminados automticamente sus derechos bajo esa Licencia. Sin embargo, los terceros que hayan recibido copias, o derechos, de usted bajo esta Licencia no vern terminadas sus licencias, siempre que permanezcan en total conformidad con ella.
[1] [2]
La licencia original dice publisher, que es, estrictamente, quien publica, diferente de editor, que es ms bien quien prepara un texto para publicar. En castellano editor se usa para ambas cosas.
72 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the eective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts:
73 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to t legibly, you should put the rst ones listed (as many as t reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modied Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modied Version under precisely this License, with the Modied Version lling the role of the Document, thus licensing distribution and modication of the Modied Version to whoever possesses a copy of it. In addition, you must do these things in the Modied Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modications in the Modied Version, together with at least ve of the principal authors of the Document (all of its principal authors, if it has fewer than ve), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modied Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modied Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modied Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modied Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modied Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modied Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modied Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modied Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative denition of a standard. You may add a passage of up to ve words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modied Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modied Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this License, under the terms dened in section 4 above for modied versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodied, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but dierent contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History";
74 of 75
06/01/12 22:40
http://tuxjm.net/docs/Creacion_de_Redes_Privadas_Virtu...
likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
8. TRANSLATION
Translation is considered a kind of modication, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
75 of 75
06/01/12 22:40