Wie deaktiviere ich die Root-Anmeldung in Ubuntu?

27

Vor einiger Zeit habe ich root ein Passwort gegeben, damit ich mich als root anmelden und einige Dinge erledigen konnte. Jetzt möchte ich die Root-Anmeldung deaktivieren, um die Sicherheit zu erhöhen, da ich meinen Server dem Internet zur Verfügung stelle. Ich habe verschiedene Möglichkeiten gesehen, dies zu tun ( sudo passwd -l rootherumzuspielen /etc/shadowund so weiter), aber nirgendwo sagt das aus, was die beste / vernünftigste Art ist, es zu tun. Ich habe es getan, sudo passwd -l rootaber ich habe Hinweise gesehen, die besagen, dass dies sich auf Init-Skripte auswirken kann und dass es nicht so sicher ist, wie es aussieht, da immer noch nach einem Kennwort gefragt wird, wenn Sie versuchen, sich anzumelden, anstatt den Zugriff zu verweigern. Wie könnte man das erreichen?

BEARBEITEN: um zu verdeutlichen, ist dies für die lokale Anmeldung als root; Ich habe die Remote-Anmeldung über SSH bereits deaktiviert. Obwohl der Versuch, sich über SSH als root anzumelden, immer noch zur Eingabe des root-Passworts auffordert (was immer fehlschlägt). Ist das schlecht?

Ben Hymers
quelle
1
Das Deaktivieren des lokalen Zugriffs für root bietet nahezu keinen Sicherheitsvorteil. Ein Benutzer mit physischem Zugriff kann Ihre Box auf unzählige Arten pwnen .
Jscott
Punkt genommen. Sie müssen sich nicht als root anmelden, wenn Sie nur die Festplatten herausnehmen können. Ich würde immer noch gerne wissen, wie ich das Root-Konto wieder in den ursprünglichen Zustand versetzen kann, bevor ich es geändert habe, wenn auch nur aus Neugier.
Ben Hymers
Siehe das Update zu meiner Antwort unten. Ich glaube ich verstehe jetzt was du fragst.
Jscott
@jscott während der Deaktivierung von root bietet möglicherweise keinen Sicherheitsvorteil gegen Eindringen, aber wenn Sie sich nicht als root anmelden, bietet dies einen Sicherheitsschalter gegen das Zerstören von Sys mit falsch platzierten Befehlen oder Ähnlichem rm. Etwas, das ich auf die harte Tour gelernt habe. Ja, man kann sich einfach NICHT als root anmelden, aber die Deaktivierung ist aus Sicht von sys admin sinnvoll.
Codechimp
Scheint großartig für VPS oder Hosting, wirklich kein Klacks.
jjxtra

Antworten:

33

Es ist für mich umstritten, dass das Deaktivieren von root die potenziellen Probleme wert ist. Ich habe noch nie einen so konfigurierten Server getestet. Ich bevorzuge es, nur den lokalen Root-Zugriff zuzulassen. Wenn ein Angreifer physischen Zugriff auf Ihren Server hat, können Sie alles vergessen, was Sie getan haben, um Ihre Installation trotzdem zu "sichern".

Deaktivieren Sie den Root- sshZugriff, indem Sie Folgendes bearbeiten /etc/ssh/sshd_config:

PermitRootLogin no

Hantieren mit /etc/shadow, chsh -s /bin/false rootalles kann rückgängig gemacht wird mit einem einfachen Boot - CD / Stick.

Aktualisieren Sie nach Ihrem Kommentar:

Von help.ubuntu.com : "Standardmäßig ist das Passwort des Root-Kontos in Ubuntu gesperrt ". Weitere Informationen finden Sie im Abschnitt "Deaktivieren Ihres Root-Kontos". Verwenden Sie den folgenden Befehl, um den Status des Root-Kontos auf "install-default" zurückzusetzen:

sudo usermod -p '!' root
jscott
quelle
Kein System ist sicher, wenn ein Angreifer physischen Zugriff auf dieses System hat. Wenn Sie / etc / shadow bearbeiten können, was hindert Sie daran, / etc / ssh / sshd_config zu bearbeiten?
Sven
@SvenW: Genau. Aus diesem Grund diskutiere ich den Nutzen, was die Sicherheit anbelangt, sogar die Mühe zu machen, root zu "deaktivieren". Beschränken Sie den Root-Zugriff, ja. Deaktivieren Sie das Konto, nein.
Jscott
4
sudo service ssh restart ....... danach.
Naweed Chougle
Die Hilfedatei, auf die verwiesen wird, enthält jetzt den folgenden Befehl: sudo passwd -dl root
MrG
21

