1

我是一名嵌入式工程师(不是网络大师),正在构建一个基于 Linux 的设备(一种便携式测量仪器),通常不连接到互联网,但我们需要让设备能够“打电话回家”以既不损害产品安全、也不损害客户网络安全或我们自己公司网络的方式获得支持,包括更新和故障排除。

在设备连接到客户选择使用的任何网络后,“回拨”功能将完全由用户控制,可能通过按下物理按钮来激活它。对于原型和演示系统,该网络可以在某人的家中或办公室,甚至可以通过电话连接(该设备将仅包含一个有线以太网端口,如果需要 WiFi 访问,客户将需要提供有线 AP)。

建立连接不需要在用户端进行每次呼叫配置,也不需要在我们的盒子内进行,所以我认为我们可以要求客户提供 DHCP,而不是其他。我们还可以要求客户在按下“呼叫主页”按钮之前先与我们联系,这样我们就可以仅在需要时启动我们的支持界面。

当一个单位确实“打电话回家”时,它只是与公司系统建立连接,直到工程师(嗯,我)直接连接到它之前什么都不做。除了存在连接之外,我们应该没有(或很少)关于客户正在使用的网络的信息。所以我正在考虑某种 SSH 连接,但这就是我所得到的。

如果可能的话,它应该“感觉”就像我在本地连接一样,就好像设备在我的桌子上一样(可能有更多的延迟、损失和最小的带宽)。

但我不知道如何将 SSH 连接(如果这是用于此的正确工具)作为两个独立的部分进行:远程单元“呼叫”某处,大概在我们公司的一个系统上,然后该系统通知工程师(我)已经启动了“回拨”,然后等待工程师连接,形成连接的另一半。

连接不需要识别远程系统(品牌、型号、序列号、版本等):我会在安全登录后手动完成。

如果需要,我可以在我们端创建一个新系统(Linux、BSD、Windows,无论是物理的还是虚拟机),它可以专门用于这个功能。如果需要,我可以将至少一个静态端口映射到我们的公司 WAN(但如果可能的话,我希望避免这种情况)。

理想情况下,我还希望设备本身包含最少的信息,以便对手(或竞争对手)拥有设备不会危及客户或公司网络、其他单位或回拨技术本身。据我所知,我猜需要一个主机名或 IP 地址、一个端口号和一个密钥,但越少越好!

我还希望系统在两端都需要手动干预,而自动化程度最低,可能会出现错误或受到损害。一旦我们实施并测试了初始系统,随着我们对它的经验和对它的信心的增长,可以添加自动化。

这就是我的想法。除此之外,我几乎一无所知。我在正确的轨道上吗?我错过了什么?这已经是流行的事情了,我根本不知道它叫什么?对于几个原型系统来说,这种能力有多简单和愚蠢?

编辑:如果还不是很明显,请假设我是一个网络白痴,只能相信遵循明确的食谱,仅此而已。吻适用!

4

2 回答 2

1

免责声明:只要没有“真正的”答案,我只是提供我或多或少的理论想法,希望它有所帮助。

没有详细阅读,我发现http://www.vdomck.org/2005/11/reversing-ssh-connection.html可以反转 ssh-connection。如果这很容易理解(应该很容易,基本上只需 ssh -R,另请参见http://www.brandonhutchinson.com/ssh_tunnelling.html)这意味着您的远程设备可以连接到您的网络(并且“Pete”是您的客户合作伙伴)。问题是在没有用户/密码的情况下启动 ssh 连接需要该设备上的身份验证私钥(因此在不友好的手中)。

您可以放置​​一个没有私人数据和特殊访问权限的哑 ssh 服务器,甚至可以为该单个连接设置密码(并通过电话告诉您的伴侣“Pete”),让您的幻想玩一点以获得静态一半“ImGenious$%”和一个动态一半“1243”,这样您就可以通过电话提供一个简短而简单的动态一半。

然后,您可以从该愚蠢的 ssh-server 连接到您的设备,如文章中所述。

于 2013-05-26T20:21:43.077 回答
1

我建议回拨功能使用 SSH 连接到您的办公室。这需要您客户的网络提供 DHCP、Internet 访问和 DNS 功能。它还要求他们允许端口 22 上的出站连接。对于一些想要防止未知数据流出的具有安全意识的客户来说,后者可能是一个问题。

您将需要 SSH 服务器的证书,以便该证书对您选择的域名有效。您还需要确保服务器上的 SSH 客户端配置为接受服务器的签名。

听起来您要维护的设备数量相对较少。出于这个原因,我建议为每个设备生成唯一的公钥/私钥对。然后,您可以将公钥加载到您的服务器中,以便仅通过密钥接受登录。

如果设备遭到破坏或被盗,您可以从服务器中删除相应的密钥。设备将无法再次登录。设备上的私钥只有价值,因为您已决定在登录时接受关联的公钥。删除它,它没有任何价值。额外的好处是您可以通过它用于登录的密钥来识别设备(例如,您可以将每个密钥与不同的用户相关联)。然后,您可以将登录信息与您存储在系统上的有关设备/客户的信息联系起来。

如果您使用反向 SSH,您可以让设备连接。一旦您准备好,您可以使用反向部分通过设备和您的服务器已经设置的隧道进行连接以执行维护。

于 2013-05-26T20:13:01.663 回答