Ich habe einen Headless-Server, bei dem mehrere Benutzer remote angemeldet sind. Keiner der anderen Benutzer befindet sich in der sudoers-Datei, sodass sie nicht über root zugreifen können sudo
. Da die Berechtigungen jedoch aktiviert su
sind -rwsr-xr-x
, hindert sie nichts daran, das root-Passwort brutal zu erzwingen.
Man könnte argumentieren, dass ein Benutzer, der das Root-Passwort kennt, das System trotzdem kompromittieren kann, aber ich glaube nicht, dass dies der Fall ist. OpenSSH ist mit PermitRootLogin no
und konfiguriert PasswordAuthentication no
, und keiner der anderen Benutzer hat physischen Zugriff auf den Server. Soweit ich das beurteilen kann, ist die Ausführungsberechtigung /usr/bin/su
für die Welt die einzige Möglichkeit für Benutzer, die versuchen, auf meinem Server root zu werden.
Was mich weiter rätselt, ist, dass es nicht einmal nützlich zu sein scheint. Es ermöglicht mir, su
direkt zu laufen, anstatt es zu tun sudo su
, aber das ist kaum eine Unannehmlichkeit.
Übersehen ich etwas? Ist die Welt su
nur aus historischen Gründen dazu in der Lage, die Erlaubnis auszuführen ? Gibt es Nachteile beim Entfernen dieser Erlaubnis, die ich noch nicht kennengelernt habe?
sudo
installierte? Ich würde sagen, es ist eine ziemlich große Unannehmlichkeit dort;)Antworten:
Ein Punkt, der in der Antwort von ilkkachu fehlt , ist, dass das Erhöhen zur Wurzel nur eine spezifische Verwendung ist
su
. Der allgemeine Zweck von su besteht darin, eine neue Shell unter dem Anmeldekonto eines anderen Benutzers zu öffnen. Dieser andere Benutzer könnte es seinroot
(und ist es vielleicht am häufigsten),su
kann jedoch verwendet werden, um eine Identität anzunehmen, die das lokale System authentifizieren kann.Wenn ich beispielsweise als Benutzer angemeldet bin
jim
und einmike
gemeldetes Problem untersuchen möchte , das ich jedoch nicht reproduzieren kann, kann ich versuchen, mich als einzuloggenmike
und den Befehl auszuführen, der ihm Probleme bereitet.Durch die Verwendung der
-l
Option vonsu
wird eine vollständige Anmeldung simuliert (proman
Seite).Das obige erfordert jedoch die Kenntnis des
mike
Passworts. Wenn ichsudo
Zugriff habe, kann ich michmike
auch ohne sein Passwort einloggen .Zusammenfassend ist der Grund, warum die Berechtigungen für die
su
ausführbare Datei wie von Ihnen angegeben sind,su
ein Allzweck-Tool , das allen Benutzern auf dem System zur Verfügung steht.quelle
sudo
ich vergessen, dasssu
für mehr als nur verwendet werden kannsudo -s
. Und ohne ein Sudoer zu sein, wäre dies die einzige Möglichkeit, Benutzer zu wechseln, ohne die SSH-Schlüssel zu ändern. Für meinen Anwendungsfall ist dies ein weiterer Grund, die Berechtigung zu entfernen, aber ich verstehe jetzt, warum die World Execute-Berechtigung standardmäßig festgelegt ist. Vielen Dank!sudo
auch verwendet werden kann, um die Identität eines anderen Benutzers als anzunehmenroot
. Dies ermöglicht einfach eine genauere Kontrolle darüber, wer was als wen tun kann, einschließlich der Annahme einer anderen Identität, ohne dass das Kennwort dieser Identität erforderlich ist.su
, dass es für "Superuser" steht, was es tut, wenn kein Benutzer angegeben ist (oder root explizit angegeben ist), aber es auch für "Benutzer wechseln" steht. Diese zweite Verwendungsu
wird daher leicht vergessen.Historisch gesehen (auf Nicht-GNU-Unices) wurde nicht oder zumindest manuell geprüft, ob Sie in einer Gruppe namens "wheel" erlaubt waren
su
. In der GNU-Version von wurdesu
diese Funktionalität aufgrund der damaligen RMS-Ideologie zur Zugriffskontrolle nicht reproduziert:Sie können viel mehr zu diesem Thema finden, indem Sie "Radgruppeneffektivwerte" oder ähnliches googeln.
quelle
Ja. Unter der Annahme Ihres gewöhnlichen Linux-Systems
pam_unix.so
verzögert das Modul einen fehlgeschlagenen Authentifizierungsversuch um ~ zwei Sekunden, aber ich glaube, es gibt nichts, was gleichzeitige Versuche verhindern könnte.Fehlgeschlagene Versuche werden natürlich protokolliert:
Das brachiale Erzwingen eines Kennworts sollte in den Protokollen deutlich sichtbar sein, wenn Sie über ein System zur Überwachung verfügen. Und wenn Sie lokalen Benutzern nicht vertraut haben, sollten Sie dies vielleicht tun. Nicht vertrauenswürdige lokale Benutzer könnten auch versuchen, nur lokale Exploits für die Eskalation von Berechtigungen zu verwenden, und sie sind weitaus häufiger als die Eskalation von Remote-Berechtigungen.
Natürlich ist es nützlich, es ermöglicht Ihnen, sich zu erheben
root
, wenn Sie das Passwort kennen.sudo su
ist etwas überflüssig. Es ist nicht erforderlich, zwei Programme zu verwenden, mit denen Sie Programme als ein anderer Benutzer ausführen können. Eines ist völlig ausreichend. Verwenden Sie einfachsudo -i
odersudo -s
(odersudo /bin/bash
usw.), wenn Sie die Shell ausführen möchten.Siehe oben. Nun, nicht alle Systeme haben
sudo
eine Alternative. Ich bin mir nicht sicher, ob Sie das für historisch halten.Nicht wirklich, nein soweit ich weiß. Ich denke, einige Systeme haben
su
so eingestellt, dass nur Mitglieder einer bestimmten Gruppe ("wheel
") es ausführen können. Sie können das Gleiche tun,sudo
wenn Sie möchten (chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo
).Sie können auch eines oder beide Programme entfernen, wenn Sie sie nicht benötigen. Obwohl Debian
su
mit demlogin
Paket geliefert wird, ist es wahrscheinlich keine gute Idee, das Paket als Ganzes zu entfernen. (Und so zu paarenlogin
undsu
zusammen zu sein, scheint etwas historisches zu sein.)quelle
wheel
Gruppe angehörensu
. Es gibt einige BSD-Systeme (ich kann nur für OpenBSD sprechen), die überhaupt nichtsudo
im Lieferumfang enthalten sind (es ist ein Paket von Drittanbietern). OpenBSD hatdoas
eine Neuimplementierung der Grundlagen vonsudo
, die jedoch nach der Installation eines neuen Systems standardmäßig deaktiviert wird.wheel
wenn du rooten willstsu
. Jeder Account kannsu
zu jedem Nicht-Root-Account gehören, für den er das Passwort besitzt, unabhängig von seiner Mitgliedschaft in derwheel
Gruppe.su
die Umgebung dann? Bei Debian scheint dies nicht derSie haben bereits einige gute Antworten, aber es gibt einen Teil Ihres Beitrags, den sie nicht ansprechen.
Das ist eine gefährliche Annahme. Wenn Sie ein gutes Passwort für root festgelegt haben, ist es in den meisten Fällen weitaus wahrscheinlicher, dass eine erfolgreiche Eskalation von Berechtigungen auf die Ausnutzung eines Fehlers im Kernel oder einer setuid-Binärdatei zurückzuführen ist (Sie können die setuid natürlich auch entfernen Bit von denen, aber
passwd
ist setuid, und wenn Sie eine hohe Sicherheit wollen bieten sollten Sie auch , dass Ihre Benutzer und sein Passwort ändern ihnen die Möglichkeit zu leugnen , ist nicht kompatibel mit , dass).quelle
su muss weltweit ausführbar sein, damit jeder es ausführen kann. In vielen Systemen kann es verwendet werden, um zu einem anderen Benutzer zu wechseln, indem dessen Kennwort eingegeben wird.
Wenn Sie befürchten, dass jemand das Root-Passwort erzwingt, können Sie es einfach deaktivieren. (Machen Sie den Hash ungültig, damit kein angegebenes Passwort mit ihm übereinstimmt.)
Ich weiß nichts über den Konsens, aber ich würde in Betracht ziehen, mich als Root direkt anzumelden, was an und für sich ein Sicherheitsproblem darstellt.
quelle
Die anderen Antworten sind korrekt und sagen "su" ermöglicht es Ihnen, sich bei anderen Konten als root anzumelden.
Ein Hinweis zu "sudo su". Auf diese Weise können Sie sich beim Root-Konto anmelden, ohne das Root-Passwort zu kennen. Sie müssen das Kennwort des Kontos kennen, mit dem Sie sudo ausführen, und dieses Konto muss sich in der sudoers-Datei befinden.
quelle
sudoers
hattargetpw
oderrootpw
setzt.su
, von allen ausführbar zu sein.