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 / 问题 / 1099081
Accepted
jdmayfield
jdmayfield
Asked: 2022-04-21 17:38:10 +0800 CST2022-04-21 17:38:10 +0800 CST 2022-04-21 17:38:10 +0800 CST

OpenSSH - sshd_config - 允许 sftp-chroot 和普通 ssh 登录同一个用户

  • 772

希望不是一个骗局,但找不到这个问题的答案......我发现了这个,表面上看起来是一样的,但是很老,唯一的答案没有回答实际的问题: 设置用户作为 sftp 的 chroot 用户,但允许用户登录 SSH

我已经通过 sftp 为组 'sftp_users' 中的用户成功设置了一个工作 ChrootDirectory 环境。它运行良好,所有适当的权限等,限制对仅 sftp 的访问,并且它们可以在 ChrootDirectory 内的子目录中 rw。这对于非特权用户来说非常有用,不允许 ssh 访问并且只允许 rw 在 ChrootDirectory 内的子文件夹中。

我希望有更多的特权用户仍然能够正常使用 ssh,但是当通过 sftp 登录时将拥有 ChrootDirectory 环境。这不是一个安全问题,因为它们被认为是私有的,并且 obvi 可以在其正常用户权限内浏览 ssh 中的文件系统。问题是,当他们在 sftp 下登录而不阻止 ssh 登录时,我没有看到 Chroot 的方法。这更多是为了标准化和方便,所以当他们 sftp 时,他们就像只使用 sftp 的用户一样到达他们的 Chrooted 位置。

我认为如果我将他们的 shell 保留为默认值(不是 /bin/false 或 nologin),这将起作用。不幸的是,当他们在 sftp_only 组中时,它根本不允许他们 ssh 进入,只有 sftp。除了拥有两个单独的帐户之外,是否有解决此问题的方法——一个添加到“sftp_users”,一个不在该组中?到目前为止,我只能找到有关限制 sftp Chroot 并同时禁止 ssh(如果它们在该组中)的文档。

示例用户是“测试”。'test' 在 sftp_users 组中,因此可以通过 sftp 登录并被 Chroot 到他指定的文件夹('/sftp/test')并读取或写入绑定安装在 '/sftp/test/home' 的主文件夹. 这一切都有效。但是即使他的 shell 仍然在 /etc/passwd 中设置为 /bin/bash,如果添加到 sftp_users 组,'test' 也无法通过 ssh 登录。删除该组中的成员,他可以同时执行这两项操作,但不能在 sftp 下进行 Chroot。

不在组 'sftp_users' 中的用户仍然可以通过 ssh 或 sftp 登录,但在 sftp 下没有 Chroot。

有没有办法匹配使用的协议,和/或可能为不同的组设置额外的匹配?我只是在他们通过 sftp 登录时寻找 chroot。通过 ssh 的非 chroot 对这些用户来说很好。

以下是我的 sshd_config:

Port XXXX
#ListenAddress ::
#ListenAddress 0.0.0.0

Protocol 2

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

SyslogFacility AUTH
LogLevel INFO

LoginGraceTime 120
PermitRootLogin no
StrictModes yes

PubkeyAuthentication yes

IgnoreRhosts yes
HostbasedAuthentication no

PermitEmptyPasswords no

ChallengeResponseAuthentication no

X11Forwarding yes
X11DisplayOffset 10
PrintMotd yes
PrintLastLog yes

ClientAliveCountMax 10
ClientAliveInterval 3600
TCPKeepAlive no

#Banner /etc/issue.net

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server -u 0027

UsePAM yes
PasswordAuthentication yes



Match Group sftp_users
  ChrootDirectory /sftp/%u
  ForceCommand internal-sftp -u 0027
  X11Forwarding no
  AllowTcpForwarding no
  PasswordAuthentication yes
ssh sftp
  • 1 1 个回答
  • 449 Views

1 个回答

  • Voted
  1. Best Answer
    anx
    2022-04-21T20:51:55+08:002022-04-21T20:51:55+08:00

    OpenSSH 不支持根据提交的命令覆盖全局关键字。您必须区分 OpenSSH 为Match声明提供的一些(组合)标准。

    可用的标准是用户、组、主机、LocalAddress、LocalPort、RDomain 和地址(RDomain 代表接收到连接的 rdomain(4))

    -- man 5 sshd_config

    一个常见的选择是在通过备用域访问的备用 IP 上提供有意限制的服务,例如snapshot.backup.example和sftp.backup.example.


    不过,对链接问题的评论清楚地说明了问题。

    如果您认为您希望为特权用户进行 sftp 访问 chroot,那么您可能会将不同的角色转换为相同的用户,这会带来安全风险。 大多数情况下,通过使用不同的用户来更好地解决审计和权限分离问题,让您考虑设置 chroot 设置,即使对于不受此限制的用户也是如此。如果有两个不同的任务,即使是由同一个人执行,如果故意限制一个更安全,那么一定要设置一个新的系统用户(例如拥有用户person并person-task共享大多数限制和身份验证方法,并且只限制一个它们在 ssh 中)。

    • 1

相关问题

  • 如何最好地设置 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