Wie (und warum) die Root-Anmeldung über SSH unter Linux deaktiviert wird

Veröffentlicht: 2022-09-29
Linux-Laptop mit einer Bash-Eingabeaufforderung
fatmawati achmad zaenuri/Shutterstock.com

Die Anmeldung als Linux-Root-Benutzer ist eine schlechte Praxis. Noch schlimmer ist es, sich als root über eine SSH-Verbindung anzumelden. Wir sagen Ihnen warum und zeigen Ihnen, wie Sie dies verhindern können.

Das zweischneidige Schwert

Sie brauchen jemanden mit der Befugnis, die Teile Ihres Betriebssystems zu besitzen und zu verwalten, die für normale Benutzer zu wichtig oder zu sensibel sind. Hier kommt root ins Spiel. root ist der allmächtige Superuser der Unix- und Linux-Betriebssysteme.

Das Root-Benutzerkonto ist, wie alle Konten, durch ein Passwort geschützt. Ohne das Passwort des Root-Benutzers kann niemand sonst auf dieses Konto zugreifen. Das bedeutet, dass die Privilegien und Befugnisse von root von niemand anderem genutzt werden können. Die Kehrseite ist, dass die einzige Verteidigung zwischen einem böswilligen Benutzer und den Befugnissen von root dieses Passwort ist. Passwörter können natürlich erraten, abgeleitet, irgendwo aufgeschrieben entdeckt oder brutal erzwungen werden.

Wenn ein böswilliger Angreifer das Passwort von root entdeckt, kann er sich anmelden und mit dem gesamten System alles tun, was er will. Mit den erhöhten Rechten von root gibt es keine Einschränkungen, was sie tun können. Es wäre genauso, als ob der Root-Benutzer ein Terminal verlassen hätte, ohne sich abzumelden, und so einen opportunistischen Zugriff auf sein Konto ermöglicht hätte.

Warum Sie sich nicht als Root bei Ihrem Linux-System anmelden sollten
RELATED Warum Sie sich nicht als Root bei Ihrem Linux-System anmelden sollten

Aufgrund dieser Risiken erlauben viele moderne Linux-Distributionen nicht, dass sich root lokal am Computer anmeldet, geschweige denn über SSH. Der Root-Benutzer existiert, aber er hat kein Passwort für ihn festgelegt. Und doch muss jemand das System administrieren können. Die Lösung für dieses Rätsel ist der Befehl sudo .

sudo ermöglicht nominierten Benutzern, vorübergehend Root-Level-Privilegien innerhalb ihres eigenen Benutzerkontos zu verwenden. Sie müssen sich authentifizieren, um sudo zu verwenden, was Sie tun, indem Sie Ihr eigenes Passwort eingeben. Dadurch erhalten Sie vorübergehend Zugriff auf die Fähigkeiten von root.

Ihre Root-Kräfte sterben, wenn Sie das Terminalfenster schließen, in dem sie verwendet wurden. Wenn Sie das Terminalfenster geöffnet lassen, werden sie abgeschaltet und Sie kehren automatisch zum regulären Benutzerstatus zurück. Dies bietet eine andere Art von Schutz. Es schützt dich vor dir selbst.

Wenn Sie sich gewohnheitsmäßig als root anstelle eines regulären Kontos anmelden, könnten alle Fehler, die Sie in der Befehlszeile machen, katastrophale Folgen haben. Wenn Sie sudo verwenden müssen, um die Verwaltung durchzuführen, bedeutet dies, dass Sie sich eher konzentrieren und darauf achten müssen, was Sie eingeben.

Das Zulassen der Root-Anmeldung über SSH erhöht die Risiken, da Angreifer nicht lokal sein müssen; Sie können versuchen, Ihr System aus der Ferne brutal zu erzwingen.

VERWANDT: So überprüfen Sie die Verwendung des sudo-Befehls unter Linux

Der Root-Benutzer und der SSH-Zugriff

Dieses Problem tritt eher auf, wenn Sie Systeme für andere Personen verwalten. Möglicherweise hat sich jemand entschieden, ein Root-Passwort festzulegen, damit er sich anmelden kann. Andere Einstellungen müssen geändert werden, damit sich Root über SSH anmelden kann.

Dieses Zeug wird nicht zufällig passieren. Aber es kann von Menschen durchgeführt werden, die die damit verbundenen Risiken nicht verstehen. Wenn Sie die Verwaltung eines Computers in diesem Zustand übernehmen, müssen Sie die Eigentümer darüber informieren, warum dies eine schlechte Idee ist, und dann das System wieder sicher funktionieren lassen. Wenn es etwas war, das vom vorherigen Systemadministrator konfiguriert wurde, wissen die Eigentümer möglicherweise nichts davon.

Hier ist ein Benutzer auf einem Computer, auf dem Fedora ausgeführt wird, der als Root-Benutzer des Ubuntu-Computers eine SSH-Verbindung zu einem Ubuntu-Computer herstellt.

 ssh [email protected] 

