Sollten wir den Root-Benutzer deaktivieren?

21

Sollten wir das root-Passwort entfernen, die Remote-Anmeldung deaktivieren und Administratoren grundsätzlich auffordern, sudo zu verwenden, um administrative Aktionen auszuführen?

Alt-Text

Jldugger
quelle

Antworten:

16

Bei allen meinen Servern ist das Root-Konto deaktiviert ( sp_pwdpauf *). Dies ist sudofür jeden Root-Zugriff erforderlich . [1] Ziel ist es, dass alle Superuser-Aktivitäten überprüft werden, damit die Benutzer sehen können, was mit dem System geschehen ist.

Für eine härtere Option können Sie sudoin eine Protokolldatei schreiben (im Gegensatz zu syslog) und die Datei nur anhängen (unter chattrLinux oder chflagsBSD). Auf diese Weise kann niemand das Audit nachträglich bearbeiten.

[1] Ich habe auch die Richtlinie, keine Root-Shell auszuführen oder Shell-Fluchten aus einem Root-Prozess auszuführen. (Es ist jedoch in Ordnung, sudo sh -c '...'Pipelines oder Umleitungen auszuführen.)

Chris Jester-Young
quelle
3
"Auch keine Muscheln!" Wissen Sie, wie viele Programme einen "drop to shell" -Befehl enthalten? Noch bevor Sie sich mit Shell Job Control beschäftigen ...
womble
Ich spreche von "no shell" als Richtlinie, nicht als Sudo-Option. (sudo hat eine noexec-Option, aber das ist natürlich nicht wasserdicht, es sei denn, Sie beschränken die spezifischen Programme, die ein Benutzer ausführen kann.)
Chris Jester-Young
Ist es möglich, sudo so zu konfigurieren, dass "sudo -s" nicht verwendet werden kann? Ich habe nur Sudoer verwendet, um einzelne Befehle zu konfigurieren.
@ Abraham: Sie können. Wie Sie jedoch aus den obigen Kommentaren ersehen können, stoppt dies nichts, wenn Ihre Benutzer anderweitig etwas ausführen können. Die einzige wasserdichte Lösung ist ein Whitelist-Ansatz, bei dem Sie bestimmte Programme auflisten, die Benutzer ausführen können, und die alle dynamisch verknüpft sein müssen (damit die Option "noexec" ihre Sache tun kann).
Chris Jester-Young
Als Richtlinie, in der Sie den Administratoren vertrauen, ist dies gut. Sie können sehen, welche Befehle die Benutzer ausführen, was beim Ermitteln der Änderungen sehr hilfreich sein kann.
Hamish Downer
15

Ich empfehle nachdrücklich , den Root-Benutzer nicht zu deaktivieren. Deaktivieren oder beschränken Sie Root-Anmeldungen (über securetty und über sshd_config sowie über PAM und über what have you). Wenn Ihr System dies zulässt, begrenzen Sie die Root-Berechtigungen oder teilen Sie die Root-Rolle auf (ähnlich wie bei RSBAC ). Aber bitte, bitte , tun Sie es Deaktivieren Sie das Root-Konto nicht, indem Sie das Kennwort entfernen. Andernfalls ist es nicht möglich, sich über im System anzumelden sulogin. suloginwird von allen mir bekannten Initskripten verwendet, wenn von fsck schwerwiegende Fehler gemeldet werden - und das bedeutet, dass Sie vom System ausgeschlossen werden, wenn das Root-Dateisystem beschädigt wird.

Zur Verdeutlichung: Mit "Deaktivieren des Root-Kontos durch Entfernen des Passworts" meine ich die verschiedenen Mechanismen, die mit einem! oder ein * im Passwortfeld von / etc / shadow oder ähnlichem. Ich meine nicht "Ändern Sie den Root-Anmeldemechanismus, damit Sie nicht zur Eingabe eines Kennworts aufgefordert werden."

