我知道路由信息总是以明文形式发送的(过于简单,但请耐心听我说),因此在客户端和使用非标准端口的服务器之间存在 SSH 隧道的情况下,并且该隧道使用共享密钥的安全密钥交换进行加密,是否可以辨别出流量本身是 SSH?(例如:第 3 层标头信息是明文的吗?)
另外,还有其他方法可以知道该流量是 SSH 吗?
谢谢。
TL;DR:如何确定 SSH 数据包是 SSH?
答案1
流量本身通过 SSL 加密,因此与其他 SSL 协议(HTTPS、OpenVPN 等)相比很难看出区别。
但是,如果攻击者捕获了整个通信,它也会获得握手,从中他可以清楚地看到它是 SSH。他还可以看到 ssh 客户端和主机 IP(隧道端点)以及它们使用的端口。他无法看到通过隧道的流量。
答案2
我的理解是,一旦隧道建立,第 4 层以上的流量将是乱码。因此,如果您使用的是非标准端口,那么很难甚至不可能辨别任何加密流量。也就是说,您无法区分 SSH、SSL 或其他加密方法。不过,如果这是错误的,我很乐意得到纠正。
答案3
如果攻击者可以访问整个 TCP 会话,他们将有足够的线索知道传输协议是 ssh。尝试远程登录到您知道在标准端口上运行 ssh 的服务器上的端口 22,看看如何操作。
如果攻击者进行流量分析,他或她很可能能够区分 ssh 终端流量和 ssh 端口转发流量(尽管无法直接识别内容)。基本上,打字看起来不像下载 HTML,下载或以任何速度/几乎没有延迟传输数据。
如果攻击者可以访问其中一个端点的所有网络流量,他或她很可能会识别出通过该端点的流量中有多少特定部分也通过了隧道......但到那时你已经损失了很多;没有多少隐私可保护。
不过,目前还没有太多信息是明确的。我怀疑这里是否存在严重风险,但如果不了解您的担忧,就很难解决这些问题。