Linux 使用 Chroot
運行環境
- LXC Debian 12
建立SSH chroot
建立 chroot jail
mkdir -p /home/user
建立基本/dev節點
ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}
若是LXC環境手動複製dev並給予權限
mkdir -p /home/user/dev/
touch /home/user/dev/{null,zero,random,tty}
chmod 666 /home/user/dev/{null,zero,random,tty}
若是一般環境用mknod建立檔案
mkdir -p /home/user/dev/
cd /home/user/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
chroot jail 子目錄須為root擁有
chown root:root /home/user
chmod 0755 /home/user
ls -ld /home/user
建立SSH chroot Shell
建立bin目錄,並複製/bin/bash到目錄中,某些系統建立使用者會用/bin/sh,可以再複製/bin/sh或是修改/etc/passwd的Shell
mkdir -p /home/user/bin
cp -v /bin/bash /home/user/bin/
確認bash所需的lib檔案,並複製到lib資料夾內
ldd /bin/bash
mkdir -p /home/user/lib/x86_64-linux-gnu
mkdir -p /home/user/lib64
cp -v /lib/x86_64-linux-gnu/libtinfo.so.6 /home/user/lib/x86_64-linux-gnu/
cp -v /lib/x86_64-linux-gnu/libc.so.6 /home/user/lib/x86_64-linux-gnu/
cp -v /lib64/ld-linux-x86-64.so.2 /home/user/lib64/
建立SSH使用者
useradd user
passwd user
建立etc目錄,並複製/etc/passwd和/etc/group到目錄中
mkdir /home/user/etc
cp -vf /etc/{passwd,group} /home/user/etc/
若有新增SSH chroot使用者,/etc/passwd和/etc/group都要更新到/home/user/etc中
設定SSHD
編輯/etc/ssh/sshd_config並在底下新增ChrootDirectory並開啟sftp功能
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match User user
ChrootDirectory /home/user
systemctl restart sshd
測試登入
root@ssh:~# ssh user@192.168.100.1
user@192.168.100.1's password:
-bash-5.2$
建立 SSH 使用者主目錄和新增指令
mkdir -p /home/user/home/user1
chown -R user:user /home/user/home/user1
chmod -R 0700 /home/user/home/user1
由於只有新增bash到chroot,無法使用其他指令,依照上述複製bash lib的方式,複製需要的指令到chroot中
複製/bin/ls,確認ls所需的lib檔案,並複製到lib資料夾內
複製後可使用ls指令,其餘指令依此步驟安裝
SFTP測試
SFTP是基於SSH 的檔案傳輸協定,只要該使用者對檔案有「寫入權限」且對目錄有「寫入 + 執行權限」,就可以操作檔案
所以Shell未安裝rm,mkdir等不能使用,但sftp可以








No comments to display
No comments to display