AA_stacheldraht_sxc_1098251.jpg

© sxc.hu

Rechte über File-Capabilities einschränken

Grenzen setzen

Zu viel Root tut nicht gut. Aus diesem Grund führten die Kernel-Entwickler mit Version 2.6.24 die Posix-File-Capabilities ein. Dieser Artikel erklärt, wozu diese gut sind.

Ich bin Root, ich darf das! So lautet einer der Lieblingssprüche von Linux-Nutzern auf T-Shirts, Kaffeetassen und anderen Fanartikeln. In der Tat verfügt Linux über ein relativ einfaches Rechtemanagement: Es gibt Root, den Benutzer und "die Anderen" sowie Rechte zum Lesen, Schreiben und Ausführen. Zugriffe kontrolliert das System über eine relativ einfache Matrix dieser Berechtigungen, und root darf immer alles.

Das Setuid-Bit

Es gibt allerdings Programme, die weitergehende Rechte benötigen, als sie einem durchschnittlichen Benutzer zustehen. Dazu zählen etwa der passwd-Befehl, der die Passwörter in der Datei /etc/shadow (oder /etc/passwd) ändert, oder der ping-Befehl, mit dem man die Netzwerkkarte eines anderen Rechners anspricht. Traditionellerweise verleiht der Systemadministrator solchen Tools über chmod u+s das Setuid-Bit. Das führt dazu, dass das Programm mit den Rechten des Benutzers arbeitet, dem die Datei gehört – normalerweise arbeiten Programme mit den Rechten des Ausführenden. Manche Programme kommen von Haus aus mit gesetztem S-Bit, je nach Distribution.

Die Wirkungsweise des S-Bits lässt sich an einem kleinen Beispiel leicht nachvollziehen. Geben Sie dazu in einem Terminal den Befehl su - Benutzername ein:

marcel@kim:~ $ su - marcel
Passwort:

Rufen Sie nun in einem zweiten Terminalfenster den Befehl ps -au | grep su auf, so sehen Sie, dass der su-Befehl vom Benutzer root ausgeführt wurde. Während es beim su-Befehl noch relativ offensichtlich erscheint, warum er spezielle oder gar Root-Rechte benötigt, sieht es zum Beispiel bei ping ganz anders aus. Eigentlich würde es genügen, dem Ping-Befehl den Zugriff auf die entsprechenden Netzwerk-Socket zu gewähren – das ist aber mit traditionellen Unix-Rechten nicht möglich. Abhilfe schaffen die Posix-File-Capabilities.

Rechte minimieren

Die Posix-File-Capabilities bilden einen Teil der allgemeinen Posix-Capabilities [1]. Sie teilen die möglichen Berechtigungen in verschiedene Rechtebereiche (Capabilities) auf, die zusammen die Rechte des Administrators Root ergeben. Zurzeit gibt es 33 solcher Rechtebereiche, die Tabelle "Posix-Capabilities" gibt einen kurzen Überblick. Während die grundlegenden Capabilities bereits seit Kernel 2.2 Bestandteil von Linux sind, beherrscht Linux die File-Capabilities erst seit Version 2.6.24. Detaillierte Informationen zu den einzelnen Fähigkeiten finden sich in der Datei /usr/include/linux/capability.h

Auch bei den Posix-Access-Control-Listen (ACLs), die eine feingliedrige Rechteverteilung auf Verzeichnisse und Dateien ermöglichen, handelt es sich im weiteren Sinn um Posix-Capabilities; sie werden als erweiterte Attribute im Dateisystem abgelegt. Für den Einsatz von Posix-ACLs und File-Capabilities muss das Dateisystem deshalb mit der Option user_xattr eingehängt sein.

Posix-Capabilities

