Wenn Sie unter GNU / Linux arbeiten und Lust auf etwas "Neues" haben, pam_cap.so
können bestimmte Benutzer bestimmte Benutzer dazu bringen, CAP_SYS_TIME
die Systemzeit ohne sudo
oder zu ändern su
. Sie konfigurieren es einfach als Sitzungsmodul für die Authentifizierung ( ssh
oder login
was auch immer), fügen den Benutzer / die Funktionen hinzu, die Sie /etc/security/capabilities.conf
dann ausführen möchten, setcap CAP_SYS_TIME+ei /bin/date
und schon kann es losgehen. pam_cap kann jedoch noch keine Gruppen erstellen, sodass Sie für jeden Benutzer, den Sie ausführen möchten, kopieren / einfügen müssen.
Wenn Sie möchten, dass alle Systembenutzer die Systemzeit ändern können, können Sie alle pam_cap-Inhalte vergessen und einfach eine Aktion ausführen, setcap CAP_SYS_TIME+ep /bin/date
die im Wesentlichen das Analogon von Capabilities zum Hinzufügen des Setuid-Bits zu einer Binärdatei ist (ähnlich können Sie dies nicht tun Skripte und wenn Sie in die ausführbaren Dateien schreiben, werden Fähigkeitsflags und setuid / setgid-Bits vom Kernel gelöscht.
date
Es ist ziemlich sicher, sudo zu durchlaufen (es gibt nicht viele Möglichkeiten, wie Sie versuchen können, ein so einfaches Dienstprogramm auszunutzen, außer durch Ersetzen nach rechts, aber der Angreifer müsste einen Weg finden, in Verzeichnisse zu schreiben, für die nur root Schreibberechtigungen hat) -able, aber die Funktionen lassen die Gewährung von Berechtigungen für Endbenutzer nahtloser erscheinen (sie müssen nicht denken "Oh, ich muss darüber nachdenken", sie tun einfach das, was sie versuchen, und es funktioniert) und sind eingeschränkt (Sie erhalten nur einen bestimmten Satz erhöhter Berechtigungen). sudo ist ein Nur-Setuid-Mechanismus (zumindest vorerst) und kann nur in Bezug auf diese oder jene ausführbare Datei denken, und was auch immer diese Datei tut (ob Binär oder Skript, das Sie geschrieben haben), es kann dies mit vollen Root-Rechten tun.
setuid ist ein alter alter alter Mechanismus , dass es im Grunde auf dem Weg aus auf den meist GNU / Linux und Unix - Implementierungen. Der vollständige Root-Zugriff ist für die Vögel. Warum CAP_SYS_ADMIN oder CAP_NET_ADMIN geben, wenn Sie nur versuchen, die Benutzer die Systemzeit ändern zu lassen? Sicher, ich kann mir keine Möglichkeit vorstellen /bin/date
, etwas Böses auszunutzen , aber die meisten Exploits sind nicht intuitiv, bis sie entdeckt und demonstriert werden (hoffentlich enthält die Software keine offensichtlichen Exploits, meine ich).
Wenn Sie mit * BSD oder Solaris arbeiten, haben sie das gleiche Konzept, das sie nur "Berechtigungen" anstelle von "Funktionen" nennen, da "Funktionen" auf diesen Plattformen bereits der Name eines sicherheitsrelevanten Mechanismus war (ungefähr analog zu LxC) und / oder SELinux, fwiw). Die Implementierungsdetails unterscheiden sich zwischen Berechtigungen und Linux-Funktionen, aber das Basiskonzept ist dasselbe (so implementiert Solaris 11 auch das Sicherheitsmodell "Root as Role").
man sudoers
: "Die Grundstruktur einer Benutzerspezifikation ist" who where = (as_whom) what ""