我想設(shè)置一種方式允許SSH訪問我的機器肮之,但需要嚴(yán)重限制了他們的能力唧垦。 有點類似docker盆色,通過這種方式登錄機器的用戶所有操作不影響機器本身摧扇。上網(wǎng)查了下資料發(fā)現(xiàn)Chroot功能挺合適的漆撞,于是就測試了下殴泰。
0x01 創(chuàng)建用戶
創(chuàng)建一個sshusers組于宙,并把test用戶加到這個組下,后續(xù)如果有新的chroot用戶也加到這個組下
# groupadd sshusers
# adduser -g sshusers test
# passwd test 創(chuàng)建test用戶密碼
0x02 設(shè)置需要的目錄
1.根據(jù)需求設(shè)置目錄悍汛,根目錄為/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.創(chuàng)建/dev/null文件
# mknod -m 666 /home/test/dev/null c 1 3
3.復(fù)制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要修改成你創(chuàng)建的根目錄路徑
# vim chroot.sh
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()函數(shù)
編輯ssh配置文件vim /etc/ssh/sshd_config术陶,在末尾添加下面參數(shù)
Match group sshusers
ChrootDirectory /home/test/ 這邊要注意修改成設(shè)置的根目錄
X11Forwarding no
AllowTcpForwarding no
配置完成后重啟ssh服務(wù)凑懂。
退出后用test登錄即可
>**0x04 Q&A**
1.Could not chdir to home directory /home/test: Permission denied
/bin/bash: Permission denied問題
解決辦法:用root登錄查看/home/test的權(quán)限,test權(quán)限改成755即可
---
博客地址:[http://yangfannie.com](http://yangfannie.com)