SSH Agent: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
*Secure Shell (SSH) ist ein Protokoll, das eine sichere Remote-Anmeldung an einem Computer in einem Netzwerk mithilfe von Public-Key-Kryptografie ermöglicht.
+
*Man kann sich per SSH auf einem anderen Rechner auch per Public-Private-Key verfahren einlogen.
*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
+
*Im .ssh-Verzeichnis liegt der privaten Schlüssel des Benutzer.
*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.
+
*Für zusätzliche Sicherheit ist es üblich, den privaten Schlüssel in verschlüsselter Form zu speichern,
 +
*Zum Entschlüsseln wird eine Passphrase genutzt.
 
*Da die Eingabe der Passphrase mühsam sein kann, möchten viele Benutzer sie nur einmal pro lokaler Anmeldesitzung eingeben.
 
*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.
+
*Der sicherste Ort zum Speichern des unverschlüsselten Schlüssels ist der Programmspeicher
*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.  
+
*In Unix-ähnlichen Betriebssystemen ist der Speicher normalerweise mit einem Prozess verbunden.
*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.
+
*Die SSH-Client-Prozesse dauern nur so lange wie die Remote-Anmeldesitzung.  
 +
*Daher führen Benutzer ein Programm namens ssh-agent aus, das über die Dauer einer lokalen Anmeldesitzung hinaus läuft,
 +
*Dieses speichert unverschlüsselte Schlüssel im Speicher und kommuniziert mit SSH-Clients über einen Unix-Domain-Socket.
 
*ssh-agent erstellt einen Socket und überprüft dann die Verbindungen von ssh.
 
*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.
 
*Jeder, der sich mit diesem Socket verbinden kann, hat auch Zugriff auf den ssh-agenten.

Version vom 21. Oktober 2021, 11:17 Uhr

  • Man kann sich per SSH auf einem anderen Rechner auch per Public-Private-Key verfahren einlogen.
  • Im .ssh-Verzeichnis liegt der privaten Schlüssel des Benutzer.
  • Für zusätzliche Sicherheit ist es üblich, den privaten Schlüssel in verschlüsselter Form zu speichern,
  • Zum Entschlüsseln wird eine Passphrase genutzt.
  • 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
  • In Unix-ähnlichen Betriebssystemen ist der Speicher normalerweise mit einem Prozess verbunden.
  • Die SSH-Client-Prozesse dauern nur so lange wie die Remote-Anmeldesitzung.
  • Daher führen Benutzer ein Programm namens ssh-agent aus, das über die Dauer einer lokalen Anmeldesitzung hinaus läuft,
  • Dieses speichert unverschlüsselte Schlüssel im Speicher und kommuniziert mit SSH-Clients über einen Unix-Domain-Socket.
  • 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).