1

我们需要能够访问移动设备上的资源。移动设备必须充当服务器。无论手机如何连接(wifi、3g、防火墙后等),它都必须可用。我知道这可以通过启动从手机到云可访问服务器的 ssh 反向端口来实现。希望访问手机资源的客户现在可以通过某个随机端口连接到云服务器,并通过隧道连接到移动设备。美好的。

我的问题涉及这个想法作为可扩展、强大、安全的解决方案的可行性。使用此方案部署到数万台设备的移动应用程序,以使设备本地资源可访问。设备本地资源不是超高安全性。建议使用 ssh 主要是因为它使设置隧道更容易。

以下是我的一些担忧,

  1. 端口分配。每个隧道都需要云服务器上的唯一端口。我相信这将需要设备和云服务器在启动隧道之前协商 IP。这当然是可能的,但这意味着某处有一个有点复杂的服务,它不断地探测端口以确定它们的可用性。

  2. 港口资源。服务器上有有限数量的端口。当事情跨多个服务器扩展时,这可能不是问题。

  3. 隧道管理。隧道可能并不总是很好地下降,因此存在“清理”意外下降的隧道的问题(参见#1)。

  4. 安全。每个设备都需要公钥来匹配云服务器上的秘密。如果它在设备上,则可以从中取出。现在,只要帐户被锁定,就不会发生太多事情,但它确实打开了另一个攻击媒介。

此外,简单地打开服务器的所有唯一端口是另一种攻击媒介。

  1. 可扩展性。打开数千个 SSH 隧道的成本(资源方面)有多贵?现实吗?

  2. 防火墙。云服务器端口不会是“80”或“8080”,而是一些随机数。对于某些可能限制出站连接到标准端口的防火墙来说,这是一个问题吗?

正如你所看到的,安全不是我的强项,所以请带着孩子手套对待我。如果您没有猜到,我对这种方法持极端保留意见,因此我正在寻找证据来寻找其他解决方案来解决一般问题。

4

1 回答 1

1

一些自定义代码将在此处按顺序排列,或者通过专用于该概念的协议进行隧道会话。IPSEC over UDP 可能是一个很好的提名。如果可能的话,让移动设备像普通服务器一样监听并在它更改地址时发送 ping 可能会为您省去很多挑战。这将取决于手机的行为以及运营商是否会做一些烦人的事情,比如过滤传入的 TCP 连接。无论如何,要解决具体问题:

1)不,每个连接都需要一个唯一的套接字。这是端口号和 IP 地址的组合。即使有两部电话在同一个 NAT 后面,NAT 设备也会为连接分配不同的端口。您可以在服务器机器的一个端口上运行一项服务。

2) 见上文

3)这将作为规则而不是例外发生。他们超时并关闭。这实际上可能比您预期的要少。

4) 您如何解决这个问题将取决于您的安全需求。您可以尝试识别手机上的底层 id 以使事情更具挑战性,需要输入用户密码以使其成为两个因素,等等。这当然与易用性竞争,因此权衡考虑留给您.


1a)没有线索......但这不应该是不可能的。

2a)您会在某些地方遇到这种情况,而且很难预测。也就是说,您也可以通过 HTTPS 执行这些功能。

于 2011-02-15T16:49:33.183 回答