Openssh chroot: erinevus redaktsioonide vahel

Allikas: Kuutõrvaja
Mine navigeerimisribaleMine otsikasti
Jj (arutelu | kaastöö)
Resümee puudub
Jj (arutelu | kaastöö)
Resümee puudub
1. rida: 1. rida:
# uus ssh
 
 
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
see kasutaja saab siis logida ssh-ga ka masinasse ja saab kasutada m2ningaid m22ratud k2ske
kuid ei p22se muulde systeemile ja k2skudele ligi. Pisut nagu jail aga tunduvalt piiratum ja v2hema 2igusega.




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


Installime
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


N2iteks lisame kasutajale faili /bin/chs ehk shelli selleks kopeerime esiteks csh talle
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


Seej2rel vaatame mis lib'e kasutab csh
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'''


Installiks saab kasutada ka j2rgnevat skripti
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


csh: Cannot open /etc/termcap ja Error opening terminal: xterm
cp /etc/termcap /usr/home/chroot/etc
cp .cshrc /usr/home/jail/home/kasutaja


siis
ja lisame faili .cshrc rea


cp /etc/termcap /usr/home/chroot/etc
setenv  TERMCAP /etc/termcap
cp .cshrc /usr/home/jail/home/kasutaja
ja lisame faili setenv  TERMCAP /etc/termcap

Redaktsioon: 27. veebruar 2008, kell 18: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

  1. uus sshd
  2. tekitame vajalikud kaustad
  3. kopeerime endale vajalikud programmmid mida tahame lubada kasutada kasutadesse
  4. kopeerime lib'id mida programmid vajavad kaustadesse
  5. 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