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 / 问题

问题[chroot](server)

Martin Hope
Ondřej Holík
Asked: 2021-04-24 05:34:39 +0800 CST

除了 chroot jail,还有其他方法可以限制 SSH 用户吗?

  • 0

我需要为必须对我们的服务器具有非常有限的访问权限的外国 SSH 用户创建一个安全的环境。那是:

  • 只能执行允许的命令
  • 只能使用允许的特定软件
  • 在任何情况下都不得允许查看/修改/删除他/她的根文件系统之外的文件夹和文件

在将jailkit 工具用于一个不需要太多定制并且运行良好的较小项目之前,我曾尝试使用 chroot jail ,但是这个项目要大得多,并且在允许的软件和命令方面需要更多的定制。

对安全环境的要求是:

  • 使用基本命令的能力,例如 ls、cd、grep 等。
  • 运行 dotnet 脚本的能力
  • 利用正在运行的 RabbitMQ 代理的能力(代理在环境之外运行)
  • 利用正在运行的 PostgreSQL 数据库的能力(数据库在环境之外运行)

我听说过multistrap或debootstrap,但我不确定这些工具是否足以解决我的问题。

这些服务器在Debian OS v. 9 和 10上运行。所有必需的软件都安装在根文件系统中并且运行良好。我所需要的只是让受限用户能够使用它而不会损坏/破坏根文件系统。

我的问题是:

  1. 有没有我没有提到的其他有用(更好)的工具可以解决我的问题?
  2. 我提到的软件是否有任何有用的指南可以解决我的问题?
debian ssh chroot jail jailkit
  • 1 个回答
  • 129 Views
Martin Hope
Luis
Asked: 2021-02-24 06:24:13 +0800 CST

chroot 无法启动服务 - 未找到。什么不见​​了?

  • 1

我想在 NetBSD 9.1 amd64 系统的 chroot 中运行服务。如果从操作系统调用,该服务将运行。有问题的服务是dendrite-monolith-server。为了便于使用,我只是将文件复制start到/bin/.

# ldd bin/start 
bin/start:
        -lpthread.1 => /usr/lib/libpthread.so.1
        -lc.12 => /usr/lib/libc.so.12

它们是硬链接的:

# ls -l usr/lib
total 8560
-r--r--r--  2 root  pe  2079984 Feb 22 23:40 lc.12
-r--r--r--  2 root  pe  2079984 Feb 22 23:40 libc.so.12
-r--r--r--  2 root  pe    93656 Feb 22 23:40 libpthread.so.1
-r--r--r--  2 root  pe    93656 Feb 22 23:40 lpthread.1

在 chroot/dev中,确实MAKEDEV all创建了设备。

复制ld.elf_so到chroot/libexec目录

# ls -l /libexec/
total 324
-r-xr-xr-x  1 0  1000  164344 Feb 22 23:47 ld.elf_so

ksh93 是静态链接的:

# chroot ./ /bin/ksh93
#
# /bin/start 
/bin/ksh93: /bin/start: not found

有什么问题或遗漏?

chroot netbsd
  • 1 个回答
  • 146 Views
Martin Hope
Daichi42
Asked: 2020-09-18 06:14:27 +0800 CST

OpenSSH + Active Directory:允许一个组的 sftp,同时禁止其他所有人

  • 1

我的目标是允许给定的 Active Directory 组成员在 chroot 中使用 OpenSSH SFTP,并拒绝他们和所有其他不属于该组成员的 SSH 访问,同时仍然允许本地(非 AD)系统帐户。
我已经配置sshd_config为使用 Kerberos 来获取 Active Directory 信息,并且该部分已经在工作。

问题是:虽然它适用于我希望授予访问权限的组(允许 sftp,拒绝 ssh),但所有其他 AD 帐户都可以打开 SSH shell 和非 chroot SFTP,这当然是不希望的。

总结一下,我需要:

  • 授予对 Active Directory 组的 chroot'ed SFTP 访问权限;拒绝他们的 SSH。
  • 拒绝该组的非成员的 SFTP 和 SSH。
  • 保留对本地系统帐户的访问权限。

我正在使用带有 OpenSSH_8.3p1 的 Fedora 32,我的配置如下(未注释掉的行)。

/etc/ssh/sshd_config:

