SSH kasutajate chrootimine libpam-chroot mooduli abil Debian Etch'ga

Allikas: Kuutõrvaja
Redaktsioon seisuga 9. september 2007, kell 18:23 kasutajalt Imre (arutelu | kaastöö) (Kasutaja chroot keskkonna moodustamine)

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

Selleks, et veenduda kas kasutaja chroot keskkonna tekitamine õnnestus tuleb öelda, mille vastuseks saab shelli (ja siis öelda exit)

bash# chroot /home/mart
bash# 

See on suhteliselt minimalistlik keskkond, aga siia peale saab kasvatada vastavalt vajadusele lisades utiliite ja nt ühendada /proc failisüsteemi külge, kui kasutaja peaks saama protsesside tabelit näha.