SSH Agent
- Secure Shell (SSH) ist ein Protokoll, das eine sichere Remote-Anmeldung an einem Computer in einem Netzwerk mithilfe von Public-Key-Kryptografie ermöglicht.
- SSH-Client-Programme (wie ssh von OpenSSH) laufen normalerweise für die Dauer einer Remote-Login-Sitzung und sind so konfiguriert, dass sie in einer Datei im Home-Verzeichnis des Benutzers nach dem privaten Schlüssel des Benutzers suchen
- Für zusätzliche Sicherheit (z. B. gegen einen Angreifer, der jede Datei im lokalen Dateisystem lesen kann) ist es üblich, den privaten Schlüssel in verschlüsselter Form zu speichern, wobei der Verschlüsselungsschlüssel aus einer Passphrase berechnet wird, die der Benutzer gespeichert hat.
- Da die Eingabe der Passphrase mühsam sein kann, möchten viele Benutzer sie nur einmal pro lokaler Anmeldesitzung eingeben.
- Der sicherste Ort zum Speichern des unverschlüsselten Schlüssels ist der Programmspeicher, und in Unix-ähnlichen Betriebssystemen ist der Speicher normalerweise mit einem Prozess verbunden.
- Ein normaler SSH-Client-Prozess kann nicht zum Speichern des unverschlüsselten Schlüssels verwendet werden, da SSH-Client-Prozesse nur die Dauer einer Remote-Anmeldesitzung dauern.
- Daher führen Benutzer ein Programm namens ssh-agent aus, das über die Dauer einer lokalen Anmeldesitzung hinaus läuft, unverschlüsselte Schlüssel im Speicher speichert und mit SSH-Clients über einen Unix-Domain-Socket kommuniziert.
Inhalt
1 Sicherheitsprobleme
2 Implementierungen
2.1 Apple macOS
2.2 Microsoft Windows
3 Referenzen
4 Externe Links
Sicherheitsprobleme
ssh-agent erstellt einen Socket und überprüft dann die Verbindungen von ssh. Jeder, der sich mit diesem Socket verbinden kann, hat auch Zugriff auf den ssh-agenten. Die Berechtigungen werden wie in einem üblichen Linux- oder Unix-System gesetzt. Wenn der Agent startet, erstellt er ein neues Verzeichnis in /tmp mit restriktiven Berechtigungen. Der Socket befindet sich in diesem Verzeichnis.
Es gibt ein Verfahren, das Malware daran hindern kann, den ssh-agent-Socket zu verwenden. Wenn die Option ssh-add -c beim Importieren der Schlüssel in den ssh-agenten gesetzt ist, fordert der Agent mit dem durch die Umgebungsvariable SSH_ASKPASS angegebenen Programm eine Bestätigung vom Benutzer an, wenn ssh versucht, eine Verbindung herzustellen.
Auf dem lokalen System ist es wichtig, dass der Root-Benutzer vertrauenswürdig ist, da der Root-Benutzer unter anderem die Schlüsseldatei direkt lesen kann. Auf dem entfernten System ist es beim Weiterleiten der ssh-Agenten-Verbindung auch wichtig, dass der Root-Benutzer am anderen Ende vertrauenswürdig ist, da er auf den Agenten-Socket auf der entfernten Seite zugreifen kann (allerdings nicht auf den Schlüssel, der lokal bleibt).