chroot Umgebung - mini HowTo

Rund um die Sicherheit des Systems und die Applikationen
sascha
Posts: 1325
Joined: 2002-04-22 23:08
 

chroot Umgebung - mini HowTo

Post by sascha »

Bitte zahlreiche Kommentare & Verbesserungen ;-)

Source downloaden und kompillieren:
# cd /usr/local/src
# wget http://www.gsyc.inf.uc3m.es/~assman/dow ... 1.9.tar.gz
# tar xzf jail_1.9.tar.gz
# cd jail_1-9_stable/src
# make
# make install


chroot Umgebung erstellen:
# /usr/local/bin/mkjailenv /var/chroot
# /usr/local/bin/addjailsw /var/chroot


Neuen Systembenutzer anlegen:
#/root/confixx/confixx_useradd.pl -h /var/chroot -p Passwort (verschlüsselt) -g users -s /usr/local/bin/jail chrootuser1


Systembenutzer in der chroot Umgebung hinzufügen:
#/usr/local/bin/addjailuser /var/chroot /home/chrootuser1 /bin/bash chrootuser1


Zusätzliche Programme in der chroot Umgebung zur Verfügung stellen:

# /usr/local/bin/addjailsw /var/chroot -P <programmname>
v00dy
Posts: 25
Joined: 2002-07-09 14:16
Location: NRW
 

Re: chroot Umgebung - mini HowTo

Post by v00dy »

/usr/local/bin/addjailsw /var/chroot -P bash
fehlt dort noch.. :)


ich habe früher schonmal jail getestet, was ich aber nie hinbekommen habe ist, das die jail user kompilieren können. hab verschiedene libs, gcc & make mit eingebunden aber es hat nie geklappt.
wenn einer weiss wie es geht soll er sich bitte mal melden. :)


cu
majortermi
Userprojekt
Userprojekt
Posts: 916
Joined: 2002-06-17 16:09
 

Re: chroot Umgebung - mini HowTo

Post by majortermi »

v00dY wrote:ich habe früher schonmal jail getestet, was ich aber nie hinbekommen habe ist, das die jail user kompilieren können. hab verschiedene libs, gcc & make mit eingebunden aber es hat nie geklappt.
wenn einer weiss wie es geht soll er sich bitte mal melden. :)
Du musst den GCC im und die Glibc in der Chroot-Umgebung kompilieren.
Wie das geht, erfährst du unter http://www.linuxfromscratch.org/ - diese Anletiung ist eigentlich für die Kompilierung eines komplett neuen Linux-Systems gedacht, mit ein paar Anpassungen lässt sie sich aber auch sehr gut für ein Jail verwenden.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
floschi
Userprojekt
Userprojekt
Posts: 3247
Joined: 2002-07-18 08:13
Location: München
Contact:
 

Re: chroot Umgebung - mini HowTo

Post by floschi »

Hat bei mir grad wunderbar gefunzzt ;) (chroot User anlegen)
nn4l
Posts: 172
Joined: 2002-06-19 07:06
Contact:
 

Re: chroot Umgebung - mini HowTo

Post by nn4l »

Ist das wirklich eine gute Idee, erst ein chroot jail zu machen und dann dort den gcc zu installieren? Die chroot Funktion ist eigentlich nicht als Security Feature entwickelt worden, auch wenn sie häufig so eingesetzt wird.
  • * Der neue Apache Worm (siehe Security Forum) kann nur aktiv werden, wenn er den gcc hat.

    * Es soll Möglichkeiten geben, ein C Programm zu schreiben, das seine chroot Umgebung verlassen kann. Ich kenne aber keine Details.
Ich habe für meinen Apache ebenfalls ein chroot jail eingerichtet, da gibt es aber nur die Apache executables und sonst gar nichts. Meine User haben auch keinen login.

Hier die Anleitung, nach der ich vorgegangen bin (Google-Cache, die Original Website scheint down zu sein):

http://216.239.39.100/search?q=cache:21 ... n&ie=UTF-8
majortermi
Userprojekt
Userprojekt
Posts: 916
Joined: 2002-06-17 16:09
 

