Wir haben die Vorteile von SSH sowohl für die Sicherheit als auch für den Remotezugriff mehrfach gelobt. Werfen wir einen Blick auf den Server selbst, einige wichtige Aspekte der „Wartung“ und einige Besonderheiten, die zu einer ansonsten reibungslosen Fahrt führen können.
Obwohl wir dieses Handbuch für Linux geschrieben haben, kann dies auch für OpenSSH unter Mac OS X und Windows 7 über Cygwin gelten.
Warum es sicher ist
Wir haben schon oft erwähnt, dass SSH eine großartige Möglichkeit ist, Daten sicher von einem Punkt zum anderen zu verbinden und zu tunneln. Lassen Sie uns einen kurzen Blick darauf werfen, wie die Dinge funktionieren, damit Sie eine bessere Vorstellung davon bekommen, warum die Dinge manchmal komisch werden können.
Wenn wir uns entscheiden, eine Verbindung zu einem anderen Computer herzustellen, verwenden wir häufig Protokolle, mit denen wir einfach arbeiten können. Telnet und FTP fallen mir ein. Wir senden Informationen an einen Remote-Server und erhalten dann eine Bestätigung über unsere Verbindung zurück. Um eine bestimmte Art von Sicherheit zu gewährleisten, verwenden diese Protokolle häufig Kombinationen aus Benutzername und Kennwort. Das heißt, sie sind absolut sicher, oder? Falsch!
Wenn wir unseren Verbindungsprozess als E-Mail betrachten, ist die Verwendung von FTP und Telnet und dergleichen nicht mit der Verwendung von Standard-Versandumschlägen vergleichbar. Es ist eher wie mit Postkarten. Wenn jemand in die Mitte tritt, kann er alle Informationen sehen, einschließlich der Adressen beider Korrespondenten sowie des gesendeten Benutzernamens und Passworts. Sie können dann die Nachricht ändern, die Informationen gleich lassen und sich als der eine oder andere Korrespondent ausgeben. Dies wird als «Man-in-the-Middle» -Angriff bezeichnet und gefährdet nicht nur Ihr Konto, sondern stellt auch jede einzelne gesendete und empfangene Nachricht in Frage. Sie können nicht sicher sein, ob Sie mit dem Absender sprechen oder nicht, und selbst wenn Sie es sind, können Sie nicht sicher sein, dass niemand alles von dazwischen betrachtet.
Betrachten wir nun die SSL-Verschlüsselung, die HTTP sicherer macht. Hier haben wir ein Postamt, das die Korrespondenz bearbeitet, das prüft, ob Ihr Empfänger der ist, für den es sich ausgibt, und Gesetze hat, die Ihre Post vor dem Anzeigen schützen. Insgesamt ist es sicherer, und die zentrale Behörde – für unser HTTPS-Beispiel Verisign – stellt sicher, dass die Person, an die Sie E-Mails senden, auscheckt. Sie tun dies, indem sie keine Postkarten (unverschlüsselte Anmeldeinformationen) zulassen. stattdessen schreiben sie echte Umschläge vor.
Schauen wir uns zum Schluss SSH an. Hier ist das Setup etwas anders. Wir haben hier keinen zentralen Authentifikator, aber die Dinge sind immer noch sicher. Das liegt daran, dass Sie Briefe an jemanden senden, dessen Adresse Sie bereits kennen – beispielsweise indem Sie mit ihm telefonieren – und Sie verwenden eine wirklich ausgefallene Mathematik, um Ihren Umschlag zu unterschreiben. Sie übergeben es Ihrem Bruder, Ihrer Freundin, Ihrem Vater oder Ihrer Tochter, um es an die Adresse zu bringen, und nur wenn die ausgefallenen mathematischen Übereinstimmungen des Empfängers übereinstimmen, gehen Sie davon aus, dass die Adresse so ist, wie sie sein sollte. Dann erhalten Sie einen Brief zurück, der durch diese großartige Mathematik ebenfalls vor neugierigen Blicken geschützt ist. Schließlich senden Sie Ihre Anmeldeinformationen in einem anderen geheimen, algorithmisch verzauberten Umschlag an das Ziel. Wenn die Mathematik nicht übereinstimmt, können wir davon ausgehen, dass der ursprüngliche Empfänger umgezogen ist, und wir müssen seine Adresse erneut bestätigen.
Mit der Erklärung, solange es ist, denken wir, dass wir es dort schneiden werden. Wenn Sie weitere Informationen haben, können Sie sich natürlich in den Kommentaren unterhalten. Schauen wir uns zunächst die wichtigste Funktion von SSH an, die Hostauthentifizierung.
Hostschlüssel
Die Host-Authentifizierung ist im Wesentlichen der Teil, in dem jemand, dem Sie vertrauen, den Umschlag (mit magischer Mathematik versiegelt) nimmt und die Adresse Ihres Empfängers bestätigt. Es ist eine ziemlich detaillierte Beschreibung der Adresse und basiert auf einer komplizierten Mathematik, die wir einfach überspringen werden. Es gibt jedoch ein paar wichtige Dinge, die Sie davon abbringen sollten:
- Da es keine zentrale Behörde gibt, liegt die eigentliche Sicherheit im Host-Schlüssel, den öffentlichen Schlüsseln und den privaten Schlüsseln. (Diese beiden letztgenannten Schlüssel werden konfiguriert, wenn Sie Zugriff auf das System erhalten.)
- Wenn Sie über SSH eine Verbindung zu einem anderen Computer herstellen, wird normalerweise der Hostschlüssel gespeichert. Dies macht zukünftige Aktionen schneller (oder weniger ausführlich).
- Wenn sich der Hostschlüssel ändert, werden Sie höchstwahrscheinlich benachrichtigt und sollten vorsichtig sein!
Da der Hostschlüssel vor der Authentifizierung verwendet wird, um die Identität des SSH-Servers festzustellen, sollten Sie den Schlüssel unbedingt überprüfen, bevor Sie eine Verbindung herstellen. Sie sehen einen Bestätigungsdialog wie unten.
Sie sollten sich jedoch keine Sorgen machen! Wenn die Sicherheit ein Problem darstellt, gibt es häufig einen speziellen Ort, an dem der Hostschlüssel (ECDSA-Fingerabdruck oben) bestätigt werden kann. Bei vollständig online verfügbaren Projekten befindet sich diese häufig nur auf einer sicheren Anmeldeseite. Möglicherweise müssen Sie Ihre IT-Abteilung anrufen (oder wählen!), Um diesen Schlüssel telefonisch zu bestätigen. Ich habe sogar von einigen Stellen gehört, an denen der Schlüssel auf Ihrem Arbeitsausweis oder auf der speziellen Liste der „Notrufnummern“ steht. Und wenn Sie physischen Zugriff auf den Zielcomputer haben, können Sie dies auch selbst überprüfen!
Überprüfen des Hostschlüssels Ihres Systems
Es gibt 4 Arten von Verschlüsselungsalgorithmen, die zum Erstellen von Schlüsseln verwendet werden. Die Standardeinstellung für OpenSSH ist jedoch seit Anfang dieses Jahres ECDSA (mit einigen guten Gründen). Wir werden uns heute darauf konzentrieren. Hier ist der Befehl, den Sie auf dem SSH-Server ausführen können, auf den Sie Zugriff haben:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
Ihre Ausgabe sollte ungefähr Folgendes zurückgeben:
256 ca: 62: ea: 7c: e4: 9e: 2e: a6: 94: 20: 11: db: 9c: 78: c3: 4c /etc/ssh/ssh_host_ecdsa_key.pub
Die erste Zahl ist die Bitlänge des Schlüssels, dann der Schlüssel selbst, und schließlich haben Sie die Datei, in der er gespeichert ist. Vergleichen Sie diesen mittleren Teil mit dem, was Sie sehen, wenn Sie aufgefordert werden, sich remote anzumelden. Es sollte übereinstimmen, und Sie sind fertig. Wenn dies nicht der Fall ist, könnte etwas anderes passieren.
Sie können alle Hosts anzeigen, mit denen Sie über SSH eine Verbindung hergestellt haben, indem Sie sich Ihre Datei unknown_hosts ansehen. Es befindet sich normalerweise in:
~ / .ssh / unknown_hosts
Sie können das in jedem Texteditor öffnen. Wenn Sie schauen, versuchen Sie, darauf zu achten, wie Schlüssel gespeichert werden. Sie werden mit dem Namen (oder der Webadresse) des Host-Computers und seiner IP-Adresse gespeichert.
Ändern von Hostschlüsseln und Problemen
Es gibt einige Gründe, warum sich Hostschlüssel ändern oder nicht mit dem übereinstimmen, was in Ihrer Datei «unknown_hosts» protokolliert ist.
- Das System wurde neu installiert / neu konfiguriert.
- Die Hostschlüssel wurden aufgrund von Sicherheitsprotokollen manuell geändert.
- Der OpenSSH-Server wurde aktualisiert und verwendet aus Sicherheitsgründen unterschiedliche Standards.
- Die IP- oder DNS-Lease wurde geändert. Dies bedeutet häufig, dass Sie versuchen, auf einen anderen Computer zuzugreifen.
- Das System wurde auf irgendeine Weise kompromittiert, so dass sich der Hostschlüssel änderte.
Höchstwahrscheinlich ist das Problem eines der ersten drei, und Sie können die Änderung ignorieren. Wenn sich die IP / DNS-Lease geändert hat, liegt möglicherweise ein Problem mit dem Server vor und Sie werden möglicherweise an einen anderen Computer weitergeleitet. Wenn Sie sich nicht sicher sind, was der Grund für die Änderung ist, sollten Sie wahrscheinlich annehmen, dass es der letzte auf der Liste ist.
Wie OpenSSH mit unbekannten Hosts umgeht
OpenSSH hat eine Einstellung für den Umgang mit unbekannten Hosts, die sich in der Variablen «StrictHostKeyChecking» (ohne Anführungszeichen) widerspiegelt.
Abhängig von Ihrer Konfiguration können SSH-Verbindungen mit unbekannten Hosts (deren Schlüssel nicht bereits in Ihrer Datei «unknown_hosts» enthalten sind) auf drei Arten erfolgen.
- StrictHostKeyChecking ist auf no gesetzt; OpenSSH stellt unabhängig vom Status des Hostschlüssels automatisch eine Verbindung zu einem beliebigen SSH-Server her. Dies ist unsicher und wird nicht empfohlen, es sei denn, Sie fügen nach einer Neuinstallation Ihres Betriebssystems eine Reihe von Hosts hinzu. Danach ändern Sie sie wieder.
- StrictHostKeyChecking ist auf fragen eingestellt; OpenSSH zeigt Ihnen neue Hostschlüssel an und bittet Sie um Bestätigung, bevor Sie sie hinzufügen. Dadurch wird verhindert, dass Verbindungen zu geänderten Hostschlüsseln hergestellt werden. Dies ist die Standardeinstellung.
- StrictHostKeyChecking ist auf yes gesetzt. Das Gegenteil von «Nein» verhindert, dass Sie eine Verbindung zu einem Host herstellen, der noch nicht in Ihrer Datei «unknown_hosts» vorhanden ist.
Sie können diese Variable einfach in der Befehlszeile ändern, indem Sie das folgende Paradigma verwenden:
ssh -o 'StrictHostKeyChecking [option]' user@host
Ersetzen [option] mit «Nein», «Fragen» oder «Ja». Beachten Sie, dass diese Variable und ihre Einstellung in einfache Anführungszeichen gesetzt sind. Ersetzen Sie außerdem user @ host durch den Benutzernamen und den Hostnamen des Servers, zu dem Sie eine Verbindung herstellen. Zum Beispiel:
ssh -o 'StrictHostKeyChecking ask' yatri@192.168.1.50
Blockierte Hosts aufgrund geänderter Schlüssel
Wenn Sie einen Server haben, auf den Sie zugreifen möchten, dessen Schlüssel bereits geändert wurde, verhindert die Standard-OpenSSH-Konfiguration, dass Sie darauf zugreifen können. Sie könnten den StrictHostKeyChecking-Wert für diesen Host ändern, aber das wäre nicht vollständig, gründlich und paranoid sicher, oder? Stattdessen können wir den fehlerhaften Wert einfach aus unserer Datei «unknown_hosts» entfernen.
Das ist definitiv eine hässliche Sache auf Ihrem Bildschirm. Glücklicherweise war unser Grund dafür ein neu installiertes Betriebssystem. Lassen Sie uns also die benötigte Linie vergrößern.
Na, bitte. Sehen Sie, wie es die Datei zitiert, die wir bearbeiten müssen? Es gibt uns sogar die Zeilennummer! Öffnen wir also diese Datei in Nano:
Hier ist unser beleidigender Schlüssel in Zeile 1. Alles, was wir tun müssen, ist Strg + K zu drücken, um die gesamte Zeile auszuschneiden.
Das ist viel besser! Jetzt drücken wir Strg + O, um die Datei zu schreiben (zu speichern), und dann Strg + X, um sie zu beenden.
Jetzt erhalten wir stattdessen eine nette Eingabeaufforderung, auf die wir einfach mit «Ja» antworten können.
Neue Hostschlüssel erstellen
Für die Aufzeichnung gibt es wirklich keinen allzu großen Grund für Sie, Ihren Host-Schlüssel überhaupt zu ändern, aber wenn Sie jemals die Notwendigkeit finden, können Sie dies leicht tun.
Wechseln Sie zunächst in das entsprechende Systemverzeichnis:
cd / etc / ssh /
Hier befinden sich normalerweise die globalen Hostschlüssel, obwohl einige Distributionen sie an anderer Stelle platziert haben. Überprüfen Sie im Zweifelsfall Ihre Unterlagen!
Als nächstes löschen wir alle alten Schlüssel.
sudo rm / etc / ssh / ssh_host_ *
Alternativ können Sie sie in ein sicheres Sicherungsverzeichnis verschieben. Nur ein Gedanke!
Dann können wir den OpenSSH-Server anweisen, sich selbst neu zu konfigurieren:
sudo dpkg-reconfigure openssh-server
Sie sehen eine Eingabeaufforderung, während Ihr Computer die neuen Schlüssel erstellt. Ta-da!
Jetzt, da Sie wissen, wie SSH ein bisschen besser funktioniert, sollten Sie in der Lage sein, sich aus schwierigen Situationen zu befreien. Die Warnung / der Fehler «Remote-Host-Identifikation hat sich geändert» stört viele Benutzer, selbst diejenigen, die mit der Befehlszeile vertraut sind.
Bonuspunkte finden Sie unter So kopieren Sie Dateien über SSH aus der Ferne, ohne Ihr Passwort einzugeben. Dort erfahren Sie etwas mehr über die anderen Arten von Verschlüsselungsalgorithmen und wie Sie Schlüsseldateien für zusätzliche Sicherheit verwenden.