我希望能够在我的 Linux 服务器上提供 SSH 帐户,以便人们能够使用它们进行 SSH 隧道传输。所有帐户都将被锁定,没有交互式 shell,仅用于隧道传输/端口转发目的。我的问题是,我不希望他们能够通过执行以下端口转发来访问绑定到本地主机的服务:
ssh account@server -L 9999:127.0.0.1:3306 & telnet localhost 9999
这将使他们能够访问默认的 MySQL 数据库端口。我该如何阻止这种情况?
我在 OpenSSH 的配置文件中看到允许特定端口/主机的选项,但不允许阻止它们。任何帮助都将不胜感激!
答案1
我自己还没有尝试过,但规则的--uid-owner
和选项似乎允许您根据 UID 和 GID 限制连接。换句话说,可以阻止特定用户在给定接口上进行出站连接。--gid-owner
iptables
因此也许可以使用类似这样的方法(未经测试)来阻止所有对环回的访问:
iptables -A OUTPUT -o lo -m owner --uid-owner {USERNAME} -j REJECT
...或者如果您锁定的帐户都属于同一组:
iptables -A OUTPUT -o lo -m owner --gid-owner {GROUPNAME} -j REJECT
如果你需要更详细的信息,这篇 nixCraft 文章有一个关于如何允许某些端口但不允许其他端口的示例。