之前只會把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