Pagina: http://www.pilas.net/20060531/tecnologias-libres-para-tuneles-y-vpns/ Cuando pensamos en seguridad en la red generalmente se nos ocurren dos alternativas: Utilizar protocolos de aplicación que en forma nativa provean encripción y autenticación (p.e. https, imaps, etc), o implementar una solución “completa” mediante IPsec. Pero que sucede cuando estamos obligados a trabajar en situaciones donde IPsec no es viable por limitaciones de los SOs, o por su dificultad de implementación y mantenimiento, y a la vez precisamos asegurar protocolos de aplicación que no soportan encripción y autenticación en forma nativa. Existen muchas soluciones en software libre orientadas a crear túneles y VPNs, y no siempre es fácil elegir la más indicada para cada caso. Dada la cantidad de soluciones existentes, es necesario emplear mucho tiempo en comprender el funcionamiento de cada una y hacer pruebas de laboratorio para determinar la escalabilidad, facilidad de uso y necesidades de administración de cada una. En la conferencia, se verán distintos modos de crear túneles y VPNs, discutiendo las ventajas de cada implementación particular y mostrando ejemplos de configuración. El objetivo de la conferencia es que los participantes obtengan conocimientos generales sobre estas tecnologías de modo que sean capaces de elegir las mejores soluciones para cada problema.
- 1. Tecnologas Libres para Tneles y VPNs. 5 oct 2007 CafeConf 6
UADE Buenos Aires, Argentina jun 2006 II EMSSOL Universidad Peruana
Unin, Juliaca, Per 26 may 2006 - 1ra. Semana de la Ciencia y la
Tecnologa - Universidad Catlica del Uruguay
2. Agenda
-
- Descripcin de la situacin
-
- Conceptos generales encriptacin y autenticacin
-
- Conceptos generales tneles
- Tneles: ssh, stunnel, zebedee
- Otros: pptp, cipe,vpnd, vtun, tunnelv
3. Introduccin
- Confidencialidad, seguridad (passwords).
- No siempre tengo control de la conexin fsica(wireless,
internet, etc.)
- No confiar en el canal fsico:
4. Introduccin
- No siempre los protocolos de aplicacin autentican cliente y
servidor de forma confiable (nfs, aplicaciones legadas).
- Atacantes pueden personificar el servidor y/o el cliente.
- Ataques comprometiendo elementos que no estn bajo mi control
(dns, rutas en Internet, etc.)
5. Introduccin
- Encripcin y autenticacin del trfico:
- Dos problemas diferentes:
-
- Para una aplicacin especfica,
-
-
- Lo ideal es que la aplicacin soporte encripcin en forma nativa
(smtp/tls, imaps, pops, ssh, https)
-
-
- Cuando no soporta encripcin: tnel o VPN
-
- Para todo el trfico de la red: VPN
6. Introduccin - Encripcin
- Encripcin por clave simtrica:
- Las dos partes comparten la misma clave secreta.
- La seguridad depende del secreto de la clave compartida.
- Escala muy mal al aumentar nmero de participantes (((n-1) * n)
/ 2)
- Ejemplos: Blowfish, AES, RC5, 3DES
7. Introduccin - Encripcin
- Encripcin por clave pblica:
- Dos claves relacionadas entre si, una pblica, la otra
privada.
- La clave pblica se distribuye libremente (seguridad cero).
- La seguridad depende de la clave privada, que debe ser conocida
solo por el dueo.(seguridad relativa + frase acceso)
- Escala muy bien con el nmero de participantes (n+1).
8. Introduccin - Encripcin
- Protocolo para intercambio de claves.
- Combina las ventajas de la criptografa de clave pblica con la
eficiencia en CPU de clave simtrica.
- Permite generar dinmicamente sobre una conexin insegura una
clave simtrica compartida por las dos partes.
- El resto de la comunicacin se realiza encriptando con estas
claves simtricas.
- Usado en: GNUpg, TLS, IKE, etc.
9. Introduccin - Tneles
- Para encriptar el trfico de aplicaciones individuales.
- El tnel encripta el trfico para un protocolo y puerto
determinado.
- No para aplicaciones que generan conexiones dinmicamente(ej.
ftp, voip)
- Como ventaja adicional, algunas implementaciones permiten
comprimir el trfico.
- La conveniencia de usar compresin depende de la relacin entre
la velocidad de la red y de la cpu.
WAN/ LAN 172.16.1.2:25 10.1.1.1 10.1.1.10:1234 172.16.1.1
Tnel:10.1.1.10:1234 ==> 172.16.1.2:25 (va 172.16.1.1) telnet
10.1.1.10 1234 10. Introduccin - VPNs
- Red Privada Virtual, simula una conexin segura, a travs de una
red insegura (Internet, etc.).
- La VPN es un dispositivo de red ms, deben establecerse rutas,
etc.
- Comnmente la VPN es en capa 3, tambin es posible hacer VPNs en
capa 2.
- Generalmente es posible comprimir el trfico.
VPN es GW a: 172.16.1.0/24 WAN/ LAN 172.16.1.3 10.1.1.3 10.1.1.1
VPN es GW a: 10.1.1.0/24 172.16.1.1 10.1.1.2 172.16.1.2 11.
Introduccin - IPsec
- Estndar opcional en IPv4, obligatorio en IPv6.
- Usando IKE y encripcin oportunista es posible encriptar en
forma transparente nodos que no se conocen previamente.
- Es una modificacin del stack IP, requiere modificacin del
kernel.
- Cdigo no portable, cada sistema operativo tiene su propia
implementacin.
- Complejo de configurar en ambientes heterogneos.
- El protocolo es complejo:
http://www.schneier.com/paper-ipsec.pdf
12. Tneles - ssh
- Instalado en la mayora de los equipos Unix.
- Ideal para hacer tneles para resolver problemas puntuales.
- Soportado bajo Windows con cygwin (hoy est portado)
- Clave pblica: DSA, RSA (recomendado)
- Clave simtrica: 3DES, Blowfish, CAST128, Arcfour, AES
13. Tneles - ssh
- Tuneliza en forma nativa y transparente conexiones X11.
- Su objetivo principal no es hacer tneles.
- Cuidado al configurar!. No dar privilegios al usuario que crea
el tnel.
- El cliente del tnel no corre como demonio, es necesario hacer
scripts para verificar que no muera, iniciarlo automticamente,
etc.
14. Tneles - ssh
- Especificar el tnel en lnea de comandos (remoto/local?).
- Para tneles que deban ser creados en forma automtica usar clave
pblica.
- Restringir privilegios de la clave pblica en el servidor.
WAN/ LAN 172.16.1.2:25 10.1.1.10:1234 172.16.1.1
Tnel:10.1.1.10:1234 ==> 172.16.1.2:25 (va 172.16.1.1) $ ssh -L
1234:172.16.1.2:25 [email protected] $ telnet 10.1.1.10 1234 15.
Tneles - stunnel
- Depende solo de openssl y tcpwrappers.
- Compila en todos los unixes, freebsd, gnu/linux.
- Compila bajo Win NT/2000/XP.
- AutenticacinX 509 , y todos los algoritmos soportados por
openssl.
16. Tneles - stunnel
- Permite dar soporte SSL a servidores que no tienen SSL
nativamente (imaps, https, etc.)
- Una sola instancia del demonio puede atender varios
tneles.
- Soporta chroot en forma nativa.
- Un thread por conexin, usar solo con kernel 2.6
- Tuneliza sobre TCP (usar opcin TCP_NODELAY=1).
17. Tneles - stunnel Configuracin: WAN/ LAN 10.1.1.10
172.16.1.1:1234 Tnel: 10.1.1.10:1234 ==> 172.16.1.2:1234
/etc/stunnel/stunnel.conf: socket = r:TCP_NODELAY=1 pid
=/var/run/stunnel4/stunnel.pid client = yes [1234] accept =
127.0.0.1:1234 connect = 172.16.1.1:5678 /etc/stunnel/stunnel.conf:
socket = l:TCP_NODELAY=1 pid =/var/run/stunnel4/stunnel.pid cert =
/etc/stunnel/stunnel.pem [5678] accept = 5678 connect =
127.0.0.1:1234 :5678 127.0.0.1:1234 18. Tneles - zebedee
- Compila en todos os Unix, *BSD, GNU/Linux.
- Compila bajo Win NT/2000/XP.
- Z libB lowfishD iffie-Hellman.
- Autenticacin mediante clave pblica asociada a
Diffie-Hellman.
19. Tneles - zebedee
- Permite compresin zlib, opcionalmente bzip2.
- Desarrollo estable(estancado)desde 2003.
- Multithread, usar con kernel 2.6 .
- En UDP o limite por datagrama es de 16kb.
- No garantiza integridad de los datos (es posible introducir
ruido).
20. Tneles - zebedee / usr/local/etc/zebedee/zebedee.conf
detached trueserver falseipmode tcplistenip 127.0.0.1 logfile
/var/log/zebedee-client serverhost172.16.1.1
tunnel12300,12400:172.16.1.1:1230,1240 compression zlib:9keylength
256 maxbufsize 16383 keygenlevel
2checkidfile'/usr/local/zebedee-client_server-id.id' /
usr/local/etc/zebedee/zebedee.conf detached trueserver trueipmode
tcplogfile /var/log/zebedee-server compression zlib:9keylength 256
keygenlevel 2include ' /usr/local/zebedee-server.key' redirect none
target localhost:1230/tcp,1240/tcp WAN/ LAN 10.1.1.10
172.16.1.1:1230 172.16.1.1:1240 Tneles: 10.1.1.10:12300 ==>
172.16.1.2:1230 10.1.1.10:12400 ==> 172.16.1.2:1240
127.0.0.1:12300 127.0.0.1:12400 172.16.1.1 21. VPN - OpenVPN
- Compila en GNU/Linux, *BSD, Mac OS X, Solaris.
- Compila en Windows 2000/XP.
- Los soportados por OpenSSL.
- Opcional clave simtrica compartida.
22. VPN - OpenVPN
- Compresin adaptativa dependiendo del tipo de datos.
- VPNs en las que ambos nodos tienen IP dinmica (adsl, dhcp,
etc.)
- Tuneliza sobre UDP, TCP opcional.
- Simples de configurar y utilizar, ideal para ambientes
heterogneos.
23. VPN - OpenVPN Configuracin: /etc/openvpn/casa.conf : dev tun
remote 172.16.0.1 ifconfig 10.1.0.2 10.1.0.1 ## route add -net
10.0.0.0 netmask 255.255.255.0 gw $5 up ./home.up ## openvpn
--genkey --secret servidor.keysecret servidor.key ping 15
ping-restart 45 ping-timer-rem persist-tun persist-key
/etc/openvpn/servidor.conf : dev tun ifconfig 10.1.0.1 10.1.0.2 ##
route add -net 10.0.1.0 netmask 255.255.255.0 gw $5 up ./office.up
## La misma que en el cliente. secret servidor.key ping 15
ping-restart 45 ping-timer-rem persist-tun persist-key 24. Otros -
VPN
- Requiere mdulo de kernel.
- Solo funciona con kernel Linux (existe tambin un porte a
Windows).
- Seguridad
cuestionada:http://diswww.mit.edu/bloom-picayune/crypto/14238
- Nativo en Windows NT, soportado en GNU/Linux, Solaris.
- Completamente inseguro: http://www.schneier.com/pptp.html
- Sin desarrollo desde 2001.
25. Otros - Tneles
- Usa ethertap (deprecated en el kernel).
- Desde 1999 sin desarrollo.
- Inseguro:
http://diswww.mit.edu/bloom-picayune/crypto/14238
- Desarrollo estancado en 2003.
- Compila en casi todos os Unix, no compila en Windows
26. Tneles, VPNs y firewalls
- Al hacer un tnel o una VPN, genero una conexin directa entre
dos redes que pueden estar protegidas por varias capas de
firewalls.
- Esto es especialmente peligroso en una VPN en la que uno de los
nodos es comprometido.
- Aplicar reglas de firewall a los devices de la VPN.
- Restringir los tneles para que sean solo entre puertos y
clientes autorizados.
- Mucho cuidado si cada punta de la VPN est en zonas con distinto
nivel de seguridad.
27. Rodolfo Pilas [email_address] Original de:Mario Bonilla
Preguntas?