Deaktivieren Sie su auf der Maschine

9

Gibt es eine Möglichkeit, su nur für bestimmte Benutzer zuzulassen (wie die Verwendung von visudo für sudo)?

Der Grund dafür ist, dass ich ein einfaches (schwaches) Passwort für mein Root-Konto behalten möchte und Konten habe, mit denen sich su / sudo nur mit einem Pub / privaten Schlüssel am Computer anmelden kann.

Dann könnten alle anderen Konten nicht als root oder als Konto su su.

verhogen
quelle

Antworten:

14

Ja, der 'Wheel'-Gruppentrick ist auch unter Linux verfügbar: Sie müssen nur pam dafür konfigurieren, und dann können nur Wheel-Mitglieder su ausführen.

Bei Debian müssen Sie die Radlinie von auskommentieren /etc/pam.d/su

Dies ist definitiv das erste, was auf einem Server zu tun ist, oder jeder Webserver / Hack kann zu einem Root-Hack führen.

Benoît
quelle
Bearbeiten Sie auf älteren oder Nicht-PAM-Systemen stattdessen /etc/login.defsund setzen Sie SU_WHEEL_ONLYauf yes.
James Sneeringer
6

Ein schwaches Passwort für root ist dumm, unabhängig von den Steuerelementen auf 'su'. Selbst wenn sich Benutzer 'root' nur an einer Konsole in einem eingeschränkten Maschinenraum anmelden kann, würde ich Benutzer 'root' nicht erlauben, ein schwaches Passwort zu haben.

Ich würde vorschlagen, 'su' vollständig zu deaktivieren und 'sudo' für alles zu verwenden. Mit Deaktivieren meine ich Folgendes:

  • Ausnutzung systemspezifischer Mittel zur Einschränkung des Zugriffs auf 'su' (z. B. der Gruppen-Rad-Trick für BSD oder das Linux-Äquivalent). Beachten Sie, dass es dafür keinen formalen Standard gibt. POSIX schreibt beispielsweise nicht das Vorhandensein von 'su' vor.
  • Entferne es ( rm -f /bin/su).
  • Entfernen Sie die Ausführungsberechtigungsbits ( chmod o-x /bin/suoder chmod go-x /bin/su).
  • Entfernen Sie das setuid-Berechtigungsbit ( chmod u-s /bin/su).

Das verbleibende Problem beim Deaktivieren von 'su' durch Entfernen oder Entfernen von Berechtigungsbits besteht darin, dass einige Systemskripte davon abhängen können, ob susie vorhanden sind. Es gibt keine besonders saubere Lösung dafür - aber es gibt im Allgemeinen nur wenige, da 'su' zur Eingabe eines Kennworts auffordert und Eingabeaufforderungen in Skriptumgebungen nicht beliebt sind. Das andere Mal, wenn 'su' verwendet wird, führt 'root' den Befehl aus, um ein anderer Benutzer zu werden. Dies wird durch Entfernen des Setuid-Bits unterstützt (Benutzer root kann es ausführen, aber niemand anderes kann dies sinnvoll tun). Sie können dies verstärken, indem Sie die öffentliche und möglicherweise auch die Gruppenausführungsberechtigung entfernen ( chmod u-s,go-rwx /bin/su).

Wenn Sie keines der systemspezifischen Mittel verwenden, seien Sie sehr vorsichtig. Testen Sie dies, bevor Sie es in Produktion nehmen.

Jonathan Leffler
quelle
4

Wenn Ihr System PAM verwendet, können Sie es suordnungsgemäß deaktivieren , indem Sie Folgendes eingeben /etc/pam.d/su:

# This allows root to su without passwords (normal operation)
auth sufficient pam_rootok.so

# Disable all other uses of su
auth requisite  pam_deny.so

# [rest of file]
Sam Morris
quelle
3

Unter FreeBSD dürfen nur Benutzer der Gruppe 'Rad' su.

Welches Betriebssystem verwenden Sie?

Volker Stolz
quelle
0

Sie können die /etc/sudoersDatei bearbeiten, um zu steuern, wer sie verwenden kann sudound was sie tun können. Wenn Sie Programme zulassen, die eine Shell erzeugen können (Shell-Escapezeichen), kann ein Benutzer alles tun.

Weitere Informationen finden Sie auf der manSeite sudoers.

Bis auf weiteres angehalten.
quelle
Die Frage war zu begrenzen, wer su laufen kann, nicht wer was mit sudo machen kann. su ist ein eigenständiger Befehl, den jeder Benutzer sofort ausführen kann, um root zu werden, ohne dass sudo in irgendeiner Weise verwendet werden muss.
Bart B
0

