AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1093243
Accepted
cdauth
cdauth
Asked: 2022-02-10 21:18:39 +0800 CST2022-02-10 21:18:39 +0800 CST 2022-02-10 21:18:39 +0800 CST

通过 SSH 登录时如何限制用户使用 rbash

  • 772

我想限制我服务器上的某些用户只能执行某些命令。为此,我能找到的最常见的方法是使用rbash.

虽然我可以找到许多谈论 rbash 的网站,但我很难找到如何正确使用它的任何信息。我能找到的最常见的方法是从 to 创建一个符号链接/bin/rbash,/bin/bash将受限用户的登录 shell 设置为/bin/rbash,然后在用户主目录中设置一个自PATH定义~/.bash_profile。

然而,我很震惊地发现,通过这个设置,用户仍然可以使用 复制文件到服务器scp,他们甚至可以使用ssh user@host -t bash!打开一个不受限制的 shell。似乎正在发生的事情是 SSH 服务器正在使用 将命令传递给服务器上的登录 shell -c,因此ssh user@host -t bash导致服务器运行/bin/rbash -c bash,因为.bash_profile尚未执行以限制路径,所以它起作用了。scp同样导致服务器运行/bin/rbash -c scp。

现在我遇到了ForceCommandsshd 的指令。该指令基本上总是导致配置的命令被传递-c给登录 shell,忽略客户端指定的任何命令。因此,如果ForceCommand设置为rbash,则将始终/bin/rbash -c rbash在服务器上执行命令,而不管客户端是用-t bash还是 asscp或其他方式调用的。不幸/bin/rbash -c rbash的是,导致.bash_profile不被执行,所以我们最终得到了一个受限的 shell 但一个正常的PATH,所以我们可以调用bash那里来逃避它。

我想达到的目标:

  • 应该没有办法避免通过 SSH 连接的用户的受限 shell
  • 理想情况下,仍然可以通过使用执行受限 shell 中允许的命令ssh user@server permitted_command
  • 配置不应仅限 SSH,因此也应限制在 TTY 上登录的用户。
ssh
  • 0 0 个回答
  • 244 Views

0 个回答

  • Voted
  1. Best Answer
    cdauth
    2022-02-10T21:18:39+08:002022-02-10T21:18:39+08:00

    在对此进行了一段时间的试验之后,在我看来问题的根源在于安全性rbash取决于PATH设置,但在大多数设置PATH中,SSH 指定其自定义命令后设置,而需要在.

    作为一种解决方案,我没有指定/bin/rbash(作为登录 shell 的符号链接/bin/bash),而是创建了一个 shell 脚本/usr/local/bin/rbash并将其用作登录 shell。shell脚本有以下内容:

    #!/bin/bash -l
    export PATH=/usr/local/rbin
    exec /bin/bash -r "$@"
    

    我还尝试了SetEnvsshd 的指令并尝试在PATH那里设置。但是,我发现这个解决方案不太实用,因为它只为 SSH 设置配置,并且在运行时导致很多错误/etc/profile,因为找不到那里使用的命令。此外,其他一些 sshd 指令似乎存在允许客户端再次覆盖某些环境变量的风险。

    • 0

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve