右鍵已鎖定
logo

讓Linux使用者登入在chroot底下

之前只會把application關在chroot底下
但是卻不知道怎麼把使用者關住
實際了解之後才發現要把使用者關住
並不是跟application一樣設定就可以了
雖然是類似但是卻多了很多東西要設定
還是記錄一下比較安全,不然我應該很快就忘了…

我的環境是把chroot設定在/usr/local/chroot
當然你愛設哪就設哪,/chroot也可以,你是root你開心就好

第一步當然就是創需要的資料夾

# mkdir /usr/local/chroot 
# cd /usr/local/chroot 
# mkdir -p bin dev etc home lib proc usr dev/pts

因為我不知道這個使用者我需要給他什麼功能,所以我先給他bash讓他有shell可以用就好了
這樣裝好之後連ls都沒辦法用喔,今送
首先先確定一下要使用bash shell需要哪些lib,copy需要的就好了
chroot就是要單純簡單,比較不容易被破解(越獄)

# which bash
/bin/bash
# ldd /bin/bash | awk '{ print $1 }' | grep "/lib" | sort | uniq
/lib/ld-linux.so.2
/usr/local/lib/libtrash.so
# ldd /bin/bash | awk '{ print $3 }' | grep "/lib" | sort | uniq
/lib/libc.so.6
/lib/libdl.so.2
/lib/libm.so.6
/lib/libtermcap.so.2
# cp /lib/ld-linux.so.2 /usr/local/lib/libtrash.so /lib/libc.so.6 /lib/libdl.so.2 /lib/libm.so.6 /lib/libtermcap.so.2 /usr/local/chroot/lib
# cp /bin/bash /usr/local/chroot/bin

再來就創使用者吧,相關設定直接看指令應該就懂了,就不註解了

# useradd tommy
# echo 123456 | passwd --stdin tommy
# mv /home/tommy usr/local/chroot/home
# echo "tommy   /usr/local/chroot" >> /etc/security/chroot.conf
# cp /etc/passwd /usr/local/chroot/etc/
# cp /etc/group /usr/local/chroot/etc/
# cp /etc/profile /usr/local/chroot/etc/
# cp /lib/libnss_dns* /usr/local/chroot/lib/
# cp /etc/nsswitch.conf /usr/local/chroot/etc/
# cp /etc/resolv.conf /usr/local/chroot/etc/
# cd /usr/local/chroot/
# mknod zero c 13 12
# mknod null c 13 12
# mknod ptmx c 5 2
# chmod 666 null
# echo "LABEL=/proc       /usr/local/chroot/proc         proc    defaults        0 0" >> /etc/fstab
# echo "devpts           /usr/local/chroot/dev/pts       devpts  defaults        0 0" >> /etc/fstab
# mount -a
# echo "session    optional     pam_chroot.so" >> /etc/pam.d/sshd
# echo "session    optional     pam_chroot.so" >> /etc/pam.d/login

這樣使用者應該就可以登入,而且登入之後是在/usr/local/chroot/home/tommy底下
即使tommy使用者跳到根目錄,雖然他看到的是”/”,但實際上他是在/usr/local/chroot/底下。

登入之後發現連ls都沒有,基本的人權都被剝奪了….
不過只需要照上面的增加bash步驟,把ls加進去就可以了
下面demo一下增加ls的方法,其餘的以此類推,比如date,hostname…等等

# which ls
        /bin/ls
# ldd /bin/ls | awk '{ print $1 }' | grep "/lib" | sort | uniq
/lib/ld-linux.so.2
# ldd /bin/ls | awk '{ print $3 }' | grep "/lib" | sort | uniq
/lib/libacl.so.1
/lib/libattr.so.1
/lib/libc.so.6
/lib/libdl.so.2
/lib/libpthread.so.0
/lib/librt.so.1
/lib/libselinux.so.1
/lib/libsepol.so.1
# cp /lib/ld-linux.so.2 /lib/libacl.so.1 /lib/libattr.so.1 /lib/libc.so.6 /lib/libdl.so.2 /lib/libpthread.so.0 /lib/librt.so.1 /lib/libselinux.so.1 /lib/libsepol.so.1 /usr/local/chroot/lib
# cp /bin/ls /usr/local/chroot/bin

這樣使用者就可以用ls了! 他一定會感動得痛哭流涕 XD

664 次瀏覽