Mihai Limbăşan
quelle
Ist dies ein Problem in Systemen wie Ubuntu, die niemals ein root-Passwort vergeben? Ich scheine in der Lage zu sein, "sudo sulogin" auszuführen, aber vielleicht verstehe ich einen kritischen Aspekt nicht.
Jldugger
Leider bin ich nicht mit der Art und Weise vertraut, wie Ubuntu mit root umgeht. Aber wenn Sie in der Lage sind, "sudo sulogin" auszuführen und eine Root-Shell abzurufen, ohne zur Eingabe eines Root-Passworts aufgefordert zu werden, ist dies kein Problem, da möglicherweise derselbe Mechanismus beim Booten angewendet wird. Sie können versuchen, in den Initskripten nach Sulogin zu suchen, um zu überprüfen, wann und wie es aufgerufen wird.
Mihai Limbăşan
1
Ubuntu verwendet kein Sulogin. Wenn Sie in den Einzelbenutzermodus wechseln, erhalten Sie sofort eine Root-Shell. Lesen Sie jedoch meinen Kommentar (in meinem Beitrag), um zu sehen, warum dies in den meisten Fällen kein Problem ist.
Chris Jester-Young
Außerdem gibt es Behauptungen, dass das Vorhandensein von suoder sudoin Ihrem System für Benutzer mehr Sicherheitsrisiken bedeutet, die Sie vermeiden können, wenn Sie nur dedizierte Root-Benutzer haben. Dies ist eine Position, die von den Autoren der sicheren Distribution von Owl (und von Solar-Designern darunter) vertreten wird - unix.stackexchange.com/questions/8581/… versucht, ihre Position mit Referenzen zu präsentieren.
imz - Ivan Zakharyaschev
Ich hatte gerade dieses Problem: Ich habe meinen Root-Benutzer gesperrt und ein fsck wurde aufgrund eines Hard-Reset erzwungen. Zum Glück konnte ich mein fehlerhaftes Linux mit der fastbootOption booten , das Root-Konto entsperren und neu starten, um es schließlich fsckmanuell auszuführen .
Tommy
3

Ich habe das Root-Konto auf allen meinen Servern aktiviert. Alle Administratoren haben einen eigenen Benutzer und müssen sich über diesen anmelden. Von dort wechseln sie zu root. (root ssh ist deaktiviert)

Halten Sie die Administratoranzahl niedrig. Nur die Personen, die auf diesem Server wirklich root-Zugriff benötigen, haben das Passwort.

Ich bin kein Fan von Sudo. Es ist viel zu einfach, einfach 'sudo bash' für eine Root-Shell zu machen. Mir ist bewusst, dass dies deaktiviert werden kann, aber warum sollte ich mich darum kümmern? Begrenzen Sie einfach die Benutzer, die Administratoraufgaben ausführen und miteinander sprechen können. Wir haben die Richtlinie, Root-Terminals nicht unbeaufsichtigt zu öffnen. Es geht also darum, sich einzuloggen, die Arbeit zu erledigen und sich abzumelden.

Hinweis: Ich arbeite in einer relativ kleinen Firma (50 Angestellte) und wir kommen mit nur 2 Teilzeitadministratoren (1 Windows / 1 Linux) zurecht. Diese Vorgehensweise ist möglicherweise nicht die beste, wenn Sie mehrere Benutzer haben. Ich persönlich würde sudo immer noch nicht verwenden. Es gibt andere Möglichkeiten, die Root-Aktivität zu protokollieren.

Gert M
quelle
Wenn Sie die Root-Shell von einer Konsole aus verwenden möchten, können Sie einfach 'sudo -i' ausführen, anstatt sie über sudo bash zu öffnen. Persönlich mag ich die Idee, mich als Root-Benutzer direkt anzumelden, nicht wirklich, da dies zu riskant für böswilliges Gehen ist (dh versehentlich den Computer mit geöffneter Root-Shell entsperrt zu lassen).
Spoike
Sie verlieren jedoch die Protokollierung / Überwachung. Lassen Sie alle Benutzer sudo verwenden, und verbieten Sie den Benutzern, sudo bash oder sudo -i oder sudo -s mit Unternehmensrichtlinien auszuführen. Auf diese Weise erhalten Sie einen Audit-Trail. Wenn Sie alle Ihre Protokolle auf einen zentralen Loghost übertragen, können Sie leicht überprüfen, ob die Benutzer die Richtlinien befolgen.
Christopher Cashell
Dies ist der Ansatz, den die Autoren der Owl Secure-Distribution (und darunter auch der Solar-Designer) vertreten und befürworten - unix.stackexchange.com/questions/8581/… versucht, ihre Position mit Referenzen zu präsentieren.
imz - Ivan Zakharyaschev
2

Das Deaktivieren des root-Passworts ist imho eine falsche "gute Idee". An dem Tag, an dem du es brauchst, wirst du es wirklich brauchen. (Abhängig von Ihrer Konfiguration benötigen Sie diese möglicherweise, um sich beispielsweise im Einzelbenutzermodus anzumelden.)

Das Deaktivieren der Remote-Anmeldung als Root ist möglicherweise relevant, aber nur, wenn Sie sich lokal anmelden können.

Und ja, sudo sollte auf jedem Ihrer Server installiert sein. Es ist nützlich und einfach zu konfigurieren. Warum möchten Sie es nicht benutzen?

Benoit
quelle
Was ist, wenn das Booten im Einzelbenutzermodus eine Grub-Option ist?
Jldugger
Was ist das Ziel der Deaktivierung des Root-Kontos? Was werden Sie tun, wenn Sie Ihre Sudo-Binärdatei oder -Konfiguration (oder ein anderes von Ihnen verwendetes Tool) bremsen?
Benoit,
Disabling root remote login might be relevant but only if you are able to log on locally.Dies ist nur offensichtlich falsch. Sie können sich mit jedem Konto aus der Ferne anmelden . Durch das Deaktivieren der Remote-Anmeldung als Root sind Sie nicht auf den lokalen Zugriff beschränkt.
Dan
2

