如果用户login和ssh密码被禁用,rbash是安全的吗?

我有一个服务器,我想用作远程和本地端口转发的SSH网关。 我不希望任意命令能够被执行,只有我的脚本。

我一直在阅读如何限制贝壳容易突破,但是如果:

  • 用户没有密码(所以他/他不能login到一个shell)
  • SSH密码被禁用(所以一个密钥是必需的)
  • PATH =〜/ usr / bin(仅限于此,不能执行其他地方的文件)
  • 〜/ .ssh / authorized_keys中的条目前缀为: command="cmd_handler",no-pty,permitopen="127.0.0.1:*",permitopen="localhost:*",no-agent-forwarding,no-X11-forwarding

“cmd_handler”是一个rbash shell脚本,它可以根据从stdin传递到ssh的内容执行一些不同的具体操作。 它存在于〜/ usr / bin文件夹以及它需要的可执行文件的符号链接,具体来说就是foldheadncsedssh-keygenteetr 。 〜/ usr / bin是PATH中唯一的文件夹,所以这些是唯一可用的命令。

对于需要访问的任何文件或文件夹(包括〜/ usr / bin文件夹),用户是组的所有者,具有只读访问权限。 用户不是拥有者,并且对〜/ .ssh和〜/ .ssh / authorized / keys(这是必需的)以外的文件和文件夹没有写权限。

我看不出有什么办法让系统变得脆弱,因为远程计算机可以执行的单个命令是“cmd_handler”。 而且,如果远程用户实际上可以执行另一个命令,那么这个命令并不多。 teesedssh-keygen创build了〜/ .ssh / authorized_keys被修改为执行任意命令的理论上的可能性,但即使它们可以,所有可以使用的都是七个命令,并且如果它们在/ tmp或者〜/ .ssh,这并不重要,因为rbash不会执行任何不在PATH中的东西。

所以,回到原来的问题:这是否足够我想做什么,或者我真的需要看看AppArmor或什么? 我想要一个解释特定漏洞的答案,而不是一般人都知道rbash很容易被攻破的事情。 这可能是真的,但这是不是特别不安全的这个应用程序?