Re: chroot Umgebung - mini HowTo

Post by majortermi »

nn4l wrote:Es soll Möglichkeiten geben, ein C Programm zu schreiben, das seine chroot Umgebung verlassen kann. Ich kenne aber keine Details.
Also ich kenne keine Methode aus einer chroot-Umgebung auszubrechen (davon ausgegangen, dass alle Programme, die nicht im chroot laufen, korrekt programmiert sind).

Ã?berleg dir mal folgendes: Wenn es möglich ist ein solches Programm zu schreiben, dann kann ich es auch zu Hause kompilieren und die Binär-Datei hochladen.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
mirza
Posts: 8
Joined: 2002-08-09 15:14
Location: Potsdam
Contact:
 

Re: chroot Umgebung - mini HowTo

Post by mirza »

MajorTermi wrote:[Also ich kenne keine Methode aus einer chroot-Umgebung auszubrechen (davon ausgegangen, dass alle Programme, die nicht im chroot laufen, korrekt programmiert sind).

Ã?berleg dir mal folgendes: Wenn es möglich ist ein solches Programm zu schreiben, dann kann ich es auch zu Hause kompilieren und die Binär-Datei hochladen.
Es gibt definitiv unter Linux die Möglichkeit, mit einem 10-Zeiler in C aus einer chroot-Umgebung auszubrechen. Um dies abzuschalten, ist ein Linux-Kernel-Patch notwendig, der Teil des GRSecurity-Kernel-Patches (http://www.grsecurity.org/) ist.

Die von mir gepostete chroot-Umgebung für ssh läuft nicht mit einigen Optionen des grsecurity-Patches.

Achja, User-Partitionen sollten eigentlich mit nodev, nosuid und noexec gemountet werden. Für jeden User gibts dann ein /chroot/user/bin, das als Loopback mit exec gemountet wird und die User-Binaries enthält. Dann kannst Du auch keine Programme von zu Hause einspielen und alle sind glücklich...

Ciao, (M)
majortermi
Userprojekt
Userprojekt
Posts: 916
Joined: 2002-06-17 16:09
 

Re: chroot Umgebung - mini HowTo

Post by majortermi »

Mirza wrote:Es gibt definitiv unter Linux die Möglichkeit, mit einem 10-Zeiler in C aus einer chroot-Umgebung auszubrechen. Um dies abzuschalten, ist ein Linux-Kernel-Patch notwendig, der Teil des GRSecurity-Kernel-Patches (http://www.grsecurity.org/) ist.
Ich habe mir mal die Homepage des GRSecurity-Patches angeschaut, konnte dort aber nichts im Bezug auf Probleme mit chroot finden.
Könntest du bitte mal den Link auf die Beschreibung eines entsprechenden Exploit posten?
Das Problem ist nämlich, dass du Usern die Ausführung von Programmen in Ihrem Homeverzeichnis erlauben musst, wenn Sie CGI-Skripte benutzen können sollen.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
rootmaster
Posts: 483
Joined: 2002-04-28 13:30
Location: Hannover
 

Re: chroot Umgebung - mini HowTo

Post by rootmaster »

ein generelles problem der "jails" bei linux ist wohl, dass sie zwar das filesystem beschränken, aber nicht den prozessraum. ein beliebter angriff - wenn auch nicht der einzige ;) - ist, mit race-condition+setuid+temp eine root shell zu bekommen.
eine bessere lösung wäre, uid 0 auf den user zu mappen, was imho zur zeit aber nur mit bsd möglich ist: virtuelles prozessmanagement mit eigenem environment. sollte uid 0 kompromittiert sein, dann beträfe das nur einen speziellen prozessraum.
insofern sind beide hier dargelegten jail-umgebungen gleichwertig, wobei mir die mit der busybox die elegantere und performantere zu sein scheint 8)

"back to the roots"
Cahn's Axiom:

When all else fails, read the instructions
majortermi
Userprojekt
Userprojekt
Posts: 916
Joined: 2002-06-17 16:09
 

Re: chroot Umgebung - mini HowTo

Post by majortermi »

@rootmaster:
Natürlich kann man sich auch fragen, wofür man in einem Jail SetUID-Root Binaries braucht...
Aber prinzipiell gebe ich dir recht: Das Problem ist, wie ich bereits einmal angesprochen habe, fehlerhafte Software, die nicht im Chroot läuft.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
hugo
Posts: 87
Joined: 2002-06-08 21:33
 

Re: chroot Umgebung - mini HowTo

Post by hugo »

Salve!
Wie mache ich das ganze denn wenn ich kein Confixx mehr auf dem Server habe?
So wie ich mir das dachte geht das nicht:
Benutzer "Hugo" anlegen.
Home: /home/chroot/hugo
Login-Shell -> /usr/local/bin/jail

Dann:

Code: Select all

/usr/local/bin/addjailuser /var/chroot /home/chroot/hugo /bin/bash hugo
Wenn ich mich dann einloggen möchte:

Code: Select all

jail: chrooted directory /home/chroot/hugo is not configuredfor jail (bad passwd file); bailing out.
Wo ist der blöde Fehler?

Hugo ;)
sascha
Posts: 1325
Joined: 2002-04-22 23:08
 

