VPN y proxy

Proxy SOCKS

Se lee en aproximadamente 4 minutos

Qué es un proxy SOCKS

Un proxy SOCKS (Socket Secure) es un servidor proxy de propósito general que retransmite comunicaciones a nivel TCP/UDP. Mientras que un proxy HTTP solo retransmite comunicaciones web del navegador, un proxy SOCKS puede retransmitir comunicaciones de cualquier aplicación independientemente del protocolo.

El proxy SOCKS no interpreta los datos de la capa de aplicación, simplemente reenvía los paquetes. Por eso tiene la flexibilidad de soportar protocolos distintos de HTTP, como correo (SMTP/IMAP), transferencia de archivos (FTP), SSH y comunicaciones P2P.

Diferencias entre SOCKS4 / SOCKS4a / SOCKS5

SOCKS4 (1996)
Solo TCP. Sin autenticación. Solo IPv4. El destino se especifica con la dirección IP resuelta previamente por el cliente, por lo que las solicitudes DNS se envían directamente al servidor DNS del ISP sin pasar por el proxy. Esto expone al ISP los dominios a los que intentas acceder (fuga de DNS).
SOCKS4a
Versión extendida de SOCKS4. Permite especificar el destino por nombre de dominio, ejecutando la resolución DNS en el lado del servidor proxy. Esto reduce el riesgo de fugas de DNS. Sin embargo, mantiene las limitaciones de SOCKS4: solo TCP y sin autenticación. Fue adoptado en las primeras implementaciones de Tor.
SOCKS5 (RFC 1928, 1996)
Compatible con TCP y UDP. Soporta autenticación por usuario/contraseña (RFC 1929) y GSSAPI. Compatible con IPv6. Puede ejecutar la resolución DNS en el lado del proxy. Permite especificar el destino con dirección IPv4, dirección IPv6 o nombre de dominio. El estándar de facto actual.

En la práctica, elegir SOCKS5 es lo básico. Gracias al soporte UDP, también puede retransmitir comunicaciones que requieren tiempo real como consultas DNS, VoIP y streaming.

Reenvío dinámico de puertos SSH

La forma más sencilla de construir un proxy SOCKS es el reenvío dinámico de puertos SSH. Si tienes acceso SSH a un servidor remoto, puedes levantar un proxy SOCKS5 encriptado sin software adicional.

ssh -D 1080 -N -f user@remote-server

Este comando inicia un proxy SOCKS5 en el puerto local 1080. -N es la opción para no ejecutar comandos en el remoto, -f es para ejecución en segundo plano. Luego solo necesitas configurar localhost:1080 como proxy SOCKS5 en la configuración de proxy del navegador o aplicación.

La ventaja de este método es que la comunicación entre el cliente y el servidor remoto está encriptada por SSH. Los proxies SOCKS normales no encriptan la comunicación, pero al funcionar sobre un túnel SSH, puedes comunicarte de forma segura incluso en redes no confiables como el Wi-Fi público de una cafetería.

Casos de uso práctico

  • Red Tor: Tor levanta un proxy SOCKS5 local (normalmente puerto 9050) y enruta la comunicación de las aplicaciones a través del circuito Tor. Aplicaciones distintas al Tor Browser (curl, wget, etc.) también pueden comunicarse vía Tor con --socks5-hostname localhost:9050.
  • Atravesar firewalls corporativos: Casos donde comunicaciones de protocolos propietarios que no pueden pasar por un proxy HTTP se conectan al exterior a través de un proxy SOCKS.
  • Proxy por aplicación: Mientras que una VPN reenvía toda la comunicación del SO, un proxy SOCKS puede hacer que solo aplicaciones específicas pasen por el proxy. Es posible hacer que solo el navegador pase por el proxy mientras otras aplicaciones se conectan directamente.
  • Desarrollo y pruebas: Casos donde se cambia el destino de conexión a través de un proxy SOCKS para simular accesos desde países o regiones específicas.

Riesgos de los proxies SOCKS públicos

Los proxies SOCKS en sí no encriptan la comunicación. La comunicación con el servidor proxy fluye en texto plano, por lo que usar un proxy no confiable conlleva el riesgo de interceptación del contenido de la comunicación.

En internet se publican numerosas listas de proxies SOCKS gratuitos, pero su uso es extremadamente peligroso. Los riesgos concretos incluyen:

  • Interceptación de comunicaciones: El contenido de comunicaciones no HTTPS (credenciales de inicio de sesión, cuerpo de correos, etc.) queda completamente visible para el operador del proxy
  • Ataque de intermediario: Incluso en comunicaciones HTTPS, puede haber casos donde el proxy inserte certificados falsos para descifrar la comunicación
  • Inyección de malware: Inserción de JavaScript malicioso o redirecciones en las respuestas HTTP
  • Honeypot: Casos donde agencias de seguridad o atacantes operan intencionalmente proxies públicos para monitorear las comunicaciones de los usuarios

Para uso profesional, constrúyelo tú mismo (el túnel SSH es lo más sencillo) o utiliza servicios de proveedores confiables.

Conceptos erróneos comunes

Usar un proxy SOCKS encripta la comunicación
Un proxy SOCKS solo retransmite paquetes y no tiene función de encriptación. Si se necesita encriptación, debe combinarse con un túnel SSH o VPN.
Un proxy SOCKS puede sustituir a una VPN
Un proxy SOCKS solo retransmite la comunicación de aplicaciones específicas. No protege toda la comunicación a nivel de SO como una VPN, y la comunicación de aplicaciones no configuradas sale directamente a internet.

Diferencia entre proxy SOCKS y proxy HTTP

Proxy SOCKS

Independiente del protocolo, retransmite TCP/UDP. Compatible con comunicaciones distintas de HTTP (SSH, FTP, P2P, etc.). No interpreta el contenido de los datos.

Proxy HTTP

Solo retransmite comunicación HTTP/HTTPS. Puede reescribir encabezados de solicitud y almacenar en caché. Especializado en navegación web.

Términos relacionados

Artículos relacionados