Warum ist su world ausführbar?

20

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 susind -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 nound 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/sufü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, sudirekt zu laufen, anstatt es zu tun sudo su, aber das ist kaum eine Unannehmlichkeit.

Übersehen ich etwas? Ist die Welt sunur 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?

Altay_H
quelle
9
"Es ermöglicht mir, su direkt auszuführen, anstatt sudo su ausführen zu müssen, aber das ist kaum eine Unannehmlichkeit." - Was ist mit Systemen ohne das optional sudoinstallierte? Ich würde sagen, es ist eine ziemlich große Unannehmlichkeit dort;)
März
1
Sie können den Zugriff für / bin / su jederzeit einschränken, denken Sie jedoch daran, dies auch für / usr / bin / pkexec zu tun.
jpa
6
Ich kann die Motivation hinter dieser Frage nicht verstehen. Es hört sich so an, als ob Sie sich gefragt haben, warum su weltweit ausführbar sein muss, aber worum geht es bei der Alternative? Das heißt, wenn su nur von root (?) Ausführbar wäre, wofür könnte es verwendet werden?
David Z
1
@ DavidZ In der Tat ist es in der Tat nützlich für root! Sie können damit schnell den Benutzer wechseln.
Val sagt Reinstate Monica
1
@val Ja, das stimmt. Die Tatsache, dass root su verwenden kann, steht hier nicht in Frage. (Beim erneuten Lesen kann ich sehen, wie mein vorheriger Kommentar etwas anderes vorschlagen würde, aber das habe ich nicht gemeint.) Ich bin gespannt, was Altay_H darüber gedacht hat, bevor sie diese Frage gestellt haben.
David Z

Antworten:

39

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 sein root(und ist es vielleicht am häufigsten), sukann jedoch verwendet werden, um eine Identität anzunehmen, die das lokale System authentifizieren kann.

Wenn ich beispielsweise als Benutzer angemeldet bin jimund ein mikegemeldetes Problem untersuchen möchte , das ich jedoch nicht reproduzieren kann, kann ich versuchen, mich als einzuloggen mikeund den Befehl auszuführen, der ihm Probleme bereitet.

