我正在研究SOCKS5协议。在理解了它之后,我知道SOCKS5不会加密从客户端到代理服务器的数据。因此,我们可以使用TLS/SSL加密数据吗?安全SOCKS5?
发布于 2021-07-13 10:28:56
SOCKS5只是一个隧道协议,它本身不提供任何加密。因此,必须在隧道外或隧道内添加加密,即
ssh -D已经提供了封装在SSH隧道中的SOCKS5。其他加密层可以是VPN或Tor。发布于 2021-07-13 10:44:34
您可以通过TLS隧道任意网络流量,但SOCKS通常不这样做。您需要一个SOCKS服务器和客户端,它首先建立一个TLS连接,而AFAIK并不存在(编辑:显然有WinGate,来自Steffen链接的答案)。
但是,VPN可以做到这一点。OpenVPN是几种基于TLS的VPN之一(并且对客户机和服务器都是免费的);您可以将它配置为只用于SOCKS连接。您还可以使用基于其他安全协议(如IPSec )的VPN。然后,您的通信量只会在VPN服务器和SOCKS服务器(可能是同一台主机)之间不安全地传输。您只需连接到VPN,然后像往常一样将SOCKS客户端指向SOCKS服务器,VPN将在此过程中保护它。
当然,在某些方面,VPN已经与代理类似。如果您只关心来自主机A的网络流量在主机B进入更广泛的网络之前通过主机B安全地中继,并且您不需要对其进行任何特殊处理或检查,那么VPN可以做得很好。
或者,您可以在您的机器上本地运行SOCKS代理,这极大地限制了拦截的机会,并让它将通信量(通过安全隧道)中继到另一台服务器。这就是OpenSSH (和PuTTY)在其代理模式下所做的事情(对于OpenSSH,您可以在进行SSH连接时使用-D [local-address:]port作为选项)。这将使SSH客户端在本地机器上启动SOCKS代理,侦听指定的本地接口(或所有接口(如果未指定)和端口。SOCKS客户端随后可以连接到这个本地SOCKS服务器(也是SSH客户端),它们的流量将通过SSH隧道路由,并从SSH服务器出现在网络上。这样,SSH服务器实际上就变成了SOCKS服务器,但是机器之间的连接是安全的。
作为另一种选择(可能更好,如果您已经在远程计算机上运行了SOCKS服务器),您可以使用SSH (-L [local_address:]local_port:remote_host:remote_port)通过其安全隧道转发相关端口。例如,ssh -f -N -L localhost:8000:localhost:1080 pham@sockserver.fully.qualified.domain将在端口8000的环回地址上创建一个侦听套接字,并将接收到的任何连接转发到SSH服务器的回送接口上的端口1080 (通常的SOCKS端口)(这里假定该端口也是SOCKS服务器)。通过这种方式,您可以再次将SOCKS客户端指向本地端口(8000),您的流量将安全地通过隧道传送到SOCKS服务器(SOCKS服务器将看到您的流量来自它自己的SSH服务器,而不是直接来自您的计算机)。
https://security.stackexchange.com/questions/252312
复制相似问题