viernes, 13 de julio de 2012

Vpn´s ??? eso que e lo que e !!!

Todos usamos este termino, cuyas siglas significan Virtual Private Network. Todos sabemos mas o menos que son, pero por "debajo" se emplean muchos términos que a veces no están tan claros. No todas las VPN son iguales, en cuanto a rendimiento y sobre todo seguridad. Hay muchos tipos de protocolos de autenticación, encriptación, encapsulamiento, etc. Si bien este post no es muy técnico ( acaso en este blog hay alguno? xD ) ni tan siquiera está enfocado al aspecto de la seguridad, guarda cierta relación con el proposito del blog.
Empezamos definiendo una VPN como una conexión de redes, generalmente dos redes privadas ( casa-trabajo, trabajo-trabajo, proveedor-trabajo...) por un medio público que generalmente es Internet. A veces las VPN son conexiones punto a punto entre segmentos de red, y otro tipo de "deployment´s" de las mentes oscuras de los informáticos de sistemas. Una definición mas formal: VPN-WIKI.
El principal concepto en el que se basan las VPN es el tunneling. El proceso de encapsular un tipo de paquete, dentro de otro, para el transporte del primero, el cual se encarga de negociar el esquema de cifrado y autenticación del transporte. Por ejemplo, si queremos usar un servicio FTP, este protocolo carece de seguridad respecto al viaje de paquetes por la red (cifrado) y el mecanismo de autenticación es en texto claro ( debil ante ataques Man In The Middle).
Para montar una VPN, calificándola según los elementos que la proporcionan, se pueden dividir en 3:
  • VPN basada en Hardware. Suelen ser las soluciones más rápidas, ya que se aprovecha toda la capacidad del sistema hardware en proporcionar el acceso VPN, y no en tareas comunes de cualquier sistema operativo.
  • VPN basada en Firewall. Puede que sean un poco mas lenta que las soluciones basadas en Hardware exclusivo para VPN, pero tienen la ventaja de aprovechar el resto de funciones del firewall como son el NAT, aislado de redes etc.
  • VPN basada en Software. Estas soluciones suelen ser las más peligrosas, ya que hay que controlar la seguridad del propio servicio VPN, así como la seguridad del sistema operativo que la soporta. Sin duda es más económica.
El protocolo propio de las VPN es PPP, Point To Point Protocole. El flujo básico de este protocolo es el siguiente:


La autenticación necesaria tal y como la vemos en el esquema, la proporcionan los protocolos:
  • PAP. Password Authenticaction Protocol.
  • CHAP. Challenge Handshake Authentication Protocol.
  • MS-CHAP v1 ( Microsoft Challenge Handshake Authentication Protocol).
  • EAP. Extensible Authentication Protocol.
  • EAP-TLS. Transport Layer Security.

Como empezábamos el post, los protocolos de Tunneling son los siguiente ( yo de toda la vida pensé que la T de tunneling era de Transfer... según autores):
  • PPTP. Point To Point Tunneling Protocol.
  • L2TP. Layer 2 Tunneling Protocol.
  • SSTP.- Secure Socket Tunneling Protocol. Después de haberte empapado con el RFC, cabe destacar que la mayoría de organizaciones implementan este tipo de soluciones, las tipicas "vpn sobre https" ya que permite conectar clientes mediante un navegador, sin la necesidad de instalación previa de clientes IPSEC por ejemplo. Particularmente me parece mucho menos seguro, ya que trabaja con capa 4 de red, y no con capa 2 como los otros dos protocolos, por lo que no es fiable al 100% en entornos en los que es posible realizar un ataque MITM.
Hemos hablado de protocolo de autenticación, y de túnel, pero y el cifrado?
Todos conocemos SSL y SSH, protocolos de cifrado CAPA 4.
En entornos altamente protegidos no es ni siguiera imaginable que el administrador se conecte desde su casa por ssh a la empresa, por eso mismo, porque actúa en capa 4, y por lo tanto es vulnerable a ataques MITM. Una desventaja frente a la utilización de VPN´s es que las aplicaciones tienen que estar preparadas para trabajar con este cifrado. Por ejemplo, si en nuestra intranet no tenemos https para sharepoint, por decir algo, para usar SSL entre nuestra casa y la intranet, debemos usar https, y preparar el servidor web para ello. Muchos administradores configuran, sobre todo Apache´s, con https, sin tener ni idea de como montar un Certificate Server, y usan las opciones por defecto para crear estos certificados...
La solución Microsoft para el cifrado dentro de las conexiones VPN es Ipsec ( tambíen para el cifrado interno en nuestra red)
Las recomendaciones de seguridad a la hora de analizar los protocolos a implementar son muy importantes. El protocolo mas seguro respecto a la autenticación es sin duda EAP-tls,sobre tarjetas, pero esto requiere la implantación de PKI, ya sabeis, entidad emisora de certificados y esas cosas que tanto nos gustan a los que sufrimos en nuestras carnes algún proceso de certificación de fabricante. Si se decide usar cualquier otro protocolo basado en contraseñas, debe ser importante la política de seguridad de las mismas ( caducidad, bloqueo, complejidad, etc).

