chroot környezet debianon

Elöszöris, el kell döntened, hogy hol akarod a chroot körnzezetedet telepíteni, mivel késöbb egy kisebb rendszert fogsz telepiteni bele. Tehát az elsö lépés, hogy csinálsz egy ilyen könyvtárat, és ezzel elkezded a chroot környezet telepítésének elsö lépéseit. Köztudott, hogy a chroot a felhasználónak a root könyvtárát egy külön könyvtárba rakja. A többi külsö forrás a chrootolt felhasználó javára nem elérhetö. Talán a legfontosabb dolog az új környezetben az, hogy ne legyen superuser (root, uid=û). Ha a chrootol felhasználó root jogot szerez, akkor nagyon könnyü ebböl a környezetböl kitörni. Emiatt is csináljuk ezt a fajta korlátolt környezetet, hogy nehezítsük meg a támadó dolgát. És mivel a környezeten belül nincs root, a támadó nem is tudja megszerezni a root jogot. Na, elég a dumából, vágjunk neki:

Akkor létrehozzuk a chroot-nak kijelölt könyvtárat (ebben ay esetben /chroot), ahol az új környezetet telepítjük.

osiris:~# mkdir /chroot
osiris:~# cd /chroot
osiris:/chroot#

Itt két lehetöségünk van. Vagy forgatnod kell a követelt programokat, ezt nevezzuk a “statikai” forgatásnak, vagy pedig letöltöd a debian csomagokat és dpkg-deb -el felrakod (ezt a módszert használom én). A második eljárás a dinamikus:

osiris:/chroot# wget -q http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.2.5-14_i386.deb
osiris:/chroot# ls -l
-rw-rw-r– 1 root root 3348878 Aug 16 18:02 libc6_2.2.5-14_i386.deb

osiris:/chroot# dpkg-deb -x libc6_2.2.5-14_i386.deb .
osiris:/chroot# ls
etc lib libc6_2.2.5-14_i386.deb sbin usr

Na! Ezennel már telepítettük és integráltuk a libc6 csomagot a kis környezetünkbe, mindjárt megnézzük még milyen programokat kell telepítsünk, hogy a chroot környezetünk müködöképes legyen. Most akkor ugyanezt az eljárást megcsináljuk _legalább_ a következö csomagokkal: (ldso, libncurses5, bash, base-files és fileutils). Miután kicsomagoltuk és egyben telepítettük a csomagokat a dpkg-deb programmal törölhetjük a letöltött csomagokat. Ugy hiszem most már telepítve vannak a csomagok, a base-file nevezetü csomag létrehoz a rendszerhez tartozó fontos fileokat, egyben az alapvetö könyvtárakat is létrehozza. Nézzük meg, hogy a környezetünkben a bin/ könyvtárban milyen fileok találhatóak:

osiris:/chroot/bin# ls
bash chmod cp df ln mkdir mv rm sh touch
chgrp chown dd dir ls mknod rbash rmdir sync vdir

A következö lépés, hogy telepítsük a libpam-chroot csomagot a szabványos (!) rendszerre. Debian felhasználóknak egy apt-get install libpam-chroot parancs végrehajtja a kívánt feladatot. A telepítés után megtalálható a libpam-chroot dokumentaciója a következö helyen: (/usr/share/doc/libpam-chroot/examples). De elmondom mi a tennivaló ezzel a libpam-chroottal. Elöszöris hozzunk létre egy “test” nevezetü felhasználót:

osiris:~# useradd -c “Chrooted User” -d /chroot/home/test -m -k /etc/skel -p test -s /bin/bash test

Namost ki kell javítsuk a /etc/passwd-ben lévö bejegyzést az épp létrehozott felhasználónkról. A home-dir sort átírjuk “/chroot/home/test”-röl “/home/test” -re, mivel majd a pam modulok hozzáadják késöbb a chroot környezet könyvtárát. Tehát a `grep ^test: /etc/passwd` kimenete valahogy így kéne kinézzen:

osiris:~# grep ^test: /etc/passwd
test:x:1041:100:Chrooted User:/home/test:/bin/bash

Mivel a chroot környezeten belül is kell szerepeljen a passwd file, mert anélkül nem leszünk képesek bejelentkezni ssh-n keresztul, iranyítsuk át a fent lévö kimenetet abba a fileba.

