© sxc.hu

Weitere ADMIN-Magazin Angebote

Rechte über File-Capabilities einschränken

Im Zaun halten

Caps für Fortgeschrittene

Die traditionellen Linux-Programme und -Dateien kennen die Rechte »r« ,»w« und »x« . Auch bei den File-Capabilities gibt es drei verschiedene Rechte, Flags genannt:

  • erlaubt ("permitted", »p« )
  • aktiv ("effective", »e« )
  • vererbbar ("inheritable", »i« )

Der Befehl »setcap cap_net_raw=ep « setzt somit für das Recht »cap_net_raw« die Flags "erlaubt" und "aktiv" (»=ep« ). Die einzelnen Rechte lassen sich zu so genannten Sets zusammensetzen, die Dokumentation dazu ist aber veraltet. Anstelle von Namen dürfen Sie dem »setcap« -Befehl auch Nummern als Parameter übergeben. Die Befehle »setcap cap_net_raw=ep« und »setcap 13=ep« bewirken somit das selbe.

Für die einschlägigen Programme »passwd« , und »ping« finden sich im Internet reichlich Beispiele, welche Fähigkeiten das Programm benötigt und welche nicht. Was tun jedoch, wenn man zum Beispiel das Sticky-Bit des »mount« -Befehls loswerden möchte? Eine Möglichkeit besteht darin, sich per »strace « die komplette Ausgabe des Programms anzuschauen und nach »EPERM« -Meldungen zu suchen:

$ strace ping kde.org | grep EPE↩
RM

Aus der Ausgabe der »EPERM« -Fehlermeldungen lässt sich dann mit etwas Kombinationsgabe die benötigte Capability aus der Datei »/usr/include/linux/capability.h« herausfinden. Dieser Weg ist allerdings alles andere als benutzerfreundlich.

Als praktische Lösung bietet sich ein Kernelmodul des IBM-Entwicklers Serge E. Hallyn an, das Chris Friedhoff auf seiner Seite in einen praktischen Tarball gepackt hat [4]. Einmal geladen, zeigt das Modul im Systemlog sämtliche Anforderungen an die Posix-Capabilities an.

Nach der Installation über »make« und »sudo make install« laden Sie das Modul über den Befehl »modprobe capable_probe« und schauen sich dann über »tail -f /var/log/messages« die Systemmeldungen an (Abbildung 1).

Abbildung 1: Für jede angeforderte Fähigkeit zeigt das Systemprotokoll die zugehörige Nummer an, der WPA-Supplicant verlangt zum Beispiel nach der Fähigkeit 12 (

Da das Kernelmodul sehr viele Meldungen in die Logdatei schreibt, sollten Sie nicht vergessen, das Modul über »modprobe -r capable_probe« wieder zu entladen, sobald es seinen Dienst erfüllt hat.

Vor- und Nachteile

Aktuell benutzt keine Distribution die Posix-File-Capabilities zur Rechteverwaltung. Das hat verschiedene Gründe: Zum einen haben sich viele Nutzer und Distributoren an die Root-Rechte und an das Setuid-Bit gewöhnt. Das Dutzend Anwendungen, die das Setuid-Bit benötigt, unterliegt in der Regel strengen Sicherheitskontrollen seitens der Distributoren, so dass es in der Vergangenheit hier kaum zu Sicherheitsproblemen kam.

Auf der anderen Seite gibt es auch Programme, die trotz entsprechender Capabilities überprüfen, ob sie mit Root-Rechten laufen oder nicht. Dazu kontrollieren sie einfach die Nutzer-ID des Ausführenden. So lässt sich zum Beispiel auch nach der Zuordnung sämtlicher File-Capabilities der Zeitserverdienst »ntpd« nicht als normaler Benutzer starten, da das Binary überprüft, ob der aufrufende Nutzer die UID Null besitzt (Abbildung 2).

Abbildung 2: Trotz voller Posix-File-Capabilities des

Die Posix-File-Capabilities unterteilen die Rechte auf nur 33 Fähigkeiten. Das hört sich zwar auf den ersten Blick nach ziemlich viel an, genügt aber in der Praxis kaum. So erlaubt zum Beispiel das Ping-Programm mit dem Capability-Recht »cap_net_raw« auch das anpingen der Broadcast-Adresse – ein Feature, das bei der Setuid-Bit-Version immer noch dem Benutzer Root vorbehalten ist.

Kommentare

Suche

ADMIN auf Twitter, Facebook, Xing

Auf Twitter folgen   

Unsere Partner:

hackerboard.deUnixboard