我正在运行 Lucee Server,这是一个冷聚变服务器引擎,在我的例子中,它运行在 Tomcat 和 Apache 上。
我正在研究以各种方式强化它,并且遇到了有关此处描述的 SSH 隧道方法的问题:https ://docs.lucee.org/guides/deploying-lucee-server-apps/lockdown-guide .html#restricted-access-plus-ssh-tunneling
问题是,我认为关于如何进行 ssh 隧道的描述不准确或完整。我花了很多时间查看 SSH 文档以及其他一些 Stack Exchange 问题(https://superuser.com/q/588591/504387、https://superuser.com/q/237977/504387),但仍然可以' t 让 SSH 隧道按照该指南中所述或任何其他方式工作。
当前设置,我在 server.example.com 上运行 lucee,侦听端口 8888。在同一服务器上运行的 Apache 正在侦听端口 443,并配置为将所有请求代理到端口 8888 上的 127.0.0.1(即将它们转发到 lucee) 。但它被配置为拒绝对 /lucee 的请求,如上述文档中所述。
这意味着 Lucee 管理控制台只能直接在端口 8888 访问,而不能通过端口 443 访问。防火墙规则(iptables)设置为仅允许来自公司内部网络的端口 8888 上的传入流量,这样我们就可以访问 lucee 控制台,但外界不能。
这可能没问题,但我试图看看是否可以使隧道方法按所述工作。如果隧道可以工作,我们可以放弃 iptables 允许规则并完全阻止端口 8888(环回除外),或者只是将 lucee 重新配置为仅绑定到 127.0.0.1。
SSH 使用 server.example.com 上的非标准端口,假设它是 3300。
我想要做的是在我的笔记本电脑上运行 SSH 命令,该命令将:
- 使用我现有的 ssh 配置和密钥将我连接到 server.example.com(其中 sshd 正在侦听端口 3300),
- 绑定到我的笔记本电脑上本地主机上的任何端口,比方说 60001,
- 从远程端 server.example.com 依次连接到 127.0.0.1:8888,以便流量可以传递到 lucee。
最终结果应该是我可以在我的笔记本电脑上访问http://127.0.0.1:60001/lucee/admin/server.cfm,它将被运行在 server.example.com 上的 lucee 接收并监听绑定到的端口 8888该服务器上的 127.0.0.1。
我怎样才能做到这一点?
您应该仅绑定 Lucee Server,
localhost
因为它在端口上不提供 TLS8888
。然后,您有两个选项可以安全地访问管理路径。SSH隧道
从ssh(1):
填写您问题中的参数:
具有适当访问控制的 Apache 代理
由于端口上的代理
443
是使用 TLS 加密的,因此您根本不需要 SSH 代理,但您可以允许在 Apache 配置中从公司网络连接到管理路径。该文档有点过时,因为示例使用 Apache 2.2 语法:
但 Apache 2.4访问控制的文档告诉我们:
假设您想将访问限制为
/lucee
仅允许 LAN192.168.22.0/24
和公共 IP198.51.100.22
: