Re: User einsperren ohne jail

From: Bernd Walter <ticso(at)cicely7.cicely.de>
Date: Fri, 12 Feb 2010 13:57:56 +0100

On Fri, Feb 12, 2010 at 12:29:39PM +0100, Marc Santhoff wrote:
> Am Freitag, den 12.02.2010, 09:11 +0100 schrieb Polytropon:
> > On Fri, 12 Feb 2010 08:47:45 +0100, Marc Santhoff <M.Santhoff(at)web.de> wrote:
> > > Hmm, wo ich das so lese, könnte ichmir vorstellen $PATH auf $HOME/bin zu
> > > beschränken (System immer zusätzlich, /bin, /usr/bin, ...) und dort nur
> > > Links auf erlaubte Programme hinzulegen ... fragt sich, wo dann Lücken
> > > bleiben, die ein frecher User sich zunutze machen könnte.
> >
> > Ganz einfach: Was in $PATH steht, kann der jeweilige User
> > ja "normal" ohne Pfad aufrufen. Will er garstigerweise nun
> > aber dd aufrufen und ist in ~/bin kein Link auf /bin/dd
> > gesetzt, ruft er einfach "/bin/dd" explizit auf. Das
> > funktioniert aber eben nur, wenn er weiß, wo welches
> > Programm ist; "which" oder "whereis", ebenso wie "find"
> > scheiden ja aus, wenn sie nicht via $PATH erreichbar sind,
> > insofern kann man dem User die "Suchhilfe" wegnehmen.
>
> Stimmt, hatte ich nicht bedacht.
>
> > > Textmodus in Dialogshell, darf und soll aber X benutzen.
> >
> > Uh, da wirds schwierig, denn wer weiß schon, wer was in X
> > alles aufruft...
>
> Eben.
>
> > > D.h. für sh würde ich also in /etc/profile einfach nur
> > >
> > > .if $USER=der_user ; then
> > > chroot wohinerdarf
> > > .fi
> >
> > Hat der Benutzer denn sh (oder wenigstens bash) als
> > voreingestellte Shell? Sonst bleibt /etc/profile unbeachtet.
>
> sh, klappt aber alles nicht. In /etc/profile nicht, weil da bereits mit
> den Rechten des Benutzers ausgeführt wird.

Sowas macht man am einfachsten mit einer speziellen Shell, die
dann nach Rechteverzicht die richtige per exec nachzieht.

Jail ist sicherlich die einfachste Variante einzuschränken, ohne das
man ein speziell großes Risiko hat etwas zu übersehen.

Es gibt aber auch MAC.
Mit MAC kann man Prozessen alle möglichen Begrenzungen auferlegen, die
diese dann natürlich auch ihren Childs vererben.
Dazu gehört auch der Zugriff auf Verzeichnise, bestimmte IPs,
Netzwerkinterfaces, etc...
Vieles kann man auch per ID entziehen, MAC hat da eher den Vorteil,
dass man den User nicht pauschal eingrenzt, sondern nur bestimmte seiner
Prozesse.
So kann ein CGI z.B. unter der gleichen User-ID laufen, wie sein
Shellzugriff, aber mit anderen Einschränkungen.
MAC hat allerdings den Nachteil, dass man ein sauberes Konzept braucht,
sonst hat man schnell die Übersicht verloren und die Sicherheit ist
ohne Übersicht schnell wieder dahin.
Das schöne an MAC ist jedoch, dass es im Gegensatz zu Jails standardisiert
ist und auch auf anderen OS anzutreffen ist.

-- 
B.Walter <bernd@bwct.de> http://www.bwct.de
Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 12 Feb 2010 - 13:58:13 CET

search this site