CHROOT je neverovatno korisna mogućnost baratanja procesima kojima ne verujete. Poenta CHROOT-a je da program kome izmenite root ne može da pristupa datotekama izvan direktorijuma koji ste mu postavili kao root. Šta to znači za OpenSSH? Zamislite mogućnost da svojim korisnicima dajete SSH pristup serveru a da sa druge strane oni nikako ne mogu izaći iz određenog direktorijuma koji ste im vi postavili kao root. Zvuči korisni, zar ne?

Sve novije verzije OpenSSH dozvoljavaju tako nešto. Ovaj tekst ce kasnije biti upotrebljen i za objašnjenje procedure na OpenBSD sistemima pošto su razlike u proceduri za nijansu drugačije. Prvo ćemo zameniti sistemski SSH server onim koji možete naći pod:

/usr/ports/security/openssh-portable/

U pitanju je port verzija OpenSSH servera koji možete naći kod OpenBSD-a. Lično, uvek koristim tu verziju. Kada počnete instalaciju dobićete mogućnost da podesite malo taj OpenSSH. Ukoliko instalacija odmah počne bez ikakvih ponuđenih opcija (desi se i to ponekad) sve što treba da uradite je da je prekinete i ukucate komandu:

make config

Stavka na listi koja nas zanima je OPENSSH_CHROOT. Onda se vratite starom dobrom make install clean i to je to. Sada je potrebno da ubijete sistemski SSH i da malo izmenite /etc/rc.conf:

sshd_enable="NO"                 # OpenSSH server
openssh_enable="YES"             # OpenBSD OpenSSH-portable

Sada će se pri pokretanju sistema startovati OpenBSD verzija OpenSSH servera. I sada to sve radi…ili ne. Zanimljivo je kako je teško doći do tačne informacije šta dalje.

OpenSSH koji se kompajlira sa OPENSSH_CHROOT zakrpom čita putanju do home DIR malo drugačije. Tačnije, čita ”.” u putanji tako što je za njega ona / Dakle, ako je putanja do korisničkog home DIR recimo ovako nešto:

/home/./jail/home/user

kada se korisnik uloguje na sistem i kuca “cd /” neće dobiti pravu root particiju već /jail i neće moći iz nje da izađe. Problem nastaje što onda korisnik nema gotovo ništa od komandi..tačnije, ne može ni ući na sistem jer nema ni jedan shell. Ono ”/bin/csh” u njegovim podacima sada neće imati smisla. Napravimo mu onda “zatvor” koji ima neke od komandi.

cd /home/jail
mkdir bin lib etc
cp /bin/csh bin/

Vodite računa da programi i komande koje kopirate u ”/bin” imaju i sve potrebne biblioteke. To ćete proveriti tako što ćete kucati:

ldd /home/jail/bin/csh

Dobićete nešto ovako:

/bin/csh:
    libncurses.so.6 => /lib/libncurses.so.6 (0x280bd000)
    libcrypt.so.3 => /lib/libcrypt.so.3 (0x280fc000)
    libc.so.6 => /lib/libc.so.6 (0x28114000)

Aha, dakle potrebne su nam i neke biblioteke. Dobro, iskopirajte ih sve u naš “jailovan” /lib/” direktorijum. Sada će sve raditi kako treba.Šta sesve valja naći u “bin” direktorijum? To od vas zavisi. Ako korisniku date samo csh neće moći da radi ništa do da se uloguje na sistem. Korisno je dati mu komande: cd, ls,cp, mv, rm…odlučite već sami, ovo je samo predlog.

I to je to. Kada vaši korisnici uđu na sistem najdalje što će moći da odu jeste /jail. Ukoliko već imate korisnike koje želite da smestite u kavez:

chpass username

te izmenite samo putanju do /home/ direktorijuma. Putanju do shell-a ne dirajte. I to je to.

NAPOMENA: Ovo ima smisla samo ako je korisnik na sistem ušao preko SSH veze. Ukoliko ima fizički pristup mašini onda chroot ne radi.

Autor: Marko Milenović http://rehash.eccegeek.info

 
chroot_openssh.txt · Last modified: 2007/07/17 12:16 by nightweaver
 
Recent changes RSS feed Creative Commons License Valid XHTML 1.0 Valid CSS Driven by DokuWiki