centos7中实现chroot限制ssh及sftp至指定目录-创新互联

背景:在vcenter6.5中创建两个虚拟机,如下图,

成都网站建设、做网站的关注点不是能为您做些什么网站,而是怎么做网站,有没有做好网站,给创新互联公司一个展示的机会来证明自己,这并不会花费您太多时间,或许会给您带来新的灵感和惊喜。面向用户友好,注重用户体验,一切以用户为中心。

目的:创建一名用户同时能够实现chroot来限制ssh及sftp至指定目录,可以实现系统安全。

其中,我们将在pool-test(ip:172.16.6.11)中进行配置,用vsan-test1(ip:172.16.6.10)用来测试。

centos7中实现chroot限制ssh及sftp至指定目录

接下来开始在pool-test中开始进行配置ssh

首先,建立一个指定目录

mkdir /home/share_conext

centos7中实现chroot限制ssh及sftp至指定目录

列出指定目录必须包含支持用户会话所必需的文件和目录

ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

centos7中实现chroot限制ssh及sftp至指定目录

用 mknod 命令创建 /dev 下的文件。-m 标志用来指定文件权限位,c意思是字符文件,两个数字分别是文件指向的主要号和次要号

mkdir -p /home/share_conext/dev/
cd /home/share_conext/dev/
mknod -m 666 null c 1 3
mknod -m 666 tty c 5 0
mknod -m 666 zero c 1 5
mknod -m 666 random c 1 8
ls

centos7中实现chroot限制ssh及sftp至指定目录

在 chroot 监狱中设置合适的权限。注意 chroot 监狱和它的子目录以及子文件必须被 root 用户所有,并且对普通用户或用户组不可写:

chown root:root /home/share_conext/
chmod 755 /home/share_conext/

centos7中实现chroot限制ssh及sftp至指定目录

为SSH设置交互式shell

mkdir -p /home/share_conext/bin
cp -v /bin/bash /home/share_conext/bin/

centos7中实现chroot限制ssh及sftp至指定目录

mkdir -p /home/share_conext/lib64
ldd /bin/bash

centos7中实现chroot限制ssh及sftp至指定目录

将识别出的共享库复制到lib64目录下方

cp -v /lib64/libtinfo.so.5 /lib64/libdl.so.2 /lib64/libc.so.6 /lib64/ld-linux-x86-64.so.2 /share_conext/lib64

centos7中实现chroot限制ssh及sftp至指定目录

创建并配置sshuser用户并设置安全密码

useradd sshuser
passwd sshuser

centos7中实现chroot限制ssh及sftp至指定目录

mkdir /home/share_conext/etc
cp -vf /etc/{group,passwd} /home/share_conext/etc/

centos7中实现chroot限制ssh及sftp至指定目录

注:若添加更多用户,则需要再次执行上步操作。

配置ssh使用chroot

vi /etc/ssh/sshd_config

centos7中实现chroot限制ssh及sftp至指定目录

在文件中修改 Match User sshuser,及指定目录 ChrootDirectory /home/share_context/

并保存退出

centos7中实现chroot限制ssh及sftp至指定目录

centos7中实现chroot限制ssh及sftp至指定目录

重启sshd.service

systemctl restart sshd.service

centos7中实现chroot限制ssh及sftp至指定目录

在vsan-test1中进行测试

ssh sshuser@172.16.6.11

centos7中实现chroot限制ssh及sftp至指定目录

可以看到当前目录已经是“根目录”了。

接下来开始在pool-test中配置sftp

vi /etc/ssh/sshd_config

在文件中添加

 # 找到如下行,并注释掉
 Subsystem      sftp    /usr/libexec/openssh/sftp-server # 添加如下几行
 Subsystem   sftp  internal-sftp  #指定使用sftp服务使用系统自带的internal-sftp
 Match Group sshuser   #之前默认创建的组
 ForceCommand    internal-sftp  #指定sftp命令

centos7中实现chroot限制ssh及sftp至指定目录

然后,重启sshd服务

service restart sshd.service

重启完毕后用户sshuser就可以正常通过sftp客户端登录了。
但是因为/home/share_conext都属于root用户组,所以无写权限。进行如下处理:

在/home/share_conext目录下创建上传目录,并修改目录权限控制

mkdir /home/share_conext/write/
chown sshuser:sshuser /home/share_conext/write
chmod 777 /home/share_conext/write

centos7中实现chroot限制ssh及sftp至指定目录

至此,可以使用sftp登录,并能够进行上传文件或者下载文件。

在vsan-test1中验证

sftp sshuser@172.16.6.11

centos7中实现chroot限制ssh及sftp至指定目录

验证下载功能

在pool-test中的/home/share_conext/write/下生成两个文件

vi /home/share_conext/write/helloworld.py
vi /home/share_conext/write/hehe.txt
ls /home/share_conext/write/

centos7中实现chroot限制ssh及sftp至指定目录

切换到vsan-test中

get write/helloworld.py /home/   #指定文件存储的目录

centos7中实现chroot限制ssh及sftp至指定目录

查看

centos7中实现chroot限制ssh及sftp至指定目录

验证上传功能

在刚才的/home/中创建startd.py

centos7中实现chroot限制ssh及sftp至指定目录

重新连接

sftp sshuser@172.16.6.11
put /home/startd.py /write/    # 因为此时的根目录是share_conext/ ,所以可以直接写成/write/

centos7中实现chroot限制ssh及sftp至指定目录

切换到pool-test虚拟机中查看刚才上传的文件

centos7中实现chroot限制ssh及sftp至指定目录

至此已经全部配置完毕了!

注:部分内容参考链接http://blog.csdn.net/akeyile2010/article/details/50751834、http://blog.sina.com.cn/s/blog_67e34ceb01013m3v.html、http://jingyan.baidu.com/article/fa4125acf068c328ac7092d8.html

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:centos7中实现chroot限制ssh及sftp至指定目录-创新互联
本文URL:http://hbruida.cn/article/djsoeh.html