我希望能够在我的 Linux 服务器上提供 ssh 帐户,以便人们能够使用它们进行 SSH 隧道传输。所有帐户都将被锁定,没有交互式 shell,仅用于隧道传输/端口转发目的。我的问题是,我不希望他们能够通过执行以下端口转发来访问仅绑定到本地主机的服务:
ssh account@server -L 9999:127.0.0.1:3306 & telnet localhost 9999
将授予对默认 mysql 数据库端口的访问权限..我该如何停止这种情况?
我在 OpenSSH 的配置文件中看到允许特定端口/主机的选项,但不允许阻止它们。任何帮助都将不胜感激 :)
答案1
听起来你想要 permitopen,记录在 sshd(8) 中:
permitopen="host:port"
Limit local ``ssh -L'' port forwarding such that it may only
connect to the specified host and port. IPv6 addresses can be
specified by enclosing the address in square brackets. Multiple
permitopen options may be applied separated by commas. No
pattern matching is performed on the specified hostnames, they
must be literal domains or addresses.
答案2
我会尝试使用 iptables,类似这样的方法应该可以奏效: iptables -A 输入 -d 127.0.0.1 -j 删除如果您希望防火墙配置在重启后仍然有效,那么您也应该制作一个脚本。