Re: chroot Umgebung - mini HowTo

Post by sascha »

Hi,

das ~home für den "echten" Systemuser muss /var/chroot sein.
hugo
Posts: 87
Joined: 2002-06-08 21:33
 

Re: chroot Umgebung - mini HowTo

Post by hugo »

Salve!
Also irgendewas stimmt nicht. Wenn ich mich z.B. mit WinSCP einlogge kommt direkt:

Code: Select all

Command "groups"
failed with return code 127 and error message
-jail: groups: command not found.
Er macht dann weiter, aber uppen kann ich nichts...

Ich habe das wie folgt gemacht:
Alles nach Anleitung und ab "Neuen Systembenutzer anlegen" so:

Code: Select all

useradd -d /var/chroot -p Passwort -g users -s /usr/local/bin/jail hugo

Code: Select all

/usr/local/bin/addjailuser /var/chroot /home/chroot/hugo /bin/bash hugo
Hugo ;)
hugo
Posts: 87
Joined: 2002-06-08 21:33
 

Re: chroot Umgebung - mini HowTo

Post by hugo »

Image
Anonymous
 

Re: chroot Umgebung - mini HowTo

Post by Anonymous »

Aehm :) wir ham auf confixx 1.6.3 upgegradet, da gibt es scheinbar keine confixx_adduser.pl

wie ginge es denn theoretisch weiter? wie können wir einen User via Jail Rechte für 'sein' Verzeichnis geben?
knollo
Posts: 7
Joined: 2002-09-15 18:08
Location: Norderstedt
 

Re: chroot Umgebung - mini HowTo

Post by knollo »

Hugo wrote:Ich habe das wie folgt gemacht:
Alles nach Anleitung und ab "Neuen Systembenutzer anlegen" so:

Code: Select all

useradd -d /var/chroot -p Passwort -g users -s /usr/local/bin/jail hugo

Code: Select all

/usr/local/bin/addjailuser /var/chroot /home/chroot/hugo /bin/bash hugo
Hugo ;)
Die Anleitung habe ich auch befolgt, kommt von weiter oben... :D

[EDIT] P.S.: Das Problem mit SCP habe ich auch... / Ich meine es lassen sich bei mir generell keine Progs dazufügen, aber das ist wohl ein Problem von mir, habe die bash einfach reinkopiert, und dann kann ich mich auch anmelden...[/EDIT]

Grüße

Knollo
gamecrash
Posts: 339
Joined: 2002-05-27 10:52
 

Re: chroot Umgebung - mini HowTo

Post by gamecrash »

Wenn ich als Homeverzeichnis /var/chroot angeben muss, gehe ich recht in der Annahme dass dann Suexec nicht mehr laufen würde?
sascha
Posts: 1325
Joined: 2002-04-22 23:08
 

Re: chroot Umgebung - mini HowTo

Post by sascha »

Ja das ist richtig. Du kannst die Verzeichnise natürlich auch unter /home/www/ anlegen.
bigbutt
Posts: 18
Joined: 2003-01-02 15:15
 

