Введение

SOCKS — это интернет-протокол, который обменивается сетевыми пакетами между клиентом и сервером через прокси-сервер. SOCKS5 может опционально предоставлять аутентификацию, чтобы доступ к серверу имели только авторизованные пользователи. Фактически, SOCKS-сервер проксирует TCP-соединения к произвольному IP-адресу и обеспечивает возможность пересылки UDP-пакетов. SOCKS-сервер принимает входящие клиентские соединения на TCP-порту 1080, как это определено в.

История

Протокол был первоначально разработан Дэвидом Кобласом, системным администратором MIPS Computer Systems. После того, как MIPS была приобретена Silicon Graphics в 1992 году, Коблас представил доклад о SOCKS на Симпозиуме по безопасности Usenix в том же году, сделав SOCKS общедоступным. Протокол был расширен до версии 4 Ин Да Ли из NEC. Референтная архитектура SOCKS и клиент принадлежат Permeo Technologies, компании, выделенной из NEC. (Blue Coat Systems выкупила Permeo Technologies, а затем была приобретена Symantec.) Протокол SOCKS5 изначально был протоколом безопасности, упрощавшим администрирование межсетевых экранов и других средств защиты. Он был утвержден IETF в 1996 году (авторы: М. Лич, М. Ганнис, Ю. Ли, Р. Курис, Д. Коблас и Л. Джонс). Протокол был разработан в сотрудничестве с корпорацией Aventail, которая занимается маркетингом этой технологии за пределами Азии.

Реализации SOCKS прокси-сервера

Sun Java System Web Proxy Server – это кэширующий прокси-сервер, работающий на серверах Solaris, Linux и Windows, поддерживающий протоколы HTTPS, NSAPI I/O фильтры, динамическую переконфигурацию, SOCKSv5 и обратный прокси. WinGate – многопротокольный прокси-сервер и SOCKS-сервер для Microsoft Windows, поддерживающий SOCKS4, SOCKS4a и SOCKS5 (включая UDP ASSOCIATE и GSSAPI аутентификацию). Он также поддерживает передачу SOCKS-соединений на HTTP-прокси, что позволяет кэшировать и сканировать HTTP-трафик, проходящий через SOCKS. SocksGate5 – это файервол SOCKS с функцией инспекции на 7-м уровне модели OSI – прикладном. Поскольку пакеты проверяются на 7-м уровне OSI, файервол SOCKS приложения может обнаруживать несоответствия протоколу и блокировать определенный контент. Dante – это SOCKS-сервер, работающий на уровне каналов, который может использоваться для обеспечения удобного и безопасного сетевого подключения, требуя лишь наличия внешней сетевой связи у хоста, на котором запущен Dante. HevSocks5Server – высокопроизводительный и малозатратный SOCKS-сервер для Unix (Linux/BSD/macOS). Он поддерживает стандартные методы TCP CONNECT и UDP ASSOCIATE, а также аутентификацию по нескольким именам пользователей/паролям.

Другие программы, обеспечивающие интерфейс сервера SOCKS

OpenSSH позволяет динамически создавать туннели, определяемые посредством подмножества протокола SOCKS, поддерживающего команду CONNECT. PuTTY – это SSH-клиент для Win32, поддерживающий локальное создание SOCKS (динамических) туннелей через удалённые SSH-серверы. Secure ShellFish – это SSH-клиент для iOS и macOS, включающий в себя SOCKS-сервер. ShimmerCat – это веб-сервер, использующий SOCKS5 для имитации внутренней сети, позволяя веб-разработчикам тестировать свои локальные сайты без изменения файла /etc/hosts. Tor – это система, предназначенная для обеспечения онлайн-анонимности. Tor предоставляет своим клиентам интерфейс SOCKS-сервера, работающий только по протоколу TCP. Shadowsocks – это инструмент для обхода цензуры, предоставляющий интерфейс SOCKS5. Реализации netcat, такие как Ncat и socat.

Клиенты

Клиентское программное обеспечение должно иметь встроенную поддержку SOCKS для подключения через SOCKS.

Соксификаторы

Socksifiers позволяют приложениям получать доступ к сети для использования прокси без необходимости поддержки каких-либо прокси-протоколов. Наиболее распространенный способ – настройка виртуального сетевого адаптера и соответствующих таблиц маршрутизации для перенаправления трафика через этот адаптер. Win2Socks позволяет приложениям получать доступ к сети через SOCKS5, HTTPS или Shadowsocks. tun2socks – это инструмент с открытым исходным кодом, который создает виртуальные TCP TUN адаптеры из SOCKS прокси, поддерживающие UDP, если это поддерживается на другом конце соединения. Работает на Linux и Windows, имеет порт для macOS и реализацию на языке Golang. Существует также версия, написанная на C, с высокой производительностью, работающая на Linux/Android/BSD/macOS и iOS. proxychains – это Unix программа, которая принудительно направляет TCP трафик через SOCKS или HTTP прокси для запускаемых (динамически связанных) программ. Работает на различных Unix-подобных системах.

Перевод доверенных лиц

Polipo, устаревший прокси-сервер HTTP/1.1 с поддержкой IPv4. Программное обеспечение с открытым исходным кодом, работающее в Linux, OpenWrt, Windows, Mac OS X и FreeBSD. Поддерживается большинством веб-браузеров. Privoxy, SOCKS-to-HTTP прокси без кэширования. Tinyproxy, легковесный HTTP/HTTPS прокси-демон для POSIX-совместимых операционных систем. Разработан с нуля для обеспечения высокой скорости и минимального размера. Предоставляет HTTP-прокси-интерфейс и поддерживает подключение к вышестоящим прокси-серверам SOCKS4/5 и HTTP.

Безопасность

В связи с отсутствием шифрования запросов и обмена пакетами, SOCKS оказывается практически уязвимым для атак типа "человек посередине" и перехвата IP-адресов, что, в свою очередь, облегчает цензуру со стороны правительств.