Documentación final y apéndice de configuraciones
Taller de Telemática: Interconexión de redes con VPN
Autores:
- Pablo García
- Marcos Rodriguez
- Victor Alem
Docentes:
- Ariel Sabiguero
- Leandro Scasso
Descripción general del proyecto
Visión y Objetivo
En el marco del Taller de Telemática edición 2011 de la carrera Tecnólogo en Telecomunicaciones se nos presenta la siguiente propuesta de proyecto. Esta consiste en interconectar de forma segura tres redes independientes a través de Internet. Situación que encontramos con frecuencia en el mercado laboral.
Propuesta de implementación
Para la implementación del proyecto se debe presentar una solución basada en el concepto de “Red Privada Virtual” VPN (por sus siglas en inglés Virtual Private Network), implementando dicha solución con IPsec (abreviatura de Internet Protocol Security – Protocolo de Internet Seguro) ó OpenVPN para lograr la seguridad en la conexión. En nuestro caso se estudiaron ambas implementaciones logrando el funcionamiento completo con OpenVPN. Además de esto, se debe afrontar la problemática de que no se cuenta con una IP fija en Internet sino con un un servicio dinámico, para solucionar esto se debe implementar un Servidor de Nombres de Dominio, DNS (por sus siglas en inglés, Domain Name Server) dinámico. Por otra parte, se debe brindar un servicio DHCP (sigla en inglés de Dynamyc Host Configuration Protocol – Protocolo de Configuración Dinámica de Host) para las máquinas en la red interna. Se debe configurar también, una herramienta de gestión de la red, la cual debe ser capaz de administrar el estado de elementos relevantes en la red.
Software a utilizar
Se propone utilizar OpenWrt el cual es un Sistema Operativo libre (distribución de Linux) y está desarrollado especialmente para dispositivos embebidos como routers domésticos. Justamente este tipo de dispositivos son encontrados frecuentemente en el campo laboral y de ahí el interés en implementar soluciones con OpenWrt.
Prototipo funcional
Los docentes del curso propusieron un prototipo funcional basado en el SO OpenWrt “corriendo” sobre una máquina virtual. Como los alumnos autores de este proyecto ya tienen experiencia en la instalación de OpenWrt sobre routers y además contamos con estos dispositivos, hemos decidido (y previa consulta a los docentes responsables del curso) implementar la solución directamente sobre routers dejando de lado el prototipo máquina virtual + OpenWrt.
Topología
El escenario propuesto es el de interconectar tres redes diferentes, por lo tanto un esquema de red se muestra en la siguiente figura:
Hardware disponible
Contamos con:
- 2 routers Linksys WRT54GL y
- un TP-Link TL-WR1043ND.
Características
TP-Link TL-WR1043ND:
- CPU: Atheros AR9132@400M Hz
- Ram: 32 MB
- Flash: 8 MB
WRT54GL:
- Arquitectura: MIPS
- Velocidad CPU: 200 MHz
- Ram: 16 MB
- Flash: 4 MB
Elección de la versión de OpenWrt
En una primera instancia, instalamos la versión backfire 10.03.1-rc4 en todos los routers. Cuando nos dispusimos a instalar el paquete OpenVPN en los WRT54GL para llevar a cabo los objetivos del proyecto nos encontramos que no teníamos espacio suficiente para instalar todos los paquetes necesarios. Dado esto, instalamos la versión Kamikaze 8.09.1 ya que ocupa menos espacio. Una de los defectos encontrados en esta versión es que el firewall no es administrable vía web. En el TP-Link anduvo todo sin problemas con la backfire 10.03.1-rc4. Durante la realización del proyecto salió la última versión de OpenWRT backfire 10.03.1-rc5 y decidimos probarla en el TP-Link usado como servidor y anduvo sin problemas para cumplir los objetivos del proyecto. Esta versión presenta una interfaz web distinta a la rc4 con algunas funcionalidades extra y, quizás más atractiva.
Servicio DNS dinámico(DDNS)
Descripción
DNS dinámico es un sistema que actualiza en tiempo real la información de los nombres configurados en los servidores de nombres de dominio de manera tal de poder acceder a una red o equipo con un nombre de dominio en lugar de una dirección IP. Es una realidad que la mayoría de las empresas contratan un servicio a Internet con IP dinámica, el servicio DNS dinámico nos brinda una solución más económica a la hora de establecer por ejemplo, un sitio web para la empresa (o en nuestra propia casa) así como también, una solución para administrar remotamente una red a través de Internet. Detalles a cerca de la instalación y configuración se encuentran en el Apéndice adjunto.
VPN
Una Red Privada Virtual o VPN (por sus siglas en Inglés, Virtual Private Network), es una tecnología de red que permite extender la red local (o LAN) sobre una red no controlada (por ejemplo “Internet”) garantizando a los usuarios un acceso seguro consiguiendo las cuatro características básicas de seguridad, estas son:
- Autenticación y autorización
- Integridad
- Confidencialidad
- No repudio
Existen varios tipos de técnicas, tanto a nivel de capa 3 o a nivel de capa 2. Con fines de este proyecto, como las redes están conectadas a través de Internet, precisaremos de la capa IP para alcanzar las otras redes, por lo tanto implementaremos lo que se denomina una VPN de acceso remoto. Para este proyecto usaremos OpenVPN, (solución de conectividad basada en software), así como también IPsec (conjunto de protocolos para asegurar seguridad sobre capa 3 autenticando y/o cifrando el paquete IP).
IPsec
Introducción
IPsec (Internet Protocol Security) es un conjunto de protocolos cuya función es asegurar las comunicaciones sobre el Protocolo de Internet (IP) autenticando y/o cifrando cada paquete IP en un flujo de datos. IPsec está implementado por un conjunto de protocolos criptográficos para asegurar el flujo de paquetes, garantizar la autenticación mutua y establecer parámetros criptográficos. IPsec fue proyectado para proporcionar seguridad en modo transporte (extremo a extremo) del tráfico de paquetes, en el que los ordenadores de los extremos finales realizan el procesado de seguridad, o en modo túnel (puerta a puerta) en el que la seguridad del tráfico de paquetes es proporcionada a varias máquinas (incluso a toda la red de área local) por un único nodo. Podemos establecer dos modos básicos de operación de IPsec:
- modo transporte y
- modo túnel
En modo transporte, sólo la carga útil (los datos que se transfieren) del paquete IP es cifrada o autenticada. El enrutamiento permanece intacto, ya que no se modifica ni se cifra la cabecera IP. El modo transporte se utiliza para comunicaciones ordenador a ordenador. En el modo túnel, todo el paquete IP (datos más cabeceras del mensaje) es cifrado o autenticado. Debe ser entonces encapsulado en un nuevo paquete IP para que funcione el enrutamiento. El modo túnel se utiliza para comunicaciones red a red (túneles seguros entre routers, p.e. para VPNs) o comunicaciones ordenador a red u ordenador a ordenador sobre Internet. Para los fines de este proyecto debemos configurar IPsec en modo transporte para que quede intacta la cabecera IP y poder enrutarlo por Internet. La topología a implementar con IPsec es la siguiente:
Implementación de IPsec en notebooks
IPsec trabaja en un esquema peer-to-peer, existen varias implementaciones, en esta documentación hablaremos de Openswan. Instalamos OpenSwan, el módulo de Kernel correspondiente y un cliente de sincronización de hora. Luego de esto hay que generar las claves y certificados. Encontramos como generar claves y certificados en el Apéndice adjunto. Luego de generadas las claves y certificados pasamos a configurar cada extremo, indicando la dirección IP de la máquina, la subred que se debe encriptar, las claves entre otras. Después de esto debemos reiniciar IPsec, levantar la conexión configurada y estaría pronto. Podemos verificar que la información viaje efectivamente encriptada corriendo un tcpdump en un extremo y lanzando un ping en el otro extremo.
OpenVPN
Introducción
Es un software que brinda una solución de conectividad punto a punto en capa 2 o en capa 3, basada en SSL (Secure Sockets Layer) y VPN (Virtual Private Network). Posee validación jerárquica de usuarios y hosts remotos. Es una aplicación multiplataforma, que surge para facilitar la configuración de vpn's dejando atrás soluciones complejas como sería Ipsec. Seguridad en OpenVPN, este implementa dos modos:
- claves estáticas pre-compartidas: se posee una clave que se comparte entre todos los clientes y servidor, de forma que cualquiera que posea dicha clave podrá encriptar/desencriptar los mensajes.
- SSL/TLS usando certificados y claves RSA: se utilizan dos claves, una pública y otra privada. La pública será entregada a todos y usada para encriptar los datos, mientras que la privada será usada para desencriptar los menajes recibidos.
Para este proyecto utilizaremos el modo “SSL/TLS usando certificados y claves RSA”.
Descripción de la solución
La arquitectura a implementar es la siguiente:
OpenVPN trabaja distinto que IPsec, es un esquema cliente-servidor. Taller de Telemática 2011 - Interconexión de redes con VPN Las llaves y certificados se generan a través de la herramienta easy-rsa que ya se instala con OpenVPN, lo cual se explicará detalladamente más adelante la generación de las mismas en el Apéndice adjunto. Instalaremos OpenVPN y un cliente de sincronización de hora. Este último es necesario para la verificación de los certificados. Las claves son válidas a partir de una fecha dada por un determinado tiempo, por esta razón, tanto cliente como servidor de OpenVPN tienen que estar sincronizados. Pasemos ahora a la configuración de los clientes y el servidor. Para configurar el servidor lo que debemos “decirle” es básicamente:
- el puerto por donde los clientes se conectarán a la VPN,
- el protocolo a utilizar,
- el dispositivo,
- los certificados,
- la IP que vamos a usar para la VPN,
- las configuraciones de los clientes,
- las rutas de los clientes,
- inyectar las rutas a los clientes para que alcancen a los otros (previamente configurar para que sean alcanzables los clientes) y
- otras configuraciones adicionales como logs y compresiones.
Los archivos de configuración están detallados en el Apéndice adjunto. Por último, debemos abrir en el servidor y en los clientes el puerto que se vaya a utilizar para la conexión de la VPN y permitir el “forward” hacia la/las redes internas de cada router y en la interfaz de la VPN. Luego pasamos a configurar los clientes. En esta configuración lo que tenemos que poner es que:
- el nodo actúa como cliente,
- el dispositivo,
- el protocolo,
- la dirección o dominio del servidor y el puerto,
- las llaves y certificados y
- otras configuraciones adicionales.
Verificaciones
Se realizaron pruebas de eficiencia, enviando tráfico por la VPN y por fuera de la misma para medir el impacto de esta en la eficiencia. Para esto copiamos un archivo desde una pc a otra ubicadas detrás de los routers. Se envía en ambas pruebas, un archivo de 21MB desde una pc detrás de El_aguara a otra que está detrás de homerocha. En esta ocasión, tratamos que la velocidad reducida de las ADSL no jugara un papel predominante, por lo cual, conectamos El_aguara en el CURE, donde se disponen de 2Mb de conexión en ambos sentidos. Mientras en homerocha la ADSL contratada es de 1Mb de bajada, donde normalmente la velocidad de descarga normal es de 109Kb/s +- 10%, de esta manera tratamos de aprovechar la mayor velocidad de esta conexión. Cuando se copia el archivo por fuera de la VPN se obtiene el siguiente resultado:
victor@victor-EasyNote-LJ65:~$ scp -P 2211 ./prueba.pdf homerocha.dyndns.org:/home/victor/ prueba.pdf 100% 21MB 117.3KB/s 02:59
Cuando se copia el archivo por dentro de la VPN se obtiene el siguiente resultado: victor@victor-trrisquel:~$ scp ./prueba.pdf 192.168.2.11:/home/victor/ prueba.pdf 100% 21MB 107.1KB/s 03:16
Por lo que se puede apreciar, la diferencia en las velocidades no es siginficativa (8,7%), y está dentro de la velocidad de descarga normal que el servicio ADSL contratado en homerocha provee. Debido a estos números no se pude afirmar o negar, que OpenVPN produzca una merma en el rendimiento del envío de datos a través de Internet.
Plataforma de gestión Zabbix
Descripción
Descargamos una máquina virtual Zabbix pre-instalada desde el sitio http://www.zabbix.com/download.php y la instalamos en una máquina dentro de la red de uno de los clientes. Hay que configurar el servidor web Apache para que acepte conexiones desde la/las redes que nos interesa ingresar a Zabbix. En nuestro caso configuraremos Apache para poder configurar Zabbix desde todas las redes de la VPN. Monitorizaremos lo siguiente:
1. monitorización de BW entrante y saliente de LAN / WAN de cada router 2. monitorización de filesystems de cada router
Utilizaremos el agente propio de Zabbix para los routers ya que con este nos basta para monitorizar lo que se nos pide. Configuraremos el agente para que únicamente escuche los pedidos del servidor (“Regular Check”), note que también se puede habilitar los “Active Checks” para que fuese el agente Zabiix el que se conectase al servidor. También se puede extender las funcionalidades del agente Zabbix para que ejecute determinados comandos y poder personalizar el chequeo1. Para configurar el agente Zabbix simplemente basta con especificar la dirección IP del servidor Zabbix y el nombre del host. Más información acerca de las configuraciones en el Apéndice adjunto. Zabbix posee un front end web para relizar tareas administrativas. Configuraremos los monitores necesarios y los umbrales correspondientes para que el servidor Zabbix muestre una alarma cuando se sobrepasa (o se disminuye) por debajo del umbral. La visión general de Zabbix de los equipos monitorizados es la siguiente: En este caso se ven los routers El_aguara y homerocha alcanzables desde Zabbix y con todos los parámetros en orden. Mientras que el router marcosro, no está siendo alcanzado.
Referencia: http://www.zabbix.com/documentation/1.8/manual/tutorials/extending_agent
En la sección de Monitorización --> Gráficos, podemos seleccionar a que router queremos ver y de que monitor. Los monitores configurados son de uso del disco y tráfico en las distintas interfaces del router. En el siguiente gráfico se puede ver el uso de disco en homerocha, se monitorea el espacio utilizado y libre en /tmp El gráfico obtenido del monitoreo de las interfaces de red de El_aguara es el siguiente: Se puede ver el uso de la interfaz hacia Internet (eth0.0) desde la interfaz inalámbrica (wlan0).
Modificación de OpenWRT
Introducción
LuCI es un proyecto creado en 2008 por la ausencia de una interfaz de administración web de usuario libre, limpia, escalable y fácil de mantener para dispositivos embebidos. LuCI se basa en el lenguaje de programación “Lua”2, se divide la interfaz en “modelos” (models) y “vistas” (views), utilizando librerías de orientación a objetos y plantillas (templates).3 Descripción Para llevar a cabo esta tarea, lo que haremos es escribir Módulos LuCi (LuCi Modules). Existen varias categorías de estos módulos ordenados en directorios. El módulo que nos interesa a nosotros es el “modules”. Para escribir un módulo hay que entender primero el “despachador de procesos de LuCi” (dispatching process in LuCI). LuCi utiliza este árbol que será creado para ejecutar un “index- Function” para cada controlador disponible. Para registrar una función en el árbol se puede utilizar “entry-Function” de la entrada luci.dispatcher que toma 4 argumentos de los cuales 2 son opcionales. entry(path, target, title=nil, order=nil) es la tabla que indica la posición en el árbol.
- path
- target
- title
- order es
describe la acción que se hará cuando el usuario requiera el nodo. título del menú que se desplegará (opcional). un número con el que los nodos con el mismo nivel serán sorteados en el menú (opcional).
Para este proyecto crearemos este módulo conteniendo una función “entry” que se encuentre como link en un menú o sub-menú de OpenWRT, que llame a una función que ejecute un comando para realizar las tareas pedidas y que lo muestre con el título correspondiente. Luego de esto debemos darle un nombre a nuestro módulo y configurarle acciones correspondientes. Para ello, en “target”, llamaremos a una función la cual ejecute un script con las tareas pedidas.
Apéndice
Archivo:Configuraciones ttel.pdf
Referencias
http://luci.subsignal.org/trac/wiki/Documentation/ModulesHowTo
http://luci.subsignal.org/trac/wiki/Documentation
Documentation: Apache HTTP Server - The Apache HTTP Server Project
http://openvpn.net/index.php/access-server/docs/admin-guides.html
http://www.zabbix.com/documentation/
http://wiki.taller.curerocha.edu.uy/mediawiki/index.php/Relevamiento_Grupo_2
http://es.wikipedia.org/wiki/OpenVPN
http://es.wikipedia.org/wiki/OpenWrt
http://es.wikipedia.org/wiki/Vpn
http://es.wikipedia.org/wiki/IPSEC