- 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 user@172.16.1.1 $ 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?