HTTPSSHSMTPUDPCUSTOMSOCKS5:1080INTERNET

Procurations SOCKS

10 lecture min.Réseautage

SOCKS est le proxy indépendant du protocole. Là où les proxys HTTP ne comprennent que le trafic Web, un proxy SOCKS tunnelisera toute connexion TCP (et dans SOCKS5, UDP), sans poser de questions. Cette généralité est la raison pour laquelle SSH fournit un support SOCKS prêt à l'emploi, pourquoi Tor expose un écouteur SOCKS5 et pourquoi presque tous les outils de confidentialité qui souhaitent transférer du trafic d'application arbitraire finissent par l'utiliser.

Le corps complet de l’article est fourni en anglais ci-dessous.

SOCKS (« Socket Secure ») a été conçu par MIPS Computer Systems au début des années 1990 pour offrir aux hôtes protégés par un pare-feu un moyen propre d'atteindre le monde extérieur. Plutôt que d'analyser chaque protocole d'application comme le fait un proxy HTTP, un serveur SOCKS ouvre simplement les connexions TCP au nom du client et mélange les octets dans les deux sens. Quel que soit le protocole superposé – HTTP, SMTP, IRC, binaire personnalisé – fonctionne inchangé.

SOCKS4 vs SOCKS5

SOCKS4, standardisé en 1992, ne prend en charge qu'IPv4 et TCP et n'a aucune authentification. Il est essentiellement obsolète aujourd'hui mais reste largement utilisé dans les logiciels existants.

SOCKS5, défini dans la RFC 1928 (1996), est la version actuellement utilisée. Il ajoute : 

  • IPv6 adresses de destination
  • Destinations (le proxy les résout, pas le client - important pour la confidentialité)
  • Authentification méthodes (le nom d'utilisateur/mot de passe étant le nom d'utilisateur/mot de passe commun). un)
  • UDP associé — un canal de contrôle qui permet au client de tunneler les datagrammes UDP, utile pour les protocoles DNS, VoIP et de jeu

Le flux de connexion

Une conversation SOCKS5 ressemble à ceci :

  1. Le client se connecte au SOCKS serveur sur son port d'écoute (généralement 1080).
  2. Client envoie un greeting répertoriant les méthodes d'authentification prises en charge. Requête CONNECT nommant l'hôte et le port de destination.
  3. Server ouvre cette connexion TCP, répond avec succès et l'adresse liée, et à partir de là, tout ce que le client écrit est transmis à la destination et vice versa.

Cinq allers-retours avant le déplacement du premier octet d'application. SOCKS n'est pas compatible avec la latence, mais c'est simple.

SOCKS et DNS : d'où viennent les fuites

Une fonctionnalité subtile de SOCKS5 est la façon dont la destination est nommée. La requête CONNECT peut le nommer par IPv4, IPv6 ou domain name. Si le client envoie une adresse IP, il a effectué la recherche DNS localement – ​​et si vous essayiez de vous cacher derrière le proxy, votre résolveur local vient de voir le nom. Si le client envoie le domain, le proxy le résout, ce que souhaitent les utilisateurs de Tor.

C'est la cause première d'innombrables fuites DNS : des applications configurées pour SOCKS5 qui résolvent toujours les noms d'hôte localement. Curl a besoin de --socks5-hostname au lieu de --socks5. Firefox a besoin de network.proxy.socks_remote_dns = true. Notre test de fuite DNS détecte le mode de défaillance.

SSH transfert dynamique

L'une des utilisations les plus pratiques de SOCKS est ssh -D 1080 user@server. SSH génère un écouteur SOCKS5 local ; toute application pointée vers elle voit son trafic TCP tunnelé via la session SSH vers server, qui établit ensuite la connexion sortante. Gratuit, crypté de bout en bout entre vous et le serveur SSH, et il contourne presque toutes les restrictions de réseau local autorisant le port 22.

SOCKS vs HTTP CONNECT

HTTP CONNECT, le verbe de tunneling utilisé par les proxys HTTP pour HTTPS, est fonctionnellement similaire à SOCKS — les deux établissent un tunnel TCP brut. Les différences :

  • HTTP CONNECT fonctionne sur HTTP, il hérite donc de l'authentification HTTP et est compatible avec un pare-feu sur le port 80 ou 443.
  • SOCKS est un protocole dédié sur un port dédié, avec une prise en charge UDP plus propre et une authentification plus riche.
  • HTTP CONNECT peut être intercepté et inspecté par des filtres compatibles HTTPS ; SOCKS leur est plus opaque.

SOCKS sur TLS

SOCKS lui-même n'est pas crypté — le lien client/proxy est en texte brut, y compris l'échange d'authentification. Pour protéger le lien, les déploiements modernes enveloppent SOCKS dans TLS ou l'exécutent dans un tunnel SSH. Shadowsocks a adopté une approche différente : il a conservé l'idée de SOCKS5 mais a ajouté un cryptage et un obfuscation par connexion pour vaincre inspection approfondie des paquets.

Où SOCKS se trouve à côté des VPN

A, un VPN achemine le trafic all depuis votre appareil via un tunnel. Un proxy SOCKS achemine uniquement les applications que vous pointez vers lui. Cela rend SOCKS idéal pour le tunneling sélectif (acheminez uniquement votre navigateur via Tor, laissez les jeux sur le lien local) et moins idéal pour la protection de l'ensemble de l'appareil. Certains fournisseurs VPN commerciaux (Mullvad, IVPN) exposent également les points de terminaison SOCKS5 au sein de leurs réseaux afin que vous puissiez acheminer une seule application sans activer le VPN complet.

Questions fréquemment posées

SOCKS5 est-il crypté ?
Non, SOCKS5 est un protocole de transport, pas un protocole de chiffrement. L'authentification et les données voyagent toutes deux en texte brut entre vous et le proxy, à moins que vous n'enveloppiez le tout dans TLS ou que vous ne l'exécutiez via un tunnel SSH. N'utilisez pas SOCKS sur des réseaux hostiles sans couche externe de cryptage.
Quel port SOCKS utilise-t-il ?
Par convention, 1080. Ce n'est pas une exigence stricte et de nombreux déploiements utilisent d'autres ports - l'écouteur SOCKS5 fourni par Tor est sur 9050 - mais 1080 est la valeur par défaut attribuée par l'IANA.
Pourquoi Tor utilise-t-il SOCKS5 au lieu de HTTP ?
SOCKS5 peut tunneler n'importe quel protocole TCP, pas seulement HTTP. Les utilisateurs de Tor souhaitent acheminer les IRC, les e-mails, les applications personnalisées et bien plus encore, pas seulement le trafic Web. SOCKS5 transmet également les noms de domaine au proxy, ce qui permet à Tor de les résoudre au sein du réseau plutôt que de divulguer la recherche localement.
SOCKS peut-il gérer UDP ?
SOCKS5 a ajouté une commande associée à UDP qui permet au client de tunneler les datagrammes UDP via le proxy. La prise en charge est inégale – de nombreuses implémentations de serveurs SOCKS ne font que TCP – mais la spécification est là, et c'est ainsi que Tor et Shadowsocks gèrent le DNS basé sur UDP.
Dois-je préférer SOCKS5 ou un VPN ?
Pour la confidentialité de l’ensemble de l’appareil, un VPN – il tunnelise tout et crypte le lien. Pour tunneliser une application spécifique ou pour enchaîner avec Tor, SOCKS5 est le bon outil. Les deux sont complémentaires et non concurrents.
Explication des proxys SOCKS : fonctionnement de SOCKS4, SOCKS5 et SOCKS sur TLS