我已经创建了一个 jumphost/bastion,它的作用就是这样 - 一个跳转到某些主机:端口的主机。
我知道我可以通过以下方式限制用户/组:
Match User Alice
PermitOpen some.host.tld:80 another.host.tld:22 third.host.tld:443
由于一些要求,我需要能够使用 SOCKS 代理。这是通过以下方式启用的:
PermitTTY yes
PermitTunnel yes
AllowTcpForwarding yes
这按预期工作。
但是...... 我可以使用 SSH 服务器上的连接来限制会话/应用程序吗?
我确实尝试过“ MaxSessions 1
”,但遗憾的是它似乎不适用于 SOCKS 代理。
验证 socks5 使用的一种方法是使用具有基本身份验证的反向代理向其转发流量,但您将无法保护它免受其他可以在本地看到环回设备中的端口的用户的使用。来自 SSH 的动态端口转发将信任任何有权访问它正在侦听的机器的人。但也许,如果您设法必须
-D
侦听 unix 域套接字,您可能能够为命名管道设置用户+组权限,并对非 root 用户具有某种形式的安全性。但是 ssh 的用户手册没有提到任何-D
用于 socks4/5 使用的动态端口转发()的 unix 域套接字转发。我认为这是一个长远的目标。您应该信任登录机器的人。这里有一个解决方案: how to forbid connect to localhost for ssh socks5 proxy