跳到正文
TURNKEYGNU / LINUX
应用文档博客截图GitHubTurnKey Hub
文中文
EnglishEspañol中文日本語PortuguêsDeutsch
ưμ㼯A/如何创建一个被囚禁的 SFTP 用户( chroot 监狱)

文档

如何创建一个被囚禁的 SFTP 用户( chroot 监狱)

AWS 市场用户的重要注释 :

如果您尚未启用您的 Marketplace 服务器上的根账户, 您需要用 sudo 运行以下命令 。 简单的方法是完成后在sudo shell内退出。例如,从以下命令开始:

sudo su

完成后:

exit

开始了...

所有 TurnKey 应用设备 都与 SFTP 预配置并启用。然而,默认情况下,所有用户都读取了整个文件系统的访问权限。 只要你们不介意他们读文件,那可能就不成问题了,因为默认新非特权用户除了自己的主目录之外,没有任何地方的写权限. (通常/home/USERNAME),加上任何明确给予他们写权限的地方。加起来,由于SFTP是由SSH提供的,默认情况下,他们也可以登录到SSH shell中。) 他们能够做的将是有限的,但这仍然可能不可取。

因此,在一种情况下,你只希望SFTP用户通过SFTP(而不是SSH)登录,而你希望他们被锁在自己的目录中(即. 被称为"chroot prison"),然后可以配置SSH/SFTP来完成此任务.

下面我给出了所需的命令,它们以脚本形式存在,因此可以复制/粘贴到命令行。请注意,我曾尝试过使命令具有一元性(即: 如果你多次运行,就不会破坏东西) 但我还没有广泛测试。所以如果你重新运行一部分,你可能会有出乎意料的结果。 用户相关命令可以重新运行给新用户(改变NEW_USER的值),但添加sftp_用户组和SSH配置,只应完成一次. 如果您需要修改 SSH 配置设置, 我建议您手动编辑配置文件 。

运行一次

创建所需的组 :

groupadd sftp_users

每个新用户运行一次

添加新用户 。 我这里使用"新用户"这个名字,但你可以使用任何你喜欢的名字,虽然我强烈建议你只使用小写字符,没有空格或特殊字符. 如果您希望添加额外的用户,则更改"NEW_USER"的值(以下第一行): 1.

NEW_USER="newuser"
useradd -G sftp_users -s /sbin/nologin $NEW_USER
passwd $NEW_USER

一旦您为新用户设置了密码并证实了它,然后完成创建新用户账户:

mkdir -p /home/$NEW_USER/files
chown root:root /home/$NEW_USER
chown $NEW_USER:$NEW_USER /home/$NEW_USER/files
chmod 700 /home/$NEW_USER/files
usermod -d /files $NEW_USER

跑一次就够了!

接下来我们需要重新配置 SSH/ SFTP。 要做到这一点, 我们需要编辑 SSH 配置文件( /etc/ssh/sshd_config).) , 以便简单化, 我已经以脚本形式提供了它 。 请注意,这只应该做到 一次.:

CONF=/etc/ssh/sshd_config
SEARCH="Subsystem sftp \/usr\/lib\/openssh\/sftp-server"
NEW_LINE="Subsystem sftp internal-sftp"

sed -i "/^$SEARCH/ s|^|#|" $CONF
sed -i "/$NEW_LINE/d" $CONF
sed -i "/$SEARCH/a\\$NEW_LINE" $CONF
if ! grep "Match Group sftp_users" $CONF >/dev/null; then
    cat >> $CONF <<EOF

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /home/%u
  ForceCommand internal-sftp
EOF
fi

最后一步是重新启动 SSH :

service ssh restart

如果您需要进一步调整您的 SSH 设置, 请使用纳米等文本编辑器手动编辑配置文件。 例如 :

nano /etc/ssh/sshd_config

用户会自动向 fftp 进入其 chround 家( /home/user/files).) 他们将能够cd到母目录(/home/user)但除了在那里读取访问(并且不能浏览任何更高)之外,没有其他任何内容.

附加注释: 如果您希望允许您的 chround SFTP 用户有一点更大的灵活性( 例如允许 scp 和/ 或 rsync) , 那么与其给他们一个 /sbin/nologin shell, 安装 rsh 语录 (apt-get settle rssh)并给他们一个/usr/bin/rssh shell.

TURNKEYGNU / LINUX

无需从零开始,掌控自己的基础设施。

探索 TurnKey
关于文档常见问题博客GitHub
自由开源默认安全随时可部署