是否可以基于每个用户限制 SSH 转发隧道目标?
示例:客户端“a”只能将隧道转发到 192.168.10.2:22。客户端“b”可以独占地将隧道转发到 192.168.11.2:22。
我希望在每个用户或每个组的基础上限制以下隧道命令:
要求:
有效的隧道命令(对于 client_a):
ssh -f client_a@gateway -L localhost:2222:192.168.10.2:22 -N
Run Code Online (Sandbox Code Playgroud)
无效的隧道命令(对于 client_a) - 网关上的 SSH 连接应立即关闭。
ssh -f client_a@gateway -L localhost:2222:192.168.11.2:22 -N
Run Code Online (Sandbox Code Playgroud)
有效的隧道命令(对于 client_b):
ssh -f client_b@gateway -L localhost:2222:192.168.11.2:22 -N
Run Code Online (Sandbox Code Playgroud)
无效的隧道命令(对于 client_b) - 网关上的 SSH 连接应立即关闭。
ssh -f client_b@gateway -L localhost:2222:192.168.10.2:22 -N
Run Code Online (Sandbox Code Playgroud)
可以通过修改sshd_config来实现此限制吗?
假设它是现代 sshd 版本,/etc/ssh/sshd_config支持Match
和指令,可以组合使用它们来限制客户端设置LocalForward选项PermitOpen
指定的目标
\n\n\nPermitOpen
\n\n
\n 指定允许 TCP 端口转发的目标。转发规范必须是以下形式之一:Run Code Online (Sandbox Code Playgroud)\n\nPermitOpen host:port\n PermitOpen IPv4_addr:port\n PermitOpen [IPv6_addr]:port\n
可以通过用白色-\n 速度分隔来指定多个前锋。\xe2\x80\x9cany\xe2\x80\x9d 参数可用于删除所有限制并允许任何转发请求。默认情况下允许所有端口转发请求。\n https://www.freebsd.org/cgi/man.cgi?sshd_config(5)
\n
所以这样的事情应该有效......
\n\nMatch User client_a\n PermitOpen none\n PermitOpen 192.168.10.2:22\n\nMatch User client_b\n PermitOpen none\n PermitOpen 192.168.11.2:22\n
Run Code Online (Sandbox Code Playgroud)\n\n我不是 100% 确定这些 PermitOpens 的顺序.. ( By\n default all port forwarding requests are permitted.
) 所以你可能必须颠倒它们,或者添加一个Permit none
在适当的点添加 来阻止不匹配的转发。
或者可能像这样;
\n\nMatch User client_a\n PermitOpen 192.168.10.2:22\n\nMatch User client_b\n PermitOpen 192.168.11.2:22\n\nMatch User client_a client_b\n PermitOpen none\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
4873 次 |
最近记录: |