Bas*_*asj 7 chroot ssh sftp sshd
我刚刚friend在我的服务器上创建了一个新用户,目标是将 SFTP 访问权限授予我的一个朋友,以便他可以在那里托管他的网站。
我注意到当用户通过 SFTP 连接服务器时friend,默认文件夹是/home/friend/,但是你可以很容易地出去/home/friend/ 访问服务器上的所有文件,例如/home/anotheruser/website2/config.php!我不要这个。
我被告知将此用户置于“监禁/隔离模式”,因此,在我的默认设置结束时sshd_config:
...
Subsystem sftp /usr/lib/openssh/sftp-server
Run Code Online (Sandbox Code Playgroud)
...我补充说:
Match User friend
ChrootDirectory /home/friend
ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)
并做了service sshd restart。
然后我根本无法通过 SFTP 与用户连接服务器friend,哎呀!我也尝试通过替换Subsystem ...,Subsystem sftp internal-sftp但结果是一样的:friend无法再通过 SFTP 连接服务器。
题:
如何通过 SFTP/SSH隔离用户friend,使其无法出门/home/friend/?
注意:我已经阅读了如何使用 chroot Jail 将 SFTP 用户限制到主目录,如何将 sftp-only SSH 用户 chroot 到他们的家中? , 等等。
小智 5
不确定您使用的是什么操作系统,但当我必须配置被监禁的 SFTP 用户时,我会使用下面的链接。这是一个关于如何配置被监禁的 SFTP 用户的非常好的教程。
https://access.redhat.com/solutions/2399571
然后,我会将任何目录挂载到您想要让您的朋友访问的 chroot 目录。
这是受到@HeysusEscobar 的答案中提到的教程How to configure an sftp server with strict chroot users with ssh key 的 启发。
从以下位置执行此操作root:
useradd friend # NB: this doesn't create a home dir, see https://askubuntu.com/q/374870
passwd friend # set the password
groupadd sftpusers
mkdir /sftp
mkdir /sftp/friend # this is where he'll be chrooted
mkdir /sftp/friend/home # his home directory
mkdir /sftp/friend/www # for websites
usermod -aG sftpusers friend # aG for append group
chown friend:sftpusers /sftp/friend/home/
chown friend:sftpusers /sftp/friend/www/
usermod -d /sftp/friend/home friend # set as his home directory
Run Code Online (Sandbox Code Playgroud)
将其添加到/etc/ssh/sshd_config:
# Subsystem sftp /usr/lib/openssh/sftp-server # you'll probably need to comment this line
Subsystem sftp internal-sftp -d /home
Match Group sftpusers
ChrootDirectory /sftp/%u
Run Code Online (Sandbox Code Playgroud)
并做service sshd restart。就这样!
注意:
ssh,所以它没有为其他用户修改任何内容friend不能sshfriend可以通过以下方式连接sftpPS:如果你想让friend的网站可以访问互联网,你可以将其添加到 Apache 配置中:
<VirtualHost *:80>
ServerName friend.example.com
DocumentRoot /sftp/friend/www
php_admin_value "open_basedir" "/sftp/friend"
<Directory />
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
站点注释:即使执行了open_basedir上述操作,仍然无法friend使用 PHP 退出 chroot 环境或运行影响整个文件系统的恶意代码吗?链接问题:chrooted/isolated SFTP 用户仍然可以使用 PHP 访问整个文件系统
根据文档,ChrootDirectory /home/friend用help替换:ChrootDirectory /home
ChrootDirectory:指定身份验证后 chroot(2) 的目录的路径名。路径名的所有组成部分必须是 root 拥有的目录,任何其他用户或组都不可写入。
这样,用户friend就可以再次连接SFTP了;不能出去/home/;但仍然可以访问/home/anotheruser/...,这是不需要的!
| 归档时间: |
|
| 查看次数: |
1539 次 |
| 最近记录: |