Include /etc/ssh/sshd_config.d/*.conf
HostbasedAuthentication no
KerberosAuthentication yes
Subsystem       sftp   internal-sftp
Match Group sftp_users
        ChrootDirectory /sftp/%u
        ForceCommand internal-sftp
        X11Forwarding no
        AllowTcpForwarding no
        PermitTTY no

/etc/ssh/sshd_config.d/50-redhat.conf:

PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
PrintMotd no

提前致谢!

active-directory ssh sftp chroot kerberos
  • 2 个回答
  • 1927 Views
Martin Hope
mhost
Asked: 2020-08-27 10:52:48 +0800 CST

php exec 返回 127,因为 /bin/sh 在 apache chroot 中获得“权限被拒绝”

  • 0

我有一个 php 脚本,它试图使用 exec(或 shell_exec)在系统上执行二进制文件。exec 失败,返回码 127。

返回代码 127 通常表示未找到命令。所以我确保使用二进制文件的绝对路径。没变。

Apache 被配置为使用 apache 的 ChrootDir 在 chroot 中运行。

我确保将二进制文件复制到 chroot、/bin/sh 以及这两者所需的所有链接库中的正确路径中。

Apache(以及因此 php)作为 www-data 运行。我已经确认 www-data 具有对二进制文件(包括 /bin/sh)和所有父文件夹的读取和执行权限。为了确认这不是文件权限问题,我使用 /bin/sh -c 使用 sudo 运行命令:

sudo -u www-data /chrootdir/bin/sh -c /chrootdir/path/to/binary

这没有问题。

使用 strace,我得到了这个:

execve("/bin/sh", ["sh", "-c", "/path/to/binary"], 0x7ffe436b3618 /* 11 vars */) = -1 EACCES (Permission denied)

只是为了确认权限问题是针对 sh 二进制文件(以及 chrootdir 中的那个),我尝试将 /chrootdir/bin/sh 重命名为其他内容并再次执行 strace,现在它抱怨找不到文件。

所以,我现在知道问题出在通过 apache 通过 php 运行时访问 /chrootdir/bin/sh ,但不是 www-data 用户的权限。

我不确定下一步该尝试什么。

这是在 Debian 10、apache 2.4.38 和 php 7.3.11 上运行的。

我已经清除了 open_basedir,也清除了 disable_functions。

我已经确认 apache 不受 apparmor 的限制,但无论如何都禁用了它。

最后,如果我禁用 apache chroot,这确实有效。

所以我的问题是在某个地方是否有任何其他限制可能会阻止 apache 这样做?

php chroot exec
  • 1 个回答
  • 1166 Views
Martin Hope
Eliezer Miron
Asked: 2020-08-26 15:56:39 +0800 CST

VSFTPD:将用户的默认目录设置为不是他们的 chroot 目录

  • 0

我有一个 VSFTPD 设置,其中用户被 chroot 到他们的主目录。标准的东西。但这要求他们所有的主目录对他们来说都是不可写的(以避免安全问题)。没问题,如果他们想要上传文件,他们可以将它们上传到他们的 chroot 中的可写文件夹。

但是现在他们每次上传都必须更改到该文件夹​​中。如果我使用 VSFTPD 配置文件中的 local_root 选项将他们的默认登录位置移动到该可写文件夹,那么这将成为他们的 chroot,我们回到第一个问题:它不能是可写的。

我的问题是,如何在不使 chroot 目录本身可写的情况下,将 VSFTPD 放置用户的默认位置移动到其 chroot 监狱中的可写目录?

ftp permissions vsftpd configuration chroot
  • 1 个回答
  • 1475 Views
Martin Hope
leonheess
Asked: 2020-05-07 08:01:15 +0800 CST

如何在 sshd 配置中指定用户主目录?

  • 1

我将我的 sftp 用户 chroot 到 /var/www,我希望他们自动移动到他们的目录中。我发现这个答案对我有很大帮助:Chroot SFTP - 可能允许用户写入当前(chroot)目录。但我想将用户移动到他或她的主目录(=/= 用户名)而不是(这是 var/www 的子目录)。我试过了:

Match Group sftpusers
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /var/www
  ForceCommand internal-sftp -d %h

但我明白了fatal: percent_expand: unknown key %h [postauth]。

编辑:我发现那%d是用户目录,但它似乎不起作用,因为它正在基于 /var/www 查找它。

linux ssh sftp chroot
  • 1 个回答
  • 1525 Views
Martin Hope
ThaChillera
Asked: 2018-11-30 05:05:52 +0800 CST

带有 chroot_local_user 的 vsftpd 需要客户端证书

  • 0

在设置我的 FTPS 服务器时,我想启用 chroot_local_user。禁用时一切正常。但是,如果我启用此功能,WinSCP 将无法连接并声称我需要客户端证书才能连接。Filezilla 彻底失败。

