如何阻止用户通过 SSH 端口转发访问绑定到本地主机的服务?

Dav*_*son 7 security ssh

我希望能够在我的 Linux 服务器上提供 SSH 帐户,以便人们能够使用 SSH 隧道。所有帐户将被锁定,没有交互式 shell,仅用于隧道/端口转发目的。我的问题是我不希望他们只能通过执行如下端口转发来访问绑定到本地主机的服务:

ssh account@server -L 9999:127.0.0.1:3306 & telnet localhost 9999
Run Code Online (Sandbox Code Playgroud)

这将使他们能够访问默认的 MySQL 数据库端口。我怎么能阻止这个?

我在 OpenSSH 的配置文件中看到允许特定端口/主机的选项,但不阻止它们。任何帮助将不胜感激!

Roy*_*ams 1

我自己还没有尝试过,但规则的--uid-owner--gid-owner选项iptables似乎可以让您根据 UID 和 GID 限制连接。换句话说,可以阻止特定用户在给定接口上进行出站连接。

所以也许像这样(未经测试),阻止所有对环回的访问:

iptables -A OUTPUT -o lo -m owner --uid-owner {USERNAME} -j REJECT
Run Code Online (Sandbox Code Playgroud)

...或者如果您的锁定帐户都在同一组中:

iptables -A OUTPUT -o lo -m owner --gid-owner {GROUPNAME} -j REJECT
Run Code Online (Sandbox Code Playgroud)

如果您需要更精细的内容,这篇 nixCraft 帖子有一个示例,说明如何允许某些端口,但不允许其他端口。