Im Rahmen der Absicherung Ihres VPS (siehe den Artikel „So sichern Sie einen VPS mit dem Betriebssystem Ubuntu Linux ab“) kann der SSH-Zugang über Benutzername und Passwort ein kritischer Punkt für die Sicherheit sein. Meist wählt man Passwörter, die leicht zu merken sind (auch wenn sie Sonderzeichen enthalten, etwa Ci@oM0nd0): Das kann Sie Zugriffsversuchen böswilliger Nutzer aussetzen — mit der Brute-Force-Technik lässt sich Ihr Passwort nämlich herausfinden.
Diese Angriffstechnik besteht im Wesentlichen darin, Anmeldeversuche am Server mit einer Datenbank bekannter Passwörter durchzuführen, bis das richtige gefunden ist. Wenn Sie der eingangs genannten Anleitung gefolgt sind, haben Sie bereits einen unprivilegierten Benutzer eingerichtet, der sudo verwenden kann, und Fail2ban installiert, um unerwünschte Zugriffsversuche fernzuhalten. Mit den nächsten Schritten erhöhen wir die Sicherheit des VPS weiter.
Voraussetzungen
- Ein VPS mit Linux-Betriebssystem
- Ein Benutzer mit angemessenen Rechten, also sudo (in diesem Beispiel heißt er utente_vps)
- Ihr eigener Computer muss macOS oder eine beliebige Linux-basierte Distribution verwenden
- Die Anwendung ssh-keygen, unter Linux und macOS normalerweise vorhanden
- Die Anwendung ssh-copy-id, unter Linux und macOS normalerweise vorhanden
In dieser Anleitung sehen wir, wie man das SSH-Schlüsselpaar mit ssh-keygen erstellt, das Teil von OpenSSH ist.
Wie der Zugang über SSH-Schlüssel funktioniert
Bevor wir loslegen, ein kurzer Blick auf die Funktionsweise. Ein SSH-Schlüsselpaar besteht, wie der Name schon sagt, aus zwei kryptografischen Schlüsseln, einem öffentlichen und einem privaten, mit denen sich ein Client an einem SSH-Server authentifiziert. Der private Schlüssel verbleibt beim Client und muss sicher verwahrt und geheim gehalten werden: Wird er kompromittiert, verloren oder gestohlen, erlaubt er demjenigen, der ihn besitzt, den Zugriff auf den Server. Der zugehörige öffentliche Schlüssel kann ohne jede Folge geteilt werden und wird üblicherweise auf den Server geladen, auf den man zugreifen möchte. Er dient nämlich dazu, die „Nachrichten“ zu verschlüsseln, die nur der private Schlüssel entschlüsseln kann.
In einer Standardkonfiguration wird der öffentliche Schlüssel in die Datei authorized_keys im Ordner ~/.ssh/ jedes berechtigten Benutzers eingetragen. Wenn ein Client versucht, sich per SSH mit dem Server zu verbinden, prüft der Dienst, ob der Benutzer im Besitz des privaten Schlüssels ist: Bei positivem Ergebnis wird der Zugriff gewährt.
Schritt 1 — Erzeugen der Schlüssel mit ssh-keygen
- Öffnen Sie die Terminal-Anwendung
- Geben Sie den Befehl ein:
oder, wenn Sie unter Linux arbeiten:$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/tuo_utente_macos/.ssh/id_rsa):
Sie werden gefragt, wo das Schlüsselpaar gespeichert werden soll: Sie können den vorgeschlagenen Pfad übernehmen oder einen beliebigen anderen wählen. Sollte bereits ein Schlüsselpaar existieren, erscheint die Meldung:Enter file in which to save the key (/home/tuo_utente_linux/.ssh/id_rsa):
In diesem Fall liegt es an Ihnen, ob Sie es überschreiben oder den Vorgang abbrechen und ihn mit einem anderen Speicherpfad für die neuen Schlüssel wiederholen./Users/tuo_utente_macos/.ssh/id_rsa already exists. Overwrite (y/n)? - Für mehr Sicherheit können Sie zusätzlich eine Passphrase festlegen, die Sie bei jeder Verwendung der Schlüssel eingeben müssen. Die Entscheidung liegt bei Ihnen: Wenn Sie die EINGABETASTE drücken, ohne etwas einzugeben, benötigen Sie kein Passwort.
Damit haben wir das Schlüsselpaar erzeugt, gespeichert unter dem zu Beginn des Vorgangs angegebenen Pfad (normalerweise das versteckte Verzeichnis .ssh in Ihrem Benutzerprofil): Im Beispiel finden Sie es unter /Users/tuo_utente_macos/.ssh/ oder /home/tuo_utente_linux/.ssh/. In dem Ordner finden Sie zwei Dateien, id_rsa und id_rsa.pub: Wie der Name andeutet, ist id_rsa.pub der öffentliche Schlüssel, der auf Ihren VPS geladen werden muss, während id_rsa der private Schlüssel ist und keinesfalls geteilt werden darf.
Schritt 2 — Wir kopieren den Schlüssel auf den VPS
Kopieren wir nun den öffentlichen Schlüssel auf den VPS. Hier kommt uns der Befehl ssh-copy-id zu Hilfe: Geben Sie in der Terminal-Anwendung Ihres macOS oder Linux ein:
$ ssh-copy-id Nome_Utente@IPv4_del_VPS
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/tuo_utente_macos/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Nome_Utente@IPv4_del_VPS's password:
In jedem Fall müssen Sie das Passwort Ihres Benutzers auf dem VPS eingeben, um die Kopie zu bestätigen.
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'Nome_Utente@IPv4_del_VPS'"
and check to make sure that only the key(s) you wanted were added.
Wenn alles korrekt ausgeführt wurde, gelangen Sie nun bei der SSH-Verbindung zum VPS mit dem unprivilegierten Benutzer direkt zur Remote-Konsole, ohne dass das Passwort abgefragt wird — es sei denn, Sie haben beim Erzeugen der Schlüssel eine Passphrase festgelegt: In diesem Fall verwenden Sie nicht das Passwort Ihres Benutzers auf dem VPS, sondern die Passphrase, die Sie festgelegt haben.
Fazit
Ab jetzt greifen Sie mit einem Quäntchen mehr Sicherheit auf Ihren VPS zu. Eine weitere Maßnahme können Sie noch ergreifen: Jetzt, da die Schlüssel funktionieren, können Sie den Passwort-Zugang zum SSH-Dienst vollständig deaktivieren.
Diese Anleitung erschien ursprünglich im Blog von VPS GREEN, dem VPS-Dienst auf unserer grünen Private Cloud.