Wie (und warum) die Root-Anmeldung über SSH in Linux deaktiviert wird
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 es vermeiden können.
zweischneidiges 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 von Unix- und Linux-Betriebssystemen.
Das Root-Benutzerkonto ist wie alle Konten passwortgeschü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 Angreifer und der Root-Autorität ein Passwort ist. Passwörter können natürlich erraten, berechnet, irgendwo aufgeschrieben gefunden oder mit roher Gewalt abgeholt werden.
Kennt ein Angreifer das Root-Passwort, kann er sich anmelden und mit dem gesamten System machen, was er will. Mit erhöhten Root-Privilegien gibt es keine Beschränkungen, was sie tun können. Es wäre dasselbe, als würde der Root-Benutzer das Terminal verlassen, ohne sich abzumelden, und wahlfreien Zugriff auf sein Konto gewähren.
Aufgrund dieser Risiken erlauben viele moderne Linux-Distributionen dem Root-Benutzer nicht, sich lokal anzumelden, geschweige denn SSH. Der Root-Benutzer existiert, aber es wurde kein Passwort dafür festgelegt. Trotzdem muss jemand in der Lage sein, das System zu verwalten. Die Lösung für dieses Rätsel ist sudo
das Team.
sudo
ermöglicht bestimmten Benutzern, vorübergehend Root-Level-Privilegien von ihrem Benutzerkonto zu verwenden. Sie müssen sich authentifizieren, um verwenden zu können sudo
, was Sie tun, indem Sie Ihr eigenes Passwort eingeben. Dadurch erhalten Sie vorübergehend Zugriff auf die Fähigkeiten von root.
Ihre Superuser-Berechtigungen verschwinden, wenn Sie das Terminalfenster schließen, in dem sie verwendet wurden. Wenn Sie das Terminalfenster geöffnet lassen, läuft das Timeout ab und Sie kehren automatisch zum normalen Benutzerstatus zurück. Dies bietet eine andere Art von Schutz. Er schützt dich vor sich selbst.
Wenn Sie sich normalerweise als root anstelle eines regulären Kontos anmelden, können alle Fehler, die Sie in der Befehlszeile machen, katastrophale Folgen haben. Wenn Sie es sudo
für die Verwaltung verwenden müssen, ist es wahrscheinlicher, dass Sie beim Tippen konzentrierter und vorsichtiger sind.
Das Zulassen der Root-Anmeldung über SSH erhöht die Risiken, da die Angreifer nicht lokal sein müssen; sie könnten versuchen, sich aus der Ferne in Ihr System zu hacken.
Root-Benutzer und SSH-Zugriff
Sie werden höchstwahrscheinlich auf dieses Problem stoßen, wenn Sie Systeme für andere Personen verwalten. Vielleicht hat sich jemand entschieden, ein Root-Passwort festzulegen, um sich anzumelden. Andere Einstellungen müssen geändert werden, damit sich root über SSH anmelden kann.
Es wird nicht zufällig passieren. Aber es kann von Menschen durchgeführt werden, die die damit verbundenen Risiken nicht verstehen. Wenn Sie in diesem Zustand die Verwaltung eines Computers übernehmen, müssen Sie den Eigentümern mitteilen, warum dies eine schlechte Idee ist, und das System dann wieder in einen sicheren Zustand versetzen. Wenn dies von einem früheren Systemadministrator eingerichtet wurde, ist es den Eigentümern möglicherweise nicht bekannt.
Hier ist ein Benutzer auf einem Fedora-Rechner, der als Root-Benutzer auf einem Ubuntu-Rechner in einen Ubuntu-Rechner sshing.
ssh root@ubuntu-22-04.local
Der Ubuntu-Computer ermöglicht dem Root-Benutzer, sich über SSH anzumelden. Auf dem Ubuntu-Rechner können wir sehen, dass die aktive Verbindung als root ausgeführt wird.
who
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 bekommen.
Deaktivieren Sie den SSH-Zugriff für root
Um den SSH-Zugriff für den Root-Benutzer zu deaktivieren, müssen wir Änderungen an der SSH-Konfigurationsdatei vornehmen. Es befindet sich in „/etc/ssh/sshd_config“. Wir müssen verwenden sudo
, um Änderungen daran zu schreiben.
sudo gedit /etc/ssh/sshd_config
Blättern Sie durch die Datei oder suchen Sie die Zeile „PermitRootLogin“.
Setzen Sie diesen Parameter entweder auf „none“ oder kommentieren Sie die Zeile aus, indem Sie #
als erstes Zeichen in der Zeile ein Doppelkreuz “ “ setzen. Speichern Sie Ihre Änderungen.
Wir müssen den SSH-Daemon neu starten, damit unsere Änderungen wirksam werden.
sudo systemctl restart ssh
Wenn Sie auch die lokale Anmeldung verhindern möchten, deaktivieren Sie das Root-Passwort. Wir verwenden den Gürtel- und Hosenträgeransatz und verwenden sowohl die Optionen -l
(Sperre) als auch -d
(Passwort entfernen).
sudo passwd root -ld
Dadurch wird das Konto gesperrt und das Kontopasswort zum Booten entfernt. Selbst wenn der Root-Benutzer physisch an Ihrem Computer sitzt, kann er sich nicht anmelden.
Sicherere Möglichkeit, Root-Zugriff über SSH zuzulassen
Beim Entfernen des Root-Zugriffs über SSH werden Sie manchmal auf Verwaltungswiderstand stoßen. 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, einen Kompromiss einzugehen, der das Risiko verringert und dennoch eine Remote-Anmeldung als Root ermöglicht.
Die Verwendung von SSH-Schlüsseln zum Herstellen einer SSH-Verbindung ist viel sicherer als die Verwendung von Passwörtern. Da Passwörter nicht verwendet werden, können sie nicht durch Brute-Force erzwungen, erraten oder auf andere Weise entdeckt werden.
Richten Sie vor dem Sperren des lokalen Root-Kontos SSH-Schlüssel auf dem Remote-Computer ein, damit der Root-Benutzer eine Verbindung zu Ihrem lokalen Computer herstellen kann. Entfernen Sie dann ihr Passwort und sperren Sie ihr lokales Konto.
Wir müssen auch die Datei sshd_config erneut bearbeiten.
sudo gedit /etc/ssh/sshd_config
Ändern Sie die Zeile „PermitRootLogin“, um die Option „Kennwort verbieten“ zu verwenden.
Speichern Sie Ihre Änderungen und starten Sie den SSH-Daemon neu.
sudo systemctl restart ssh
Selbst wenn jemand das Passwort des Root-Benutzers wiederherstellt, kann er sich jetzt nicht über SSH mit dem Passwort anmelden.
Wenn ein Remote-Root-Benutzer eine SSH-Verbindung zu Ihrem lokalen Computer herstellt, werden die Schlüssel ausgetauscht und verifiziert. Wenn sie die Authentifizierung bestehen, stellt der Root-Benutzer eine Verbindung zu Ihrem lokalen Computer her, ohne dass ein Kennwort erforderlich ist.
ssh root@ubuntu-22-04.local
Kein Einlass
Das Ablehnen von Remote-Verbindungen als Root ist die beste Option. Root zu erlauben, sich mit SSH-Schlüsseln zu verbinden, ist eine zweite Option, aber immer noch viel besser als die Verwendung von Passwörtern.
Schreibe einen Kommentar