Ich deaktiviere nur den SSH-Zugriff für root und fordere Benutzer (oft nur Entwickler) auf, SSH-Schlüssel zu verwenden. Es gibt einfach zu viele Wörterbuchangriffe und das Ändern des SSH-Ports ist für uns keine Option.

Auf diese Weise müssen Sie nicht darauf vertrauen, dass irgendjemand ein gutes Passwort schreiben kann. Einmal drinnen haben nur die Admins Berechtigungen für sudo.

pablasso
quelle
Das Ändern des SSH-Ports ist sowieso sinnlos. Ein einfacher Portscan verschenkt es leicht. Wenn ich auf meinem Computer zu Port 22 telnete, erhalte ich SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
Matt Simmons
@MattSimmons Ja, aber die meisten Wörterbuchangriffe sind automatisiert und sehr einfach. Sie kümmern sich nicht um das Scannen von Ports. Sie versuchen, eine Verbindung zu zufälligen IP-Adressen an Port 22 herzustellen, und wechseln nach einer Zeitüberschreitung zur nächsten IP-Adresse in ihrer Liste. Dies ist keine Sicherheitsmaßnahme, sondern hilft nur, die automatisierten Port-22-Angriffe zu beseitigen. Offensichtlich ist ein gezielter Angriff ein ganz anderes Ballspiel.
Dan
2

Ich weiß, dass dieser Thread wirklich alt ist, aber es gibt einige Hauptmängel in der Logik der verknüpften Artikel und ich fühle mich "rant'ie" - sudo erlaubt sowohl Whitelisting als auch Blacklisting. Nicht nur schwarz, wie im verlinkten Artikel angegeben - Dies überspringt die Idee von AAA (Authentication, Authorization & Auditing) - su & sudo ermöglicht sowohl abgestufte Authentifizierung als auch Verantwortlichkeit.

Szenario 1 Ein Administrator führt versehentlich einen betrügerischen Code in ein System ein, der als root angemeldet ist. Der Code hat vollständigen Zugriff und der Administrator weiß möglicherweise nie, was passiert ist. Zumindest bei abgestuften Anmeldungen (z. B. su / sudo) wird der Administrator aufgefordert, sich zu authentifizieren, wenn der betrügerische Code versucht, erhöhte Rechte zu verwenden.

Szenario 2 Ein betrügerischer Administrator möchte Informationen erhalten oder Änderungen vornehmen. Sie stellen eine Verbindung zur Konsole her (physischer Konsolenzugriff, HP iLo / similar- oder vGuest-Konsolenzugriff), melden sich als Root an und führen die gewünschten Aktionen aus. Sofern nicht ein benannter Account / eine benannte Zugangskarte für den Konsolenzugriff verwendet wird, gibt es wahrscheinlich nicht viele Prüfpfade.

  1. Stellen Sie sicher, dass sie wirklich so sind, wie sie sagen. Identitätsdiebstahl ist nicht das Problem, Identitätsüberprüfung ist.
  2. Prüfen Sie ihre Berechtigung, geben Sie ihnen nur das, was sie zu diesem Zeitpunkt benötigen. Durch die gestufte Berechtigung können sie die Berechtigung erhöhen, wenn sie sie benötigen.
  3. Prüfen Sie alles, führen Sie Aufzeichnungen, damit Sie wissen, wer was wann wo getan hat. Am liebsten auch warum
Mike
quelle
1

Sie sollten von jedem Benutzer verlangen, dass er sudo für jeden Root-Befehl als Richtlinie verwendet. Es gibt keinen Grund, "sudo bash" oder ähnliches auszuführen, es dient nur der Bequemlichkeit, der Unwissenheit oder der Verdeckung der eigenen Spuren.

Wenn Sie Anmeldungen für das Root-Konto direkt deaktivieren, können Sie das System nur schwer reparieren, wenn schwerwiegende Probleme auftreten.

Wenn Sie Ihre Administratoren nicht davon überzeugen können, sich als sie selbst anzumelden und sudo für jeden als root ausgeführten Befehl auszuführen und nicht in eine Shell auszubrechen, haben Sie schwerwiegende Probleme, für die es keine technische Lösung gibt.

carlito
quelle
1

Die Autoren von Owl Secure Distribuion (und Solar Designer) vertreten einen genau entgegengesetzten Standpunkt. siehe zB die Antwort /unix/8581/which-is-the-safest-way-to-get-root-privileges-sudo-su-or-login/8660#8660 für eine Darstellung ihrer Ansprüche. Das Problem der Überwachung der Superuser-Aktionen (welche Person hat was getan) wird auch aus ihrer Sicht angesprochen (im Grunde besteht die Lösung darin, mehrere Root-Benutzer mit unterschiedlichen Namen zu haben).

imz - Ivan Zakharyaschev
quelle