假设我创建了一个帐户,其登录shell实际上是一个不允许交互式登录的脚本,并且只允许远程执行非常有限的特定命令集。
尽管如此, ssh
允许该帐户的用户转发端口,这是一个漏洞。
现在,扭曲的是我实际上希望该帐户在设置特定的端口转发配置时 ssh
会议成立。但是必须配置任意端口转发。
(如果允许的端口转发配置无条件地建立为每个会话的一部分,则这是可接受的解决方案。)
假设我创建了一个帐户,其登录shell实际上是一个不允许交互式登录的脚本,并且只允许远程执行非常有限的特定命令集。
尽管如此, ssh
允许该帐户的用户转发端口,这是一个漏洞。
现在,扭曲的是我实际上希望该帐户在设置特定的端口转发配置时 ssh
会议成立。但是必须配置任意端口转发。
(如果允许的端口转发配置无条件地建立为每个会话的一部分,则这是可接受的解决方案。)
Answers:
事实证明,OpenSSH有一个功能,限制 -L
样式在服务器端打开。该功能有两种方式。
在服务器配置文件中有一个 PermitOpen
选项。此选项可用于指定可以建立转发的主机和端口。此选项可在a内使用 Match
阻止,因此可以受用户,组或主机名或IP地址模式的限制。
在一个 authorized_keys
文件,选项可以与特定键相关联。有一个 permitopen
选项与server-config类似。
注意事项/限制:
选项 AllowTcpForwarding
禁用所有双向转发,防止在服务器上设置侦听端口,以及活动转发。
没有 PermitOpen
访问控制 -R
风格连接。这可能还可以。这意味着用户可以使用 ssh
打开各种非特权端口以在服务器上侦听。这些连接在SSH连接的另一端是客户端的问题。如果我们限制转发 -L
方向,用户无法使用它们 -R
港口(至少不通过 ssh
,如果该用户无法创建任意交互式会话)。
似乎没有办法创建允许打开的空列表,以防止用户进行任何打开 -L
风格的联系。但是,解决方法是使用无害,不存在或不可能的主机名,例如空字符串。具体而言, permitopen=":1234"
诀窍。
-R
这对我有用。