Ein Passwort lässt sich erraten, ein SSH-Schlüssel nicht. Deshalb ist die wirksamste Schutzmaßnahme für einen Server, sich per Schlüssel anzumelden und die Anmeldung per Passwort komplett zu sperren. Dann stehen die Bots, die rund um die Uhr Passwörter durchprobieren, einfach vor verschlossener Tür.
Wir gehen dabei in diesen Schritten vor.
- einen eigenen Benutzer statt root anlegen;
- einen SSH-Schlüssel auf Ihrem Computer erzeugen;
- den Schlüssel auf den Server kopieren;
- die Anmeldung per Schlüssel prüfen;
- die Anmeldung per Passwort und als root deaktivieren.
Was Sie brauchen
Zu Beginn benötigen Sie SSH-Zugang zum Server als root. IP-Adresse und Passwort stehen in der E-Mail nach der Bestellung und im Bereich „Instructions“ im Kundenbereich. Wo Sie ihn finden, zeigen wir im Artikel zur Bestellung eines VPS.
1. Legen Sie einen eigenen Benutzer an
Die Befehle werden auf dem Server als root ausgeführt.
Täglich als root zu arbeiten ist unsicher, denn ein einziger Fehler oder ein gestohlenes Passwort verschafft einem Angreifer vollen Zugriff. Deshalb legen wir einen normalen Benutzer an und geben ihm das Recht, Administratorbefehle über sudo auszuführen.
# Benutzer admin anlegen (der Name ist frei wählbar)
# Der Befehl fragt nach einem Passwort, die übrigen Fragen können
# Sie mit der Enter-Taste überspringen
adduser admin
# Benutzer zur Gruppe sudo hinzufügen, damit er
# Administratorbefehle ausführen kann
usermod -aG sudo admin# Benutzer admin anlegen (der Name ist frei wählbar)
adduser admin
# Passwort für den Benutzer festlegen
passwd admin
# Auf diesen Systemen gehören Administratoren zur Gruppe wheel
usermod -aG wheel adminDas Passwort des Benutzers brauchen Sie weiterhin, denn sudo fragt danach. Für die Anmeldung am Server wird es aber bald nicht mehr nötig sein.
2. Erstellen Sie einen SSH-Schlüssel auf Ihrem Computer
Dieser Befehl wird auf Ihrem eigenen Computer ausgeführt. Unter Windows öffnen Sie PowerShell, unter macOS und Linux das Terminal.
# Schlüssel vom Typ ed25519 erzeugen, eine moderne und sichere Variante
ssh-keygen -t ed25519 -a 64Das Programm stellt ein paar Fragen.
- wo der Schlüssel gespeichert werden soll – drücken Sie einfach Enter;
- passphrase – ein Passwort für den Schlüssel selbst. Legen Sie am besten eines fest, dann kann niemand eine gestohlene Schlüsseldatei ohne dieses Passwort verwenden.
Danach liegen im Ordner .ssh Ihres Benutzers zwei Dateien.
id_ed25519– der private Schlüssel, er bleibt nur bei Ihnen;id_ed25519.pub– der öffentliche Schlüssel, ihn legen wir auf den Server.
Geben Sie den privaten Schlüssel niemals weiter
Die Datei id_ed25519 ist Ihr privater Schlüssel. Verschicken Sie sie nicht über Messenger, laden Sie sie nicht in die Cloud hoch und legen Sie sie nicht auf den Server.
Nach außen geht nur die Datei mit der Endung .pub.
3. Kopieren Sie den Schlüssel auf den Server
Der Befehl wird auf Ihrem eigenen Computer ausgeführt. Setzen Sie statt SERVER_IP die IP-Adresse des Servers ein.
# Öffentlichen Schlüssel für den Benutzer admin auf den Server kopieren
ssh-copy-id admin@SERVER_IP# Unter Windows gibt es den Befehl ssh-copy-id nicht, daher übertragen
# wir den Schlüssel mit einer einzigen Zeile.
# Sie legt auf dem Server den Ordner .ssh an, hängt den Schlüssel an
# authorized_keys an und setzt die nötigen Rechte
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh admin@SERVER_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"Der Befehl fragt nach dem Passwort des Benutzers admin. Das ist das letzte Mal, dass Sie es für die Anmeldung brauchen.
4. Prüfen Sie die Anmeldung per Schlüssel
Verbinden Sie sich von Ihrem Computer aus in einem neuen Terminalfenster.
# Als neuer Benutzer verbinden. Nach dem Serverpasswort sollte
# nicht gefragt werden,
# höchstens nach der passphrase des Schlüssels, falls Sie eine festgelegt haben
ssh admin@SERVER_IP
# Auf dem Server prüfen, ob sudo funktioniert. Der Befehl sollte
# root ausgeben
sudo whoamiWenn Sie sich über Termius verbinden, fügen Sie den Schlüssel in dessen Einstellungen hinzu und geben Sie den Benutzer admin an. Wie die Verbindung über Termius funktioniert, zeigen wir in einem eigenen Artikel.
5. Deaktivieren Sie die Anmeldung per Passwort und als root
Schließen Sie die alte Verbindung nicht
Lassen Sie die bisherige Sitzung geöffnet, bis Sie sich vergewissert haben, dass die Anmeldung per Schlüssel im neuen Fenster funktioniert. Falls etwas schiefgeht, können Sie darüber alles leicht rückgängig machen.
Unter Ubuntu und Debian werden die SSH-Einstellungen aus mehreren Dateien im Ordner /etc/ssh/sshd_config.d/ gelesen, und es gilt die Einstellung, die zuerst gefunden wird. Die Datei 50-cloud-init.conf kann zum Beispiel die Anmeldung per Passwort erlauben, und dann greift Ihre Sperre in einer anderen Datei einfach nicht. Deshalb legen wir eine eigene Datei mit der Nummer 00 an, die der Server vor allen anderen liest.
Die folgenden Befehle werden auf dem Server ausgeführt.
# Datei für unsere SSH-Einstellungen anlegen und im
# Editor nano öffnen
sudo nano /etc/ssh/sshd_config.d/00-security.confFügen Sie diese Zeilen in die Datei ein.
# Direkte Anmeldung als root verbieten
PermitRootLogin no
# Anmeldung per Passwort verbieten
PasswordAuthentication no
# Anmeldung per Schlüssel beibehalten
PubkeyAuthentication yesZum Speichern drücken Sie Ctrl + O und Enter, zum Verlassen des Editors Ctrl + X.
Jetzt prüfen wir die Einstellungen und wenden sie an.
# Einstellungen auf Fehler prüfen. Gibt der Befehl nichts aus,
# ist alles in Ordnung
sudo sshd -t
# Anzeigen, welche Einstellungen tatsächlich gelten
sudo sshd -T | grep -E "permitrootlogin|passwordauthentication"In der Ausgabe sollten permitrootlogin no und passwordauthentication no stehen. Steht dort ein anderer Wert, wird er von einer anderen Datei überschrieben. Sehen Sie sich den Inhalt des Ordners mit dem Befehl ls /etc/ssh/sshd_config.d/ an.
Jetzt müssen Sie nur noch SSH neu starten.
# SSH neu starten, damit die neuen Einstellungen wirksam werden
sudo systemctl restart ssh# SSH neu starten, damit die neuen Einstellungen wirksam werden
sudo systemctl restart sshd6. Abschließende Prüfung
Öffnen Sie ein weiteres Terminalfenster und prüfen Sie beide Varianten.
# Die Anmeldung als admin per Schlüssel sollte funktionieren
ssh admin@SERVER_IP
# Die Anmeldung als root sollte jetzt mit dem Fehler Permission
# denied enden
ssh root@SERVER_IPWenn alles so ist, herzlichen Glückwunsch, Ihr Server lässt sich nun nicht mehr durch Erraten des Passworts knacken. Die alte Sitzung können Sie jetzt schließen.
Falls der Zugang doch verloren geht
Falls der Zugang doch verloren geht, öffnen Sie den Server über die Schaltfläche Console in der Serverliste im Kundenbereich. Damit öffnet sich der Server direkt im Browser, ohne SSH, und Sie können die Einstellungen zurücksetzen, indem Sie die Datei /etc/ssh/sshd_config.d/00-security.conf löschen.
Unsere Ressourcen
Telegram-Kanal: https://t.me/f3cloud_news
Hosting-Website: https://f3cloud.com