Re: chroot Umgebung - mini HowTo

Post by bigbutt »

Hi,

wenn ich Software in ins Jail hinzufügen möchte bekomme ich folge Fehlermeldung:
usr/local/bin/addjailsw /var/chroot -P bash

addjailsw
A component of Jail (version 1.9 for linux)
http://www.gsyc.inf.uc3m.es/~assman/jail/
Juan M. Casillas <assman@gsyc.inf.uc3m.es>

Guessing bash args(0)
Can't build dependencies for /bin/bash

Done.

Woran kann das liegen?

bigbuTT
bigbutt
Posts: 18
Joined: 2003-01-02 15:15
 

Re: chroot Umgebung - mini HowTo

Post by bigbutt »

Hallo,

mein erstes Problem ist gelöst :-D
Nun hab ich aber ein neues :(
Wenn ich das richtig verstanden habe hat jeder JailUser sein HomeDirectory in /var/chroot. Das heisst alle persönlichen Files wandern in /var/chroot. Wenn ich aber mehrer JailUser habe bekomme ich da aber ein Problem :(
Am liebsten würde ich in der NichtChrootPasswd /var/chroot/home/UserXX als HomeDirectory eintragen. Geht aber nicht :)
Gibt es eine andere Lösung?

bigbuTT
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin
 

Re: chroot Umgebung - mini HowTo

Post by [tom] »

DEL - Hab meinen Beitrag wegen unnötiger Wiederholung wieder gelöscht.

BTW: Hier fehlt der Löschknopp. ;-)

[TOM]
bigbutt
Posts: 18
Joined: 2003-01-02 15:15
 

Re: chroot Umgebung - mini HowTo

Post by bigbutt »

@[TOM] warum gelöscht?
Lag es an meiner dämlichen Frage? Wegen Wiederholung?

bigbuTT
cfreak
Posts: 74
Joined: 2002-08-12 19:51
Location: Regensburg
 

Re: chroot Umgebung - mini HowTo

Post by cfreak »

hmm :-( wo liegt der fehler?

kiste:/var/chroot# /usr/local/bin/addjailsw /var/chroot

addjailsw
A component of Jail (version 1.9 for linux)
http://www.gsyc.inf.uc3m.es/~assman/jail/
Juan M. Casillas <assman@gsyc.inf.uc3m.es>

Guessing head args()
Can't build dependencies for /usr/bin/head
Guessing cat args()
Can't build dependencies for /bin/cat
Guessing pwd args()
Can't build dependencies for /bin/pwd
Guessing ln args()
Can't build dependencies for /bin/ln
Guessing mkdir args()
Can't build dependencies for /bin/mkdir
Guessing rmdir args()
Can't build dependencies for /bin/rmdir
Guessing ls args()
Can't build dependencies for /bin/ls
Guessing sh args()
Can't build dependencies for /bin/sh
Guessing mv args()
Can't build dependencies for /bin/mv
Guessing rm args()
Can't build dependencies for /bin/rm
Guessing more args()
Can't build dependencies for /bin/more
Guessing grep args()
Can't build dependencies for /bin/grep
Guessing vi args(-c q)
Can't build dependencies for /usr/bin/vi
Guessing id args()
Can't build dependencies for /usr/bin/id
Guessing cp args()
Can't build dependencies for /bin/cp
Guessing tail args()
Can't build dependencies for /usr/bin/tail
Guessing touch args()
Can't build dependencies for /bin/touch

Done.
cfreak
Posts: 74
Joined: 2002-08-12 19:51
Location: Regensburg
 

Re: chroot Umgebung - mini HowTo

Post by cfreak »

*ja ich weiß, ich seh es selbst nicht so gerne, aber *schieb** .. :>
quicksilver
Posts: 68
Joined: 2003-04-08 16:15
Contact:
 

Re: chroot Umgebung - mini HowTo

Post by quicksilver »

bin wohl zu doof dazu... :oops:
Bei mir kann der user sich nachher noch Frei im system bewegen :(
das einzige was ich anders gemacht habe ist das ich den user per yast erstellt hab
Post Reply