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. ;-)
> 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" ...
Ein T. schrieb: > Kennt hier jemand eine Möglichkeit, die von einem Programm benötigten > Capabilities in Erfahrung zu bringen, Eventuell das Programm mit restriktiv eingestellten firejail Settings und firejail davor starten und dann schauen, wo das Programm meckert.
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!
> 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
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! ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.