热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

背景:在vcenter6.5中创建两个虚拟机,如下图,目的:创建一名用户同时能够实现chroot来限制ssh及sftp至指定目录,可以实现系统安全。其中,我们将在pool

背景:在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


推荐阅读
  • 实验七、绕过ASLR 第二部分
    7.1实验环境VM配置:Ubuntu12.04(x86)7.2实验原理什么是爆破?使用爆破技巧,来绕过共享库地址随机化。7.3实验过程7. ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 一、如果使用默认的1521端口,让实例自动注册到该监听上,那么local_listener无需设置,listener.ora文件按照正常方 ... [详细]
  • Redis键命令用于管理redis的键。语法Redis键命令的基本语法如下:redis127.0.0.1:6379COMMANDKEY_NAME实例redi ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 需求:安装deb包,设置程序安装后启动,不需要root权限启动程序|不能用root权限启动其他开机启动选项方法:root临时降低权限secUser`whoami| ... [详细]
  • 一、域名解析记录说明记录类型A:用来指定域名的IPv4地址(如:8.8.8.8),如果需要将域名指向一个IP ... [详细]
  • Docker从安装到入门到项目部署
    容器化的时代你怎么可 ... [详细]
  • 缓冲区溢出实例(一)–Windows
    一、基本概念缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意代码,获 ... [详细]
  • 序本文主要研究一下nacosServiceManager的removeInstanceServiceManagernacos-1.1.3namingsrcmainjavacomal ... [详细]
  • 人生的旅途,前途很远,也很暗。然而不要怕,不怕的人的面前才有路。——鲁迅自从上一篇博客发布后,已经有很长时间没有更新博客了,一直忙着支付通的事情,在此给大家道个歉。先贴个图:你不要惊讶 ... [详细]
  • fromkeras.modelsimportSequentialfromkeras.layersimportDense,Dropoutfromkeras.layersimp ... [详细]
  • *MIME:百度百科,就是通知浏览器是什么多媒体类型的类型。*ASP.NET:执行用户,2k3中是NETWORKSERVICE,其它系统是ASPNET帐 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
author-avatar
点提土八撇又254
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有