CALCETINES

SOCKS es un protocolo de red que permite que las aplicaciones cliente-servidor utilicen de forma transparente los servicios de un firewall . SOCKS es la abreviatura del término en inglés "  sockets  " y "  Secured Over Credential-based Kerberos  ".

Las aplicaciones de red protegidas detrás del firewall que deseen acceder a servidores externos deben conectarse a través de un servidor proxy tipo SOCKS. Dicho servidor decide sobre la elegibilidad del cliente para acceder al servidor externo y transmite su solicitud al servidor. SOCKS también se puede usar a la inversa, lo que permite que las aplicaciones externas se conecten a servidores detrás del firewall.

El protocolo fue desarrollado originalmente por David Koblas , uno de los administradores de sistemas de la compañía MIPS . En el año de la adquisición de MIPS por Silicon Graphics , en 1992, Koblas presentó un documento sobre SOCKS en una conferencia de seguridad de Usenix , y SOCKS se convirtió efectivamente en un protocolo público. El protocolo ha sido mejorado en la versión 4 por Ying-Da Lee de la empresa NEC .

La versión 4a, "no oficial", agrega soporte para servidores de resolución de nombres a SOCKS.

La versión actual 5 del protocolo, especificada en RFC 1928 , amplía la versión anterior al agregar la capacidad de transmitir UDP , permite la autenticación, la resolución de nombres de dominio por parte del propio servidor SOCKS e IPv6 .

La arquitectura y la aplicación cliente de referencia son propiedad de Permeo Technologies.

Según el modelo OSI , el protocolo SOCKS es una capa intermedia entre la capa de aplicación y la capa de transporte.

Servidores SOCKS

Lista de software del servidor SOCKS:

Clientes de SOCKS

Hay programas disponibles para socksify otras aplicaciones, lo que permite que cualquier software con capacidades de red utilice SOCKS, incluso si no está diseñado para admitir SOCKS.

Lista de clientes de SOCKS

Cliente Licencia Versión Fecha de creación Plataforma Versión del protocolo
ProxyCap Shareware 5.26 03/2007 Windows , Mac OS X v4, v5, HTTPS, túnel SSH, HTTP
socat GLP 1,6 03/2007 POSIX túnel multi-opcional
WideCap Shareware 1.4 12/2007 Ventanas v4, v5, HTTPS
Proxificar Shareware 3,21 02/2007 Windows , Mac OS X v4, v5, HTTPS, HTTP
Cliente de túnel HTTP Freeware 4.4.400 01/2007 Ventanas v4, v5, HTTP
calcetines GLP 1,6 10/2006 * BSD, Mac OS X v4, v5
conectar GLP 1,95 08/2006 Ventanas , POSIX v4, v5, HTTPS
nylon Cláusula 3-BSD 1.2.1 07/2006 OpenBSD v4, v5
cadenas de proxy GLP 3.1 05/2006 POSIX (fuente) v4, v5, HTTPS
FreeCap GLP 3,18 02/2006 Ventanas v4, v5, HTTPS
Cliente Dante BSD / Universidad Carnegie Mellon 1.1.19 01/2006 POSIX v4, v5, HTTP
Túnel Shareware 1.4 06/2005 Ventanas Túnel SSH
Biblioteca de GNet GLP 2.0.7 02/2005 POSIX (fuente) v4, v5
CALCETINES Colibrí Freeware 8.0 10/2003 Ventanas v4, v5
calcetines GLP 1.8 10/2002 POSIX (fuente) v4, v5
Gorila Kernel Socks GLP 0.0.4 1/2005 POSIX (fuente) v5

CALCETINES v4

Una conexión SOCKS normal consiste en intercambiar las siguientes tramas TCP:

Del cliente a los servidores de SOCKS

Luego del servidor al cliente

Ejemplo:

Aquí está la solicitud SOCKS que permite conectar un cliente Fred a la dirección 66.102.7.99:80, en este ejemplo el servidor responde con un "OK":

A partir de este punto, todos los datos enviados en este flujo TCP se transferirán en el puerto 80 a la dirección 66.102.7.99

El valor 0x02 ("bind") para el segundo campo de la solicitud permite la apertura de conexiones entrantes para protocolos como FTP en modo activo.

CALCETINES v4a

SOCKS 4a es una extensión simple del protocolo SOCKS 4 que permite a un cliente que no puede resolver el nombre de dominio del host de destino incluirlo en su solicitud.

El cliente debe establecer los primeros tres bytes de la dirección IP de destino en NULL y el último byte en un valor que no sea NULL (esto corresponde a una dirección IP de tipo 0.0.0.x, con x un valor diferente a 0, que no es una dirección válida y, por lo tanto, nunca podría haberse utilizado si el cliente hubiera podido resolver el nombre de dominio). Luego, el cliente debe enviar el nombre de dominio de destino después del byte NULL que termina el nombre de usuario y terminarlo con otro byte NULL. Esto se usa de la misma manera para las solicitudes de "conexión" y "vinculación".

Una conexión SOCKS con una solicitud de resolución de nombre de dominio se ve así:

De cliente a servidor

Luego del servidor al cliente

Un servidor que admita el protocolo 4a debe examinar la dirección IP de destino en la solicitud. Si es una dirección 0.0.0.x con una x distinta de cero, el servidor debe leer el nombre de dominio especificado por el cliente en el paquete. A continuación, debe resolver él mismo el nombre de dominio y establecer la conexión, si es posible.

CALCETINES v5

SOCKS v5 es una extensión de SOCKS v4 que ofrece más posibilidades de autenticación y compatibilidad con UDP. El apretón de manos inicial consta del siguiente procedimiento:

Los métodos de autenticación admitidos se enumeran de la siguiente manera:

La solicitud inicial del cliente al servidor es:

A continuación, el servidor comunica su elección:

El resto de la autenticación depende del método elegido.

Después de la autenticación, el cliente envía su solicitud de conexión:

El servidor transmite su respuesta:

Notas y referencias

  1. ftp://ftp.delegate.org/pub/DeleGate/COPYRIGHT
  2. http://mindprod.com/jgloss/socksify.html

enlaces externos