Remote-Root-Login

8

Ich weiß, dass eines der ersten Dinge, die Sie tun, um einen Server zu sichern, darin besteht, die Remote-Root-Anmeldung nicht zuzulassen.

Passwörter sind ziemlich schwach; Was halten die Leute davon, die Root-Anmeldung nur über SSH-Schlüssel oder andere kennwortlose Methoden zuzulassen?

Welche Methoden sind die besten? Ist es besser, es nicht zu riskieren? Fügt ssh-ing mit einem sekundären Konto und der Verwendung von su -wirklich Sicherheit hinzu?

Wie greifen Benutzer auf serverfault.com auf einem Remoteserver auf root zu?

Kousha
quelle

Antworten:

9

Zum größten Teil wird durch das Deaktivieren von Remote-Root-Anmeldungen nur wenig erreicht. Es hilft nur geringfügig dabei, eine Richtlinie durchzusetzen, bei der sich Administratoren über ihre eigenen Konten anmelden und subei Bedarf rooten (oder sudomöglicherweise mit sudosh... verwenden, abhängig von Ihren Richtlinien).

Das Erstellen extrem langer und umständlicher Root-Passwörter (effektiv, solange Sie noch nicht das alte DES + 12-Bit-Salt-Hashing für Ihre Passwörter verwenden) ist bei der Durchsetzung einer solchen Richtlinie ungefähr genauso effektiv.

Eine mir vertraute Site hatte ein System, bei dem die eindeutigen Kennwörter für jeden Host zufällig generiert, in einer Datenbank gespeichert und an die Systeme weitergegeben wurden. Administratoren mussten sshmit ihren normalen Konten und sudofür die meisten Operationen arbeiten. Das Root-Passwort war ihnen jedoch über einen SSL-basierten internen Webdienst zugänglich (für den außerdem das RSA SecurID-Token und die PIN erforderlich waren). Das Abrufen eines Root-Passworts umfasste die Eingabe einer Begründung (normalerweise ein Link zu einer Remedy (TM) -Ticketnummer) und Zugriffen, die regelmäßig überprüft wurden. Einer der wenigen akzeptablen Gründe für die direkte Verwendung des Root-Passworts waren Fälle, in denen ein System fsckwährend des Startvorgangs gestoppt wurde ... undsuloginbenötigte ein echtes Root-Passwort, um die Überprüfungs- und Reparaturprozesse des Dateisystems manuell auszuführen. (Es gab einige Diskussionen über alternative Methoden dafür - die für Linux relativ einfach sind, aber weitaus schwieriger werden, wenn Sie versuchen, Ihre Verfahren zu erweitern, um die vielen älteren HP-UX-, AIX- und älteren SunOS- und Solaris-Systeme zu berücksichtigen, die dies tun waren in dieser Umgebung noch in Produktion).

Es gibt Eckfälle, in denen ein Root-Passwort erforderlich ist - oder zumindest die beste verfügbare Alternative ist. Es ist im Allgemeinen Ihre beste Strategie, es verfügbar zu halten und gleichzeitig ausreichend robust gegen die Art von Bedrohungen zu machen, die Sie erwarten können.

Eine andere Site, die ich kenne, hat einen ziemlich eleganten Ansatz für die dezentrale Kontoverwaltung. Sie verfügen über Benutzer- * und Sudo- * Pakete (Think RPMs), die unter Verwendung der normalen Paketverwaltungsverfahren und der Automatisierungsinfrastruktur in die Systeme installiert werden. In ihrem Fall ist das sudo- * Paket vom entsprechenden user- * Paket abhängig. Dies ist hilfreich, da Sie damit Cluster von Computern mit lokalisierten Konten haben können (alle Konten sind Administratoren, Entwickler, Supportmitarbeiter oder "kopflose" Konten) und die Abhängigkeit von LDAP / NIS oder anderen vernetzten Identitäts- und Authentifizierungsdiensten beseitigt wird. (Dies reduziert die Kopplung zwischen Systemen und macht sie wesentlich robuster).

