Gå til innhold

Guide til chrooted sftp server


Anbefalte innlegg

Instalasjon av chrootet openssh sftp server.

 

Jeg er relativt nybegynner i linux miljø, så det kan tenkes dette er alment

 

kjent for mange, men jeg vet at en instruksjons veiledning som denne ville spart

 

meg endel timer. Håper den kan være til nytte for noen.

Systemet som er brukt kjører Gentoo 1.4

 

Last ned den versjonen du ønsker fra

http://chrootssh.sourceforge.net/download/

 

Jeg har brukt openssh-3.8.p1-chroot.tar.gz

 

Pakker ut fila

#tar -xzpvf openssh-3.8.p1-chroot.tar.gz

 

Går til katalogen med kildekode

cd openssh-3.8.p1-chroot

 

Konfigurerer

#./configure --prefix=/usr --libexecdir=/usr/lib/misc --sysconfdir=/etc/ssh --with-pam --with-md5-passwords

Jeg har valgt å endre hoved install-dir fra /usr/local til /usr. Har også valgt

 

å endre libexecdir fra $prefix/libexec til /usr/lib/misc og sysconfdir fra

 

$prefix/etc til /etc/ssh. Grunnen til disse endringene er at det er slik openssh

 

ville instalert seg om jeg hadde instalert det med emerge openssh.

 

Kompilerer

#make
#make install

 

Oppsett av chroot

På mitt system ville jeg at alle "usikre" brukere skulle ha sitt hjemmeområde i

 

/home/gjester/$username, og holdes innenfor /home/gjester.

 

Oppretter katalogen for chroot

#mkdir /home/gjester

 

Gir alle brukere tilgang til underkataloger, men fjerner ls rettighetene på root

 

katalogen innenfor "fengselet".

#chmod 755 /home/gjester

 

For at chroot skal kjøre, kreves at den har tilgang på de kommandoene og

 

bibliotekene brukeren skal kunne bruke. Pass for alldel på å ikke gi brukeren

 

tilgang på chroot kommandoen! Siden jeg bare skal ha en sftp server er det

 

ikke mye som trengs.

 

Lager kataloger for systemfiler: (hva katalogen heter avhenger av hvilke

 

parametere du ga ved konfigurering.

#cd /home/gjester
#mkdir bin
#mkdir dev
#mkdir etc
#mkdir home
#mkdir lib
#mkdir usr
#mkdir usr/lib
#mkdir usr/lib/misc
#chmod -R 755 *

 

Siden brukerens hjemmekatalog er /home/gjester/$username, trengs det også en

 

link som gjør at /home/gjester i "root fengselet" fører samme sted som

 

/home/gjester i systemet ellers:

Lager brukerens hjemmekatalog-symlink

#ln -s ../ home/gjester

 

Kopierer inn de system kommandoene som trengs

#cp /bin/cp bin/
#cp /bin/ls bin/
#cp /bin/mv bin/
#cp /bin/rm bin/
#cp /bin/mkdir bin/
#cp /bin/rmdir bin/
#cp /bin/bash bin/

Alle disse må være lesbare for alle brukere.

 

Lager en sh symlink slik at dersom openssh skulle prøve å kjøre bin/sh, vil den

 

kjøre bin/bash.

#ln -s bash bin/sh

 

Opretter dev/null og dev/zero

#cd dev
#mknod zero c 13 12
#mknod null c 13 2
#chmod go+w *
#cd ..

 

Kopierer /ect/passwd

#cp /etc/passwd etc/

 

Kopierer sftp-server program.

#cp /usr/lib/misc/sftp-server usr/lib/misc
(Avhengig av hvilke parametere du konfigurerte varierer denne kodelinja. 

Hovedpoenget er at den skal være #cp /[path]/sftp-server [path]/

 

I en instalasjonsguide står det at man skal utføre

#chmod +s usr/lib/misc/sftp-server

Dette må IKKE gjøres! Det vil medføre at sftp klienter får root tilgang innen

 

fengselet!

 

 

Det er nå på tide å finne filene som trengs fra /lib og /usr/lib.

Dette gjøres med kommandoene

#ldd /usr/lib/misc/sftp-server
(også den linja er avhengig av konfigurering. Bruk find / -name "sshd" om du 

ikke finner den selv)

Noen systemer bruker strace isteden for ldd.

 

ldd (eller strace) vil liste opp endel filer. F.x får jeg

libresolv.so.2 => /lib/libresolv.so.2

libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7

[...]

Man må kopiere alle disse filene slik at filreferansene stemmer i den nye

 

rooten. Derfor:

#cp /lib/libresolv.so.2 lib/libresolve.so.2
#cp /usr/lib/libcrypto.so.0.9.7 usr/lib/libcrypto.so.0.9.7
[...]

Dette må gjøres for alle filene som listes!

 

Tilsvarende må gjøres med alle filene som ligger i den ny bin katalogen

#ldd /bin/bash
#ldd /bin/cp
#ldd /bin/ls
#ldd /bin/mv
#ldd /bin/rm
#ldd /bin/mkdir
#ldd /bin/rmdir

 

Så er det bare å opprette brukere og hjemmekataloger. Merk den ekstra "/." i

 

katalog spesifiseringen.

Eksempel for å opprette bruker med navn demo
#useradd -d /home/gjester/./demo demo
#passwd demo

 

Så er det bare å starte sshd, og alt skulle være klart til bruk.

 

-pg

 

Edit:

La til --with-pam i konfigureringa.

Endret av petterg
Lenke til kommentar
  • 2 år senere...
Videoannonse
Annonse

hei, ser at denne er veldig gammel, men sliter med å få inn chrooted-sftp nå...

 

etter å ha fulgt denne først en guide hvor man måtte sette chmod +s på sftp-server fikk jeg alt til å fungere, men har etterhvert funnet ut at det ikke er så trygt så droppa det fort, kom da over denne posten og fulgte alt her til punkt og prikke, men så når jeg logget på med en test bruker kunne jeg blant annet cd ut av "chroot" folderen og da forsvinner jo hele meningen med å chroot'e (ihvertfall for mitt bruk)...

 

bruker debian stable med

OpenSSH 3.8.1p1-8.sarg

 

noen tips om hva jeg eventuellt kan ha gjort galt?

Lenke til kommentar

Jeg har fulgt mange oppskrifter på hvordan man skal komme seg ut av fengselet, det har ikke virket med noen av dem. På et eller annet sted har du gjort noe anderledes enn meg.

Hvis en fengslet bruker kjører

ls -l /

Får han opp samme liste som om en ikke-fengslet kjører samme kommando? (Sammenlign dato og klokkeslett på mappene) Det skal jo i utgangspunktet se ganske likt ut, men siden de er laget på forskjellig tidspunkter skal tider være forskjellige.

 

Jeg bruker ikke denne metoden for installasjon lenger. Grunnen er at den patchen har kommet med i gentoo-portage, slik at den blir kompilert inn automatisk. Metoden for oppbygningen av fengselet er fortsatt den samme.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...