我有一个socks4服务器,用于将来自不同类型的应用程序(http,ftp等)的请求代理到目的地。
我知道socks4没有为应用程序定义一种以任何方式进行身份验证的方式(当客户端连接到服务器时它只指定了一个可选的用户名,但似乎你无法告诉它的客户端应该发送该信息,以便服务器中继请求)
有没有办法在socks4上实现某种认证,常规应用程序协议可以理解这些认证:http,ftp和其他?
答案 0 :(得分:3)
了解SOCKS protocol的工作原理。
SOCKS v4 / 4a响应的第二个字节是一个状态值,指示客户端的请求是被接受还是被拒绝(以及为什么)。在这种情况下,您可能需要使用状态值0x5C
(请求失败,因为客户端未运行identd
或无法从服务器访问)和0x5D
(请求失败,因为客户端的identd
无法确认请求中的用户ID字符串)。这将使请求的用户名字段必须包含有效且可识别的值。当然,这不是真正的身份验证,因为客户端可以运行报告其所需内容的ident
服务器。
否则,切换到SOCKS v5,它支持真正的服务器端身份验证。