我安装了多个专用数据库框架 (Intersystems Caché),其中包含自己的 Telnet 服务器,运行在端口 23 上。虽然该产品确实可以在 Windows Server 2008、AIX 和 Linux(特别是 RedHat Enterprise Linux)上运行,但我支持的安装仅使用 Windows Server 2008 操作系统。这是目前该产品唯一支持的命令行系统;不支持 SSH 或任何其他形式的加密接口。Telnet 接口(取决于设施的大小)一次最多可以为数百个用户/会话提供服务。我对这种未加密的通信感到不舒服,我想在服务器上设置一个外部(框架)系统以允许加密。
我想要做的是限制 Caché 的 telnet 端口仅在本地主机(127.0.0.1)上监听端口 23,并在服务器本身上设置一个 SSH 服务器守护程序,以在端口 22 上回答来自整个网络的所有请求并将这些请求转发到本地主机的端口 23,从而允许产品进行加密命令行通信,即使它不直接支持它。
我已经研究了这个问题好几天了,既通过标准的 Google 搜索(而且我很擅长使用 Google),也通过 serverfault/stackoverflow 进行研究,但都没有成功。我发现的所有示例要么 1) 对许多用户/会话进行不加密的直接端口转发,要么 2) 仅描述如何对单个用户/会话进行 SSH 端口转发/隧道传输。
根据上面的第 2 条,尝试设置数百个单独的转发 SSH 隧道将是一场管理噩梦;我需要一个在单个端口上处理多个会话和用户的服务器端解决方案。根据我所做的研究,在 Windows 服务器上设置 OpenSSH 服务器守护程序似乎是最佳选择(我曾尝试配置 sshd_config 以支持这种情况,但没有成功),但如果有更好的选择,我愿意接受所有建议。
我还考虑过设置一个小型 Linux 虚拟机来进行翻译,但这些设施没有精通 Linux 管理的人员,并且我们仍有几个设施在物理(非虚拟)环境中运行该产品,因此辅助 Linux 虚拟解决方案不会使这些站点受益。
** 我忘了说:由于基于 Caché 的应用程序在 Windows 服务器之外有自己的安全系统,因此该应用程序的许多个人用户没有基于 Windows 的服务器登录凭据。SSH 隧道不应尝试在服务器本身上启动 shell,它应该只动态加密/解密并创建到 Telnet 端口的隧道。我希望我已经解释得足够清楚了;如果没有,请告诉我,我会尽量解释得更清楚。
任何帮助都将不胜感激。感谢您的时间!
答案1
由于您似乎主要关注的是加密的 telnet 会话,因此我建议使用类似隧道。Stunnel 是一个 TLS 代理,允许您在简单的 tcp 协议(如 telnet)之上添加 TLS/SSL。您可以获得证书提供的加密和身份验证的所有好处。
Stunnel 的挑战在于,没有太多支持 TLS 的 telnet 客户端。不过,解决这个问题的一种方法是将 stunnel 也安装在客户端机器上。Stunnel 可以双向工作。它可以添加或删除 TLS。因此,您的客户端可以使用他们的 telnet 客户端连接到他们的本地 stunnel 实例。他们的本地 stunnel 实例将建立一个到您的服务器的 TLS 隧道,从而连接到数据库服务器。