Ich lese eine Ubuntu 14-Härtungsanleitung und dies ist einer der Vorschläge:
Es scheint im Allgemeinen eine vernünftige Idee zu sein, sicherzustellen, dass nur Benutzer in der sudo-Gruppe den Befehl su ausführen können, um als root zu fungieren (oder zu root zu werden):
dpkg-statoverride --update --add root sudo 4750 / bin / su
Ich habe den dpkg-statoverride
Befehl nachgeschlagen, kann aber immer noch nicht genau herausfinden, was der obige Befehl tut.
Es scheint zu implizieren, dass Ubuntu 14 standardmäßig jedem erlaubt, zu sudo. Zum Testen habe ich einen neuen Benutzer erstellt, mich als dieser Benutzer angemeldet, versucht zu sudo und es ist fehlgeschlagen - was gut ist.
Was ist der Zweck des obigen Vorschlags?
Antworten:
Der Zweck besteht darin, zu verhindern, dass normale Benutzer den Befehl su ausführen (su ähnelt sudo, mit dem Unterschied, dass sudo einen Befehl ausführt. Su startet eine neue Sitzung als neuer Benutzer, die so lange dauert, bis dieser Benutzer exit ausführt.)
Der Standardmodus von su ist 4755 oder rwsr-xr-x. Das "s" bedeutet, dass der Befehl set-UID ist (was bedeutet, dass er immer als der Benutzer ausgeführt wird, dem er gehört, und nicht als der Benutzer, der ihn gerade ausführt. In diesem Fall gehört su root und wird daher immer mit Root-Rechten ausgeführt.
su verfügt über eigene Sicherheitsmaßnahmen, um sicherzustellen, dass der Benutzer, der es ausführt, die Berechtigung hat, ein anderer Benutzer zu werden (normalerweise indem er nach dem Kennwort des anderen Benutzers fragt). Es ist jedoch denkbar, dass in su eine Sicherheitslücke besteht, die einen Angreifer zulässt es irgendwie davon zu überzeugen, etwas anderes ohne Autorität zu tun.
Durch Ändern des Modus auf 4750 wird verhindert, dass normale Benutzer (andere Benutzer als root und Benutzer der sudo-Gruppe) ihn überhaupt lesen oder ausführen, sodass ein Angreifer entweder den Besitz dieser Datei ändern oder ändern muss den Modus der Datei oder ändern Sie ihre eigene effektive UID / GID, bevor sie überhaupt versuchen könnten, diese theoretische Sicherheitsanfälligkeit in su auszunutzen.
Der Befehl dpkg-statoverride ist in diesem Fall nützlich, da er den Paketmanager anweist, diese Besitz- / Moduswerte für diese Datei zu verwenden, selbst wenn sie durch eine neuere Version ersetzt wird (dh über ein apt-Upgrade). Mit anderen Worten, es macht es dauerhafter als nur ein Chown und ein Chmod.
Hier ist eine allgemeine Taktik, die ich für diese Instanz empfehle: Immer wenn ich die Konfiguration von su / sudo oder einer Authentifizierungskomponente auf einem Linux / UNIX-Computer optimiere, öffne ich eine weitere ssh / putty-Sitzung auf diesem Server und melde mich als an den Root-Benutzer, und lassen Sie diese Sitzung einfach in einem anderen Fenster geöffnet. Auf diese Weise habe ich bereits eine Anmeldesitzung, in der ich alles reparieren kann, was ich kaputt gemacht habe, wenn ich etwas vermassle und mich aussperre.
quelle
Abhängig von Ihren Benutzern kann dies eine gute oder schlechte Idee sein.
Der
su
Befehl kann von normalen Benutzern verwendet werden, um sich bei jedem anderen Konto anzumelden, nicht nur beim Superuser, sofern sie das Kennwort des Kontos kennen.Dies ist z. B. nützlich, wenn zwei Benutzer an einem Projekt zusammenarbeiten, einer von ihnen (BenutzerA) angemeldet ist und eine Datei lesen muss, auf die nur der andere Benutzer (BenutzerB) zugreifen kann. Einfach laufen
kann verwendet werden, um die Datei in das Ausgangsverzeichnis des angemeldeten Benutzers zu kopieren. Dies ist jedoch nur möglich, wenn Benutzer A den
su
Befehl ausführen darf .Auf PostgreSQL-Datenbankservern können Datenbankadministratoren normalerweise zum
postgres
Benutzer wechseln, um einige Wartungsaufgaben auszuführen, die nicht möglich sind, während der Datenbankserver aktiv ist. Damit dies funktioniert, müssen sie laufen könnensu - postgres
.Die gleichen Überlegungen gelten für den
sudo
Befehl (der anders und weitaus komplexer ist alssu
- es ist nur die Standardkonfiguration, die den Befehl in erster Linie für diesudoers
Gruppe nützlich macht , da diese Gruppe jeden Befehl wie folgt ausführen darfroot
. Wenn Sie jedoch hinzufügen Bei benutzerdefinierten Regeln, z. B. wenn ein Benutzerupdatedb
ohne Argumentesudoers
ausgeführt werden darf, benötigen Benutzer außerhalb der Gruppe die Ausführungsberechtigung fürsudo
.Auch gibt es nicht nur
su
das Setuid - es gibt auchsg
(Ermöglicht den vorübergehenden Beitritt zu einer Gruppe, wenn ein Gruppenkennwort festgelegt ist.)passwd
(ermöglicht das Ändern des Passworts)chfn
(ermöglicht das Ändern von Benutzerinformationen)chsh
(Ermöglicht das Ändern der Standard-Shell)und mehrere andere. Diese Tools teilen viel Code mit dem
su
Befehl, so dass das Ändern des Modus von/bin/su
allein Ihnen nicht viel kostet, und das Ändern des Modus von allen wird Ihre Benutzer sicherlich ärgern, insbesondere im Fall vonpasswd
.quelle
Auf einem gehärteten Server möchten Sie so wenige setuid / setgid-Binärdateien wie möglich, insbesondere solche, die von einem Benutzerkonto ausgeführt werden können, das das jeweilige Tool nicht benötigt - aus einem einfachen Grund:
Sie vertrauen diesen Tools nicht unbedingt, um zu überwachen, was jemand mit ihnen macht. Fehler in solchen Programmen oder deren Abhängigkeiten, die es Benutzern ermöglichten, eine solche Überwachung zu umgehen, werden häufig gefunden und von Sicherheitsforschern und Angreifern aktiv gesucht. Eine Fehlkonfiguration (das Verhalten von su hängt von der Konfiguration der PAM-Bibliothek ab) kann das gleiche Problem verursachen. Daher ist jede setuid / setgid-Binärdatei, die ein bestimmtes Konto (Dienst oder Benutzer) ausführen kann, ein potenzieller Vektor, um unerwünschten Root-Zugriff zu erhalten.
Während bekannte Probleme in solcher Software normalerweise dazu führen, dass Patches / Updates schnell verfügbar sind, kann die schnelle Installation zu Störungen führen - und einige Lücken sind möglicherweise nicht jedem bekannt, einschließlich dem Hersteller.
Um die Wahrscheinlichkeit zu minimieren, dass ein dringendes Problem gelöst werden kann, ist es sinnvoll, etwas wie /programming/2189976/find-suid-and-gid-files-under-root zu tun und dann zu untersuchen, welches dieser Probleme vorliegt kann beseitigt werden (die meisten davon, wenn Sie einen speziell entwickelten Server ausführen und wissen, was Sie tun), vorzugsweise mithilfe von Methoden wie dpkg-statoverride, die Ihre Paketverwaltungssysteme unterstützen, um solche Änderungen dauerhaft zu erhalten.
Es gibt noch einen weiteren Grund, den Zugriff auf "su" in bestimmten Setups mit NFS der alten Schule einzuschränken. Sie können aus im Wesentlichen politischen Gründen die Verwendung des Root-Kontos (das einige Benutzer möglicherweise aus politischen Gründen erhalten. Trotzdem schlechte Praxis) einschränken su trivial, da es das root_squash-Flag eines NFS-Mount umgeht.
quelle