假设使用可以 ssh 到服务器并可以执行 FTP 并连接到其他源,下载病毒并执行它。
是否可以强制用户只执行一些已知命令?
答案1
从man sshd_config
:
部队指挥
强制执行 ForceCommand 指定的命令,忽略客户端提供的任何命令和 ~/.ssh/rc(如果存在)。使用带有 -c 选项的用户登录 shell 调用该命令。这适用于 shell、命令或子系统执行。它在 Match 块内最有用。客户端最初提供的命令在 SSH_ORIGINAL_COMMAND 环境变量中可用。指定“internal-sftp”命令将强制使用进程内 sftp 服务器,该服务器在与 ChrootDirectory 一起使用时不需要支持文件
这允许您使用 shell 包装器,它只允许您执行特定操作。一个例子是发送。
如果您只希望对特定用户进行此限制,请使用文件command=cmd
中的选项known_hosts
(记录在man sshd
)
答案2
为你的用户设置一个 chroot 环境可能会有所帮助。请参阅我怎样才能 chroot ssh 连接?
答案3
一种方法(虽然并不完美)是为用户主目录创建单独的分区,这些分区是用户有写权限的任何位置。然后只需挂载这些分区即可禁止执行。
正确设置文件系统权限通常可以非常有效地限制可能造成的损害。
如果用户不值得信任,那么给他们 SSH 访问权限可能根本不是一个好主意。也许您需要为他们设置虚拟机,并将每个虚拟机限制在他们自己的环境中。