Ich nehme an, Sie beziehen sich auf die Remote-Anmeldung über ssh. Fügen Sie die folgende Zeile hinzu /etc/ssh/sshd_config:

PermitRootLogin no

und starten Sie den SSH-Dienst neu

sudo service ssh restart

Das sollte funktionieren und Sie können Ihr Root-Konto so lassen, wie es ist (oder versuchen, es trotzdem zu deaktivieren, wenn Sie dies für notwendig halten).

kynan
quelle
Entschuldigung, ich hätte sagen sollen, dies ist für lokale Logins. Ich habe die Frage aktualisiert.
Ben Hymers
4

Die Hauptfrage wurde mehrmals beantwortet, die zweite nicht. SSH fordert nach Eingabe von root zur Eingabe des Kennworts auf, nachdem es als Sicherheitsfunktion deaktiviert wurde. Es wird auch ausgelöst, wenn Sie versuchen, sich als lkjfiejlksji anzumelden.

Dies soll verhindern, dass jemand einen Stapel von Benutzernamen testet, um herauszufinden, welche auf Ihrem System gültig sind. Wenn Sie jedoch aus Sicherheitsgründen root über SSH deaktiviert haben, würde ich auch ein Bruteforce-Erkennungsprogramm (wie fail2ban) einrichten und es so einstellen, dass es sie blockiert, wenn sich jemand als root anmeldet Versuchen Sie weitere Angriffe.

Ryan Gooler
quelle
Gute Antwort, danke! Ich habe fail2ban bereits eingerichtet und werde es so konfigurieren, dass es beim ersten Versuch, sich als root anzumelden, blockiert wird.
Ben Hymers
2

Das Ersetzen des verschlüsselten Passworts durch ein * in / etc / shadow (zweites Feld nach dem ersten ':') ist der beste Weg, IMHO. Deaktivieren Sie außerdem die root-Anmeldung für ssh (auf diese Weise ist es einfach unmöglich, sich über ssh als root anzumelden) und beschränken Sie ssh möglicherweise auf Zertifikatsanmeldungen, was viel sicherer ist als kennwortbasierte Anmeldungen.

In den meisten Fällen sollte SSH der einzige Dienst sein, auf den von außen zugegriffen werden kann, der möglicherweise eine Root-Anmeldung ermöglicht, sodass diese Tür verschlossen ist.

Um dies weiter einzuschränken, können Sie so etwas wie fail2ban installieren, bei dem IP-Adressen nach mehreren erfolglosen Anmeldeversuchen für eine bestimmte Zeit gesperrt werden.

Sven
quelle
Ich habe das Gefühl, "*" ist das gleiche wie "!", Gemäß der akzeptierten Antwort, daher stimme ich auch für diese Antwort.
Ben Hymers
0

Wenn Sie die lokale Root-Anmeldung deaktivieren möchten, können Sie versuchen, / etc / passwd zu ändern und / bin / bash durch / bin / false zu ersetzen. Da ich es jedoch nicht getestet habe, würde ich sagen, lassen Sie eine Root-Sitzung auf der Seite offen, testen Sie sie, und wenn es irgendwelche seltsamen Nebenwirkungen gibt, ändern Sie sie zurück.

Julien Vehent
quelle
0

Betreff: Sicherheit.

IMHO gibt es nur so viel, was Sie sicherheitshalber tun können, wenn Sie die Box nicht ausstecken, vom Netzwerk trennen und in einer 3 "dicken, kugelsicheren Hartmetall-Stahlbox schweißen.

Stellen Sie sich das so vor - wenn die Leute das Verteidigungsministerium, die CIA, das FBI und die Citibank hacken können -, kann der Rest von uns Sterblichen es nicht viel besser machen.

Betreff: SSH-Sicherheit.

Ich verbiete nicht nur den Root-Zugriff über ssh, sondern setze auch den Parameter "AllowUsers" auf meinen und nur meinen Benutzernamen. Auf diese Weise kann sich niemand außer meinem eigenen Benutzer über ssh anmelden. Dies kann redundant sein, da ich in meinem Fall sowieso nur EINEN Benutzer ohne Rootberechtigung erstelle.

Leider sind, wie andere schon oft gesagt haben, alle Wetten AUS, sobald jemand physischen Zugang zur Box hat!

Zertifikatsaustausch für SSH Login? Hmmmm. . . . hört sich gut an. Wie machst du das?

Jim (JR)

Jim
quelle