SOCKS: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Bunkar (обсуждение | вклад) м →Введение: оформление |
|||
Строка 4: | Строка 4: | ||
Клиенты за межсетевым экраном, нуждающиеся в доступе к внешним серверам, вместо этого могут соединяться с SOCKS [[прокси сервер]]ом. Такой прокси сервер контролирует права клиента для доступа к внешним ресурсам и передаёт запрос к серверу. SOCKS может использоваться и противоположным способом, разрешая внешним клиентам соединяться с серверами за межсетевым экраном (брандмауэром). |
Клиенты за межсетевым экраном, нуждающиеся в доступе к внешним серверам, вместо этого могут соединяться с SOCKS [[прокси сервер]]ом. Такой прокси сервер контролирует права клиента для доступа к внешним ресурсам и передаёт запрос к серверу. SOCKS может использоваться и противоположным способом, разрешая внешним клиентам соединяться с серверами за межсетевым экраном (брандмауэром). |
||
В отличие от [[HTTP]] прокси серверов, SOCKS передаёт все данные от клиента, ничего не добавляя от себя, то есть с точки зрения конечного сервера, SOCKS прокси является обычным клиентом. SOCKS более универсален — не зависит от конкретных протоколов уровня приложений (7-го уровня модели OSI) и базируется на стандарте [[TCP/IP]] - протоколе 4-го уровня. Зато [[HTTP]] прокси [[кэш]]ирует данные и может более тщательно фильтровать [[контент|содержимое]] передаваемых данных. |
В отличие от [[HTTP]] прокси серверов, SOCKS передаёт все данные от клиента, ничего не добавляя от себя, то есть с точки зрения конечного сервера, SOCKS прокси является обычным клиентом. SOCKS более универсален — не зависит от конкретных протоколов уровня приложений (7-го уровня [[Сетевая модель OSI|модели OSI]]) и базируется на стандарте [[TCP/IP]] - протоколе 4-го уровня. Зато [[HTTP]] прокси [[кэш]]ирует данные и может более тщательно фильтровать [[контент|содержимое]] передаваемых данных. |
||
Этот протокол был разработан Дэвидом Кобласом (David Koblas), системным администратором MIPS Computer Systems. После того, как в [[1992]] году MIPS вошла в состав [[Silicon Graphics]] (SGI), Коблас сделал доклад о SOCKS на Симпозиуме по Безопасности Usenix (Usenix Security Symposium), и SOCKS стал публично доступным. Протокол был расширен до четвёртой версии Ин-Да Ли (Ying-Da Lee) из NEC Systems Laboratory. |
Этот протокол был разработан Дэвидом Кобласом (David Koblas), системным администратором MIPS Computer Systems. После того, как в [[1992]] году MIPS вошла в состав [[Silicon Graphics]] (SGI), Коблас сделал доклад о SOCKS на Симпозиуме по Безопасности Usenix (Usenix Security Symposium), и SOCKS стал публично доступным. Протокол был расширен до четвёртой версии Ин-Да Ли (Ying-Da Lee) из NEC Systems Laboratory. |
Версия от 16:38, 14 февраля 2010
SOCKS — сетевой протокол, который позволяет клиент-серверным приложениям прозрачно использовать сервисы за межсетевыми экранами (фаерволами). SOCKS — это сокращение от «SOCKetS» (сокеты, гнёзда).
Введение
Клиенты за межсетевым экраном, нуждающиеся в доступе к внешним серверам, вместо этого могут соединяться с SOCKS прокси сервером. Такой прокси сервер контролирует права клиента для доступа к внешним ресурсам и передаёт запрос к серверу. SOCKS может использоваться и противоположным способом, разрешая внешним клиентам соединяться с серверами за межсетевым экраном (брандмауэром).
В отличие от HTTP прокси серверов, SOCKS передаёт все данные от клиента, ничего не добавляя от себя, то есть с точки зрения конечного сервера, SOCKS прокси является обычным клиентом. SOCKS более универсален — не зависит от конкретных протоколов уровня приложений (7-го уровня модели OSI) и базируется на стандарте TCP/IP - протоколе 4-го уровня. Зато HTTP прокси кэширует данные и может более тщательно фильтровать содержимое передаваемых данных.
Этот протокол был разработан Дэвидом Кобласом (David Koblas), системным администратором MIPS Computer Systems. После того, как в 1992 году MIPS вошла в состав Silicon Graphics (SGI), Коблас сделал доклад о SOCKS на Симпозиуме по Безопасности Usenix (Usenix Security Symposium), и SOCKS стал публично доступным. Протокол был расширен до четвёртой версии Ин-Да Ли (Ying-Da Lee) из NEC Systems Laboratory.
Протокол SOCKS 4
SOCKS 4 предназначен для работы через фаервол без аутентификации для приложений типа клиент-сервер, работающих по протоколу TCP, таких, как TELNET, FTP и таких популярных протоколов обмена информацией, как HTTP, WAIS и GOPHER. По существу, SOCKS-сервер можно рассматривать как межсетевой экран, поддерживающий протокол SOCKS.
Типичный запрос SOCKS 4 выглядит следующим образом (каждое поле — один байт):
Запрос Клиента к SOCKS-Серверу:
- поле 1: номер версии SOCKS, 1 байт (должен быть 0x04 для этой версии)
- поле 2: код команды, 1 байт:
- 0x01 = установка TCP/IP соединения
- 0x02 = назначение TCP/IP порта (binding)
- поле 3: номер порта, 2 байта
- поле 4: IP-адрес, 4 байта
- поле 5: ID пользователя, строки переменной длины, завершается null-байтом (0x00)
Ответ Сервера SOCKS-Клиенту:
- поле 1: null-байт
- поле 2: код ответа, 1 байт:
- 0x5a = запрос предоставлен
- 0x5b = запрос отклонён или ошибочен
- 0x5c = запрос не удался, потому что не запущен identd (или не доступен с сервера)
- 0x5d = запрос не удался, поскольку клиентский identd не может подтвердить идентификатор пользователя в запросе
- поле 3: 2 произвольных байта, должны быть проигнорированы
- поле 4: 4 произвольных байта, должны быть проигнорированы
Протокол SOCKS 5
SOCKS 5 расширяет модель SOCKS 4, добавляя к ней поддержку UDP, обеспечение универсальных схем строгой аутентификации и расширяет методы адресации, добавляя поддержку доменных имен и адресов IPv6. Начальная установка связи теперь состоит из следующего:
- Клиент подключается, и посылает приветствие, которое включает перечень поддерживаемых методов аутентификации
- Сервер выбирает из них один (или посылает ответ о неудаче запроса, если ни один из предложенных методов не приемлем)
- В зависимости от выбранного метода, между клиентом и сервером может пройти некоторое количество сообщений
- Клиент посылает запрос на соединение, аналогично SOCKS 4
- Сервер отвечает, аналогично SOCKS 4
Методы аутентификации пронумерованы следующим образом:
- 0x00 — аутентификация не требуется
- 0x01 — GSSAPI
- 0x02 — имя пользователя / пароль
- 0x03-0x7F — зарезервировано IANA
- 0x80-0xFE — зарезервировано для методов частного использования
Начальное приветствие от клиента:
- поле 1: номер версии SOCKS (должен быть 0x05 для этой версии)
- поле 2: количество поддерживаемых методов аутентификации, 1 байт
- поле 3: номера методы аутентификации, переменная длина, 1 байт для каждого поддерживаемого метода
Сервер сообщает о своём выборе:
- поле 1: Версия SOCKS, 1 байт (0x05 для этой версии)
- поле 2: выбранный метод аутентификации, 1 байт, или 0xFF, если не было предложено приемлемого метода
Последующая идентификация зависит от выбранного метода.
Запрос клиента:
- поле 1: номер версии SOCKS (должен быть 0x05 для этой версии)
- поле 2: код команды, 1 байт:
- 0x01 = установка TCP/IP соединения
- 0x02 = назначение TCP/IP порта (binding)
- 0x03 = ассоциирование UDP-порта
- поле 3: зарезервированный байт, должен быть 0x00
- поле 4: тип адреса, 1 байт:
- 0x01 = адрес IPv4
- 0x03 = имя домена
- 0x04 = адрес IPv6
- поле 5: назначение адреса
- 4 байта для адреса IPv4
- первый байт — длина имени, затем следует имя домена без завершающего нуля на конце
- 16 байт для адреса IPv6
- поле 6: номер порта, 2 байта
Ответ сервера:
- поле 1: номер версии SOCKS, 1 байт (0x05 для этой версии)
- поле 2: код ответа, 1 байт:
- 0x00 = запрос предоставлен
- 0x01 = ошибка SOCKS-сервера
- 0x02 = соединение запрещено набором правил
- 0x03 = сеть недоступна
- 0x04 = хост недоступен
- 0x05 = отказ в соединении
- 0x06 = истечение TTL
- 0x07 = команда не поддерживается / ошибка протокола
- 0x08 = тип адреса не поддерживается
- поле 3: байт зарезервирован, должен быть 0x00
- поле 4: тип последующего адреса, 1 байт:
- 0x01 = адрес IPv4
- 0x03 = имя домена
- 0x04 = адрес IPv6
- поле 5: назначение адреса
- 4 байта для адреса IPv4
- первый байт — длина имени, затем следует имя домена без завершающего нуля на конце
- 16 байт для адреса IPv6
- поле 6: номер порта, 2 байта
Ссылки
- RFC 1928 — SOCKS Protocol Version 5
при отстутствии нарушений установленных правилами безопасности работа сокс клиента совершенно прозрачна для клиенских приложений
- RFC 1929 — Username/Password Authentication for SOCKS V5
- RFC 1961 — GSS-API Authentication Method for SOCKS Version 5
- Перевод RFC 1928 - Протокол SOCKS 5
- Перевод RFC 1929 - Аутентификация SOCKS По Методу Логин/Пароль