Sicher per SSH einloggen
In diesem Artikel erkläre Ich euch wie ihr euch sicher per SSH-Schlüsselpaar auf euren Server und Diensten die ihr evt Ihm Heimnetz betreibt, einloggen könnt. Dazu klären wie zuerst folgende Fragen: Was ist eigentlich SSH oder Secure Shell? SSH oder Secure Shell ist ein verschlüsseltes Protokoll zur Verwaltung und Zugriff und Kommunikation mit Servern. Wenn ihr viel mit einem Server über die Konsole arbeitet, ist die Verbindung zu 99% eine SSH Verbindung. Auch das Programm Putty verbindet sich via SSH mit seinem Host.
Einleitung
In diesem Leitfaden konzentrieren wir uns auf die Einrichtung von SSH-Schlüsseln zum sicheren Login auf unseren Servern. SSH-Schlüssel bieten eine einfache, und sehr sichere Möglichkeit des Logins an eurem Server. Einige Erfahrungen habt ihr damit eventuel hier in diesem Artikel bereits gemacht. Ich empfehle diese Methode vor allem für Server die sicherheitskritische Daten beinhalten.
Es gibt verschiedene Methoden, um sich bei einem SSH-Server zu authentifizieren. Die grundlegendste davon ist die Passwort-Authentifizierung. Sie ist einfach anzuwenden, meisst aber nicht die sicherste. Das liegt daran dass die Verarbeitungsleistung von Attacken mit Skripten das brute-forcen von Passwörter heute sehr hoch ist. Hartnäckige Angreifer können bei viel Geduld ein nicht sicher gewähltes Passwort auch schonmal in kurzer Zeit knacken.
SSH-Schlüsselpaare sind zwei kryptografisch sichere Schlüssel, die zur Authentifizierung eines Clients gegenüber einem SSH-Server verwendet werden können. Jedes Schlüsselpaar besteht aus einem öffentlichen Schlüssel und einem privaten Schlüssel. Der öffentliche Schlüssel wird aus dem privaten Schlüssel errechnet, diesen kann man auf einem Server ablegen, der Server überprüft dann, ob der Client in der Lage ist, sich mit dem dazugehörigen privaten Schlüssel zu authentifizieren.
Es gibt noch andere Methoden um zusätzliche Sicherheit (fail2ban usw.) hinzuzufügen, vor allem wenn man nur einfache Passwörter verwendet, abeheute konzentrieren wir uns auf das Login mit einem SSH-Schlüsselpaar.
Einrichtung / Vorbereitungen
Die meissten Linux Distributionen kommen bereits mit openSSH vorinstalliert und benötigen meisst keine weitere Einrichtung bzw Erzeugung eines Schlüsselpaars, da einer bereits vom System erstellt worden ist. Habt ihr euch bereits schonmal via SSH irgendwo eingeloggt, habt ihr bereits ein Schlüsselpaar welcher sich in einem geheimen Verzeichnis befindet.
Überprüft zuerst einmal ob ihr bereits über einen Schlüssel verfügt. Das geht ganz einfach indem ihr ohne sudo folgendes in die Konsole eingebt:
cat ~/.ssh/id_rsa.pub
Habt ihr eine Ausgabe mit vielen verrückten Buchstaben, habt ihr bereits ein SSH-Schlüsselpaar! Habt ihr keine Ausgabe, erstellen wir uns ein neues Schlüsselpaar. Das geht mit:
ssh-keygen -t 2048
Das Tool fragt euch nun, ob ihr euren Privaten Schlüssel mit einer Passphrase schützen möchtet. Das könnt ihr tun und eine zusätzliche Sicherheitsebene hinzufügen. Bei einem zukünftigen Login über ein Keypaar wird dann zusätzlich zur Keyabfrage gleich noch das Passwort für den privaten Schlüssel abgefragt. In dem meissten Fällen und im privaten Gebrauch, ist eine Passphrase nicht nötig. Entscheidet Euch für eine Variante und bestätigt eure Entscheidung. Falls kein Passwort erwünscht, lasst die Anfrage leer und bestätigt mit Enter. Anschliessend wird das Schlüsselpaar im Ordner /home/BENUTZERNAME/.ssh/ erstellt.
Kopieren des Schlüssel auf euren Server
Jetzt müssen wir unseren öffentlich Schlüssel noch auf unseren Server hochladen. Dafür gibt es zwei einfache Methoden. Eine automatische, und eine manuelle Methode.
SSH-Copy-ID Methode
Fangen wir mit der automatischen Methode an. Diese nennt sich SSH-Copy-ID und ist ein Standardwerkzeug, um öffentliche Schlüssel auf wure Server zu übertragen. Diese setzt vorraus, dass eine Passwortanmeldung auf wurem gewünschten Server möglich ist und funktioniert.
Um das Utility zu verwenden, müssen wir also den Benutzernamen, das Passwort und die IP Adresse haben Die Syntax lautet: ssh-copy-id benutzername@IPAdresse, beispielsweise also
ssh-copy-id mario@xxx.xxx.xx.xxx
Habt ihr euch bereits mit dem Server verbunden, kommt keine Anfrage ob wir dem Host vertrauen wollen, falls Ihr euch doch das erste mal auf dem Server einloggt, bestätigt mit yes
Das Tool durchsucht nun kurz die ID eures Rechners, und fragt dann natürlich nach dem Passwort des Servers, gebt es unsichtbar ein und bestätigt.
Anschliessen bekommt ihr eine Meldung, falls der Schlüssel erfolgreich hinzugefügt worden ist:
Manuelle Methode
Falls auf dem Server SSH-Copy-ID gesperrt ist, oder nicht richtig funktioniert können wir das ganze manuel mit einem einzigen Befehl machen. der Syntax dazu lautet:
cat ~/.ssh/id_rsa.pub | ssh BENUTZER@IPAdresse mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys
Dabei ist nur BENUTZER und IPAdresse mit euren Daten des Hosts zu ersetzen.
Anschliessend kommt wieder die Passwortabfrage des Servers. Gebt euer Passwort ein und bestätigt die Eingabe.
Anschliessend kommt keine Meldung wie bei SSH-Copy-ID! Eine Ausgabe ohne Fehler ist eine erfolgreiche Eingabe.
Falls ihr euren Public-Key nun erfolgreich auf eurem Server abgelegt habt, könnt ihr euch anschliessend nur mit "ssh benutzer@IPAdress" auf eurem Server anmelden. Der Server registriert, dass ihr den privaten Schlüssel des hinterlegten Keys habt, und authentifziert euch als sicheren Benutzer.
Passwort-Login auf dem Server deaktivieren
Nun könnt ihr euch zwar via public-key Authentication mit eurer ID sicher anmelden, die Passworteingabe auf eurem Server ist aber immer noch für andere Clients möglich, und die Türen für Angriffe sind weiterhin offen. Damit das nicht mehr möglich ist, deaktivieren wir die Passwort gestützte Anmeldung auf dem Server.
Dazu öffnen wir auf dem Remote-Host bzw auf dem Server die SSH Konfigurationsdatei. Das geht mit:
sudo nano /etc/ssh/sshd_config
Sucht nach dem Eintrag #PasswortAuthentication yes
kommentiert den Eintrag aus und ändert yes zu no
Speichert die Datei mit strg+o ab und beendet mit strg+x
Damit die Einstellungen geladen werden, müssen wir den SSHd-Service kurz neu starten, das geht mit:
sudo systemctl restart sshd
Anschliessend ist die Passwortgestützte Eingabe deaktiviert. Nur noch Rechner mit einem Schlüsselpaar können sich beim Server anmelden. Bitte stellt unbedingt sicher dass euer Login via SSH-Key funktioniert. Ansonsten wirds nun schwierig mit der Anmeldung 🙂
Zusätzliches
Damit haben wir nun eine weitere Sicherheitsebene beim Thema Login hinzugefügt. Das ganze geht natürlich auch mit einer Passphrase für den SSH-Key beim erstellen des Keys. Die Vorteile einer Passphrase sind folgende:
- Der private SSH-Schlüssel (der Teil, der mit einer Passphrase geschützt werden kann) wird niemals im Netzwerk offengelegt. Die Passphrase wird nur zur Entschlüsselung des Schlüssels auf dem lokalen Rechner verwendet. Das bedeutet, dass netzwerkbasiertes Brute-Forcing gegen die Passphrase nicht möglich ist.
- Der private Schlüssel wird innerhalb eines eingeschränkten Verzeichnisses aufbewahrt. Der SSH-Client erkennt keine privaten Schlüssel, die nicht in diesem Verzeichnis aufbewahrt werden. Der Schlüssel selbst muss bzw hat ebenfalls eingeschränkte Berechtigungen haben (Lese- und Schreibrechte nur für den Eigentümer) die überprüft werden. Das bedeutet, dass andere Benutzer auf dem System nicht herumschnüffeln können.
- Jeder Angreifer, der hofft, die Passphrase des privaten SSH-Schlüssels zu knacken, muss bereits Voll-Zugriff auf das System haben. Sollte der Hacker sich bereits in dieser Position befinden, kann die Passphrase den Angreifer daran hindern, sich sofort auf eurem anderen Servern anzumelden. Dies gibt euch hoffentlich Zeit zur Erstellung und Implementierung eines neuen SSH-Schlüsselpaares und zum Entfernen des Zugriffs des kompromittierten Schlüssels.
Abschluss
Ihr dürft auf keinen Fall den Schlüssel mit einem anderen, bzw einem neuen Key-Pair ersetzen, ansonsten funktioniert die Anmeldung auf euren Servern nicht mehr! Auch müsst ihr die Schlüssel sichern, falls ihr vorhabt euer System neu zu installieren, den bei einem neu installiertem System, habt ihr auch wieder neue Keys! Es ist Ratsam auf einem verschlüsseltem USB Stick ein Kopie der Schlüssel aufzubewahren, falls das System aus irgenwelchen Gründen beschädigt, bzw. unbrauchbar wird! Ohne euren Privatekey kommt ihr ansonsten nicht mehr auf eure Server!
Nun sind wir auch schon am Schluss des heutigen Artikels und haben einige Grundlagen bzgl. SSH kennen gelernt. Wer mehr zum Thema SSH erfahren möchte, der kann sich hier schlau machen.
Ich hoffe der Artikel "sicher per SSH einloggen" hat euch heute gefallen. Falls Ihr Fragen habt, schreibt sie in die Kommentare!