Zunächst einmal ist su und sudo ein völlig anderer Befehl.

Mit sudo können Sie einen einzelnen Befehl als Root ausführen (oder einen anderen Benutzer, falls angegeben), wobei das Verhalten von / etc / sudoers gesteuert wird .

su führt eine Shell als Root aus (oder einen anderen Benutzer, falls angegeben).

Was ich Ihnen empfehlen kann - hinterlassen Sie ein sicheres Root-Passwort und platzieren Sie alle Benutzer, die Root-Rechte benötigen, in / etc / sudoers (siehe diesen Artikel).

Die andere, weniger empfohlene Idee ist die Verwendung eines su-Wrapper-Skripts.

Andrejs Cainikovs
quelle
Ja, ich weiß, dass sie unterschiedlich sind. Da sudo diese Option hat, um anzugeben, welche Benutzer sudo können, warum nicht su?
verhogen
Wenn ich ein sicheres Root-Passwort hinterlasse, kann sich ein Benutzer immer noch an einen Sudoer wenden und von dort aus Dinge tun.
verhogen
Ich versuche zu sagen, dass Ihre Sudoer mit sudo Ihr Root-Passwort nicht kennen.
Andrejs Cainikovs
Ich kenne. Das Problem ist, wenn ein Nicht-Sudoer zu einem Sudoer wechselt (indem er das Passwort eines Sudoers kennt (nicht unbedingt root)).
verhogen
Nochmals ... Teilen Sie Ihr Root-Passwort niemandem mit und geben Sie es in / etc / sudoers ein, wen auch immer Sie benötigen (konfigurieren Sie sudo so, dass Sie nicht nach dem Root-Passwort für diese Personen fragen). Auf diese Weise geben Sie geeigneten Personen Root-Berechtigungen und anderen nichts.
Andrejs Cainikovs
0

Abhängig davon, welche Authentifizierung Ihr Computer verwendet, können Sie /etc/pam.d/su bearbeiten. Wenn Ihr System pam nicht verwendet, können Sie eine Datei / etc / suauth mit den Regeln für die Benutzer oder Gruppen erstellen, die Zugriff auf su haben als Wurzel.


quelle
0

Ich möchte nur wiederholen, was andere versucht haben zu sagen, was ich nicht ganz sicher bin, ob Sie es verstanden haben. Wenn Sie den Zugriff auf den Befehl su für alle Benutzer deaktivieren, kann kein Benutzer, selbst wenn er über eine eigene Kopie von su verfügt, zu einem anderen Benutzerkonto wechseln. Dies liegt daran, dass für den Befehl su das Root-Suid-Bit gesetzt sein muss, damit der Benutzer, der versucht, den Befehl auszuführen, seine UID ändern kann. Es wäre viel besser, ein sehr starkes Root-Passwort zu haben, den Befehl su für alle Benutzer zu deaktivieren und den Benutzern, für die Sie Root-Rechte haben möchten, Sudo-Zugriff zu gewähren.

Es hört sich so an, als hätten Sie Angst davor, dass Personen mit Sudo-Zugriff ihr Passwort mit anderen Benutzern teilen und ihnen auch Root-Zugriff gewähren. Dies ist wirklich ein Problem, das Sie nicht lösen können. Der privilegierte Benutzer kann ihn jederzeit an seinem Computer sitzen lassen, wenn Sie auch öffentliche / private Schlüssel eingerichtet haben. Es kommt darauf an, dass Sie einem Benutzer nur Administratorrechte erteilen können, wenn Sie diesem Benutzer vertrauen.

bknobbs
quelle
-1

Ja. chmod su auf 700 und fügen Sie alle Personen, die Sie verwenden möchten, in die Stammgruppe in / etc / group ein. Die Verwendung von sudo ist jedoch mit ziemlicher Sicherheit eine bessere Idee.

Cian
quelle
das ist eine Lösung; Aber können die Leute nicht hochladen, dass sie selbst su sind und das stattdessen verwenden? Ja, Sudo zu benutzen ist die Idee, aber was ist, wenn ein Nicht-Sudoer zu einem Sudoer kommt? Dann kann er alles tun.
verhogen
Nein, das können sie nicht (es sei denn, sie haben root. In diesem Fall sind alle Wetten sowieso geschlossen, da sie einfach eine Suid-Bash hochladen könnten). su muss suid sein, um zu arbeiten.
Cian