SSH kasutajate chrootimine libpam-chroot mooduli abil Debian Etch'ga
Eesmärk
Tekitada olukord, kus Debiani standardseid paketihalduse vahendeid kasutades on seadistusfailis kirjeldatud kasutajate ligipääs süsteemi failisüsteemile piiratud. Kui selline failisüsteemile piiratud ligipääsuga ehk chrootitud kasutaja süsteemi sisse logib, siis süsteemi vaatepunktist on tema kodukataloogiks /home/mart/home/mart, kusjuures nö absoluutse süsteemi seisukohasolemas on kataloogid
/home/mart/bin /home/mart/etc /home/mart/var /home/mart/proc /home/mart/home/mart ...
Kui aga kasutaja peale sisselogimist ise ütleb 'cd /', siis satub ta asboluutse süsteemi mõttes kataloogi /home/mart. Tuleb rõhutada, et käesolevas palas kirjeldatud tehnikat kasutades on piiratud vaid ligipääs failisüsteemile, chrootitud kasutaja näeb kõiki süsteemis töötavaid protsesse, saab kasutada võrku jne.
Sarnase tulemuse saavutamiseks on mitmeid võimalusi, käesolevas palas kirjeldatakse kuidas seda teha pam_chroot mooduli abil, aluseks on võetud Debiani manuaal, http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.en.html
Tarkvara paigaldamine
Lisaks nö tavalisele OpenSSH serverile ning PAM'i kasutava süsteemi olemasolule tuleb paigaldada libpam-chroot moodul ning kasutaja chroot keskkonna moodustamiseks utiliit makejail
bash# apt-get install libpam-chroot makejail
Kasutaja chroot keskkonna moodustamine
Makejail on igavesti kaval süsteem, antud juhul kasutame tema väga triviaalseid võimalusi, nimelt ütleme seadistusfailis kuhu kataloogi tekitada chroot keskkond ning et sinna /bin/bash shell ning vastavad teegid lisada
bash# mkdir /home/mart bash# makejail /root/makejail-bash.py
Kusjuures makejail-bash.py sisu on selline (antud juhul kasutatakse AMD64 platvormi)
chroot="/home/mart" forceCopy=["/lib64/ld-linux-x86-64.so.2", "/bin/bash","/lib/ld-linux-x86-64.so.2"]
ning tulemusena tekib selline failistruktuur
bash# cd /home bash# find mart -ls 507962 4 drwxr-xr-x 4 root root 4096 Sep 9 15:12 mart 507963 4 drwxr-xr-x 2 root root 4096 Sep 9 15:12 mart/lib 507968 1260 -rwxr-xr-x 1 root root 1286104 May 15 13:19 mart/lib/libc-2.3.6.so 507972 0 lrwxrwxrwx 1 root root 17 Sep 9 15:12 mart/lib/libncurses.so.5 -> libncurses.so.5.5 507973 100 -rwxr-xr-x 1 root root 97928 May 15 13:19 mart/lib/ld-2.3.6.so 507967 368 -rw-r--r-- 1 root root 369728 Oct 19 2006 mart/lib/libncurses.so.5.5 507974 0 lrwxrwxrwx 1 root root 11 Sep 9 15:12 mart/lib/ld-linux-x86-64.so.2 -> ld-2.3.6.so 507970 12 -rw-r--r-- 1 root root 10392 May 15 13:19 mart/lib/libdl-2.3.6.so 507971 0 lrwxrwxrwx 1 root root 14 Sep 9 15:12 mart/lib/libdl.so.2 -> libdl-2.3.6.so 507969 0 lrwxrwxrwx 1 root root 13 Sep 9 15:12 mart/lib/libc.so.6 -> libc-2.3.6.so 507964 0 lrwxrwxrwx 1 root root 4 Sep 9 15:12 mart/lib64 -> /lib 507965 4 drwxr-xr-x 2 root root 4096 Sep 9 15:12 mart/bin 507966 756 -rwxr-xr-x 1 root root 769368 Dec 11 2006 mart/bin/bash