按用户限制 SSH 转发隧道目标

按用户限制 SSH 转发隧道目标

SSH 转发隧道目标可以根据每个用户进行限制吗?

示例:客户端“a”只能将隧道转发到 192.168.10.2:22。客户端“b”只能将隧道转发到 192.168.11.2:22。

更新

我希望根据每个用户或每个组来限制以下隧道命令:


要求:

  • client_a 可以将隧道转发到 192.168.10.*,独占。
  • client_b 可以将隧道转发到 192.168.11.*,独占。

有效的隧道命令(针对 client_a):

ssh -f client_a@gateway -L localhost:2222:192.168.10.2:22 -N

无效的隧道命令(对于 client_a) - 网关上的 SSH 连接应立即关闭。

ssh -f client_a@gateway -L localhost:2222:192.168.11.2:22 -N

有效的隧道命令(针对 client_b):

ssh -f client_b@gateway -L localhost:2222:192.168.11.2:22 -N

无效的隧道命令(对于 client_b) - 网关上的 SSH 连接应立即关闭。

ssh -f client_b@gateway -L localhost:2222:192.168.10.2:22 -N

可以通过修改sshd_配置

答案1

假设它是现代 sshd 版本,/etc/ssh/sshd_config支持MatchPermitOpen指令,可以组合使用来限制客户端指定的目标设置本地转发选项

许可证开放
指定允许 TCP 端口转发的目标。转发规范必须采用以下形式之一:

          PermitOpen host:port
          PermitOpen IPv4_addr:port
          PermitOpen [IPv6_addr]:port

可以通过用空格分隔来指定多个转发。可以使用“any”参数来删除所有限制并允许任何转发请求。默认情况下,所有端口转发请求均被允许。 https://www.freebsd.org/cgi/man.cgi?sshd_config(5)

所以这样的事情应该有效......

Match User client_a
    PermitOpen none
    PermitOpen 192.168.10.2:22

Match User client_b
    PermitOpen none
    PermitOpen 192.168.11.2:22

我不能 100% 确定这些 PermitOpens..( By default all port forwarding requests are permitted.) 的顺序,因此您可能必须反转它们,或者Permit none在适当的位置添加以阻止不匹配的转发。

或者可能像这样;

Match User client_a
    PermitOpen 192.168.10.2:22

Match User client_b
    PermitOpen 192.168.11.2:22

Match User client_a client_b
    PermitOpen none

相关内容