Erinevus lehekülje "Openssh chroot" redaktsioonide vahel

Allikas: Kuutõrvaja
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 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

  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