Hoy es Monday, 6 de February de 2012

Tags Tags: Instalación y migración en Windows 2000 | Servicio DHCP en Windows NT (II)
Estás en: www.eurosoftware-2000.com | Unix - Linux | Seguridad | VPNs en Linux (I)

| Más

VPNs en Linux (I)

Publicado el 04/12/2009

SeguridadSeguramente, en el último tiempo ha escuchado hablar de VPNs. Mucha gente habla de ellas como si fueran la panacea universal en la defensa de las comunicaciones de la empresa, o como si fueran estrictamente necesarias para el funcionamiento de las mismas. Es verdad que en ciertos escenarios se convierten ayudas muy convenientes, pero es necesario detallar sus principales usos, y ver qué tipo de implementación es la más adecuada a su escenario.
Comenzaré diciendo que el fin de este artículo no es explicar detalladamente la implementación o la configuración de cada producto, sino ayudarlo a comprender la utilización y los principales usos de cada uno, con la esperanza de que esto le sirva para decidirse por alguno de ellos.
Definimos primero una VPN. o Red Privada Virtual, como una implementación que permite realizar una conexión segura con alguna red segura también, pasando por un medio inseguro.
Los típicos escenarios de implementación de una Red privada Virtual son dos. El primero consiste en usuarios que deben conectarse a una red privada corporativa mediante una conexión encriptada, a través de un medio no confiable, como Internet o una conexión Wi-Fi, en un estilo de conexión cliente-servidor.
En el segundo, dos redes privadas seguras se conectan vía un enlace punto-a-punto cifrado, con un modelo de conexión P2P (peer to peer). Lo más común para desarrollar éste último tipo de conexión es la implementación de routers con soporte VPN. Cisco soporta desde su IOS varios protocolos de encripción. Sin embargo, firewalls dedicados pueden utilizarse de la misma manera.
Los puntos flacos de las implementaciones de Redes Privadas Virtuales son dos: la perfor-mance (la encripción puede ser una gran devoradora de recursos de sistema), y lo limitada de la utilización de estas implementaciones en conjunto con NAT (Network Address Translation). En general, las "puntas" de una enlace VPN no se colocan en LANs corporativas por este último motivo, excepto por el caso de varios clientes conectados a un VPN server, descrito más arriba. Para solucionar el problema de conjugar VPNs y NAT, muchas veces el VPN server se monta sobre el firewall de la LAN corporativa, pero esto, como se ha dicho, trae aparejados problemas de sobrecarga para el sistema.
Bien, ahora que sabemos a qué atenernos, veamos qué herramientas tenemos disponibles para crear túneles seguros en la red sobre Linux:


FreeS/WAN (ahora OpenS/WAN)

FreeS/WAN (http://www.freeswan.org/) es la implementación de un método de encripción más longeva en el mundo Linux, aunque recientemente ha sido sustituída por su sucesora, OpenS/WAN. Se basa en IPSec, un backport de encabezados de seguridad de IPV6 a IPV4. Tiene las ventajas de ser la más robusta y poderosa de todas las implementaciones, además de ser la más aceptada. Se compone de un par de módulos y comandos en espacio de usuario, los cuales son instalados por FreeS/WAN. La línea de kernels 2.6 ya incluyen estos módulos, pero, en general, la línea 2.4 no, por lo que habrá que parchear el kernel, y recompilarlo para agregar la funcionalidad de IPSec a nuestro sistema. Lo más probable es que FreeS/WAN esté incluida en su distribución de Linux, pero como el proyecto ha caducado recientemente, le recomiendo "pasarse" a OpenS/WAN, un proyecto paralelo fundado por alguna de la gente que desarrollaba FreeS/WAN. Lo más probable es que en un futuro muy cercano las distribuciones principales de Linux reemplacen sus paquetes de FreeS/WAN por OpenS/WAN. Mientras tanto, habrá que compilarlo bajando el código de www.openswan.org/.
Las ventajas más reseñables de la implementación IPSec, sea vía FreeS/WAN o vía OpenS/WAN, son su robustez, la interoperabilidad con otros sistemas operativos, y la estabilidad del producto, dado que ya lleva varios años de desarrollo. Como puntos en contra, podemos resaltar el grado de conocimiento necesario para poder realizar una implementación exitosa, y el hecho de que, al estar diseñado para conectar redes enteras a través de túneles seguros, no "escalea" bien hacia abajo. Esto es, tiene requerimientos de sistema demasiado importantes, y puede que le quede "grande" a su escenario…


OpenSSH

Más que estándar en el mundo Linux como herramienta de shell remoto, poca gente sabe de la funcionalidad de los SSH servers como reenviadores de paquetes encriptados. Vía esta implementación, es posible crear un túnel seguro para cualquier servicio TCP que corra en un solo puerto, vía los switches -L y -R.
Es posible además hacer túneles PPP sobre SSH (lo que normalmente se realiza vía IPSec), pero esto es desastroso en términos de recursos de sistema, llevando la carga de CPU hasta las nubes…
Sin embargo, su habilidad para crear túneles seguros desde un host específico corriendo un servicio específico, la coloca en el hueco dejado por IPSec. Es útil para asegurar conexiones de acceso remoto y de tipo punto-a-punto, si bien, como se ha dicho, no se desenvuelve bien cuando de enlutar tráfico entre dos redes se trata.
OpenSSH está incluída en virtualmente todas las distribuciones de Linux existentes, y sus páginas de manual son bastante claras en la forma de realizar port forwarding seguro mediante esta herramienta.


STunnel

Stunnel no es más que un wrapper SSL; todo lo que hace es encriptar port forwarding, de la misma forma que OpenSSH lo hace. Además, tiene un requerimiento que muchos encontrarán molesto, la necesidad de instalar certificados de seguridad, ya sea firmados por nosotros mismos, o por alguna autoridad certificadora…
STunnel está incluída en todas las distribuciones importantes, y su man page es bastante clara acerca de su utilización.