Erinevus lehekülje "Openssh chroot" redaktsioonide vahel
1. rida: | 1. rida: | ||
− | # uus | + | |
+ | |||
+ | Chroot on vahend kasutaja eraldamiseks teistest kasutajatest ning süsteemist. | ||
+ | kasutaja saab siis logida ssh-ga ka masinasse ja saab kasutada mõningaid määratud käske | ||
+ | kuid ei pääse muulde süsteemile ja käskudele ligi. Pisut nagu jail aga tunduvalt piiratum ja vähemate võimalustega. | ||
+ | |||
+ | Selle saavutamiseks tuleb teha järgnevad sammud | ||
+ | # uus sshd | ||
# tekitame vajalikud kaustad | # tekitame vajalikud kaustad | ||
# kopeerime endale vajalikud programmmid mida tahame lubada kasutada kasutadesse | # kopeerime endale vajalikud programmmid mida tahame lubada kasutada kasutadesse | ||
# kopeerime lib'id mida programmid vajavad kaustadesse | # kopeerime lib'id mida programmid vajavad kaustadesse | ||
# teeme kasutaja | # teeme kasutaja | ||
− | |||
− | |||
− | |||
− | |||
24. rida: | 27. rida: | ||
'''FreeBSD''' | '''FreeBSD''' | ||
+ | |||
FreeBSD sisaldab juba vastavat patchitud openssh'd enda portsudes | FreeBSD sisaldab juba vastavat patchitud openssh'd enda portsudes | ||
/usr/ports/security/openssh-portable | /usr/ports/security/openssh-portable | ||
− | + | Seejärel anname käsu make config ning | |
+ | märgime ära openssh_chroot toe kompileerimise | ||
[X] OPENSSH_CHROOT Enable CHROOT support | [X] OPENSSH_CHROOT Enable CHROOT support | ||
+ | |||
+ | Seejärel võime anda | ||
make install clean | make install clean | ||
+ | Seejärel teeme kasutaja kodukausta | ||
+ | selleks hakkab olema /home/chroot. Sinna tekitame järgneva struktuuri | ||
# mkdir /home/chroot | # mkdir /home/chroot | ||
40. rida: | 49. rida: | ||
# mkidir home/kasutaja | # mkidir home/kasutaja | ||
+ | libexec on esmane vajalik sõltuvus kõige kasutamieks nii siis lisame. | ||
# mkdir libexec | # mkdir libexec | ||
47. rida: | 57. rida: | ||
vaja tekitada vajalikud dev failid ja kaust dev vajalike seadmetega | vaja tekitada vajalikud dev failid ja kaust dev vajalike seadmetega | ||
− | + | Näiteks lisame kasutajale faili /bin/chs ehk shelli selleks kopeerime esiteks csh binaar faili bin kausta. | |
# cp /bin/csh /home/chroot/bin | # cp /bin/csh /home/chroot/bin | ||
− | + | Seejärel vaatame mis lib'e kasutab csh seda teeme käsuga ldd | |
# ldd /bin/csh | # ldd /bin/csh | ||
59. rida: | 69. rida: | ||
libc.so.7 => /lib/libc.so.7 (0x28122000) | libc.so.7 => /lib/libc.so.7 (0x28122000) | ||
− | Ning kopeerime need talle | + | Ning kopeerime need kolm lib talle lib kausta |
# cp /lib/libncurses.so.7 /home/chroot/lib | # cp /lib/libncurses.so.7 /home/chroot/lib | ||
67. rida: | 77. rida: | ||
'''Installi lihsustamise skript''' | '''Installi lihsustamise skript''' | ||
− | + | Kui käske ja programme on hulgi mida soovime kasutajale | |
+ | kättesaadavaks teha on käsitöö üsnagi vaevanõudev ja tüütu. | ||
+ | Selle lihtsustamiseks üks shell skript. Muutujaga CHROOT määratakse | ||
+ | kasutaja kodu ja muutujale APPS võib kirjutada täisrajaga kõin binary | ||
+ | failid mida soovime kasutajale ligipääsetavaks teha, eraldada tuleb need | ||
+ | failid tühikuga üksteisest. Antud skriptis lisame kasutajale utiliidid | ||
+ | |||
+ | *ls | ||
+ | *mkdir | ||
+ | *pwd | ||
+ | *rm | ||
+ | *id | ||
CHROOT="/usr/home/chroot" | CHROOT="/usr/home/chroot" | ||
84. rida: | 105. rida: | ||
− | Teeme kasutaja nimega kasutaja | + | Teeme kasutaja nimega kasutaja. Kasutaja tegemises pole mitte midagi ebatavalist |
− | tema kodukaustaks /home/jail/./home/kasutaja | + | ainukeses erinevuseks chrooditud kasutaja ja tavalise kasutaja vahel on see ,et |
− | ja shelliks /bin/csh | + | tema kodukaustaks saab '''/home/jail/./home/kasutaja''' |
+ | ja shelliks '''/bin/csh'''. Muidugi ei pea csh'd kasutama kasutaja shelliks | ||
+ | kindlasti vaid see on pigem antud näites. Nii võib samahästi ka bashi | ||
+ | kohe alguses paigaldada. | ||
'''Probleemid''' | '''Probleemid''' | ||
− | Juhul kui teatab | + | Juhul kui logimisel teatab |
+ | |||
+ | csh: Cannot open /etc/termcap | ||
+ | ja või mõne tarkvara käivitamisel Error opening terminal: xterm | ||
+ | |||
+ | siis tuleb paigaldada termcap | ||
− | + | cp /etc/termcap /usr/home/chroot/etc | |
+ | cp .cshrc /usr/home/jail/home/kasutaja | ||
− | + | ja lisame faili .cshrc rea | |
− | + | setenv TERMCAP /etc/termcap | |
− | |||
− |
Redaktsioon: 27. veebruar 2008, kell 21:31
Chroot on vahend kasutaja eraldamiseks teistest kasutajatest ning süsteemist.
kasutaja saab siis logida ssh-ga ka masinasse ja saab kasutada mõningaid määratud käske
kuid ei pääse muulde süsteemile ja käskudele ligi. Pisut nagu jail aga tunduvalt piiratum ja vähemate võimalustega.
Selle saavutamiseks tuleb teha järgnevad sammud
- uus sshd
- tekitame vajalikud kaustad
- kopeerime endale vajalikud programmmid mida tahame lubada kasutada kasutadesse
- kopeerime lib'id mida programmid vajavad kaustadesse
- teeme kasutaja
Linux
http://www.howtoforge.com/chrooted_ssh_howto_debian_p2
fetch http://chrootssh.sourceforge.net/download/openssh-4.2p1-chroot.tar.gz tar -xf openssh-4.2p1-chroot.tar.gz cd openssh-4.2p1-chroot ./configure make make install
FreeBSD
FreeBSD sisaldab juba vastavat patchitud openssh'd enda portsudes
/usr/ports/security/openssh-portable
Seejärel anname käsu make config ning märgime ära openssh_chroot toe kompileerimise
[X] OPENSSH_CHROOT Enable CHROOT support
Seejärel võime anda
make install clean
Seejärel teeme kasutaja kodukausta selleks hakkab olema /home/chroot. Sinna tekitame järgneva struktuuri
# mkdir /home/chroot # cd /home/chroot # mkdir bin home lib # mkidir home/kasutaja
libexec on esmane vajalik sõltuvus kõige kasutamieks nii siis lisame.
# mkdir libexec # cp /libexec/ld-elf.so.1 /usr/home/chroot/libexec/
Juhul kui vaja ,et toimiksid ka programmid naug ssh vaja tekitada vajalikud dev failid ja kaust dev vajalike seadmetega
Näiteks lisame kasutajale faili /bin/chs ehk shelli selleks kopeerime esiteks csh binaar faili bin kausta.
# cp /bin/csh /home/chroot/bin
Seejärel vaatame mis lib'e kasutab csh seda teeme käsuga ldd
# ldd /bin/csh /bin/csh: libncurses.so.7 => /lib/libncurses.so.7 (0x280c6000) libcrypt.so.4 => /lib/libcrypt.so.4 (0x28109000) libc.so.7 => /lib/libc.so.7 (0x28122000)
Ning kopeerime need kolm lib talle lib kausta
# cp /lib/libncurses.so.7 /home/chroot/lib # cp /lib/libcrypt.so.4 /home/chroot/lib # cp /lib/libc.so.7 /home/chroot/lib
Installi lihsustamise skript
Kui käske ja programme on hulgi mida soovime kasutajale kättesaadavaks teha on käsitöö üsnagi vaevanõudev ja tüütu. Selle lihtsustamiseks üks shell skript. Muutujaga CHROOT määratakse kasutaja kodu ja muutujale APPS võib kirjutada täisrajaga kõin binary failid mida soovime kasutajale ligipääsetavaks teha, eraldada tuleb need failid tühikuga üksteisest. Antud skriptis lisame kasutajale utiliidid
- ls
- mkdir
- pwd
- rm
- id
CHROOT="/usr/home/chroot" APPS="/bin/ls /bin/mkdir /bin/mv /bin/pwd /bin/rm /usr/bin/id" for prog in $APPS; do cp $prog $CHROOT/bin ldd $prog > /dev/null if [ "$?" = 0 ] ; then LIBS=`ldd $prog | awk '{ print $3 }'` cp $LIBS $CHROOT/lib fi done
Teeme kasutaja nimega kasutaja. Kasutaja tegemises pole mitte midagi ebatavalist
ainukeses erinevuseks chrooditud kasutaja ja tavalise kasutaja vahel on see ,et
tema kodukaustaks saab /home/jail/./home/kasutaja
ja shelliks /bin/csh. Muidugi ei pea csh'd kasutama kasutaja shelliks
kindlasti vaid see on pigem antud näites. Nii võib samahästi ka bashi
kohe alguses paigaldada.
Probleemid
Juhul kui logimisel teatab
csh: Cannot open /etc/termcap ja või mõne tarkvara käivitamisel Error opening terminal: xterm
siis tuleb paigaldada termcap
cp /etc/termcap /usr/home/chroot/etc cp .cshrc /usr/home/jail/home/kasutaja
ja lisame faili .cshrc rea
setenv TERMCAP /etc/termcap