osiris:~# grep ^test: /etc/passwd &>/chroot/etc/passwd

Ezután editáljuk a /etc/security/chroot.conf nevezetü filet, mint ahogy a doksi azt leírja. A chroot.conf file a mi esetünkben így kéne kinézzen:

osiris:~# cat /etc/security/chroot.conf
# /etc/security/chroot.conf
# format:
# username chroot_dir
test /chroot

Aktiváljuk az újonnan telepített pam modult, tegyünk egy új sort a /etc/pam.d/[operáció] fileba. Az operáció annyit jelent, hogy milyen szolgálatot veszünk igénybe, amikor a chrootolt felhasználónk bejelentkezik, ez lehet ssh, login, su, stb… Tehát ha a felhasználó ssh-n keresztül kíván bejelentkezni, akkor a /etc/pam.d/ssh fileba írjuk a sort, ha lokálisan akar bejelentkezni, akkor a /etc/pam.d/login-ba, és így tovább…

osiris:~# tail -1 /etc/pam.d/ssh
session required pam_chroot.so debug

Most már a felhasználó képes arra, hogy bejelentkezzen vagy login-on keresztül, vagy `su - test` paranccsal (feltéve, hogy a /etc/pam.d/su-hoz hozzáadtuk az új sort). Ha viszont ssh-n keresztül akar bejelentkezni majd a chrootolt felhasználó, akkor még figyelembe kell vennünk még pár dolgot. Az ssh felhasználót a /dev/ptmx eszköz file kezeli, nade nekünk még nincs is egyetlen eszköz fileunk a /dev könyvtárban. Ez a /dev/ptmx nevezetü file követel egy “devpts” nevezetü filerendszert a chrootolt környezeten belülre mountolva. Mivel nincs eszközünk a /dev könyvtárban, létre kell hoznunk azokat az eszközöket. Másoljuk át a /dev/MAKEDEV nevezetü programot a chrootolt környezetben lévö eszközkönyvtárba és csináljuk meg az eszközöket:

osiris:/chroot# cp /dev/MAKEDEV dev/; cd dev/
osiris:/chroot/dev# ./MAKEDEV generic

Most egy kis türelem kell, amíg a program generálja æz eszközleíró fileokat. De még nem végeztünk, hisz az ssh a session-jeit a /dev/pts könyvtár alá fogja pakolni, emiatt létre kell hozzuk æzt a könyvtárat és bemountoljuk a “devpts” nevezetü filerendszert:

osiris:/chroot/dev# mkdir pts
osiris:/chroot/dev# mount -t devpts devpts /chroot/dev/pts

Figyelem! Ha ssh-val szeretnénk bejutni a chroot környezetbe, akkor nézzük meg az ssh verziót, amit futtatni akarunk, mivel sshnak root jogokkal kell futnia, anélkül nem lesz képes bezárni a felhasználót a chroot-ba. A legújabb ssh démonoknak (3.4 vagy újabb) van egy új opció implementálva, ami annyit tesz, hogy az ssh sessionek nem root jogokkal, hanem egy sshd nevezetü felhasználóként futnak. Ezt ki lehet kapcsolni, ha rakunk az ssh démon konfigurációs file-jába egy “UsePrivilegeSeparation no” címü opciót, másképp nem lesz lehetséges bejelentkezni a chrootolt felhasználónak ssh-n keresztül. Ezen hibaüzenet tanuja lesz:

linux:~$ ssh -l test osiris
test@osiris’s password:
Connection to osiris closed by remote host.
Connection to osiris closed.

Ha megadtuk az opciót az ssh démonnak és újraindítottuk, akkor már képes lesz bezárni a felhasználót a chroot környezetbe. Majd kapunk egy bash promptot a környezetre való bejelentkezés után, és máris tesztelhetjük, hogy milyen parancsok futnak le (ha a fileutils csomagot felraktuk), mint példáúl ls, cd, rm, mv, stb…

test@osiris:~$ touch testfile
test@osiris:~$ ls
testfile

Most már hozzá lehet adni a müködöképes chroothoz további csomagokat, a fent említett módszerrel.

Related posts

1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 3.75 out of 5)
Loading ... Loading ...

Comments are closed.

Zahnarzt Ungarn, Zahnbehandlung Ungarn : Zahnimplantat Ungarn, Zahnimplantate Ungarn : Zahnersatz Ungarn