Public-Key-Authentifizierung für SSH

Das SSH-Protokoll unterstützt viele Authentifizierungsmethoden. Eine der wichtigsten davon ist wohl die Public-Key-Authentifizierung für interaktive und automatisierte Verbindungen.

Public-Key-Authentifizierung – was und warum?

Die Motivation für die Verwendung der Public-Key-Authentifizierung gegenüber einfachen Passwörtern ist die Sicherheit. Die Public-Key-Authentifizierung bietet eine kryptografische Stärke, die selbst extrem lange Passwörter nicht bieten können. Bei SSH verbessert die Public-Key-Authentifizierung die Sicherheit beträchtlich, da sie die Benutzer davon befreit, sich komplizierte Passwörter zu merken (oder noch schlimmer, sie aufzuschreiben).

Neben der Sicherheit bietet die Public-Key-Authentifizierung auch Vorteile für die Benutzerfreundlichkeit – sie ermöglicht es den Benutzern, eine einmalige Anmeldung auf allen SSH-Servern zu implementieren, mit denen sie sich verbinden. Die Public-Key-Authentifizierung ermöglicht außerdem eine automatisierte, passwortlose Anmeldung, die eine wichtige Voraussetzung für die zahllosen sicheren Automatisierungsprozesse ist, die weltweit in Unternehmensnetzwerken ablaufen.

Die Public-Key-Kryptografie dreht sich um ein paar Schlüsselkonzepte. Die folgenden Abschnitte erklären diese kurz.

Asymmetrische Kryptographie – Algorithmen

Wie jedes Verschlüsselungsverfahren basiert auch die Public-Key-Authentifizierung auf einem Algorithmus. Es gibt mehrere gut erforschte, sichere und vertrauenswürdige Algorithmen – die bekanntesten sind RSA und DSA. Im Gegensatz zu den allgemein bekannten (symmetrischen oder Secret-Key-) Verschlüsselungsalgorithmen arbeiten die Public-Key-Verschlüsselungsalgorithmen mit zwei separaten Schlüsseln. Diese beiden Schlüssel bilden ein Paar, das für jeden Benutzer spezifisch ist.

Schlüsselpaar – öffentlich und privat

Im Anwendungsfall der SSH-Authentifizierung mit öffentlichem Schlüssel ist es eher typisch, dass die Benutzer das Schlüsselpaar selbst erstellen (d. h. bereitstellen). SSH-Implementierungen enthalten hierfür einfach zu verwendende Hilfsprogramme (für weitere Informationen siehe ssh-keygen und ssh-copy-id).

Jedes SSH-Schlüsselpaar enthält zwei Schlüssel:

  • Einen öffentlichen Schlüssel, der auf den/die SSH-Server kopiert wird. Jeder, der eine Kopie des öffentlichen Schlüssels besitzt, kann Daten verschlüsseln, die dann nur von der Person gelesen werden können, die den entsprechenden privaten Schlüssel besitzt. Sobald ein SSH-Server einen öffentlichen Schlüssel von einem Benutzer erhält und den Schlüssel für vertrauenswürdig hält, markiert der Server den Schlüssel in seiner Datei authorized_keys als autorisiert. Solche Schlüssel werden autorisierte Schlüssel genannt.

  • Ein privater Schlüssel, der (nur) beim Benutzer bleibt. Der Besitz dieses Schlüssels ist ein Beweis für die Identität des Benutzers. Nur ein Benutzer, der im Besitz eines privaten Schlüssels ist, der mit dem öffentlichen Schlüssel beim Server übereinstimmt, kann sich erfolgreich authentifizieren. Die privaten Schlüssel müssen sorgfältig aufbewahrt und behandelt werden, und es sollten keine Kopien des privaten Schlüssels verteilt werden. Die privaten Schlüssel, die für die Benutzerauthentifizierung verwendet werden, nennt man Identitätsschlüssel.

Einrichten der Public-Key-Authentifizierung für SSH

Die folgenden einfachen Schritte sind erforderlich, um die Public-Key-Authentifizierung (für SSH) einzurichten:

  1. Ein Schlüsselpaar wird erstellt (normalerweise vom Benutzer). Dies geschieht typischerweise mit ssh-keygen.

  2. Der private Schlüssel bleibt beim Benutzer (und nur dort), während der öffentliche Schlüssel an den Server gesendet wird. Typischerweise mit dem Dienstprogramm ssh-copy-id.

  3. Der Server speichert den öffentlichen Schlüssel (und „markiert“ ihn als autorisiert).

  4. Der Server erlaubt nun jedem den Zugriff, der nachweisen kann, dass er den entsprechenden privaten Schlüssel besitzt.

Handhabung des privaten Schlüssels

Es ist extrem wichtig, dass die Privatsphäre des privaten Schlüssels sorgfältig geschützt wird. Für die meisten benutzergesteuerten Anwendungsfälle wird dies erreicht, indem der private Schlüssel mit einer Passphrase verschlüsselt wird.

Wenn ein privater Schlüssel benötigt wird, wird der Benutzer aufgefordert, die Passphrase anzugeben, damit der private Schlüssel entschlüsselt werden kann. Die Handhabung von Passphrasen kann mit einem SSH-Agenten automatisiert werden.

In den meisten automatisierten Anwendungsfällen (Skripte, Anwendungen usw.) sind die privaten Schlüssel nicht geschützt, und eine sorgfältige Planung und Schlüsselverwaltung ist erforderlich, um sicher zu bleiben und den gesetzlichen Vorschriften zu entsprechen.

Vom Chaos zur Ordnung – SSH-Schlüsselverwaltung

In Umgebungen, in denen Benutzer Authentifizierungsschlüssel selbst bereitstellen können, ist es üblich, dass die Anzahl der bereitgestellten und eingesetzten Schlüssel im Laufe der Jahre sehr groß wird. Da es keine Möglichkeit gibt, herauszufinden, wem ein bestimmter öffentlicher Schlüssel auf einem Server gehört oder wer ihn ursprünglich bereitgestellt hat, und da diese Schlüssel nie ablaufen, kann der tatsächliche Zustand der Zugriffskontrolle in großen, nicht verwalteten Umgebungen sehr unklar oder geradezu chaotisch sein.

Die Verwaltung und Kontrolle des Zugriffs auf Server und andere IT-Infrastrukturen ist eine gesetzliche Anforderung für jedes Unternehmen, das in regulierten Märkten wie dem Finanz-, Energie-, Gesundheits- oder Handelssektor tätig ist. Diese Unternehmen müssen Lösungen für die SSH-Schlüsselverwaltung einsetzen, um den durch SSH-Schlüssel gewährten Zugriff zu kontrollieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.