метод аутентификации при использовании socks4

У меня есть сервер socks4, который я использую для прокси-запросов от различных приложений (http, ftp и т. д.) к месту назначения.

Я знаю, что socks4 не определяет способ аутентификации приложений каким-либо образом (он указывает только необязательное имя пользователя, когда клиент подключается к серверу, но, похоже, вы не можете сообщить клиенту, что это должен отправить эту информацию, чтобы сервер мог ретранслировать запрос)

Есть ли способ реализовать какую-то аутентификацию через socks4, которую понимают обычные протоколы приложений: http, ftp и другие?


person Ghita    schedule 30.01.2012    source источник


Ответы (1)


Узнайте, как работает протокол SOCKS.

Второй байт ответа SOCKS v4/4a — это значение состояния, указывающее, был ли запрос клиента принят или отклонен (и почему). В этом случае вам, вероятно, потребуется использовать значения состояния 0x5C (запрос не выполнен, поскольку клиент не работает identd или он недоступен с сервера) и 0x5D (запрос не выполнен, поскольку клиент identd не может подтвердить строку идентификатора пользователя в запросе) . Это приведет к тому, что поле имени пользователя в запросе должно содержать действительное и узнаваемое значение. Это, конечно, не настоящая аутентификация, поскольку клиент может запустить ident сервер, который сообщает все, что он хочет.

В противном случае переключитесь на SOCKS v5, который поддерживает настоящую аутентификацию на стороне сервера.

person Remy Lebeau    schedule 31.01.2012
comment
Спасибо за отплату. Я также видел, что сервер может указать эти коды ошибок, чтобы клиент мог повторить попытку с надлежащей аутентификацией. Проблема в том, что клиенты, похоже, игнорируют эти коды ошибок: пробовали с IE, а также с клиентом чата -> они не удосужились спросить пользователю изменить имя пользователя. - person Ghita; 01.02.2012
comment
Вы не можете заставить клиента что-то сделать, вы можете только сообщить, что нужно серверу. В SOCKS v4/4a нет реального имени пользователя, вместо этого это скорее идентификатор клиентской машины, поэтому он необязателен. Сервер SOCKS v4/4a может отклонять машины, которым не разрешено к нему подключаться, но на самом деле это не то же самое, что аутентификация. Hense SOCKS v5. - person Remy Lebeau; 01.02.2012
comment
Да, в этом проблема. Сервер может отклонять запросы, но пользователь приложения оказывается в неработоспособном сервисе, не зная, что вообще происходит. В случае Internet Explorer вы не можете заставить браузер отправлять другие учетные данные. - person Ghita; 01.02.2012
comment
принято как ответ, потому что нет решения описанной проблемы. Socks4 не определяет реальный механизм аутентификации. - person Ghita; 04.02.2012