Ein Gedanke, den ich an diesem Ansatz mag, ist, dass er Flexibilität bietet. Jeder mit sudoZugriff kann einen Befehl zum Hinzufügen eines normalen Benutzers oder eines anderen sudoBenutzerkontos ausgeben . Wenn ich also an einem Ticket arbeite, kann mir jeder, der bereits Zugriff auf ein System hat, problemlos Zugriff gewähren. Es gibt keine Verzögerungen, während ein Ticket, mit dem ich zu einer Zugriffssteuerungsliste in einer zentralen Datenbank hinzugefügt werden kann, einen zentralisierten Genehmigungsprozess durchläuft und schließlich eine Änderung an das betreffende System zurückgibt. Jeder der autorisierten sudoBenutzer im System kann mir Zugriff gewähren und mich später entfernen. (Ja, wenn ich böse wäre und sie mich spielensudoIch könnte böswillig Dinge ändern, um den Zugriff beizubehalten ... in der Tat gibt es einige Dinge, die ich als normaler Benutzer tun könnte, um den Zugriff nach einer solchen Entfernung beizubehalten. Dies ist jedoch nicht die Bedrohung, über die sie sich Sorgen machen. Mein Zugriff ist immer noch auf eine relativ kleine Anzahl von Systemen insgesamt beschränkt. Daher sind die Auswirkungen eines kompromittierten Kontos immer noch geringer als bei den meisten ähnlichen Programmen, die ich gesehen habe.

Jim Dennis
quelle
2

Wenn Sie den Remote-Root-Zugriff deaktivieren, verhindern Sie, dass Remote-Angreifer direkt Root-Zugriff erhalten. Sie müssen ein anderes Konto auflösen, Zugriff auf den Computer erhalten und dann versuchen, Zugriff auf Root zu erhalten. Es ist ein zusätzlicher Schritt.

Im Allgemeinen ist root für den Remotezugriff deaktiviert. SU funktioniert gut. Wenn etwas wirklich kaputt geht, gibt es immer direkten Zugriff auf die Box, um es zu reparieren.

Wenn Sie strenger sein möchten - deaktivieren Sie einfach root vollständig, dafür ist sudo da. Auch bei diesem Ansatz können Sie weiterhin Root-Zugriff erhalten, indem Sie in den Einzelbenutzermodus wechseln - a la Ubuntu. Obwohl ich glaube, dass sie dafür einen gepatchten Init verwendet haben, wie in ihren Dokumenten beschrieben.

Darüber hinaus können Sie Leerlauf einrichten, um Benutzer im Leerlauf zu starten, falls ihre Terminals offen bleiben und PCs ebenfalls geöffnet sind. Sie können alle Benutzer zur Verwendung von Schlüsseln zwingen, die Schlüsselverwaltung kann jedoch schwierig sein.

Ein einzelner Pass-Through-Protokollierungshost als Breakglass-System erzwang außerdem eine zusätzliche Schutzschicht und einen Prüfpfad.

Alex
quelle
2

Ich schlage vor, dass Sie das System so einrichten, dass der Root-Zugriff NUR an der Konsole möglich ist.

Andernfalls ermöglichen Sie ausgewählten Benutzern die Verwendung von sudo mit der Kennwortoption den Zugriff auf private Befehle. Übrigens, stellen Sie fest, dass sudo so gestaltet werden kann, dass ein Benutzerkonto auf bestimmte Befehle beschränkt wird, wenn Sie dies wünschen. Sudo hinterlässt eine "Markierung" im Systemprotokoll, die verwendet wurde. sudo ist besser als su, da das root-Passwort nicht bekannt gegeben wird. Somit können Sie das Root-Passwort ändern und der Benutzer, der sudo verwendet, wäre nicht klüger.

Die erlaubte Verwendung von sudo, um zu privaten Befehlen zu gelangen, sollte von erzwungenen regelmäßigen Kennwortänderungen mit der Häufigkeit abhängig von der Umgebung begleitet werden.

mdpc
quelle
1
Ich denke, das Problem mit sudo ist, dass es das normale Passwort des Benutzers verwendet. Wenn das Konto kompromittiert wird, ist der Root-Zugriff aus diesem Grund nur ein Sudo-s entfernt. Bei Verwendung von 'su' muss der Angreifer zwei Passwörter brechen.
Kousha
Außerdem benötige ich eine Art Remote-Root-Zugriff, da es sich um einen gehosteten Server handelt und ich keinen Zugriff auf die physische Konsole habe.
Kousha
Wenn ich mich erinnere, können Sie sudo so konfigurieren, dass das Kennwort eines anderen Kontos als des Benutzerkontos verwendet wird.
mdpc
1

Erlaube niemals root

Richten Sie das System so ein, dass der Zugriff über Schlüssel nur ohne Kennwörter möglich ist

Richten Sie dann sudo für Benutzer ein, die Änderungen über das Root-Konto vornehmen dürfen

drfrog
quelle
Obwohl ich für die meisten Situationen zustimme, gibt es bestimmte Zeiten, in denen ich mich in Ordnung fühle, wenn ich Remote-Root-Zugriff zulasse (insbesondere mithilfe von Schlüsseln)
Matt Simmons
Ich würde mir lieber die zusätzliche Zeit nehmen, um etwas zu tun, als Root-Zugriff auf den Computer zu haben. Selbst wenn ich nur einen kurzen Blick auf die Authentifizierungsprotokolle eines Live-Servers werfen möchte, sieht man normalerweise, dass das Root-Login verwendet wird, um Zugriff auf die Box zu erhalten bei rund 90% aller Anmeldeversuche! Wenn Sie irgendwelche Informationen über eine Box haben, möchten Sie nicht, dass nur jemand Zugang zu ihrer Box in schlechter Form erhält, um eine Box für root
drfrog am
Auf einem Desktop ja. Aber auf einem Server, der von einem einzelnen Benutzer verwaltet wird, ist die Verwendung von sudo ein bisschen wie das Spielen von "Simon sagt". IMO Nur wenn Sie mehrere Administratoren haben und deren Aktionen protokolliert werden sollen / müssen, ist die Verwendung von Sudo-Benutzern legitim. Selbst dann bin ich nicht davon überzeugt, dass das Deaktivieren von root erforderlich ist (obwohl es sinnvoll ist, Remote-Root-Anmeldungen nur auf Schlüssel zu beschränken).
Jeremy Davis