Re: jail fuer einen Prozess

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Mon, 28 Nov 2005 09:30:24 +0100 (CET)

Sebastian Stolz <sebastian.stolz(at)arbeitskammer.de> wrote:
> ich möchte einen "abgespeckten" Jail für einen einzigen Dienst
> (Prozess) einrichten, will aber keine unnötigen Dateien im jail haben
> (kein SSH, etc)...

Das ist prinzipiell eine gute Idee. Ich mache das auch
häufig so.

Wenn DU noch verrätst, um was für einen Dienst es genau
geht, könnte ich (oder ein anderer) vielleicht sogar kon-
krete Hinweise und Erfahrungswerte zum Jailen dieses
Dienstes geben.

> gibt es eine Möglichkeit, wie ich festellen kann, welche Lib's ich
> für einen Prozess benötige?

Sicher: ldd(1) verrät Dir, welche Libs ein Binary braucht.
Damit ist es aber nicht unbedingt getan. Wenn man mit einem
Minimalistischen Ansatz beginnt (d.h. mit einem leeren Jail
beginnen und nur das reintun, was man braucht), vergißt man
häufig ein paar nicht unwichtige Kleinigkeiten.

Du wirst z.B. höchstwahrscheinlich eine passwd & Co. benö-
tigen, wo mindestens ein Pseudouser drin ist, den der
Dienst braucht. Je nach Dienst braucht der dann auch ein
existierendes Home-Verzeichnis, oder sogar eine gültige
Shell. Wenn es sich vermeiden läßt, sollte man aber in das
Jail keinesfalls eine Shell reintun, denn viele Exploits
erfordern eine Shell. Braucht der Pseudo-User zwingend
eine Login-Shell, kann man sie unter einem anderen Namen
in ein anderes Verzeichnis tun -- das hält zwar einen Hak-
ker, der gezielt arbeitet, höchstens ein paar Sekunden auf,
aber viele Skript-Kiddie-Standard-Exploits funktionieren
schonmal nicht, wenn es keine /bin/sh gibt. Falls es im
Jail Shell-Skripte gibt, muß man natürlich die Interpreter-
zeile (»#!/bin/sh«) anpassen. Es gibt noch zahlreiche an-
dere Maßnahmen, die man treffen könnte, aber es bringt
nichts, die jetzt wahllos aufzuzählen, ohne zu wissen, ob
das für Deinen Dienst überhaupt Sinn ergibt.

In /etc gibt es noch ein paar weitere Dinge, die man gerne
vergißt. Wichtig ist z.B. /etc/localtime, vor allem wenn
der Dienst Logeinträge produziert und Du möchtest, daß die
Zeiten stimmen. /etc/protocols und /etc/services sollten
auch nicht fehlen, und wenn Dein Jail nicht per 127.0.0.1
an einen Nameserver herankommt, dann brauchst Du in den
meisten Fällen auch eine geeignete resolv.conf und/oder
hosts.

Achja: ld-elf.so.1 nicht vergessen. ;-)

> Ich bin mir des Mehraufwandes bewusst, aber ich mag es eben angepasst

Ich gebe Dir da völlig recht; in vielen Fällen ist es den
Mehraufwand durchaus wert.

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
PI:
int f[9814],b,c=9814,g,i;long a=1e4,d,e,h;
main(){for(;b=c,c-=14;i=printf("%04d",e+d/a),e=d%a)
while(g=--b*2)d=h*b+a*(i?f[b]:a/5),h=d/--g,f[b]=d%g;}
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 28 Nov 2005 - 09:31:36 CET

search this site