Nummer Name Erklärung
0 CAP_CHOWN Eigentümer von Files beliebig setzen
1 CAP_DAC_OVERRIDE Sich über Dateizugriffsrechte hinwegsetzen (DAC, Discretionary Access Control), nur das Immutable-Flag ist davon nicht betroffen
2 CAP_DAC_READ_SEARCH In allen Files und Verzeichnissen lesen
3 CAP_FOWNER Auf alle Files die Funktionen ausüben, die üblicherweise nur deren Eigentümern gestattet sind (etwa chmod() und utime())
4 CAP_FSETID Set-UID-Flag auch für fremde Files setzen
5 CAP_KILL Beliebigen Prozessen Signale senden
6 CAP_SETGID Beliebige Gruppen-ID annehmen
7 CAP_SETUID Beliebige User-ID annehmen
8 CAP_SETPCAP Eigene Capabilities an fremde Prozesse übertragen oder dort entfernen
9 CAP_LINUX_IMMUTABLE Immutable- und Append-Only-Attribute ändern
10 CAP_NET_BIND_SERVICE Privilegierte Ports verwenden
11 CAP_NET_BROADCAST Broadcast-Nachrichten senden und empfangen
12 CAP_NET_ADMIN Sammlung vieler Netzwerk-Konfigurationen (Interface, Firewall, Routing, Sockets, Promiscuous Mode setzen u.a.m..)
13 CAP_NET_RAW Sockets vom Typ Raw (IPv4-Pakete) und Packet (Ethernet-Frames) verwenden
14 CAP_IPC_LOCK Shared-Memory-Segmente sperren
15 CAP_IPC_OWNER Nachrichten per IPC (Interprozesskommunikation) an beliebige Prozesse senden
16 CAP_SYS_MODULE Kernel-Module laden und entladen, den Kernel beliebig ändern sowie Capabilities-Bounding-Sets ändern
17 CAP_SYS_RAWIO Verwenden von ioperm() und iopl() sowie beliebige USB-Kommunikation
18 CAP_SYS_CHROOT chroot()-Kommando absetzen
19 CAP_SYS_PTRACE Beliebige Prozesse mit ptrace() überwachen und kontrollieren
20 CAP_SYS_PACCT Prozess-Accounting konfigurieren
21 CAP_SYS_ADMIN Viele administrative Aufgaben, etwa Domain- und Hostnamen ändern, Dateisysteme ein- und aushängen, Swapping ein/<0x200B>ausschalten, Semaphore löschen uvm.
22 CAP_SYS_BOOT Das System per reboot() neu starten
23 CAP_SYS_NICE Die Priorität per nice() hochsetzen, Realtime-Scheduling verwenden und die CPU-Affinität fremder Prozesse ändern
24 CAP_SYS_RESOURCE Ressourcenlimits überschreiten, etwa Quota, reservierter Filesystemraum, Größenbeschränkungen bei IPC-Nachrichten etc..
25 CAP_SYS_TIME Die Systemzeit stellen
26 CAP_SYS_TTY_CONFIG TTY-Geräte konfigurieren
27 CAP_MKNOD Alle Funktionen von mknod() beim Anlegen von Gerätedateien nutzen
28 CAP_LEASE Dateien leasen (siehe fcntl()-Leases)
29 CAP_AUDIT_WRITE Meldungen an das Audit-Subsystem senden
30 CAP_AUDIT_CONTROL Audit-Subsystem per auditctl() konfigurieren
31 CAP_SETFCAP Posix-Capabilities im Extended Attribute capability speichern, also File Posix-Capabilities setzen
32 CAP_MAC_OVERRIDE Erlaubt es, zwingende Zugriffskontrollen (Mandatory Access Control, MAC) des Linux-Sicherheitsmoduls (LSM) zu überschreiben
33 CAP_MAC_ADMIN Erlaubt administrativen Zugriff auf die zwingenden Zugriffskontrollen

Wie erwähnt verfügt ping unter den meisten Distributionen von Haus aus über das Setuid-Bit. Um einem normalen Nutzer den Ping-Befehl zu ermöglichen, könnte man entweder den Zugriff auf die Netzwerk-Geräte über die typischen Unix-Dateirechte freigeben oder über die File-Capabilities genau das Feature freischalten, das der Ping-Befehl benötigt – in diesem Fall CAP_NET_RAW. Danach lässt sich das Setuid-Bit ausschalten.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Zugangskontrolle
    Linux ist simpel: Alles ist eine Datei – und wer was damit tun darf, legt man einfach über die Dateiberechtigungen fest.
  • System abschotten mit AppArmor
    Hat ein Cracker einen fremden Rechner geknackt, mag er sich wie im Paradies fühlen. AppArmor trübt die Freude und sperrt den Bösewicht in einen virtuellen Käfig.
  • PCs mit Bochs emulieren
    Mit dem freien, portablen und kompakten x86-Emulator Bochs erwecken Sie alte Betriebssysteme zu neuem Leben.
  • Zu Befehl
    Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
  • Dr. Linux
    Komplizierte Organismen, wie Linux-Systeme es nun einmal sind, haben so ihre ganz eigenen Wehwehchen. Dr. Linux beobachtet die Patienten in den Linux-Newsgruppen, stellt an dieser Stelle Rezepte für aktuelle Probleme aus und alternative Heilmethoden vor.
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...