如何限制ssh * remote *端口转发?


22

我需要限制用户可以远程ssh -R转发哪些端口。

我知道有关permitopenauthorized_keys上的选项的信息,但是正如它在手册页上所说的那样,它仅限制了本地' ssh -L'端口转发

作为讨论在这里,用户将获得相同与netcat或类似,但在这种情况下,用户没有shell访问

我还发现了该线程谈论使用selinux或LD_PRELOAD,但是我以前从未配置过selinux,也找不到有关如何使用selinux的信息LD_PRELOAD

也许有人为openssh制作了补丁来实现这一点?

编辑:我已经找到此错误报告,所以我想它尚未实现


您找到了解决方案吗?
alex88 '16

我没有,我想这不能或做,直到上述错误关闭有人写了一个补丁来实现这个
LLUIS

Answers:


3

这已在2018年8月24日发布的OpenSSH 7.8p1中实现。引用发行说明:

在sshd_config(5)中添加一个PermitListen指令,以及一个相应的allowlisten = authorized_keys选项,以控制远程转发可以使用哪些侦听地址和端口号(ssh -R ...)。


4

no-port-forwarding您可以使用一个选项来阻止所有端口转发。至少在OpenSSH 4.3p2(CentOS 5.3-我可以访问的最旧的计算机)上出现。将其放在您原应放置的位置permitopen


13
完全禁用端口转发似乎过大,不适合这个问题。我认为OP希望限制它,但允许某些特定的远程端口转发。
gertvdijk 2012年

2
是的,我需要让一些端口转发
圣路易斯

0

不可能限制使用ssh。为此,也许可以使用selinux或iptables。但是,有一种替代策略可能会或可能不会满足您的需求。使用绑定到UNIX套接字。从openssh版本6.8开始应该可用。

使用套接字时,可以使用文件系统ACL(尽管套接字的相关性可能取决于* nix),并且可以使用它来防止一个用户绑定到另一个套接字。但是,它并不能阻止以任何方式绑定到端口,因此根据您的用例,它可能无济于事,但是如果您始终可以仅使用套接字,则端口可能无关紧要。

使用UNIX套接字处理悬挂的套接字文件可能会出现问题,因为反向发布者会尝试重新连接。我对该问题还有另一个问题(和答案)。简而言之,您可能还想使用StreamLocalBindUnlink yes

连接关闭后如何清理SSH反向隧道套接字?


-1

重复的:https : //superuser.com/questions/516417/how-to-restrict-ssh-port-forwarding-without-denying-it

看起来您可以使用以下内容?

服务器配置文件中有一个PermitOpen选项。此选项可用于指定可以为其建立转发的主机和端口。此选项可以在Match块内使用,因此可以受到用户,组或主机名或IP地址模式的限制。

编辑:因此,在服务器配置中添加以下内容

许可证打开主机:端口

允许打开IPv4_addr:port

允许打开[IPv6_addr]:端口


1
仅在U&L上可以标记为重复项。
GAD3R '16

1
正如问题中所述,这是针对-L的,它已经被称为非解决方案
alex88 2013年

1
除了iptables之外,还会有解决方案吗?
davesave
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.