创建用于SSH访问的Chroot

scadm 2021年4月25日00:26:59
评论
362 1499字

我想设置一种方式允许SSH访问我的机器,但严重限制了他们的能力。 有点类似docker,通过这种方式登录机器的用户所有操作不影响机器本身。上网查了下资料发现Chroot功能挺合适的,于是就测试了下。

0x01  创建用户

创建一个sshusers组,并把test用户加到这个组下,后续如果有新的chroot用户也加到这个组下

# groupadd sshusers
# adduser -g sshusers test
# passwd test 创建test用户密码

0x02  设置需要的目录

1、根据需求设置目录,根目录为/home/test。最基本需要有dev、etc、lib、usr、bin这5个目录

# mkdir –p /home/test/{dev,etc,lib,usr,bin,home,proc,sbin,var,lib64}
# mkdir –p /home/test/home/test

2、创建/dev/null文件

# mknod -m 666 /home/test/dev/null c 1 3

3、复制etc下面几个基本文件

# cp /etc/ld.so.cache /home/test/etc/
# cp /etc/ld.so.conf /home/test/etc/
# cp /etc/nsswitch.conf /home/test/etc/
# cp /etc/hosts /home/test/etc/
# cp /root/.bash* /home/test/etc/

4、添加共享库,用下面脚本添加一些需要运行的命令,其中CHROOT要修改成你创建的根目录路径

# vim chroot.sh
#!/bin/bash
CHROOT='/home/test'    #需要修改成用户的根目录
for i in $( ldd $* | grep -v dynamic | cut -d " " -f 3 | sed 's/://' | sort | uniq )
do
cp --parents $i $CHROOT
done
# ARCH amd64
if [ -f /lib64/ld-linux-x86-64.so.2 ]; then
cp --parents /lib64/ld-linux-x86-64.so.2 /$CHROOT
fi
# ARCH i386
if [ -f /lib/ld-linux.so.2 ]; then
cp --parents /lib/ld-linux.so.2 /$CHROOT
fi
echo "Chroot test is ready. To access it execute: chroot $CHROOT"

运行命令:

# chmod +x chroot.sh
# chroot.sh /bin/* 获取bin目录下的所有依赖库
# chroot.sh /sbin/* 获取sbin目录下的所有依赖库
# chroot.sh /usr/bin/* 获取/usr/bin目录下的所有依赖库

0x03  配置SSHd

OpenSSH版本至少为4.8p1,因为地域4.8p1版本的没有ChrootDirectory()函数

编辑ssh配置文件vim /etc/ssh/sshd_config,在末尾添加下面参数

Match group sshusers
ChrootDirectory /home/test/ 这边要注意修改成设置的根目录
X11Forwarding no
AllowTcpForwarding no

配置完成后重启ssh服务。

退出后用test登录即可

0x04  Q&A

1、Could not chdir to home directory /home/test: Permission denied

/bin/bash: Permission denied问题

解决办法:用root登录查看/home/test的权限,test权限改成755即可

继续阅读
scadm
  • 本文由 发表于 2021年4月25日00:26:59
  • 转载请务必保留本文链接:https://www.wscyun.com/948
Jenkins-2.319 安装部署 运维

Jenkins-2.319 安装部署

Jenkins持续集成简介 持续集成(Continuous Integration,CI|CD)是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础,持续集成意义如下: 持续集成中...
自动化装机工具-kickstart 运维

自动化装机工具-kickstart

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统===>一个服务器DV...
自动化装机工具-cobbler 服务器

自动化装机工具-cobbler

在看Cobbler之前请大家先看一下Kickstart无人值守安装,了解一下Cobbler的实现原理。但是Cobbler是独立的,不需要先安装Kickstart然后再安装Cobbler,这是写给不了解...