13:27:20 /home/jim> su -l mike
Password:(I type mike's password (or have him type it) and press Enter)
13:27:22 /home/mike> id
uid=1004(mike) gid=1004(mike) groups=1004(mike)
13:27:25 /home/mike> exit  # this leaves mike's login shell and returns to jim's
13:27:29 /home/jim> id
uid=1001(jim) gid=1001(jim) groups=1001(jim),0(wheel),5(operator),14(ftp),920(vboxusers)

Durch die Verwendung der -lOption von suwird eine vollständige Anmeldung simuliert (pro manSeite).

Das obige erfordert jedoch die Kenntnis des mikePassworts. Wenn ich sudoZugriff habe, kann ich mich mikeauch ohne sein Passwort einloggen .

13:27:37 /home/jim> sudo su -l mike
Password:(I type my own password, because this is sudo asking)
13:27:41 /home/mike>

Zusammenfassend ist der Grund, warum die Berechtigungen für die suausführbare Datei wie von Ihnen angegeben sind, suein Allzweck-Tool , das allen Benutzern auf dem System zur Verfügung steht.

Jim L.
quelle
1
Das macht sehr viel Sinn. Da ich die Gewohnheit habe zu verwenden, habe sudoich vergessen, dass sufür mehr als nur verwendet werden kann sudo -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!
Altay_H
1
Ein weiterer Punkt ist, dass sudoauch verwendet werden kann, um die Identität eines anderen Benutzers als anzunehmen root. 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.
Chepner
Ein Teil der Verwirrung ist, dass die Leute denken 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 Verwendung suwird daher leicht vergessen.
Monty Harder
20

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 wurde sudiese Funktionalität aufgrund der damaligen RMS-Ideologie zur Zugriffskontrolle nicht reproduziert:

Why GNU `su' does not support the `wheel' group
===============================================

   (This section is by Richard Stallman.)

   Sometimes a few of the users try to hold total power over all the
rest.  For example, in 1984, a few users at the MIT AI lab decided to
seize power by changing the operator password on the Twenex system and
keeping it secret from everyone else.  (I was able to thwart this coup
and give power back to the users by patching the kernel, but I wouldn't
know how to do that in Unix.)

   However, occasionally the rulers do tell someone.  Under the usual
`su' mechanism, once someone learns the root password who sympathizes
with the ordinary users, he or she can tell the rest.  The "wheel
group" feature would make this impossible, and thus cement the power of
the rulers.

   I'm on the side of the masses, not that of the rulers.  If you are
used to supporting the bosses and sysadmins in whatever they do, you
might find this idea strange at first.

Sie können viel mehr zu diesem Thema finden, indem Sie "Radgruppeneffektivwerte" oder ähnliches googeln.

R ..
quelle
3
Dies ist die einzig richtige Antwort. Die Einstellung ist beabsichtigt, historisch und genau das ist der Grund dafür. All das technische Blabla ist genau das - Blabla. Sie können die Gruppe "wheel" in einem modernen Unix absolut wieder einführen.
Tom
10

Da die Berechtigungen jedoch aktiviert susind -rwsr-xr-x, hindert sie nichts daran, das root-Passwort brutal zu erzwingen.

Ja. Unter der Annahme Ihres gewöhnlichen Linux-Systems pam_unix.soverzö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:

Aug 16 22:52:33 somehost su[17387]: FAILED su for root by ilkkachu

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.

Was mich weiter rätselt, ist, dass es nicht einmal nützlich zu sein scheint.

Natürlich ist es nützlich, es ermöglicht Ihnen, sich zu erheben root, wenn Sie das Passwort kennen.

Es ermöglicht mir, sudirekt zu laufen, anstatt es zu tun sudo su, aber das ist kaum eine Unannehmlichkeit.

sudo suist 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 einfach sudo -ioder sudo -s(oder sudo /bin/bashusw.), wenn Sie die Shell ausführen möchten.

Übersehen ich etwas? Ist die Welt nur aus historischen Gründen dazu in der Lage, die Erlaubnis für su auszuführen?

Siehe oben. Nun, nicht alle Systeme haben sudoeine Alternative. Ich bin mir nicht sicher, ob Sie das für historisch halten.

Gibt es irgendwelche Nachteile beim Entfernen dieser Erlaubnis, die ich noch nicht kennengelernt habe?

Nicht wirklich, nein soweit ich weiß. Ich denke, einige Systeme haben suso eingestellt, dass nur Mitglieder einer bestimmten Gruppe (" wheel") es ausführen können. Sie können das Gleiche tun, sudowenn 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 sumit dem loginPaket geliefert wird, ist es wahrscheinlich keine gute Idee, das Paket als Ganzes zu entfernen. (Und so zu paaren loginund suzusammen zu sein, scheint etwas historisches zu sein.)

ilkkachu
quelle
1
BSD-Systeme setzen voraus, dass Benutzer der wheelGruppe angehören su. Es gibt einige BSD-Systeme (ich kann nur für OpenBSD sprechen), die überhaupt nicht sudoim Lieferumfang enthalten sind (es ist ein Paket von Drittanbietern). OpenBSD hat doaseine Neuimplementierung der Grundlagen von sudo, die jedoch nach der Installation eines neuen Systems standardmäßig deaktiviert wird.
Kusalananda
@Kusalananda Du musst nur dabei sein, wheelwenn du rooten willst su. Jeder Account kann suzu jedem Nicht-Root-Account gehören, für den er das Passwort besitzt, unabhängig von seiner Mitgliedschaft in der wheelGruppe.
Jim L.
Ich führe 'sudo su -' aus, um sicherzustellen, dass es sich bei der erhaltenen Root-Shell um eine vollständige Root-Anmeldung handelt, ohne dass mein Benutzerkonto die Umgebung verschmutzt. Die Standard-Sudoer von RHEL enthalten einige ausführbare Umgebungsvariablen (wie PS1).
Jsbillings
@jsbillings, hmm, ok. Klärt sudie Umgebung dann? Bei Debian scheint dies nicht der
Fall zu sein
"Su -" funktioniert unter jedem mir bekannten Linux. Pass auf den Gedankenstrich auf.
Jsbillings
7

Sie haben bereits einige gute Antworten, aber es gibt einen Teil Ihres Beitrags, den sie nicht ansprechen.

Soweit ich das beurteilen kann, ist die weltweite Ausführungserlaubnis für / usr / bin / su die einzige Möglichkeit für Benutzer, die versuchen, auf meinem Server root zu werden.

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 passwdist 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).

Henrik - hör auf, Monica zu verletzen
quelle
1

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.

Bobbrenner
quelle
-2

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.

WindowsNT
quelle
3
Das kommt ganz darauf an, ob man sudoershat targetpwoder rootpwsetzt.
muru
1
Dies hat nichts damit zu tun su, von allen ausführbar zu sein.
Kusalananda