Der Root-Benutzer stellt über SSH eine Verbindung zu einem Remote-Computer her

Der Ubuntu-Computer ermöglicht dem Root-Benutzer, sich über SSH anzumelden. Auf dem Ubuntu-Computer können wir sehen, dass eine Live-Verbindung vom Root-Benutzer im Gange ist.

 wer 

Verwenden des Befehls who zum Auflisten der angemeldeten Benutzer

Was wir nicht sehen können, ist, wer diese Sitzung verwendet. Wir wissen nicht, ob die Person am anderen Ende der SSH-Verbindung der Root-Benutzer ist oder jemand, der es geschafft hat, das Root-Passwort zu erhalten.

Deaktivieren des SSH-Zugriffs für root

Um den SSH-Zugriff für den Root-Benutzer zu deaktivieren, müssen wir Änderungen an der SSH-Konfigurationsdatei vornehmen. Diese befindet sich unter „/etc/ssh/sshd_config“. Wir müssen sudo verwenden, um Änderungen daran zu schreiben.

 sudo gedit /etc/ssh/sshd_config 

Bearbeiten der sshd-config-Datei

Scrollen Sie durch die Datei oder suchen Sie nach der Zeichenfolge „PermitRootLogin“.

Setzen Sie dies entweder auf „nein“ oder kommentieren Sie die Zeile aus, indem Sie ein Raute „ # “ als erstes Zeichen in der Zeile platzieren. Speichern Sie Ihre Änderungen.

Wir müssen den SSH-Daemon neu starten, damit unsere Änderungen wirksam werden.

 sudo systemctl ssh neu starten 

Neustart des sshd-Daemons

Wenn Sie auch lokale Anmeldungen verhindern möchten, deaktivieren Sie das Root-Passwort. Wir verfolgen einen Gürtel-und-Hosenträger-Ansatz und verwenden sowohl die Optionen -l (Sperre) als auch -d (Kennwort löschen).

 sudo passwd root -ld 

Sperren des Root-Kontos und Entfernen des Root-Passworts

Dadurch wird das Konto gesperrt und das Kontokennwort obendrein entfernt. Selbst wenn der Root-Benutzer physisch an Ihrem Computer sitzt, kann er sich nicht anmelden.

Eine sicherere Möglichkeit, Root-SSH-Zugriff zuzulassen

Manchmal stoßen Sie auf den Widerstand des Managements, den Root-Zugriff über SSH zu entfernen. Wenn sie wirklich nicht zuhören, befinden Sie sich möglicherweise in einer Position, in der Sie es wiederherstellen müssen. Wenn dies der Fall ist, sollten Sie in der Lage sein, auf eine Weise Kompromisse einzugehen, die das Risiko verringern und dennoch Remote-Logins vom Root-Benutzer zulassen.

So erstellen und installieren Sie SSH-Schlüssel aus der Linux-Shell
RELATED How to Create and Install SSH Keys From the Linux Shell

Die Verwendung von SSH-Schlüsseln zum Herstellen einer Verbindung über SSH ist weitaus sicherer als die Verwendung von Kennwörtern. Da keine Passwörter beteiligt sind, können sie nicht brutal erzwungen, erraten oder auf andere Weise entdeckt werden.

Bevor Sie das lokale Root-Konto sperren, richten Sie SSH-Schlüssel auf dem Remote-Computer ein, damit der Root-Benutzer eine Verbindung zu Ihrem lokalen Computer herstellen kann. Dann lösche ihr Passwort und sperre ihr lokales Konto.

Wir müssen auch die Datei „sshd_config“ noch einmal bearbeiten.

 sudo gedit /etc/ssh/sshd_config 

Bearbeiten der sshd-config-Datei

Ändern Sie die Zeile „PermitRootLogin“ so, dass sie die Option „prohibit-password“ verwendet.

Speichern Sie Ihre Änderungen und starten Sie den SSH-Daemon neu.

 sudo systemctl ssh neu starten 

Neustart des sshd-Daemons

Selbst wenn jemand das Passwort des Root-Benutzers wiederherstellt, kann er sich jetzt nicht mit einem Passwort über SSH anmelden.

Wenn der Remote-Root-Benutzer eine SSH-Verbindung zu Ihrem lokalen Computer herstellt, werden die Schlüssel ausgetauscht und untersucht. Wenn sie die Authentifizierung bestehen, wird der Root-Benutzer mit Ihrem lokalen Computer verbunden, ohne dass ein Kennwort erforderlich ist.

 ssh [email protected] 

Der Root-Benutzer verbindet sich mit SSH ohne Passwort mit einem Remote-Computer

Kein Einlass

Das Ablehnen von Remote-Verbindungen vom Root-Benutzer ist die beste Option. Root zu erlauben, sich mit SSH-Schlüsseln zu verbinden, ist zweitbeste, aber immer noch viel besser als die Verwendung von Passwörtern.

VERWANDT: So steuern Sie den sudo-Zugriff unter Linux