SSH 服务器上的虚假用户被限制只能使用某些命令

SSH 服务器上的虚假用户被限制只能使用某些命令

我正在尝试创建一个虚假用户(可以从 SSH 登录但不存在于系统中的用户),该用户有一些限制(例如,他们只能使用一个命令,当他们执行时,另一个命令也会被执行)。有没有办法实现这一点?我找不到在 openssh-server 上创建虚假用户的方法,更不用说限制部分了。

答案1

Linux 中的 SSH 服务器通常与系统集成,而不会引入另一层用户。它不像 Samba 或 FTP,那里存在这种特定于 Samba 或 FTP 的用户层。我猜想从sshdOpenSSH 定义一组独立的用户并非易事(但也许另一个答案会让我感到惊讶)。

也许您之所以想创建虚假用户,是因为您不是 SSH 服务器上的 root 用户,因此无法在那里创建真实用户。如果是这样,您可以这样做1

看看man 5 authorized_keys它描述了什么格式。在我的 Debian 中,手册指出 [强调我的]:

AuthorizedKeysFile指定包含用于公钥认证的公钥的文件;如果未指定此选项,则默认为~/.ssh/authorized_keys~/.ssh/authorized_keys2。文件的每一行包含一个密钥(空行和以“#”开头的行将被忽略为注释)。公钥由以下以空格分隔的字段组成:选项、密钥类型、base64 编码的密钥、注释。选项字段是可选的。[…]

选项(如果存在)由逗号分隔的选项规范组成。不允许有空格,双引号内除外。支持以下选项规范(请注意,选项关键字不区分大小写):

[…]

command="command"
指定每当使用此密钥进行身份验证时执行该命令。用户提供的命令(如果有)将被忽略。如果客户端请求 pty,则命令在 pty 上运行;否则,该命令将在没有 tty 的情况下运行。如果需要 8 位干净通道,则不得请求 pty 或应指定no-pty。可以通过用反斜杠将命令括在引号中来包含引号。

此选项可能有助于限制某些公钥仅执行特定操作。例如,某个密钥可能允许远程备份,但不允许执行其他任何操作。请注意,客户端可以指定 TCP 和/或 X11 转发,除非明确禁止,例如使用restrict密钥选项。

[…]

这样,作为普通用户,您可以允许其他人(从现在开始:访客)登录就像你并运行一个特定的命令就像你~/.ssh/authorized_keys自动。只需使用选项在服务器上注册他们的公钥即可command="command"

命令可能是自定义程序或脚本,允许访客从列表中选择任务,或键入关键字来选择任务;或键入将被验证并允许或禁止的“内部”命令;然后程序将相应地执行某些操作。命令/程序/脚本是什么由您决定。

请注意,从 SSH 服务器及其管理员的角度来看,访客你。运行命令的是你的账户,如果你的自定义程序或脚本允许客户以某种方式运行任意命令(例如,通过以某种方式先生成 shell),那么它将就像运行命令。

还请记住,该命令是在非交互式 shell 中运行的。它将是您的 shell(您使用 选择的 shell chsh),并带有您的配置。shell 可能会获取一些文件(请参阅Bash 的行为方式),因此请确保在客人连接时可以安全地获取它们。

手册指出“忽略用户提供的命令(如果有)。然而,在我的测试中,强制可执行文件可以从其环境中获取它,变量名为SSH_ORIGINAL_COMMAND。这意味着您可以允许客户机在调用时直接传递一些信息(例如选项)ssh;在服务器端,您的程序将从变量中检索它。在 shell 代码中不要eval变量不要使用$SSH_ORIGINAL_COMMAND不带引号的,除非你先验证其安全性或对其进行消毒。

~/.ssh/authorized_keys允许特定密钥的所有者查看输出的示例df -h行如下所示:

command="df -h",no-pty ssh-rsa AAA…(public key here)…

no-pty(有关的描述请参阅man 5 authorized_keys。还有其他选项,您可能会发现它们很有用。)现在,任何使用此特定密钥连接到服务器(使用您的登录名)的人都将看到的输出,df -h并且会断开连接。


1有可能。SSH 服务器可能被配置为拒绝各种操作。

答案2

您可能需要考虑部署 SSH 蜜罐。基本上是一个看似易受攻击但实际上无法访问任何内容的虚拟服务器。所有内容都会被记录下来,您可以限制对命令的访问。

设置一个并不困难,网上有很多资源介绍如何部署一个。不过,在这里回答可能有点长!

编辑 :超级用户实际上并不是一个提供建议的地方,但是这个似乎是我们在网上使用过的一个有很多教程的地方:https://github.com/cowrie/cowrie 摘自自述文件:

选择作为模拟 shell 运行(默认):

  • 具有添加/删除文件功能的伪文件系统。包含一个类似于 Debian 5.0 安装的完整伪文件系统
  • 可以添加虚假文件内容,以便攻击者可以 cat 文件(例如 /etc/passwd)。仅包含最少的文件内容
  • Cowrie 保存使用 wget/curl 下载或使用 SFTP 和 scp 上传的文件以供日后检查

相关内容