-14

我有一个可在 Internet 上获得的小程序,它通过 SSH 隧道与内部服务器通信。正确的 SSH 凭证必须可用于小程序。将它们编译到小程序中不是很方便;在 HTML 中将它们作为 applet 参数提供会使它们泄漏到 Internet;并让小程序从小程序主机服务器下载它们同上,但不太明显。我的问题是,我还没有想到只有小程序才能获取 SSH 凭据的另一种方法吗?我可能可以让小程序使用与浏览器相同的会话 ID,在这种情况下,我至少可以将其限制为经过身份验证的用户......但我真的想要一个更安全且没有泄漏的解决方案。

服务器堆栈有 Tomcat、JSF 和 Facelets。Apache 服务器和 FTP 也可用。

编辑:我应该澄清一下,除了 DoS 之外,我正在通过隧道连接的内部服务本身非常安全,我更关心的是内部主机的安全性,并且也不会成为通往任何地方的公共隧道。SSH PermitOpen 配置元素在那里提供了很多帮助。

4

5 回答 5

5

如果客户端的机器必须登录到您的服务器,那么客户端将能够找出它正在使用的凭据。没有办法解决这个问题。如果有人愿意,他们可以嗅探自己机器的互联网流量并以这种方式找到它。

如果您绝对必须使用此 ssh 隧道从客户端登录,我建议使用公钥身份验证并在主机上生成密钥,然后通过临时添加对该密钥的访问权限的 API 将公共部分传递给服务器。

于 2011-08-27T01:36:29.293 回答
1

不可能。无法区分运行在用户计算机上的 Java 小程序和运行在同一台计算机上的用户制作的工具——从您的角度来看,它们的 HTTP 请求和 SSH 流量“闻起来是一样的”。最好的办法是想办法通过防火墙公开内部服务器上的必要端口,而不是让用户自己打出必要的漏洞。

于 2011-08-27T01:40:18.983 回答
0

这里定义目标存在问题。

有两种可能的情况:1)您需要在用户不知道的情况下在 SSH 服务器上执行一些批处理(命令序列) 2)您需要让用户以有限的方式与服务器交互。

在第一种情况下,您可以将批处理发送到您的 HTTP 服务器并让 HTTP 服务器连接到 SSH 服务器。

在第二种情况下,您通过您的小程序向用户提供 SSH 访问,这与通过他最喜欢的 SSH 客户端提供用户访问没有什么不同。因此,您需要为每个用户提供不同的 SSH 凭据(并将它们传递给小程序),仅此而已 - 保护凭据是用户的工作,同时您可以添加一些安全措施,例如限制 IP 访问。

最后我应该指出,功能有限的自定义 SSH 服务器也可能是一种解决方案。

于 2011-08-27T07:12:46.170 回答
0

您想发布一个有权连接到 SSH 服务器的小程序。但是您不想发布凭据。这是没有意义的,因为拥有连接到 SSH 服务器的权限和拥有连接到 SSH 服务器的凭据是等效的。除了连接到 SSH 服务器之外,您无法使用凭据做任何其他事情。这是小程序应该拥有的权限。

于 2020-03-04T09:33:23.240 回答
-1

我认为您最好的方法是在防火墙外创建某种代理,使用简单的未加密 TCP 连接,然后通过代理建立从安全服务器到小程序的连接,SSH 连接通过隧道连接打开连接。

于 2011-08-27T12:57:55.633 回答