Wie (und warum) die Root-Anmeldung über SSH unter Linux deaktiviert wird
Veröffentlicht: 2022-09-29Die 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.
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 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
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
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
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
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.
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
Ä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
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]
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