Creo que hasta aquí, no he comentado nada nuevo, que los estudiosos en la materia no conocieran desde hace 10 años o más.
Sin embargo, desde hace relativamente poco... se emplean protocolos de cuarentena. Estas tecnologías verifican que los clientes cumplen con los requisitos de seguridad marcados por la organización ( políticas de firewall, actualización, definición de virus, etc).
Los trés que mas suenan son:
  • NAP. Network Acces Protection. Microsoft.
  • NAC. Network Admision Control. Cisco.
  • TNC. Trusted Network Connect.
Seguro que después de indagar en los distintos protocolos, esas cosas que tanto nos gustan, pues todos pensamos en implementar la solución mas robusta, mas segura, mas compleja... pero cuando el comercial se quiera conectar desde un punto público en otro país, y no tenga el cliente ipsec, por ejemplo, pués ya no nos vale el despliegue. Es habitual entre nosotros, los informáticos (sobre todo los que no trabajan en clientes finales) proporcionar las soluciones tecnológicas mas punteras del momento, olvidándonos de que la informática casi siempre es un medio, no un fin. Ninguna empresa cobra mas por tener una mejor VPN, pero si puede ser que cobre mas, si el comercial puede realizar su labor whereverhego.
Los aspectos que creo que hay que considerar a la hora de diseñar una correcta estrategia de implantación son:
  • Volumen. Número de usuarios o delegaciones que se van a conectar, hoy, y a corto y medio plazo.
  • Requisitos de conectividad: Usuarios móviles, delegaciones, partners, etc.
    • Acceso Remoto. Facilidad de conexión.
    • Intranet. Lan to Lan. Típicas delegaciones. Disponibilidad de servicios.
    • Extranet. Lan de empresa con lan de proveedor. Isolation o aislado de servicios publicados.
    • Internos. Vpn a redes wi-fi o segmentos altamente securizados.
  • Costes. Que decir sobre esto. Cisco es el número uno mundial, como puede ser Ferrari en los coches, pero un Bmw no está mal para ir los fines de semana a la playa...y Seat también vale...
  • Recursos. Hay disponible 24 horas al día alguien para dar soporte al partner? Si usamos tecnologías propietarias y poco compatibles, todos los usuarios las cumplen?.
  • Auditoría y control. Podemos garantizar que todos los clientes cumplen nuestras políticas? Tenemos habilitados los mecanismos de control, por ejemplo log´s, para detectar fallos e intentos de accesos fraudulentos.
  • Despliegue. Va a saber mi gerente, que vive a 300 Km. configurar el cliente VPN?
  • Medio público. Tenemos una subida de Internet suficiente? Tenemos que habilitar Quality Of Services para algún servicio o usuario?.
  • Tolerancia a fallos. Una vez que el comercial se acostumbre a rellenar el CRM desde casa, si se cae el sistema un dia, NO VA A IR A LA OFICINA POR CULPA DEL INFORMATICO...
Otro término que se emplea, sobre todo en sistemas ventana, relacionado con la conexión de redes y servicios es VNC.  La autenticación que emplea VNC es en texto claro, como cualquier servicio clásico tipo FTP, Telnet, http etc. En algunos entornos, la longitud de clave máxima está limitada a 8 caracteres...
El cifrado empleado en las comunicaciones es DES, pero la clave siempre es la misma, existiendo numerosas herramientas para la extracción de la misma.

Según el entorno y fabricante, entran en juego numerosas servicios y protocolos añadidos, como es el caso de Radius en los antiguos servidores RAS de Microsoft. No voy a entrar en detalles de la correcta implantación de todos estos protocolos comentados aquí, pero si que voy a puntualizar los aspectos a tener en cuenta, para hacer esto BIEN, dentro de entornos ventana:
El role para instalar todos estos servicios en windows 2008 r2 es: Network Polici and Access Services (Npas).

Espero que esta mini guia te sirva para aclarar algunos conceptos a la hora de implementar una solución remota. En cada link podrás obtener información en detalle de cada aspecto.
Ahora a montar todos servidores vnc abiertos de pe a pa en los routers de jazztel :-).