恶意用户可以绕过一个ssh authorized_keys强制命令?

使用Linux和Openssh

用户可以使用ssh连接到其密钥在authorized_keys列表中的服务器。 他的公钥前面是command="command..." ,它强制执行一个特定的命令(非shell):

command="/path/to/somescript...",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-user-rc ssh-rsa AAAff...................

  • 有没有一种方式,用户可以绕过这个命令?
  • 那么sftp呢? 使用强制命令(不是shell)时,sftp是否工作?

如果允许的命令集包含sftp守护程序(或internal-sftp),则允许SFTP。 但是,如果您在authorized_keys文件中设置强制命令,并且用户具有sftp访问权限,则不需要额外的工作,就可以用不限制您定义的文件来replace该文件。 这当然适用于任何用户可以指示修改该文件的应用程序(有意或通过欺骗)。 一个更好的select可能是在主sshd_config内用户或组限制,可能用ChrootDirectory。

最常见的威胁来自允许他们使用一个命令能够做pipe理员没有想过的事情。 例如,CVS和SVN允许运行前/后提交脚本。 如果用户可以修改后提交脚本,他可以运行自己的命令。

你可以在.ssh文件夹和authorized_keys文件中使用chattr来设置一个属性,当你把所需的条目写到authorized_keys文件后,这样没有人能够做任何改变甚至覆盖.ssh文件夹,甚至覆盖authorized_keys文件。

你可以做一个recursionchattr:

 chattr -R +i .ssh