Re: ipfw und nfs

From: Oliver Fromme <olli(at)secnetix.de>
Date: Sun, 6 Apr 2003 13:18:33 +0200 (CEST)

Bernd Walter <ticso(at)cicely9.cicely.de> wrote:
> On Sat, Apr 05, 2003 at 11:51:03PM +0200, Oliver Fromme wrote:
> > Ja, der mountd benutzt halt beliebige freie Ports, die ihm
> > vom portmapper bzw. rpcbind zugeteilt werden.
>
> Korigiere mich, aber ist es nicht so, daß der RPC Service sich einen
> beliebigen Port beschaft und beim Portmapper nur registriert.

Ja, stimmt, hast recht. Aber das Ergebnis ist das gleiche.

> Beim lokalen Filtern kann man die Ports ja per ipfw auf uid 0
> von lokal limitieren.
> Wenn dann einer darauf zugreifen kann, dann ist er ereits root

oder hat ein setuid-root-Binary oder einen als root lau-
fenden Daemon gefunden, das/den er überreden konnte, einen
NFS-mount durchzuführen ... ;-)

(Nur so als Randnotiz: Erschreckenderweise läuft auf vie-
len Webservern der Apache als root, und natürlich ohne su-
exec [was ist das überhaupt?], und wenn ich mir die Quali-
tät von CGIs unter Sicherheitsaspekten so anschaue, die
viele »Coder« zo verzapfen ...)

> und
> der Angreifer wird am NFS kein Interesse mehr haben.

Von »kein Interesse haben« darf man eigentlich niemals aus-
gehen. Bei einem Angriff hat man selten sofort volle root-
Rechte, sondern es passiert in Stufen. Oft kann man erst-
mal nur ein ganz bestimmtes Kommando mit root-Rechten aus-
führen. Da hilft es dann ungemein, wenn man durch Nachläs-
sigkeit der Admins weitere Rechte hinzugewinnt. Die Mög-
lichkeit, an einen NFS-Mount heranzukommen, kann da genau
das entscheidende Detail sein. »Priviledge escalation«
nennt man das.

Es ist natürlich trotzdem richtig, daß man den lokalen Zu-
griff aufs NFS auf UID 0 einschränken sollte (was ohnehin
der Fall ist, wenn man dem mountd kein -n mitgibt). Man
sollte sich nur nicht darauf verlassen, daß das genügt.

> > Eine Alternative wäre, portmapper, mountd und nfsd selbst
> > in einem localhost-Jail laufen zu lassen, so daß sie nur
> > auf das loopback-Interface binden können. Du mußt sie dazu
> > nur in /etc/rc.conf disablen und dann z.B. in /etc/rc.local
> > starten:
> >
> > /usr/sbin/jail / localhost 127.0.0.1 /usr/sbin/portmap
> > /usr/sbin/jail / localhost 127.0.0.1 /sbin/mountd -r
> > /usr/sbin/jail / localhost 127.0.0.1 /sbin/nfsd -u -t -n 4
> >
> > Achtung, ich habe das nicht ausprobiert. Kann gut sein,
> > daß die Sache einen Haken hat und ein NFS-Server nicht aus
> > einem Jail heraus funktioniert.
>
> Ich denke nicht, daß das funktioniert.

Bei näherem Hindenken (ausgeschlafen und mit frischem Kaf-
fee) muß ich Dir recht geben.

Ich hatte angenommen, daß man zumindest den mountd in einem
Jail laufen lassen könne, da portmap und nfsd ja bereits
Optionen zum Binden an eine IP haben. Aber auch das klappt
nicht.

Der richtige Weg wäre natürlich, dem mountd ebenfalls so
eine Option zum Binden zu verpassen (wundert mich eh, daß
der noch keine hat). Und bei der Gelegenheit gleich die
-h Option vom portmap fixen, die sich nur auf UDP bezieht,
nicht aber auf TCP.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
Man had always assumed that he was more intelligent than dolphins
because he had achieved so much... the wheel, New York, wars, and so
on, whilst all the dolphins had ever done was muck about in the water
having a good time. But conversely the dolphins believed themselves
to be more intelligent than man for precisely the same reasons.
                -- Douglas Adams, "The Hitchhikers Guide To The Galaxy"
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 06 Apr 2003 - 13:20:01 CEST

search this site