如果我将 require_cert 显式设置为 NO(即使它是默认设置),此问题仍然存在。

我该如何解决这个问题?

将用户限制在其主文件夹中的替代解决方案也是可以接受的。

谢谢

chroot
  • 2 个回答
  • 1152 Views
Martin Hope
dsl101
Asked: 2017-03-17 08:14:38 +0800 CST

通过端口 22 的 SFTP 或通过端口 20 / 21 的 vsftp - 保护对服务器的 FTP 访问的最佳方式

  • 0

我已经阅读了很多关于 SF 的文章和问题,但仍然无法弄清楚我这样做的方式是否 (a) 可能,并且 (b) 安全。

服务器在 AWS EC2 上运行,所有访问都通过 SSH 密钥。我也只向我自己的 IP 开放端口 22,但似乎如果我想允许其他人通过 SFTP 访问,我需要向全世界开放端口 22(或者花我的时间管理动态 IP 地址的防火墙规则)。这真的比端口 21 上的 vsftp 更好吗?

假设目前端口 22 上的 SFTP 是最好的,这就是我所做的:

  • 使用公钥/私钥创建了一个“ftp”用户
  • 设置/home/ftp/.ssh/authorized_keys和测试 SSH 访问
  • 在指向中添加了一个ChrootDirectory条目/etc/ssh/sshd_config/var/www/html
  • 从向下调整权限,/var/www使 chroot '工作'

现在,我陷入了一个看似 22 的问题,我怀疑(希望)只是配置错误。如果没有 sshd_config 中的 chroot 块,我可以通过 Putty 或 SFTP 客户端进行连接,一切都很好——除了可以访问整个文件系统。有了 chroot 块,我Could not chdir to home directory /home/ftp在身份验证期间遇到了错误,因为现在该/home/ftp/.ssh文件夹无法访问,因此密钥不起作用。这个老问题/答案建议在.ssh文件夹中放置一个文件/var/www/html/夹,但这对我来说似乎很奇怪 - 这样做真的可以吗,因为它可以被 Web 服务器访问?

是否有更“正确”的方式让用户通过 SSH 密钥连接然后仅限于 /var/www/html?

ssh sftp chroot
  • 1 个回答
  • 4942 Views
Martin Hope
Valeriu
Asked: 2017-02-25 12:56:11 +0800 CST

Chroot 不适用于 php-fpm

  • 1

我应该在我的站点上为我的 ftp 目录使用 chroot:我的 php-fpm.conf:

[mysite.com]
listen = /var/run/php7-fpm-chroot-filemanager.sock
chroot = /var/www/mysite.com/fileman
chdir = /
user = filemanuser
group = filemangroup
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

我的 nginx.conf 部分:

    location ~* /fileman/(.+\.php)$
    {

            root /var/www/mysite.com/;
            include /etc/nginx/fastcgi_params;
            if (!-f /var/www/mysite.com$fastcgi_script_name) {
                    return 405;
            }
            fastcgi_index index.php;
            fastcgi_pass unix:/var/run/php7-fpm-chroot-filemanager.sock
            fastcgi_param SCRIPT_FILENAME /var/www/mysite.com$fastcgi_script_name;
    }

重新启动服务后,我在页面上看到:

File not found. 

在nginx的日志中:

2017/02/24 20:12:22 [error] 18390#18390: *108 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.110.25, server: www.mysite.com, request: "GET /fileman/index.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php7-fpm-chroot-filemanager.sock:", host: "www.mysite.com"

没有 chroot 选项,一切正常。我哪里有错误?请帮忙。

php nginx chroot php-fpm
  • 1 个回答
  • 1378 Views
Martin Hope
quazardous
Asked: 2017-01-13 06:28:58 +0800 CST

使用 ssh 密钥以不同方式处理用户

  • -2

我想知道是否可以使用 ssh 连接中使用的 ssh 密钥以不同方式 chroot/chdir/处理同一个 unix 用户...

用例可能是一个 rsync 服务器,对多个虚拟帐户仅使用一个 linux/本地用户。

这有点像 github/gitlab 管理用户的方式。

编辑:chrooting 不是重点。关键是使用相同的 *nix 用户但使用不同的 SSH 密钥来区分“虚拟”帐户。Chrooting是一个奖励。

PS:我在 F25 服务器上做了一个快速 POC。

ssh rsync chroot
  • 1 个回答
  • 149 Views

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