Debugging Linux Capabilities

OP #7272151
Lesenswert?

Hallo,

ich möchte gerne herausfinden, welche Linux Capabilities 
(capabilitites(7)) bestimmte Programme benötigen. Bei vielen ergibt sich 
das bereits aus der detaillierten Kenntnis ihrer Funktion. Aber es wäre 
natürlich viel schöner, wenn man diese Capabilities irgendwie "abfragen" 
könnte oder wenigstens die Kernel-Logs befragen könnte...

Kennt hier jemand eine Möglichkeit, die von einem Programm benötigten 
Capabilities in Erfahrung zu bringen, und könnte dazu bitte ein wenig 
erzählen? Lieben Dank für sachdienliche Hinweise. ;-)
Gast #7272314
Lesenswert?

> Kennt hier jemand eine Möglichkeit, die von einem Programm benötigten
> Capabilities in Erfahrung zu bringen

Schau in die Doku des Programms.  Wenn da nichts steht, frag den 
Programmierer (aber nicht wundern, wenn du nur ein "braucht 
root/CAP_SYS_ADMIN[1]" als Antwort bekommst).  Ein Automatismus zum 
Erkennen der benötigten Capabilities (statische und/oder dynamische 
Analyse) funktioniert nur in trivialen Fällen korrekt.

MMn sind Capabilities ein typische Beispiel, wie man es nicht machen 
sollte: mehr Sicherheit durch hohe Komplexität und einem daraus 
folgenden administrativen Alptraum - ist mMn mehr Augenwischerei als 
tatsächlicher Sicherheitsgewinn.




[1] Grob die Hälfte (Tendenz steigend) aller Tests im Kernel benutzen 
CAP_SYS_ADMIN - es ist dadurch ziemlich gleichbedeutend mit "root". 
Soviel zu "fine grained control" ...
OP #7272694
Lesenswert?

Vielen lieben Dank für die Antworten, wenngleich das Erhoffte -- 
irgendwas, das ich aktivieren und dann irgendwo Ausgaben oder 
Logmeldungen wie etwa "process 4711 requested CAP_RÜBENNASE" abgreifen 
kann -- leider nicht dabei ist. Als bekennender Faulpelz finde ich das 
natürlich schade.

Firejail kannte ich übrigens noch gar nicht, sieht aber sehr interessant 
aus und ist vielleicht weniger aufwändig als meine bisherige Methode mit 
AppArmor-Profilen. Mal sehen, ich bin gespannt, lieben Dank für den 
Tipp!
Gast #7272787
Lesenswert?

> irgendwas, das ich aktivieren und dann irgendwo Ausgaben oder
> Logmeldungen wie etwa "process 4711 requested CAP_RÜBENNASE"
> abgreifen kann

Wenn du unbedingt eine dynamische Analyse (mit fragwürdigem Ergebnis) 
durchführen willst, schau mal nach "capable"[1], ein Werkzeug aus "BCC" 
(BPF Compiler Collection) - das logged Capabilitytests, die das Kernel 
macht.  Evtl musst du aber dein Kernel umkonfigurieren, damit die dafür 
benötigten Features drin sind.  Kann sein, dass in 
dprobes/kprobes/ktrace/LTT auch was dabei ist.  Sind aber alles 
verhältnismäßig komplexe Developertools.

Boilerplate: Benutze selbst keine Capabilities und hab die Tools nie 
eingesetzt.

[1] https://github.com/iovisor/bcc/blob/master/tools/capable.py
OP #7272926
Lesenswert?

foobar schrieb:
> Wenn du unbedingt eine dynamische Analyse (mit fragwürdigem Ergebnis)
> durchführen willst, schau mal nach "capable"[1], ein Werkzeug aus "BCC"
> (BPF Compiler Collection) - das logged Capabilitytests, die das Kernel
> macht.

Wow, das sieht sehr nach dem aus, was ich suche, vielen lieben Dank für 
diesen wunderbaren Tipp! In Debian und Ubuntu sind sogar schon fertige 
Pakete in den Repositories der Distributionen vorhanden (unter Ubuntu 
heißt das Programm "capable-bpfcc" aus dem Paket "bpfcc-tools"), dann 
werden wohl auch deren Kernels schon dafür konfiguriert sein. Ein erster 
schneller Test sieht auch schon sehr vielversprechend aus, yay! 
Dankeschön! ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren